Merge pull request #161 from lightsprint09/logger

Logger +  Missing Test code
This commit is contained in:
Erik Little 2015-09-04 09:27:55 -04:00
commit 0cfdd0b005
10 changed files with 45 additions and 53 deletions

View File

@ -9,7 +9,8 @@
import XCTest import XCTest
class AbstractSocketTest: XCTestCase { class AbstractSocketTest: XCTestCase {
static let serverURL = "milkbartube.com:6979" static let testLocal = false
static let serverURL = AbstractSocketTest.testLocal ? "localhost:6979" : "milkbartube.com:6979"
static let TEST_TIMEOUT = 8.0 static let TEST_TIMEOUT = 8.0
static var socket:SocketIOClient! static var socket:SocketIOClient!
var testKind:TestKind? var testKind:TestKind?
@ -22,6 +23,7 @@ class AbstractSocketTest: XCTestCase {
XCTAssertTrue(AbstractSocketTest.socket.status == SocketIOClientStatus.NotConnected) XCTAssertTrue(AbstractSocketTest.socket.status == SocketIOClientStatus.NotConnected)
AbstractSocketTest.socket.on("connect") {data, ack in AbstractSocketTest.socket.on("connect") {data, ack in
XCTAssertEqual(AbstractSocketTest.socket.status, SocketIOClientStatus.Connected) XCTAssertEqual(AbstractSocketTest.socket.status, SocketIOClientStatus.Connected)
XCTAssertFalse(AbstractSocketTest.socket.secure)
if let expection = expection { if let expection = expection {
expection.fulfill() expection.fulfill()
} }

View File

@ -21,6 +21,8 @@ class SocketAcknowledgementTest: AbstractSocketTest {
"forcePolling": false, "forcePolling": false,
"forceWebsockets": false,// default false "forceWebsockets": false,// default false
"path": ""]) "path": ""])
}else {
AbstractSocketTest.socket.leaveNamespace()
} }
openConnection() openConnection()

View File

@ -22,6 +22,8 @@ class SocketEmitTest: AbstractSocketTest {
"forceWebsockets": false,// default false "forceWebsockets": false,// default false
"path": ""] "path": ""]
) )
}else {
AbstractSocketTest.socket.leaveNamespace()
} }
openConnection() openConnection()

View File

@ -22,6 +22,8 @@ class SocketNamespaceAcknowledgementTest: AbstractSocketTest {
"forceWebsockets": false,// default false "forceWebsockets": false,// default false
"path": "", "path": "",
"nsp": "/swift"]) "nsp": "/swift"])
}else {
AbstractSocketTest.socket.joinNamespace("/swift")
} }
openConnection() openConnection()

View File

@ -22,6 +22,8 @@ class SocketNamespaceEmitTest: AbstractSocketTest {
"forceWebsockets": false,// default false "forceWebsockets": false,// default false
"path": "", "path": "",
"nsp": "/swift"]) "nsp": "/swift"])
}else {
AbstractSocketTest.socket.joinNamespace("/swift")
} }
openConnection() openConnection()

View File

