Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fix Sendable warning in tests #536

Merged
merged 3 commits into from
Feb 10, 2025
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion Package.swift
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ let package = Package(
dependencies: [
.package(url: "https://github.com/apple/swift-atomics.git", from: "1.2.0"),
.package(url: "https://github.com/apple/swift-collections.git", from: "1.0.4"),
.package(url: "https://github.com/apple/swift-nio.git", from: "2.59.0"),
.package(url: "https://github.com/apple/swift-nio.git", from: "2.81.0"),
.package(url: "https://github.com/apple/swift-nio-transport-services.git", from: "1.19.0"),
.package(url: "https://github.com/apple/swift-nio-ssl.git", from: "2.25.0"),
.package(url: "https://github.com/apple/swift-crypto.git", "2.0.0" ..< "4.0.0"),
Expand Down
22 changes: 0 additions & 22 deletions Tests/IntegrationTests/PostgresNIOTests.swift
Original file line number Diff line number Diff line change
Expand Up @@ -1032,28 +1032,6 @@ final class PostgresNIOTests: XCTestCase {
}
}

func testRemoteTLSServer() {
// postgres://uymgphwj:[email protected]:5432/uymgphwj
var conn: PostgresConnection?
let logger = Logger(label: "test")
let sslContext = try! NIOSSLContext(configuration: .makeClientConfiguration())
let config = PostgresConnection.Configuration(
host: "elmer.db.elephantsql.com",
port: 5432,
username: "uymgphwj",
password: "7_tHbREdRwkqAdu4KoIS7hQnNxr8J1LA",
database: "uymgphwj",
tls: .require(sslContext)
)
XCTAssertNoThrow(conn = try PostgresConnection.connect(on: eventLoop, configuration: config, id: 0, logger: logger).wait())
defer { XCTAssertNoThrow( try conn?.close().wait() ) }
var rows: [PostgresRow]?
XCTAssertNoThrow(rows = try conn?.simpleQuery("SELECT version()").wait())
XCTAssertEqual(rows?.count, 1)
let row = rows?.first?.makeRandomAccess()
XCTAssertEqual(row?[data: "version"].string?.contains("PostgreSQL"), true)
}

@available(*, deprecated, message: "Test deprecated functionality")
func testFailingTLSConnectionClosesConnection() {
// There was a bug (https://github.com/vapor/postgres-nio/issues/133) where we would hit
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -124,7 +124,7 @@ class PostgresChannelHandlerTests: XCTestCase {
handler
], loop: self.eventLoop)
let eventHandler = TestEventHandler()
try embedded.pipeline.addHandler(eventHandler, position: .last).wait()
try embedded.pipeline.syncOperations.addHandler(eventHandler, position: .last)

embedded.connect(to: try .init(ipAddress: "0.0.0.0", port: 5432), promise: nil)
XCTAssertTrue(embedded.isActive)
Expand Down
16 changes: 8 additions & 8 deletions Tests/PostgresNIOTests/New/PostgresConnectionTests.swift
Original file line number Diff line number Diff line change
Expand Up @@ -40,10 +40,10 @@ class PostgresConnectionTests: XCTestCase {

func testOptionsAreSentOnTheWire() async throws {
let eventLoop = NIOAsyncTestingEventLoop()
let channel = await NIOAsyncTestingChannel(handlers: [
ReverseByteToMessageHandler(PSQLFrontendMessageDecoder()),
ReverseMessageToByteHandler(PSQLBackendMessageEncoder()),
], loop: eventLoop)
let channel = try await NIOAsyncTestingChannel(loop: eventLoop) { channel in
try channel.pipeline.syncOperations.addHandlers(ReverseByteToMessageHandler(PSQLFrontendMessageDecoder()))
try channel.pipeline.syncOperations.addHandlers(ReverseMessageToByteHandler(PSQLBackendMessageEncoder()))
}
try await channel.connect(to: .makeAddressResolvingHost("localhost", port: 5432))

let configuration = {
Expand Down Expand Up @@ -640,10 +640,10 @@ class PostgresConnectionTests: XCTestCase {

func makeTestConnectionWithAsyncTestingChannel() async throws -> (PostgresConnection, NIOAsyncTestingChannel) {
let eventLoop = NIOAsyncTestingEventLoop()
let channel = await NIOAsyncTestingChannel(handlers: [
ReverseByteToMessageHandler(PSQLFrontendMessageDecoder()),
ReverseMessageToByteHandler(PSQLBackendMessageEncoder()),
], loop: eventLoop)
let channel = try await NIOAsyncTestingChannel(loop: eventLoop) { channel in
try channel.pipeline.syncOperations.addHandlers(ReverseByteToMessageHandler(PSQLFrontendMessageDecoder()))
try channel.pipeline.syncOperations.addHandlers(ReverseMessageToByteHandler(PSQLBackendMessageEncoder()))
}
try await channel.connect(to: .makeAddressResolvingHost("localhost", port: 5432))

let configuration = PostgresConnection.Configuration(
Expand Down
51 changes: 31 additions & 20 deletions Tests/PostgresNIOTests/New/PostgresRowSequenceTests.swift
Original file line number Diff line number Diff line change
@@ -1,25 +1,25 @@
import Atomics
import NIOEmbedded
import Dispatch
import NIOPosix
import XCTest
@testable import PostgresNIO
import NIOCore
import Logging

final class PostgresRowSequenceTests: XCTestCase {
let logger = Logger(label: "PSQLRowStreamTests")
let eventLoop = EmbeddedEventLoop()

func testBackpressureWorks() async throws {
let dataSource = MockRowDataSource()
let embeddedEventLoop = EmbeddedEventLoop()
let stream = PSQLRowStream(
source: .stream(
[
.init(name: "test", tableOID: 0, columnAttributeNumber: 0, dataType: .int8, dataTypeSize: 8, dataTypeModifier: 0, format: .binary)
],
dataSource
),
eventLoop: self.eventLoop,
eventLoop: embeddedEventLoop,
logger: self.logger
)

Expand All @@ -41,14 +41,15 @@ final class PostgresRowSequenceTests: XCTestCase {

func testCancellationWorksWhileIterating() async throws {
let dataSource = MockRowDataSource()
let embeddedEventLoop = EmbeddedEventLoop()
let stream = PSQLRowStream(
source: .stream(
[
.init(name: "test", tableOID: 0, columnAttributeNumber: 0, dataType: .int8, dataTypeSize: 8, dataTypeModifier: 0, format: .binary)
],
dataSource
),
eventLoop: self.eventLoop,
eventLoop: embeddedEventLoop,
logger: self.logger
)

Expand All @@ -72,14 +73,15 @@ final class PostgresRowSequenceTests: XCTestCase {

func testCancellationWorksBeforeIterating() async throws {
let dataSource = MockRowDataSource()
let embeddedEventLoop = EmbeddedEventLoop()
let stream = PSQLRowStream(
source: .stream(
[
.init(name: "test", tableOID: 0, columnAttributeNumber: 0, dataType: .int8, dataTypeSize: 8, dataTypeModifier: 0, format: .binary)
],
dataSource
),
eventLoop: self.eventLoop,
eventLoop: embeddedEventLoop,
logger: self.logger
)

Expand All @@ -97,14 +99,15 @@ final class PostgresRowSequenceTests: XCTestCase {

func testDroppingTheSequenceCancelsTheSource() async throws {
let dataSource = MockRowDataSource()
let embeddedEventLoop = EmbeddedEventLoop()
let stream = PSQLRowStream(
source: .stream(
[
.init(name: "test", tableOID: 0, columnAttributeNumber: 0, dataType: .int8, dataTypeSize: 8, dataTypeModifier: 0, format: .binary)
],
dataSource
),
eventLoop: self.eventLoop,
eventLoop: embeddedEventLoop,
logger: self.logger
)

Expand All @@ -117,14 +120,15 @@ final class PostgresRowSequenceTests: XCTestCase {

func testStreamBasedOnCompletedQuery() async throws {
let dataSource = MockRowDataSource()
let embeddedEventLoop = EmbeddedEventLoop()
let stream = PSQLRowStream(
source: .stream(
[
.init(name: "test", tableOID: 0, columnAttributeNumber: 0, dataType: .int8, dataTypeSize: 8, dataTypeModifier: 0, format: .binary)
],
dataSource
),
eventLoop: self.eventLoop,
eventLoop: embeddedEventLoop,
logger: self.logger
)

Expand All @@ -144,14 +148,15 @@ final class PostgresRowSequenceTests: XCTestCase {

func testStreamIfInitializedWithAllData() async throws {
let dataSource = MockRowDataSource()
let embeddedEventLoop = EmbeddedEventLoop()
let stream = PSQLRowStream(
source: .stream(
[
.init(name: "test", tableOID: 0, columnAttributeNumber: 0, dataType: .int8, dataTypeSize: 8, dataTypeModifier: 0, format: .binary)
],
dataSource
),
eventLoop: self.eventLoop,
eventLoop: embeddedEventLoop,
logger: self.logger
)

Expand All @@ -172,14 +177,15 @@ final class PostgresRowSequenceTests: XCTestCase {

func testStreamIfInitializedWithError() async throws {
let dataSource = MockRowDataSource()
let embeddedEventLoop = EmbeddedEventLoop()
let stream = PSQLRowStream(
source: .stream(
[
.init(name: "test", tableOID: 0, columnAttributeNumber: 0, dataType: .int8, dataTypeSize: 8, dataTypeModifier: 0, format: .binary)
],
dataSource
),
eventLoop: self.eventLoop,
eventLoop: embeddedEventLoop,
logger: self.logger
)

Expand All @@ -200,29 +206,30 @@ final class PostgresRowSequenceTests: XCTestCase {

func testSucceedingRowContinuationsWorks() async throws {
let dataSource = MockRowDataSource()
let eventLoop = NIOSingletons.posixEventLoopGroup.next()
let stream = PSQLRowStream(
source: .stream(
[
.init(name: "test", tableOID: 0, columnAttributeNumber: 0, dataType: .int8, dataTypeSize: 8, dataTypeModifier: 0, format: .binary)
],
dataSource
),
eventLoop: self.eventLoop,
eventLoop: eventLoop,
logger: self.logger
)

let rowSequence = stream.asyncSequence()
let rowSequence = try await eventLoop.submit { stream.asyncSequence() }.get()
var rowIterator = rowSequence.makeAsyncIterator()

DispatchQueue.main.asyncAfter(deadline: .now() + .seconds(1)) {
eventLoop.scheduleTask(in: .seconds(1)) {
let dataRows: [DataRow] = (0..<1).map { [ByteBuffer(integer: Int64($0))] }
stream.receive(dataRows)
}

let row1 = try await rowIterator.next()
XCTAssertEqual(try row1?.decode(Int.self), 0)

DispatchQueue.main.asyncAfter(deadline: .now() + .seconds(1)) {
eventLoop.scheduleTask(in: .seconds(1)) {
stream.receive(completion: .success("SELECT 1"))
}

Expand All @@ -232,29 +239,30 @@ final class PostgresRowSequenceTests: XCTestCase {

func testFailingRowContinuationsWorks() async throws {
let dataSource = MockRowDataSource()
let eventLoop = NIOSingletons.posixEventLoopGroup.next()
let stream = PSQLRowStream(
source: .stream(
[
.init(name: "test", tableOID: 0, columnAttributeNumber: 0, dataType: .int8, dataTypeSize: 8, dataTypeModifier: 0, format: .binary)
],
dataSource
),
eventLoop: self.eventLoop,
eventLoop: eventLoop,
logger: self.logger
)

let rowSequence = stream.asyncSequence()
let rowSequence = try await eventLoop.submit { stream.asyncSequence() }.get()
var rowIterator = rowSequence.makeAsyncIterator()

DispatchQueue.main.asyncAfter(deadline: .now() + .seconds(1)) {
eventLoop.scheduleTask(in: .seconds(1)) {
let dataRows: [DataRow] = (0..<1).map { [ByteBuffer(integer: Int64($0))] }
stream.receive(dataRows)
}

let row1 = try await rowIterator.next()
XCTAssertEqual(try row1?.decode(Int.self), 0)

DispatchQueue.main.asyncAfter(deadline: .now() + .seconds(1)) {
eventLoop.scheduleTask(in: .seconds(1)) {
stream.receive(completion: .failure(PSQLError.serverClosedConnection(underlying: nil)))
}

Expand All @@ -268,14 +276,15 @@ final class PostgresRowSequenceTests: XCTestCase {

func testAdaptiveRowBufferShrinksAndGrows() async throws {
let dataSource = MockRowDataSource()
let embeddedEventLoop = EmbeddedEventLoop()
let stream = PSQLRowStream(
source: .stream(
[
.init(name: "test", tableOID: 0, columnAttributeNumber: 0, dataType: .int8, dataTypeSize: 8, dataTypeModifier: 0, format: .binary)
],
dataSource
),
eventLoop: self.eventLoop,
eventLoop: embeddedEventLoop,
logger: self.logger
)

Expand Down Expand Up @@ -332,14 +341,15 @@ final class PostgresRowSequenceTests: XCTestCase {

func testAdaptiveRowShrinksToMin() async throws {
let dataSource = MockRowDataSource()
let embeddedEventLoop = EmbeddedEventLoop()
let stream = PSQLRowStream(
source: .stream(
[
.init(name: "test", tableOID: 0, columnAttributeNumber: 0, dataType: .int8, dataTypeSize: 8, dataTypeModifier: 0, format: .binary)
],
dataSource
),
eventLoop: self.eventLoop,
eventLoop: embeddedEventLoop,
logger: self.logger
)

Expand Down Expand Up @@ -386,14 +396,15 @@ final class PostgresRowSequenceTests: XCTestCase {

func testStreamBufferAcceptsNewRowsEventhoughItDidntAskForIt() async throws {
let dataSource = MockRowDataSource()
let embeddedEventLoop = EmbeddedEventLoop()
let stream = PSQLRowStream(
source: .stream(
[
.init(name: "test", tableOID: 0, columnAttributeNumber: 0, dataType: .int8, dataTypeSize: 8, dataTypeModifier: 0, format: .binary)
],
dataSource
),
eventLoop: self.eventLoop,
eventLoop: embeddedEventLoop,
logger: self.logger
)

Expand Down
Loading