Skip to content

Commit e048917

Browse files
committed
Move Connection tests out of ConnectionsState tests into separate file.
Motivation: Clean up of code to address issue swift-server#234 - here we move away connection tests to separate files outside of ConnectionsState tests so we will be able to work on the ConnectionsState in focussed mode. Modifications: Connection tests moved to separate files. Result: No observable changes.
1 parent 0032344 commit e048917

File tree

5 files changed

+265
-251
lines changed

5 files changed

+265
-251
lines changed

Tests/AsyncHTTPClientTests/ConnectionPoolTests+XCTest.swift

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -57,11 +57,6 @@ extension ConnectionPoolTests {
5757
("testTimeoutAvailableConnection", testTimeoutAvailableConnection),
5858
("testRemoteClosedLeasedConnection", testRemoteClosedLeasedConnection),
5959
("testRemoteClosedAvailableConnection", testRemoteClosedAvailableConnection),
60-
("testConnectionReleaseActive", testConnectionReleaseActive),
61-
("testConnectionReleaseInactive", testConnectionReleaseInactive),
62-
("testConnectionRemoteCloseRelease", testConnectionRemoteCloseRelease),
63-
("testConnectionTimeoutRelease", testConnectionTimeoutRelease),
64-
("testAcquireAvailableBecomesUnavailable", testAcquireAvailableBecomesUnavailable),
6560
("testShutdownOnPendingAndSuccess", testShutdownOnPendingAndSuccess),
6661
("testShutdownOnPendingAndError", testShutdownOnPendingAndError),
6762
("testShutdownTimeout", testShutdownTimeout),

Tests/AsyncHTTPClientTests/ConnectionPoolTests.swift

Lines changed: 0 additions & 246 deletions
Original file line numberDiff line numberDiff line change
@@ -1219,176 +1219,6 @@ class ConnectionPoolTests: XCTestCase {
12191219
self.http1ConnectionProvider.execute(action, logger: HTTPClient.loggingDisabled)
12201220
}
12211221

1222-
// MARK: - Connection Tests
1223-
1224-
func testConnectionReleaseActive() throws {
1225-
let channel = ActiveChannel(eventLoop: self.eventLoop)
1226-
var snapshot = self.http1ConnectionProvider.state.testsOnly_getInternalState()
1227-
1228-
let connection = Connection(channel: channel, provider: self.http1ConnectionProvider)
1229-
snapshot.openedConnectionsCount = 1
1230-
snapshot.leasedConnections.insert(ConnectionKey(connection))
1231-
1232-
self.http1ConnectionProvider.state.testsOnly_setInternalState(snapshot)
1233-
1234-
XCTAssertEqual(0, snapshot.availableConnections.count)
1235-
XCTAssertEqual(1, snapshot.leasedConnections.count)
1236-
XCTAssertEqual(0, snapshot.waiters.count)
1237-
XCTAssertEqual(0, snapshot.pending)
1238-
XCTAssertEqual(1, snapshot.openedConnectionsCount)
1239-
1240-
connection.release(closing: false, logger: HTTPClient.loggingDisabled)
1241-
1242-
// XCTAssertFalse(connection.isInUse)
1243-
snapshot = self.http1ConnectionProvider.state.testsOnly_getInternalState()
1244-
XCTAssertEqual(1, snapshot.availableConnections.count)
1245-
XCTAssertEqual(0, snapshot.leasedConnections.count)
1246-
XCTAssertEqual(0, snapshot.waiters.count)
1247-
XCTAssertEqual(0, snapshot.pending)
1248-
XCTAssertEqual(1, snapshot.openedConnectionsCount)
1249-
1250-
// cleanup
1251-
// this cleanup code needs to go and use HTTP1ConnectionProvider's API instead
1252-
// (https://github.com/swift-server/async-http-client/issues/234)
1253-
connection.remoteClosed(logger: HTTPClient.loggingDisabled)
1254-
}
1255-
1256-
func testConnectionReleaseInactive() throws {
1257-
let channel = EmbeddedChannel()
1258-
1259-
var snapshot = self.http1ConnectionProvider.state.testsOnly_getInternalState()
1260-
1261-
let connection = Connection(channel: channel, provider: self.http1ConnectionProvider)
1262-
snapshot.openedConnectionsCount = 1
1263-
snapshot.leasedConnections.insert(ConnectionKey(connection))
1264-
1265-
self.http1ConnectionProvider.state.testsOnly_setInternalState(snapshot)
1266-
1267-
XCTAssertEqual(0, snapshot.availableConnections.count)
1268-
XCTAssertEqual(1, snapshot.leasedConnections.count)
1269-
XCTAssertEqual(0, snapshot.waiters.count)
1270-
XCTAssertEqual(0, snapshot.pending)
1271-
XCTAssertEqual(1, snapshot.openedConnectionsCount)
1272-
1273-
connection.release(closing: true, logger: HTTPClient.loggingDisabled)
1274-
1275-
snapshot = self.http1ConnectionProvider.state.testsOnly_getInternalState()
1276-
XCTAssertEqual(0, snapshot.availableConnections.count)
1277-
XCTAssertEqual(0, snapshot.leasedConnections.count)
1278-
XCTAssertEqual(0, snapshot.waiters.count)
1279-
XCTAssertEqual(0, snapshot.pending)
1280-
XCTAssertEqual(0, snapshot.openedConnectionsCount)
1281-
}
1282-
1283-
func testConnectionRemoteCloseRelease() throws {
1284-
let channel = EmbeddedChannel()
1285-
1286-
var snapshot = self.http1ConnectionProvider.state.testsOnly_getInternalState()
1287-
1288-
let connection = Connection(channel: channel, provider: self.http1ConnectionProvider)
1289-
snapshot.availableConnections.append(connection)
1290-
snapshot.openedConnectionsCount = 1
1291-
1292-
self.http1ConnectionProvider.state.testsOnly_setInternalState(snapshot)
1293-
1294-
XCTAssertEqual(1, snapshot.availableConnections.count)
1295-
XCTAssertEqual(0, snapshot.leasedConnections.count)
1296-
XCTAssertEqual(0, snapshot.waiters.count)
1297-
XCTAssertEqual(0, snapshot.pending)
1298-
XCTAssertEqual(1, snapshot.openedConnectionsCount)
1299-
1300-
connection.remoteClosed(logger: HTTPClient.loggingDisabled)
1301-
1302-
snapshot = self.http1ConnectionProvider.state.testsOnly_getInternalState()
1303-
XCTAssertEqual(0, snapshot.availableConnections.count)
1304-
XCTAssertEqual(0, snapshot.leasedConnections.count)
1305-
XCTAssertEqual(0, snapshot.waiters.count)
1306-
XCTAssertEqual(0, snapshot.pending)
1307-
XCTAssertEqual(0, snapshot.openedConnectionsCount)
1308-
}
1309-
1310-
func testConnectionTimeoutRelease() throws {
1311-
let channel = EmbeddedChannel()
1312-
1313-
var snapshot = self.http1ConnectionProvider.state.testsOnly_getInternalState()
1314-
1315-
let connection = Connection(channel: channel, provider: self.http1ConnectionProvider)
1316-
snapshot.availableConnections.append(connection)
1317-
snapshot.openedConnectionsCount = 1
1318-
1319-
self.http1ConnectionProvider.state.testsOnly_setInternalState(snapshot)
1320-
1321-
XCTAssertEqual(1, snapshot.availableConnections.count)
1322-
XCTAssertEqual(0, snapshot.leasedConnections.count)
1323-
XCTAssertEqual(0, snapshot.waiters.count)
1324-
XCTAssertEqual(0, snapshot.pending)
1325-
XCTAssertEqual(1, snapshot.openedConnectionsCount)
1326-
1327-
connection.timeout(logger: HTTPClient.loggingDisabled)
1328-
1329-
snapshot = self.http1ConnectionProvider.state.testsOnly_getInternalState()
1330-
XCTAssertEqual(0, snapshot.availableConnections.count)
1331-
XCTAssertEqual(0, snapshot.leasedConnections.count)
1332-
XCTAssertEqual(0, snapshot.waiters.count)
1333-
XCTAssertEqual(0, snapshot.pending)
1334-
XCTAssertEqual(0, snapshot.openedConnectionsCount)
1335-
}
1336-
1337-
func testAcquireAvailableBecomesUnavailable() throws {
1338-
let channel = ActiveChannel(eventLoop: self.eventLoop)
1339-
var snapshot = self.http1ConnectionProvider.state.testsOnly_getInternalState()
1340-
1341-
let connection = Connection(channel: channel, provider: self.http1ConnectionProvider)
1342-
snapshot.availableConnections.append(connection)
1343-
snapshot.openedConnectionsCount = 1
1344-
1345-
self.http1ConnectionProvider.state.testsOnly_setInternalState(snapshot)
1346-
1347-
XCTAssertEqual(1, snapshot.availableConnections.count)
1348-
XCTAssertEqual(0, snapshot.leasedConnections.count)
1349-
XCTAssertEqual(0, snapshot.waiters.count)
1350-
XCTAssertEqual(0, snapshot.pending)
1351-
XCTAssertEqual(1, snapshot.openedConnectionsCount)
1352-
1353-
XCTAssertTrue(self.http1ConnectionProvider.enqueue())
1354-
1355-
let action = self.http1ConnectionProvider.state.acquire(waiter: .init(promise: self.eventLoop.makePromise(), setupComplete: self.eventLoop.makeSucceededFuture(()), preference: .indifferent))
1356-
switch action {
1357-
case .lease(let connection, let waiter):
1358-
// Since this connection is already in use, this should be a no-op and state should not have changed from normal lease
1359-
connection.timeout(logger: HTTPClient.loggingDisabled)
1360-
1361-
snapshot = self.http1ConnectionProvider.state.testsOnly_getInternalState()
1362-
XCTAssertTrue(connection.isActiveEstimation)
1363-
XCTAssertTrue(snapshot.leasedConnections.contains(ConnectionKey(connection)))
1364-
XCTAssertEqual(0, snapshot.availableConnections.count)
1365-
XCTAssertEqual(1, snapshot.leasedConnections.count)
1366-
XCTAssertEqual(0, snapshot.waiters.count)
1367-
XCTAssertEqual(0, snapshot.pending)
1368-
XCTAssertEqual(1, snapshot.openedConnectionsCount)
1369-
1370-
// This is unrecoverable, but in this case we create a new connection, so state again should not change, even though release will be called
1371-
// This is important to preventself.http1ConnectionProvider deletion since connection is released and there could be 0 waiters
1372-
connection.remoteClosed(logger: HTTPClient.loggingDisabled)
1373-
1374-
snapshot = self.http1ConnectionProvider.state.testsOnly_getInternalState()
1375-
XCTAssertTrue(snapshot.leasedConnections.contains(ConnectionKey(connection)))
1376-
XCTAssertEqual(0, snapshot.availableConnections.count)
1377-
XCTAssertEqual(1, snapshot.leasedConnections.count)
1378-
XCTAssertEqual(0, snapshot.waiters.count)
1379-
XCTAssertEqual(0, snapshot.pending)
1380-
XCTAssertEqual(1, snapshot.openedConnectionsCount)
1381-
1382-
// cleanup
1383-
// this cleanup code needs to go and use HTTP1ConnectionProvider's API instead
1384-
// (https://github.com/swift-server/async-http-client/issues/234)
1385-
waiter.promise.fail(TempError())
1386-
self.http1ConnectionProvider.release(connection: connection, closing: true, logger: HTTPClient.loggingDisabled)
1387-
default:
1388-
XCTFail("Unexpected action: \(action)")
1389-
}
1390-
}
1391-
13921222
// MARK: - Shutdown tests
13931223

13941224
func testShutdownOnPendingAndSuccess() {
@@ -1555,79 +1385,3 @@ class ConnectionPoolTests: XCTestCase {
15551385
self.http1ConnectionProvider = nil
15561386
}
15571387
}
1558-
1559-
class ActiveChannel: Channel, ChannelCore {
1560-
struct NotImplementedError: Error {}
1561-
1562-
func localAddress0() throws -> SocketAddress {
1563-
throw NotImplementedError()
1564-
}
1565-
1566-
func remoteAddress0() throws -> SocketAddress {
1567-
throw NotImplementedError()
1568-
}
1569-
1570-
func register0(promise: EventLoopPromise<Void>?) {
1571-
promise?.fail(NotImplementedError())
1572-
}
1573-
1574-
func bind0(to: SocketAddress, promise: EventLoopPromise<Void>?) {
1575-
promise?.fail(NotImplementedError())
1576-
}
1577-
1578-
func connect0(to: SocketAddress, promise: EventLoopPromise<Void>?) {
1579-
promise?.fail(NotImplementedError())
1580-
}
1581-
1582-
func write0(_ data: NIOAny, promise: EventLoopPromise<Void>?) {
1583-
promise?.fail(NotImplementedError())
1584-
}
1585-
1586-
func flush0() {}
1587-
1588-
func read0() {}
1589-
1590-
func close0(error: Error, mode: CloseMode, promise: EventLoopPromise<Void>?) {
1591-
promise?.succeed(())
1592-
}
1593-
1594-
func triggerUserOutboundEvent0(_ event: Any, promise: EventLoopPromise<Void>?) {
1595-
promise?.fail(NotImplementedError())
1596-
}
1597-
1598-
func channelRead0(_: NIOAny) {}
1599-
1600-
func errorCaught0(error: Error) {}
1601-
1602-
var allocator: ByteBufferAllocator
1603-
var closeFuture: EventLoopFuture<Void>
1604-
var eventLoop: EventLoop
1605-
1606-
var localAddress: SocketAddress?
1607-
var remoteAddress: SocketAddress?
1608-
var parent: Channel?
1609-
var isWritable: Bool = true
1610-
var isActive: Bool = true
1611-
1612-
init(eventLoop: EmbeddedEventLoop) {
1613-
self.allocator = ByteBufferAllocator()
1614-
self.eventLoop = eventLoop
1615-
self.closeFuture = self.eventLoop.makeSucceededFuture(())
1616-
}
1617-
1618-
var _channelCore: ChannelCore {
1619-
return self
1620-
}
1621-
1622-
var pipeline: ChannelPipeline {
1623-
return ChannelPipeline(channel: self)
1624-
}
1625-
1626-
func setOption<Option>(_ option: Option, value: Option.Value) -> EventLoopFuture<Void> where Option: ChannelOption {
1627-
preconditionFailure("Not implemented")
1628-
}
1629-
1630-
func getOption<Option>(_: Option) -> EventLoopFuture<Option.Value> where Option: ChannelOption {
1631-
preconditionFailure("Not implemented")
1632-
}
1633-
}
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
//===----------------------------------------------------------------------===//
2+
//
3+
// This source file is part of the AsyncHTTPClient open source project
4+
//
5+
// Copyright (c) 2018-2019 Apple Inc. and the AsyncHTTPClient project authors
6+
// Licensed under Apache License v2.0
7+
//
8+
// See LICENSE.txt for license information
9+
// See CONTRIBUTORS.txt for the list of AsyncHTTPClient project authors
10+
//
11+
// SPDX-License-Identifier: Apache-2.0
12+
//
13+
//===----------------------------------------------------------------------===//
14+
//
15+
// ConnectionTests+XCTest.swift
16+
//
17+
import XCTest
18+
19+
///
20+
/// NOTE: This file was generated by generate_linux_tests.rb
21+
///
22+
/// Do NOT edit this file directly as it will be regenerated automatically when needed.
23+
///
24+
25+
extension ConnectionTests {
26+
static var allTests: [(String, (ConnectionTests) -> () throws -> Void)] {
27+
return [
28+
("testConnectionReleaseActive", testConnectionReleaseActive),
29+
("testConnectionReleaseInactive", testConnectionReleaseInactive),
30+
("testConnectionRemoteCloseRelease", testConnectionRemoteCloseRelease),
31+
("testConnectionTimeoutRelease", testConnectionTimeoutRelease),
32+
("testAcquireAvailableBecomesUnavailable", testAcquireAvailableBecomesUnavailable),
33+
]
34+
}
35+
}

0 commit comments

Comments
 (0)