@ -24,9 +24,7 @@
import Foundation import Foundation
public final class SocketEngine: NSObject, WebSocketDelegate, SocketLogClient { public final class SocketEngine: NSObject, WebSocketDelegate {
public let logType = "SocketEngine"
private typealias Probe = (msg: String, type: PacketType, data: [NSData]?) private typealias Probe = (msg: String, type: PacketType, data: [NSData]?)
private typealias ProbeWaitQueue = [Probe] private typealias ProbeWaitQueue = [Probe]
@ -199,7 +197,7 @@ public final class SocketEngine: NSObject, WebSocketDelegate, SocketLogClient {
private func doFastUpgrade() { private func doFastUpgrade() {
if waitingForPoll { if waitingForPoll {
Logger.err("Outstanding poll when switched to WebSockets," + Logger.error("Outstanding poll when switched to WebSockets," +
"we'll probably disconnect soon. You should report this.", client: self, altType: nil) "we'll probably disconnect soon. You should report this.", client: self, altType: nil)
} }
@ -248,7 +246,7 @@ public final class SocketEngine: NSObject, WebSocketDelegate, SocketLogClient {
if this.polling { if this.polling {
this.handlePollingFailed(err?.localizedDescription ?? "Error") this.handlePollingFailed(err?.localizedDescription ?? "Error")
} else { } else {
Logger.err(err?.localizedDescription ?? "Error", client: this, altType: nil) Logger.error(err?.localizedDescription ?? "Error", client: this, altType: nil)
} }
return return
} }
@ -412,7 +410,7 @@ public final class SocketEngine: NSObject, WebSocketDelegate, SocketLogClient {
} }
} }
} catch { } catch {
Logger.err("Error parsing open packet", client: self, altType: nil) Logger.error("Error parsing open packet", client: self, altType: nil)
return return
} }
@ -448,7 +446,7 @@ public final class SocketEngine: NSObject, WebSocketDelegate, SocketLogClient {
public func open(opts: [String: AnyObject]? = nil) { public func open(opts: [String: AnyObject]? = nil) {
if connected { if connected {
Logger.err("Tried to open while connected", client: self, altType: nil) Logger.error("Tried to open while connected", client: self, altType: nil)
client?.didError("Tried to open while connected") client?.didError("Tried to open while connected")
return return
@ -512,7 +510,7 @@ public final class SocketEngine: NSObject, WebSocketDelegate, SocketLogClient {
length += chr length += chr
} else { } else {
if length == "" || testLength(length, n: &n) { if length == "" || testLength(length, n: &n) {
Logger.err("Parsing error: %@", client: self, altType: nil, args: str) Logger.error("Parsing error: %@", client: self, altType: nil, args: str)
handlePollingFailed("Error parsing XHR message") handlePollingFailed("Error parsing XHR message")
return return
} }
@ -520,7 +518,7 @@ public final class SocketEngine: NSObject, WebSocketDelegate, SocketLogClient {
msg = String(strArray[i+1...i+n]) msg = String(strArray[i+1...i+n])
if let lengthInt = Int(length) where lengthInt != msg.characters.count { if let lengthInt = Int(length) where lengthInt != msg.characters.count {
Logger.err("Parsing error: %@", client: self, altType: nil, args: str) Logger.error("Parsing error: %@", client: self, altType: nil, args: str)
return return
} }

View File

@ -24,7 +24,7 @@
import Foundation import Foundation
public final class SocketIOClient: NSObject, SocketEngineClient, SocketLogClient { public final class SocketIOClient: NSObject, SocketEngineClient {
private var anyHandler: ((SocketAnyEvent) -> Void)? private var anyHandler: ((SocketAnyEvent) -> Void)?
private var currentReconnectAttempt = 0 private var currentReconnectAttempt = 0
private var handlers = ContiguousArray<SocketEventHandler>() private var handlers = ContiguousArray<SocketEventHandler>()
@ -38,7 +38,6 @@ public final class SocketIOClient: NSObject, SocketEngineClient, SocketLogClient
public let emitQueue = dispatch_queue_create("emitQueue", DISPATCH_QUEUE_SERIAL) public let emitQueue = dispatch_queue_create("emitQueue", DISPATCH_QUEUE_SERIAL)
public let handleQueue: dispatch_queue_t! public let handleQueue: dispatch_queue_t!
public let logType = "SocketClient"
public let socketURL: String public let socketURL: String
public private(set) var engine: SocketEngine? public private(set) var engine: SocketEngine?
@ -224,7 +223,7 @@ public final class SocketIOClient: NSObject, SocketEngineClient, SocketLogClient
/// error /// error
public func didError(reason: AnyObject) { public func didError(reason: AnyObject) {
Logger.err("%@", client: self, altType: nil, args: reason) Logger.error("%@", client: self, altType: nil, args: reason)
handleEvent("error", data: reason as? [AnyObject] ?? [reason], handleEvent("error", data: reason as? [AnyObject] ?? [reason],
isInternalMessage: true) isInternalMessage: true)

View File

@ -26,24 +26,18 @@ import Foundation
@objc public enum SocketIOClientStatus: Int, CustomStringConvertible { @objc public enum SocketIOClientStatus: Int, CustomStringConvertible {
public var description: String { public var description: String {
let des: String switch self {
case NotConnected:
switch rawValue { return "Not Connected"
case 0: case Closed:
des = "Not Connected" return "Closed"
case 1: case Connecting:
des = "Closed" return "Connecting"
case 2: case Connected:
des = "Connecting" return "Connected"
case 3: case Reconnecting:
des = "Connected" return "Reconnecting"
case 4:
des = "Reconnecting"
default:
des = "Unknown State"
} }
return des
} }
case NotConnected, Closed, Connecting, Connected, Reconnecting case NotConnected, Closed, Connecting, Connected, Reconnecting

View File

@ -26,43 +26,34 @@ import Foundation
var Logger: SocketLogger = DefaultSocketLogger() var Logger: SocketLogger = DefaultSocketLogger()
public protocol SocketLogClient {
/// The type of object being logged
var logType: String {get}
}
public protocol SocketLogger { public protocol SocketLogger {
/// Whether to log or not /// Whether to log or not
var log: Bool {get set} var log: Bool {get set}
/// Normal log messages /// Normal log messages
func log(message: String, client: SocketLogClient, altType: String?, args: AnyObject...) func log(message: String, client: AnyObject, altType: String?, args: AnyObject...)
/// Error Messages /// Error Messages
func err(message: String, client: SocketLogClient, altType: String?, args: AnyObject...) func error(message: String, client: AnyObject, altType: String?, args: AnyObject...)
} }
public extension SocketLogger { public extension SocketLogger {
func log(message: String, client: SocketLogClient, altType: String?, args: AnyObject...) { func log(message: String, client: AnyObject, altType: String?, args: AnyObject...) {
if !log { abstractLog("Log", message: message, client: client, altType: altType, args: args)
return
} }
func error(message: String, client: AnyObject, altType: String?, args: AnyObject...) {
abstractLog("ERROR", message: message, client: client, altType: altType, args: args)
}
private func abstractLog(type:String, message: String, client: AnyObject, altType: String?, args:Array<AnyObject>) {
guard log else { return }
let newArgs = args.map {arg -> CVarArgType in String(arg)} let newArgs = args.map {arg -> CVarArgType in String(arg)}
let replaced = String(format: message, arguments: newArgs) let replaced = String(format: message, arguments: newArgs)
let sourceString = NSStringFromClass(object_getClass(client))
NSLog("%@: %@", altType ?? client.logType, replaced) NSLog("%@ %@: %@",type, altType ?? sourceString, replaced)
}
func err(message: String, client: SocketLogClient, altType: String?, args: AnyObject...) {
if !log {
return
}
let newArgs = args.map {arg -> CVarArgType in String(arg)}
let replaced = String(format: message, arguments: newArgs)
NSLog("ERROR %@: %@", altType ?? client.logType, replaced)
} }
} }

View File

@ -210,7 +210,7 @@ class SocketParser {
static func parseBinaryData(data: NSData, socket: SocketIOClient) { static func parseBinaryData(data: NSData, socket: SocketIOClient) {
if socket.waitingData.count == 0 { if socket.waitingData.count == 0 {
Logger.err("Got data when not remaking packet", client: socket, altType: "SocketParser") Logger.error("Got data when not remaking packet", client: socket, altType: "SocketParser")
return return
} }