diff --git a/Package.swift b/Package.swift index a2635ae9..c65cfa9a 100644 --- a/Package.swift +++ b/Package.swift @@ -980,6 +980,7 @@ let package = Package( name: "PortDeterminer", dependencies: [ "Logging", + "Models", "Swifter", ], path: "Sources/PortDeterminer" @@ -988,6 +989,7 @@ let package = Package( // MARK: PortDeterminerTests name: "PortDeterminerTests", dependencies: [ + "Models", "PortDeterminer", "Swifter", ], diff --git a/Sources/EmceeLib/Commands/RunTestsOnRemoteQueueCommand.swift b/Sources/EmceeLib/Commands/RunTestsOnRemoteQueueCommand.swift index 21ae5702..1755cf95 100644 --- a/Sources/EmceeLib/Commands/RunTestsOnRemoteQueueCommand.swift +++ b/Sources/EmceeLib/Commands/RunTestsOnRemoteQueueCommand.swift @@ -281,7 +281,7 @@ public final class RunTestsOnRemoteQueueCommand: Command { return try queueClient.jobResults(jobId: jobId) } - private func selectPort(ports: Set) throws -> Int { + private func selectPort(ports: Set) throws -> Models.Port { enum PortScanningError: Error, CustomStringConvertible { case noQueuePortDetected diff --git a/Sources/EmceeLib/Utils/Ports.swift b/Sources/EmceeLib/Utils/Ports.swift index 63491ee9..26d13eaa 100644 --- a/Sources/EmceeLib/Utils/Ports.swift +++ b/Sources/EmceeLib/Utils/Ports.swift @@ -1,8 +1,8 @@ -import Foundation +import Models public final class Ports { /// TCP ports that are expecred to be taken by the queue server. /// This port range appears to be unassigned according to IANA /// https://www.iana.org/assignments/service-names-port-numbers/service-names-port-numbers.xhtml?&page=131 - public static let defaultQueuePortRange = 41000...41010 + public static let defaultQueuePortRange: ClosedRange = 41000...41010 } diff --git a/Sources/LocalQueueServerRunner/LocalQueueServerError.swift b/Sources/LocalQueueServerRunner/LocalQueueServerError.swift index 49783445..d9ff565e 100644 --- a/Sources/LocalQueueServerRunner/LocalQueueServerError.swift +++ b/Sources/LocalQueueServerRunner/LocalQueueServerError.swift @@ -1,8 +1,7 @@ -import Foundation import Models public enum LocalQueueServerError: Error, CustomStringConvertible { - case sameVersionQueueIsAlreadyRunning(port: Int, version: Version) + case sameVersionQueueIsAlreadyRunning(port: Port, version: Version) public var description: String { switch self { diff --git a/Sources/LocalQueueServerRunner/LocalQueueServerRunner.swift b/Sources/LocalQueueServerRunner/LocalQueueServerRunner.swift index f1722b9d..f7df4d4f 100644 --- a/Sources/LocalQueueServerRunner/LocalQueueServerRunner.swift +++ b/Sources/LocalQueueServerRunner/LocalQueueServerRunner.swift @@ -82,7 +82,7 @@ public final class LocalQueueServerRunner { ) } - private func startQueueServer(emceeVersion: Version) throws -> Int { + private func startQueueServer(emceeVersion: Version) throws -> Models.Port { let lockToStartQueueServer = try FileLock.named("emcee_starting_queue_server_\(emceeVersion.value)") return try lockToStartQueueServer.whileLocked { try ensureQueueWithMatchingVersionIsNotRunning(version: emceeVersion) @@ -93,14 +93,14 @@ public final class LocalQueueServerRunner { private func ensureQueueWithMatchingVersionIsNotRunning(version: Version) throws { let portToQueueServerVersion = remotePortDeterminer.queryPortAndQueueServerVersion(timeout: 10) - try portToQueueServerVersion.forEach { (item: (key: Int, value: Version)) in + try portToQueueServerVersion.forEach { (item: (key: Models.Port, value: Version)) in if item.value == version { throw LocalQueueServerError.sameVersionQueueIsAlreadyRunning(port: item.key, version: version) } } } - private func startWorkers(emceeVersion: Version, port: Int) throws { + private func startWorkers(emceeVersion: Version, port: Models.Port) throws { Logger.info("Deploying and starting workers in background") let remoteWorkersStarter = RemoteWorkersStarter( diff --git a/Sources/LoggingSetup/GraphiteMetricHandler.swift b/Sources/LoggingSetup/GraphiteMetricHandler.swift index 4bfc7b47..1501ff80 100644 --- a/Sources/LoggingSetup/GraphiteMetricHandler.swift +++ b/Sources/LoggingSetup/GraphiteMetricHandler.swift @@ -21,7 +21,7 @@ public final class GraphiteMetricHandler: MetricHandler { outputStream = EasyOutputStream( outputStreamProvider: NetworkSocketOutputStreamProvider( host: graphiteSocketAddress.host, - port: graphiteSocketAddress.port + port: graphiteSocketAddress.port.value ), errorHandler: { stream, error in Logger.error("Graphite stream error: \(error)") diff --git a/Sources/Models/NewIntType.swift b/Sources/Models/NewIntType.swift new file mode 100644 index 00000000..8ab86199 --- /dev/null +++ b/Sources/Models/NewIntType.swift @@ -0,0 +1,41 @@ +import Foundation + +open class NewIntType: ExpressibleByIntegerLiteral, Codable, Hashable, CustomStringConvertible, Comparable { + public typealias IntegerLiteralType = Int + + public let value: Int + + public init(value: Int) { + self.value = value + } + + public required init(integerLiteral value: Int) { + self.value = value + } + + public var description: String { + return "\(value)" + } + + public func hash(into hasher: inout Hasher) { + hasher.combine(value) + } + + public static func ==(left: NewIntType, right: NewIntType) -> Bool { + return left.value == right.value + } + + public required init(from decoder: Decoder) throws { + let container = try decoder.singleValueContainer() + value = try container.decode(Int.self) + } + + public func encode(to encoder: Encoder) throws { + var container = encoder.singleValueContainer() + try container.encode(value) + } + + public static func < (left: NewIntType, right: NewIntType) -> Bool { + return left.value < right.value + } +} diff --git a/Sources/Models/Port.swift b/Sources/Models/Port.swift new file mode 100644 index 00000000..84aebef2 --- /dev/null +++ b/Sources/Models/Port.swift @@ -0,0 +1,11 @@ +public final class Port: NewIntType, Strideable { + public typealias Stride = Int + + public func distance(to other: Port) -> Int { + other.value - self.value + } + + public func advanced(by n: Int) -> Self { + return type(of: self).init(value: value + n) + } +} diff --git a/Sources/Models/SocketAddress.swift b/Sources/Models/SocketAddress.swift index 0bfc7ca2..ca0d093c 100644 --- a/Sources/Models/SocketAddress.swift +++ b/Sources/Models/SocketAddress.swift @@ -2,7 +2,7 @@ import Foundation public struct SocketAddress: Codable, CustomStringConvertible, Hashable { public let host: String - public let port: Int + public let port: Port public enum ParseError: Error, CustomStringConvertible { case unsupportedFormat(String) @@ -15,7 +15,7 @@ public struct SocketAddress: Codable, CustomStringConvertible, Hashable { } } - public init(host: String, port: Int) { + public init(host: String, port: Port) { self.host = host self.port = port } @@ -27,7 +27,7 @@ public struct SocketAddress: Codable, CustomStringConvertible, Hashable { } return SocketAddress( host: String(components[0]), - port: port + port: Port(value: port) ) } @@ -45,7 +45,7 @@ public struct SocketAddress: Codable, CustomStringConvertible, Hashable { } public var asString: String { - return "\(host):\(port)" + return "\(host):\(port.value)" } public var description: String { diff --git a/Sources/PortDeterminer/LocalPortDeterminer.swift b/Sources/PortDeterminer/LocalPortDeterminer.swift index 18c83177..c34ce449 100644 --- a/Sources/PortDeterminer/LocalPortDeterminer.swift +++ b/Sources/PortDeterminer/LocalPortDeterminer.swift @@ -1,17 +1,18 @@ import Darwin import Foundation import Logging +import Models import Swifter public final class LocalPortDeterminer { - private let portRange: ClosedRange + private let portRange: ClosedRange - public init(portRange: ClosedRange) { + public init(portRange: ClosedRange) { self.portRange = portRange } public enum LocalPortDeterminerError: Error, CustomStringConvertible { - case noAvailablePorts(portRange: ClosedRange) + case noAvailablePorts(portRange: ClosedRange) public var description: String { switch self { @@ -21,10 +22,10 @@ public final class LocalPortDeterminer { } } - public func availableLocalPort() throws -> Int { + public func availableLocalPort() throws -> Models.Port { for port in portRange { Logger.debug("Checking availability of local port \(port)") - if isPortAvailable(port: UInt16(port)) { + if isPortAvailable(port: UInt16(port.value)) { Logger.debug("Port \(port) appears to be available") return port } diff --git a/Sources/QueueClient/QueueClient.swift b/Sources/QueueClient/QueueClient.swift index 6aa274e9..557df3cb 100644 --- a/Sources/QueueClient/QueueClient.swift +++ b/Sources/QueueClient/QueueClient.swift @@ -139,7 +139,7 @@ public final class QueueClient { var components = URLComponents() components.scheme = "http" components.host = queueServerAddress.host - components.port = queueServerAddress.port + components.port = queueServerAddress.port.value components.path = restMethod.pathWithLeadingSlash guard let url = components.url else { Logger.fatal("Unable to convert components to url: \(components)") diff --git a/Sources/QueueCommunication/DefaultQueueCommunicationService.swift b/Sources/QueueCommunication/DefaultQueueCommunicationService.swift index 4d88340a..22f953e7 100644 --- a/Sources/QueueCommunication/DefaultQueueCommunicationService.swift +++ b/Sources/QueueCommunication/DefaultQueueCommunicationService.swift @@ -67,7 +67,7 @@ public class DefaultQueueCommunicationService: QueueCommunicationService { } public func deploymentDestinations( - port: Int, + port: Models.Port, completion: @escaping (Either<[DeploymentDestination], Error>) -> () ) { let requestSender = requestSenderProvider.requestSender( diff --git a/Sources/QueueCommunication/DefaultRemoteQueueDetector.swift b/Sources/QueueCommunication/DefaultRemoteQueueDetector.swift index 20722f7e..7664dbda 100644 --- a/Sources/QueueCommunication/DefaultRemoteQueueDetector.swift +++ b/Sources/QueueCommunication/DefaultRemoteQueueDetector.swift @@ -25,7 +25,7 @@ public final class DefaultRemoteQueueDetector: RemoteQueueDetector { self.remotePortDeterminer = remotePortDeterminer } - public func findSuitableRemoteRunningQueuePorts(timeout: TimeInterval) throws -> Set { + public func findSuitableRemoteRunningQueuePorts(timeout: TimeInterval) throws -> Set { let availableQueues = remotePortDeterminer.queryPortAndQueueServerVersion(timeout: timeout) let ports = availableQueues .filter { keyValue -> Bool in keyValue.value == emceeVersion } @@ -33,7 +33,7 @@ public final class DefaultRemoteQueueDetector: RemoteQueueDetector { return Set(ports) } - public func findMasterQueuePort(timeout: TimeInterval) throws -> Int { + public func findMasterQueuePort(timeout: TimeInterval) throws -> Models.Port { let availableQueues = remotePortDeterminer.queryPortAndQueueServerVersion(timeout: timeout) let sortedQueues = availableQueues diff --git a/Sources/QueueCommunication/QueueCommunicationService.swift b/Sources/QueueCommunication/QueueCommunicationService.swift index 3514dd86..42b41acc 100644 --- a/Sources/QueueCommunication/QueueCommunicationService.swift +++ b/Sources/QueueCommunication/QueueCommunicationService.swift @@ -8,7 +8,7 @@ public protocol QueueCommunicationService { ) func deploymentDestinations( - port: Int, + port: Port, completion: @escaping (Either<[DeploymentDestination], Error>) -> () ) } diff --git a/Sources/QueueCommunication/RemoteQueueDetector.swift b/Sources/QueueCommunication/RemoteQueueDetector.swift index a2db773a..777dfcc3 100644 --- a/Sources/QueueCommunication/RemoteQueueDetector.swift +++ b/Sources/QueueCommunication/RemoteQueueDetector.swift @@ -1,6 +1,7 @@ import Foundation +import Models public protocol RemoteQueueDetector { - func findSuitableRemoteRunningQueuePorts(timeout: TimeInterval) throws -> Set - func findMasterQueuePort(timeout: TimeInterval) throws -> Int + func findSuitableRemoteRunningQueuePorts(timeout: TimeInterval) throws -> Set + func findMasterQueuePort(timeout: TimeInterval) throws -> Models.Port } diff --git a/Sources/QueueServer/LocalPortDeterminer+PortProvider.swift b/Sources/QueueServer/LocalPortDeterminer+PortProvider.swift index 39a316e2..fa40cfa9 100644 --- a/Sources/QueueServer/LocalPortDeterminer+PortProvider.swift +++ b/Sources/QueueServer/LocalPortDeterminer+PortProvider.swift @@ -1,9 +1,9 @@ -import Foundation +import Models import PortDeterminer import RESTServer extension LocalPortDeterminer: PortProvider { - public func localPort() throws -> Int { + public func localPort() throws -> Port { return try availableLocalPort() } } diff --git a/Sources/QueueServer/QueueServer.swift b/Sources/QueueServer/QueueServer.swift index 4fb178d6..31eae475 100644 --- a/Sources/QueueServer/QueueServer.swift +++ b/Sources/QueueServer/QueueServer.swift @@ -3,7 +3,7 @@ import Models import QueueModels public protocol QueueServer { - func start() throws -> Int + func start() throws -> Port func schedule( bucketSplitter: BucketSplitter, testEntryConfigurations: [TestEntryConfiguration], diff --git a/Sources/QueueServer/QueueServerImpl.swift b/Sources/QueueServer/QueueServerImpl.swift index 07f40170..99940d8b 100644 --- a/Sources/QueueServer/QueueServerImpl.swift +++ b/Sources/QueueServer/QueueServerImpl.swift @@ -157,7 +157,7 @@ public final class QueueServerImpl: QueueServer { self.toggleWorkersSharingEndpoint = ToggleWorkersSharingEndpoint(poller: workerUtilizationStatusPoller) } - public func start() throws -> Int { + public func start() throws -> Models.Port { httpRestServer.add(handler: RESTEndpointOf(bucketProvider)) httpRestServer.add(handler: RESTEndpointOf(bucketResultRegistrar)) httpRestServer.add(handler: RESTEndpointOf(deploymentDestinationsHandler)) diff --git a/Sources/RESTServer/HTTPRESTServer.swift b/Sources/RESTServer/HTTPRESTServer.swift index 8c597a8a..c8544192 100644 --- a/Sources/RESTServer/HTTPRESTServer.swift +++ b/Sources/RESTServer/HTTPRESTServer.swift @@ -1,6 +1,7 @@ import AutomaticTermination import Foundation import Logging +import Models import RESTMethods import Swifter @@ -46,12 +47,12 @@ public final class HTTPRESTServer { } } - public func start() throws -> Int { + public func start() throws -> Models.Port { let port = try portProvider.localPort() - try server.start(in_port_t(port), forceIPv4: false, priority: .default) + try server.start(in_port_t(port.value), forceIPv4: false, priority: .default) let actualPort = try server.port() Logger.debug("Started REST server on \(actualPort) port") - return actualPort + return Port(value: actualPort) } } diff --git a/Sources/RESTServer/PortProvider.swift b/Sources/RESTServer/PortProvider.swift index 1b96aadb..03c241e9 100644 --- a/Sources/RESTServer/PortProvider.swift +++ b/Sources/RESTServer/PortProvider.swift @@ -1,6 +1,6 @@ -import Foundation +import Models public protocol PortProvider { - func localPort() throws -> Int + func localPort() throws -> Port } diff --git a/Sources/RESTServer/PortProviderWrapper.swift b/Sources/RESTServer/PortProviderWrapper.swift index 6c4a163b..8bc17ef7 100644 --- a/Sources/RESTServer/PortProviderWrapper.swift +++ b/Sources/RESTServer/PortProviderWrapper.swift @@ -1,13 +1,13 @@ -import Foundation +import Models public final class PortProviderWrapper: PortProvider { - private let provider: () throws -> Int + private let provider: () throws -> Port - public init(provider: @escaping () throws -> Int) { + public init(provider: @escaping () throws -> Port) { self.provider = provider } - public func localPort() throws -> Int { + public func localPort() throws -> Port { return try provider() } } diff --git a/Sources/RemotePortDeterminer/RemotePortDeterminer.swift b/Sources/RemotePortDeterminer/RemotePortDeterminer.swift index 4bf9db42..a23300d4 100644 --- a/Sources/RemotePortDeterminer/RemotePortDeterminer.swift +++ b/Sources/RemotePortDeterminer/RemotePortDeterminer.swift @@ -2,5 +2,5 @@ import Foundation import Models public protocol RemotePortDeterminer { - func queryPortAndQueueServerVersion(timeout: TimeInterval) -> [Int: Version] + func queryPortAndQueueServerVersion(timeout: TimeInterval) -> [Models.Port: Version] } diff --git a/Sources/RemotePortDeterminer/RemoteQueuePortScanner.swift b/Sources/RemotePortDeterminer/RemoteQueuePortScanner.swift index 69e41336..7127e0bf 100644 --- a/Sources/RemotePortDeterminer/RemoteQueuePortScanner.swift +++ b/Sources/RemotePortDeterminer/RemoteQueuePortScanner.swift @@ -8,13 +8,13 @@ import RequestSender public final class RemoteQueuePortScanner: RemotePortDeterminer { private let host: String - private let portRange: ClosedRange + private let portRange: ClosedRange private let requestSenderProvider: RequestSenderProvider private let workQueue = DispatchQueue(label: "RemoteQueuePortScanner.workQueue") public init( host: String, - portRange: ClosedRange, + portRange: ClosedRange, requestSenderProvider: RequestSenderProvider ) { self.host = host @@ -22,10 +22,10 @@ public final class RemoteQueuePortScanner: RemotePortDeterminer { self.requestSenderProvider = requestSenderProvider } - public func queryPortAndQueueServerVersion(timeout: TimeInterval) -> [Int: Version] { + public func queryPortAndQueueServerVersion(timeout: TimeInterval) -> [Models.Port: Version] { let group = DispatchGroup() - let portToVersion = AtomicValue<[Int: Version]>([:]) + let portToVersion = AtomicValue<[Models.Port: Version]>([:]) for port in portRange { group.enter() diff --git a/Sources/RequestSender/RequestSenderImpl.swift b/Sources/RequestSender/RequestSenderImpl.swift index 92b6dd9d..3b8efd24 100644 --- a/Sources/RequestSender/RequestSenderImpl.swift +++ b/Sources/RequestSender/RequestSenderImpl.swift @@ -123,7 +123,7 @@ public final class RequestSenderImpl: RequestSender { var components = URLComponents() components.scheme = "http" components.host = queueServerAddress.host - components.port = queueServerAddress.port + components.port = queueServerAddress.port.value components.path = pathWithSlash guard let url = components.url else { throw RequestSenderError.unableToCreateUrl(components) diff --git a/Tests/PortDeterminerTests/LocalPortDeterminerTests.swift b/Tests/PortDeterminerTests/LocalPortDeterminerTests.swift index 79ae3879..b34b177c 100644 --- a/Tests/PortDeterminerTests/LocalPortDeterminerTests.swift +++ b/Tests/PortDeterminerTests/LocalPortDeterminerTests.swift @@ -1,4 +1,5 @@ import Foundation +import Models import PortDeterminer import Swifter import XCTest @@ -13,7 +14,7 @@ final class LocalPortDeterminerTests: XCTestCase { let server = busyServerWithPort() let port = server.port - let determiner = LocalPortDeterminer(portRange: port...port) + let determiner = LocalPortDeterminer(portRange: Models.Port(value: port)...Models.Port(value: port)) XCTAssertThrowsError(_ = try determiner.availableLocalPort()) } @@ -31,8 +32,8 @@ final class LocalPortDeterminerTests: XCTestCase { let freePort = self.freePort() // this could be flaky, as we can't guarantee that we will have continuous port range - if server.port == freePort - 1 { - let determiner = LocalPortDeterminer(portRange: server.port...freePort) + if server.port == freePort.value - 1 { + let determiner = LocalPortDeterminer(portRange: Models.Port(value: server.port)...freePort) XCTAssertNoThrow( XCTAssertEqual(try determiner.availableLocalPort(), freePort) ) @@ -49,7 +50,7 @@ final class LocalPortDeterminerTests: XCTestCase { return (server: httpServer, port: try! httpServer.port()) } - private func freePort(file: StaticString = #file, line: UInt = #line) -> Int { + private func freePort(file: StaticString = #file, line: UInt = #line) -> Models.Port { let temporaryHttpServer = HttpServer() XCTAssertNoThrow( try temporaryHttpServer.start(0, forceIPv4: false, priority: .background), @@ -58,6 +59,6 @@ final class LocalPortDeterminerTests: XCTestCase { ) let port = try! temporaryHttpServer.port() temporaryHttpServer.stop() - return port + return Port(value: port) } } diff --git a/Tests/QueueClientTests/QueueClientTests.swift b/Tests/QueueClientTests/QueueClientTests.swift index da891357..53aa5b28 100644 --- a/Tests/QueueClientTests/QueueClientTests.swift +++ b/Tests/QueueClientTests/QueueClientTests.swift @@ -16,7 +16,7 @@ import XCTest class QueueClientTests: XCTestCase { private var server = HttpServer() - private var port: Int = 0 + private var port: Models.Port = 0 private let delegate = FakeQueueClientDelegate() private var queueClient: QueueClient! private let workerId = WorkerId(value: "workerId") @@ -31,7 +31,7 @@ class QueueClientTests: XCTestCase { do { server[query] = response try server.start(0) - port = try server.port() + port = Models.Port(value: try server.port()) queueClient = QueueClient( queueServerAddress: SocketAddress(host: "127.0.0.1", port: port), requestSenderProvider: DefaultRequestSenderProvider() diff --git a/Tests/QueueCommunicationTestHelpers/FakeQueueCommunicationService.swift b/Tests/QueueCommunicationTestHelpers/FakeQueueCommunicationService.swift index 819a74a6..d516584c 100644 --- a/Tests/QueueCommunicationTestHelpers/FakeQueueCommunicationService.swift +++ b/Tests/QueueCommunicationTestHelpers/FakeQueueCommunicationService.swift @@ -18,7 +18,7 @@ public class FakeQueueCommunicationService: QueueCommunicationService { } public func deploymentDestinations( - port: Int, + port: Port, completion: @escaping (Either<[DeploymentDestination], Error>) -> ()) { completion(.success([])) diff --git a/Tests/QueueCommunicationTestHelpers/FakeRemoteQueueDetector.swift b/Tests/QueueCommunicationTestHelpers/FakeRemoteQueueDetector.swift index 5482474f..7f8caa6c 100644 --- a/Tests/QueueCommunicationTestHelpers/FakeRemoteQueueDetector.swift +++ b/Tests/QueueCommunicationTestHelpers/FakeRemoteQueueDetector.swift @@ -1,17 +1,18 @@ import Foundation +import Models import QueueCommunication import TestHelpers public class FakeRemoteQueueDetector: RemoteQueueDetector { public init() { } - public func findSuitableRemoteRunningQueuePorts(timeout: TimeInterval) throws -> Set { + public func findSuitableRemoteRunningQueuePorts(timeout: TimeInterval) throws -> Set { return Set() } public var shoudThrow = false - public var masterPort = 0 - public func findMasterQueuePort(timeout: TimeInterval) throws -> Int { + public var masterPort: Models.Port = 0 + public func findMasterQueuePort(timeout: TimeInterval) throws -> Models.Port { if shoudThrow { throw ErrorForTestingPurposes(text: "FindMasterQueuePort error") } diff --git a/Tests/QueueServerTestHelpers/QueueServerFixture.swift b/Tests/QueueServerTestHelpers/QueueServerFixture.swift index db18e9e3..74c88bf8 100644 --- a/Tests/QueueServerTestHelpers/QueueServerFixture.swift +++ b/Tests/QueueServerTestHelpers/QueueServerFixture.swift @@ -11,7 +11,7 @@ public class QueueServerFixture: QueueServer { public init() {} - public func start() throws -> Int { + public func start() throws -> Port { return 1 } diff --git a/Tests/QueueServerTests/QueueServerTests.swift b/Tests/QueueServerTests/QueueServerTests.swift index c4979251..940b25d3 100644 --- a/Tests/QueueServerTests/QueueServerTests.swift +++ b/Tests/QueueServerTests/QueueServerTests.swift @@ -181,11 +181,11 @@ final class QueueServerTests: XCTestCase { ) } - private func synchronousQueueClient(port: Int) -> SynchronousQueueClient { + private func synchronousQueueClient(port: Models.Port) -> SynchronousQueueClient { return SynchronousQueueClient(queueServerAddress: queueServerAddress(port: port)) } - private func queueServerAddress(port: Int) -> SocketAddress { + private func queueServerAddress(port: Models.Port) -> SocketAddress { return SocketAddress(host: "localhost", port: port) } } diff --git a/Tests/QueueServerTests/WorkerAlivenessPollerTests.swift b/Tests/QueueServerTests/WorkerAlivenessPollerTests.swift index 772f7113..f0454424 100644 --- a/Tests/QueueServerTests/WorkerAlivenessPollerTests.swift +++ b/Tests/QueueServerTests/WorkerAlivenessPollerTests.swift @@ -123,7 +123,7 @@ final class WorkerAlivenessPollerTests: XCTestCase { for i in 0 ..< numberOfWorkers { workerDetailsHolder.update( workerId: WorkerId(value: "worker__\(i)"), - restAddress: SocketAddress(host: "localhost", port: port) + restAddress: SocketAddress(host: "localhost", port: Port(value: port)) ) server[CurrentlyProcessingBuckets.path.pathWithLeadingSlash] = { request in numberOfProcessedRequests.withExclusiveAccess { $0 += 1 } diff --git a/Tests/RESTServerTests/HTTPRESTServerTests.swift b/Tests/RESTServerTests/HTTPRESTServerTests.swift index 8e4b2423..d7d88114 100644 --- a/Tests/RESTServerTests/HTTPRESTServerTests.swift +++ b/Tests/RESTServerTests/HTTPRESTServerTests.swift @@ -92,7 +92,7 @@ final class HTTPRESTServerTests: XCTestCase { } func startDataTask( - port: Int, + port: Models.Port, body: T, completion: @escaping (Data?, URLResponse?) -> () ) -> (task: URLSessionDataTask, waiter: XCTestExpectation) { diff --git a/Tests/RemotePortDeterminerTestHelpers/RemotePortDeterminerFixture.swift b/Tests/RemotePortDeterminerTestHelpers/RemotePortDeterminerFixture.swift index 884a608d..6d0a2860 100644 --- a/Tests/RemotePortDeterminerTestHelpers/RemotePortDeterminerFixture.swift +++ b/Tests/RemotePortDeterminerTestHelpers/RemotePortDeterminerFixture.swift @@ -3,14 +3,14 @@ import RemotePortDeterminer import Models public final class RemotePortDeterminerFixture: RemotePortDeterminer { - private var result = [Int: Version]() + private var result = [Models.Port: Version]() - public init(result: [Int: Version] = [:]) { + public init(result: [Models.Port: Version] = [:]) { self.result = result } @discardableResult - public func set(port: Int, version: Version) -> RemotePortDeterminerFixture { + public func set(port: Models.Port, version: Version) -> RemotePortDeterminerFixture { result.updateValue(version, forKey: port) return self } @@ -19,7 +19,7 @@ public final class RemotePortDeterminerFixture: RemotePortDeterminer { return self } - public func queryPortAndQueueServerVersion(timeout: TimeInterval) -> [Int: Version] { + public func queryPortAndQueueServerVersion(timeout: TimeInterval) -> [Models.Port: Version] { return result } } diff --git a/Tests/RemotePortDeterminerTests/RemoteQueuePortScannerTests.swift b/Tests/RemotePortDeterminerTests/RemoteQueuePortScannerTests.swift index ea4884e5..f08d1506 100644 --- a/Tests/RemotePortDeterminerTests/RemoteQueuePortScannerTests.swift +++ b/Tests/RemotePortDeterminerTests/RemoteQueuePortScannerTests.swift @@ -32,7 +32,7 @@ final class RemoteQueuePortScannerTests: XCTestCase { } } try server.start(0, forceIPv4: false, priority: .default) - let port = try server.port() + let port = Port(value: try server.port()) let scanner = RemoteQueuePortScanner( host: "localhost", diff --git a/Tests/RequestSenderTestHelpers/RequestSenderFixtures.swift b/Tests/RequestSenderTestHelpers/RequestSenderFixtures.swift index 59ce1cee..2fa24f5d 100644 --- a/Tests/RequestSenderTestHelpers/RequestSenderFixtures.swift +++ b/Tests/RequestSenderTestHelpers/RequestSenderFixtures.swift @@ -3,7 +3,7 @@ import RequestSender import Models public final class RequestSenderFixtures { - public static func localhostRequestSender(port: Int) -> RequestSender { + public static func localhostRequestSender(port: Models.Port) -> RequestSender { return RequestSenderImpl( urlSession: URLSession(configuration: .default), queueServerAddress: SocketAddress(host: "localhost", port: port) diff --git a/Tests/RequestSenderTests/RequestSenderTests.swift b/Tests/RequestSenderTests/RequestSenderTests.swift index 1c0f3ff9..b9e07792 100644 --- a/Tests/RequestSenderTests/RequestSenderTests.swift +++ b/Tests/RequestSenderTests/RequestSenderTests.swift @@ -36,7 +36,7 @@ final class RequestSenderTests: XCTestCase { server["/"] = { _ in HttpResponse.ok(.json(["response": "baz"] as NSDictionary)) } startServer() - let sender = RequestSenderFixtures.localhostRequestSender(port: try server.port()) + let sender = RequestSenderFixtures.localhostRequestSender(port: Port(value: try server.port())) let callbackCalled = expectation(description: "callback has been called") sender.sendRequestWithCallback( @@ -65,7 +65,7 @@ final class RequestSenderTests: XCTestCase { } startServer() - let sender = RequestSenderFixtures.localhostRequestSender(port: try server.port()) + let sender = RequestSenderFixtures.localhostRequestSender(port: Port(value: try server.port())) sender.sendRequestWithCallback( request: FakeNetworkRequest(httpMethod: httpMethod), @@ -89,7 +89,7 @@ final class RequestSenderTests: XCTestCase { } startServer() - let sender = RequestSenderFixtures.localhostRequestSender(port: try server.port()) + let sender = RequestSenderFixtures.localhostRequestSender(port: Port(value: try server.port())) sender.sendRequestWithCallback( request: FakeNetworkRequest(), @@ -111,7 +111,7 @@ final class RequestSenderTests: XCTestCase { } startServer() - let sender = RequestSenderFixtures.localhostRequestSender(port: try server.port()) + let sender = RequestSenderFixtures.localhostRequestSender(port: Port(value: try server.port())) sender.sendRequestWithCallback( request: FakeNetworkRequest(), @@ -139,7 +139,7 @@ final class RequestSenderTests: XCTestCase { } startServer() - let sender = RequestSenderFixtures.localhostRequestSender(port: try server.port()) + let sender = RequestSenderFixtures.localhostRequestSender(port: Port(value: try server.port())) sender.sendRequestWithCallback( request: FakeNetworkRequest(), @@ -160,7 +160,7 @@ final class RequestSenderTests: XCTestCase { } startServer() - let sender = RequestSenderFixtures.localhostRequestSender(port: try server.port()) + let sender = RequestSenderFixtures.localhostRequestSender(port: Port(value: try server.port())) sender.sendRequestWithCallback( request: FakeNetworkRequest(payload: nil), @@ -176,7 +176,7 @@ final class RequestSenderTests: XCTestCase { } startServer() - let sender = RequestSenderFixtures.localhostRequestSender(port: try server.port()) + let sender = RequestSenderFixtures.localhostRequestSender(port: Port(value: try server.port())) let callbackCalled = expectation(description: "callback has been called") sender.sendRequestWithCallback(