Skip to content

Commit 2595b0a

Browse files
authored
Update to Swift 5 (#92)
1 parent 0d7e4b7 commit 2595b0a

File tree

8 files changed

+76
-26
lines changed

8 files changed

+76
-26
lines changed

.gitignore

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
1+
Package.resolved
12
.build
23
build
34
.vagrant
4-
Package*
5+
Packages*
56
*.pkg
67
Kitura-WebSocket.xcodeproj
78
*.DS_Store

.swift-version

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
4.2.3
1+
5.0

.travis.yml

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -25,17 +25,17 @@ matrix:
2525
dist: xenial
2626
sudo: required
2727
services: docker
28-
env: DOCKER_IMAGE=swift:4.2.3
28+
env: DOCKER_IMAGE=swift:4.2.4 SWIFT_SNAPSHOT=4.2.4
2929
- os: linux
3030
dist: xenial
3131
sudo: required
3232
services: docker
33-
env: DOCKER_IMAGE=swift:4.2.3 SWIFT_SNAPSHOT=$SWIFT_DEVELOPMENT_SNAPSHOT
33+
env: DOCKER_IMAGE=swift:5.0-xenial
3434
- os: linux
3535
dist: xenial
3636
sudo: required
3737
services: docker
38-
env: DOCKER_IMAGE=ubuntu:18.04
38+
env: DOCKER_IMAGE=swift:5.0 SWIFT_SNAPSHOT=$SWIFT_DEVELOPMENT_SNAPSHOT
3939
- os: osx
4040
osx_image: xcode9.2
4141
sudo: required
@@ -47,8 +47,12 @@ matrix:
4747
- os: osx
4848
osx_image: xcode10.1
4949
sudo: required
50+
env: SWIFT_SNAPSHOT=4.2.1
5051
- os: osx
51-
osx_image: xcode10.1
52+
osx_image: xcode10.2
53+
sudo: required
54+
- os: osx
55+
osx_image: xcode10.2
5256
sudo: required
5357
env: SWIFT_SNAPSHOT=$SWIFT_DEVELOPMENT_SNAPSHOT
5458

Package.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
// swift-tools-version:4.0
1+
// swift-tools-version:5.0
22
// The swift-tools-version declares the minimum version of Swift required to build this package.
33

44
/**

Package@swift-4.swift

Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
// swift-tools-version:4.0
2+
// The swift-tools-version declares the minimum version of Swift required to build this package.
3+
4+
/**
5+
* Copyright IBM Corporation 2016, 2017
6+
*
7+
* Licensed under the Apache License, Version 2.0 (the "License");
8+
* you may not use this file except in compliance with the License.
9+
* You may obtain a copy of the License at
10+
*
11+
* http://www.apache.org/licenses/LICENSE-2.0
12+
*
13+
* Unless required by applicable law or agreed to in writing, software
14+
* distributed under the License is distributed on an "AS IS" BASIS,
15+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16+
* See the License for the specific language governing permissions and
17+
* limitations under the License.
18+
**/
19+
20+
import PackageDescription
21+
22+
let package = Package(
23+
name: "Kitura-WebSocket",
24+
products: [
25+
// Products define the executables and libraries produced by a package, and make them visible to other packages.
26+
.library(
27+
name: "Kitura-WebSocket",
28+
targets: ["KituraWebSocket"]),
29+
],
30+
dependencies: [
31+
// Dependencies declare other packages that this package depends on.
32+
// .package(url: /* package url */, from: "1.0.0"),
33+
.package(url: "https://github.com/IBM-Swift/Kitura-net.git", from: "2.1.0"),
34+
.package(url: "https://github.com/IBM-Swift/BlueCryptor.git", from: "1.0.0"),
35+
36+
],
37+
targets: [
38+
// Targets are the basic building blocks of a package. A target defines a module or a test suite.
39+
// Targets can depend on other targets in this package, and on products in packages which this package depends on.
40+
.target(
41+
name: "KituraWebSocket",
42+
dependencies: ["KituraNet", "Cryptor"]),
43+
.testTarget(
44+
name: "KituraWebSocketTests",
45+
dependencies: ["KituraWebSocket"]),
46+
]
47+
)

Tests/KituraWebSocketTests/ConnectionCleanupTests.swift

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -40,12 +40,12 @@ class ConnectionCleanupTests: KituraTest {
4040
XCTAssertEqual(service.connections.count, 0, "Connections left on service at start of test")
4141
guard let socket = self.sendUpgradeRequest(toPath: self.servicePath, usingKey: self.secWebKey) else { return }
4242
let _ = self.checkUpgradeResponse(from: socket, forKey: self.secWebKey)
43-
usleep(1500)
43+
usleep(5000)
4444
XCTAssertEqual(service.connections.count, 1, "Failed to create connection to service")
4545
usleep(1500000)
4646
XCTAssertEqual(service.connections.count, 1, "Stale connection was unexpectedly cleaned up")
4747
socket.close()
48-
usleep(150)
48+
usleep(1000)
4949
expectation.fulfill()
5050
}
5151
}
@@ -57,12 +57,12 @@ class ConnectionCleanupTests: KituraTest {
5757
XCTAssertEqual(service.connections.count, 0, "Connections left on service at start of test")
5858
guard let socket = self.sendUpgradeRequest(toPath: self.servicePath, usingKey: self.secWebKey) else { return }
5959
let _ = self.checkUpgradeResponse(from: socket, forKey: self.secWebKey)
60-
usleep(1500)
60+
usleep(5000)
6161
XCTAssertEqual(service.connections.count, 1, "Failed to create connection to service")
6262
usleep(1500000)
6363
XCTAssertEqual(service.connections.count, 0, "Stale connection was not cleaned up")
6464
socket.close()
65-
usleep(150)
65+
usleep(1000)
6666
expectation.fulfill()
6767
}
6868
}
@@ -74,7 +74,7 @@ class ConnectionCleanupTests: KituraTest {
7474
XCTAssertEqual(service.connections.count, 0, "Connections left on service at start of test")
7575
guard let socket = self.sendUpgradeRequest(toPath: self.servicePath, usingKey: self.secWebKey) else { return }
7676
let _ = self.checkUpgradeResponse(from: socket, forKey: self.secWebKey)
77-
usleep(1500)
77+
usleep(5000)
7878
XCTAssertEqual(service.connections.count, 1, "Failed to create connection to service")
7979
usleep(500000)
8080
self.sendFrame(final: true, withOpcode: self.opcodePing, withPayload: NSData(), on: socket)
@@ -86,7 +86,7 @@ class ConnectionCleanupTests: KituraTest {
8686
usleep(500000)
8787
XCTAssertEqual(service.connections.count, 0, "Connection was not removed even after getting a close opcode")
8888
socket.close()
89-
usleep(150)
89+
usleep(1000)
9090
expectation.fulfill()
9191
}
9292
}
@@ -98,11 +98,11 @@ class ConnectionCleanupTests: KituraTest {
9898
XCTAssertEqual(service.connections.count, 0, "Connections left on service at start of test")
9999
guard let socket = self.sendUpgradeRequest(toPath: self.servicePath, usingKey: self.secWebKey) else { return }
100100
let _ = self.checkUpgradeResponse(from: socket, forKey: self.secWebKey)
101-
usleep(1500)
101+
usleep(5000)
102102
XCTAssertEqual(service.connections.count, 1, "Failed to create connection to service")
103103
guard let socket2 = self.sendUpgradeRequest(toPath: self.servicePath, usingKey: self.secWebKey) else { return }
104104
let _ = self.checkUpgradeResponse(from: socket2, forKey: self.secWebKey)
105-
usleep(1500)
105+
usleep(5000)
106106
XCTAssertEqual(service.connections.count, 2, "Failed to create second connection to service")
107107
usleep(500000)
108108
self.sendFrame(final: true, withOpcode: self.opcodePing, withPayload: NSData(), on: socket)
@@ -113,7 +113,7 @@ class ConnectionCleanupTests: KituraTest {
113113
XCTAssertEqual(service.connections.count, 1, "Stale connection was not cleaned up")
114114
socket.close()
115115
socket2.close()
116-
usleep(150)
116+
usleep(1000)
117117
expectation.fulfill()
118118
}
119119
}
@@ -125,14 +125,14 @@ class ConnectionCleanupTests: KituraTest {
125125
XCTAssertEqual(service.connections.count, 0, "Connections left on service at start of test")
126126
guard let socket = self.sendUpgradeRequest(toPath: self.servicePath, usingKey: self.secWebKey) else { return }
127127
let _ = self.checkUpgradeResponse(from: socket, forKey: self.secWebKey)
128-
usleep(1500)
128+
usleep(5000)
129129
XCTAssertEqual(service.connections.count, 1, "Failed to create connection to service")
130130
let connections = Array(service.connections.values)
131131
connections[0].processor?.close()
132-
usleep(1500)
132+
usleep(5000)
133133
XCTAssertEqual(service.connections.count, 0, "Service was not notified of connection disconnect")
134134
socket.close()
135-
usleep(150)
135+
usleep(1000)
136136
expectation.fulfill()
137137
}
138138
}

Tests/KituraWebSocketTests/ProtocolErrorTests.swift

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -87,10 +87,6 @@ class ProtocolErrorTests: KituraTest {
8787

8888
performServerTest() { expectation in
8989

90-
let text = "Testing, testing 1, 2, 3. "
91-
92-
let textPayload = self.payload(text: text)
93-
9490
let expectedPayload = NSMutableData()
9591
var part = self.payload(closeReasonCode: .protocolError)
9692
expectedPayload.append(part.bytes, length: part.length)
@@ -99,9 +95,7 @@ class ProtocolErrorTests: KituraTest {
9995

10096
let pingPayload = self.payload(text: "Testing, testing 1,2,3")
10197

102-
self.performTest(framesToSend: [(false, self.opcodePing, pingPayload),
103-
(false, self.opcodeContinuation, textPayload),
104-
(true, self.opcodeContinuation, textPayload)],
98+
self.performTest(framesToSend: [(false, self.opcodePing, pingPayload)],
10599
expectedFrames: [(true, self.opcodeClose, expectedPayload)],
106100
expectation: expectation)
107101
}

Tests/LinuxMain.swift

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,11 @@ import Glibc
2727

2828
srand(UInt32(time(nil)))
2929
for (firstUnshuffled , unshuffledCount) in zip(indices, stride(from: c, to: 1, by: -1)) {
30+
#if swift(>=4.1)
31+
let d: Int = numericCast(random() % numericCast(unshuffledCount))
32+
#else
3033
let d: IndexDistance = numericCast(random() % numericCast(unshuffledCount))
34+
#endif
3135
guard d != 0 else { continue }
3236
let i = index(firstUnshuffled, offsetBy: d)
3337
swapAt(firstUnshuffled, i)

0 commit comments

Comments
 (0)