|
13 | 13 | //===----------------------------------------------------------------------===//
|
14 | 14 |
|
15 | 15 | @testable import AWSLambdaRuntimeCore
|
| 16 | +#if compiler(>=5.6) |
| 17 | +@preconcurrency import Logging |
| 18 | +@preconcurrency import NIOPosix |
| 19 | +#else |
16 | 20 | import Logging
|
17 |
| -import NIOCore |
18 | 21 | import NIOPosix
|
| 22 | +#endif |
| 23 | +import NIOCore |
19 | 24 | import XCTest
|
20 | 25 |
|
21 | 26 | class LambdaTest: XCTestCase {
|
@@ -250,6 +255,47 @@ class LambdaTest: XCTestCase {
|
250 | 255 | XCTAssertLessThanOrEqual(context.getRemainingTime(), .seconds(1))
|
251 | 256 | XCTAssertGreaterThan(context.getRemainingTime(), .milliseconds(800))
|
252 | 257 | }
|
| 258 | + |
| 259 | + #if compiler(>=5.6) |
| 260 | + func testSendable() async throws { |
| 261 | + struct Handler: EventLoopLambdaHandler { |
| 262 | + typealias Event = String |
| 263 | + typealias Output = String |
| 264 | + |
| 265 | + static func makeHandler(context: Lambda.InitializationContext) -> EventLoopFuture<Handler> { |
| 266 | + context.eventLoop.makeSucceededFuture(Handler()) |
| 267 | + } |
| 268 | + |
| 269 | + func handle(_ event: String, context: LambdaContext) -> EventLoopFuture<String> { |
| 270 | + context.eventLoop.makeSucceededFuture("hello") |
| 271 | + } |
| 272 | + } |
| 273 | + |
| 274 | + let eventLoopGroup = MultiThreadedEventLoopGroup(numberOfThreads: 1) |
| 275 | + defer { XCTAssertNoThrow(try eventLoopGroup.syncShutdownGracefully()) } |
| 276 | + |
| 277 | + let server = try MockLambdaServer(behavior: Behavior()).start().wait() |
| 278 | + defer { XCTAssertNoThrow(try server.stop().wait()) } |
| 279 | + |
| 280 | + let logger = Logger(label: "TestLogger") |
| 281 | + let configuration = Lambda.Configuration(runtimeEngine: .init(requestTimeout: .milliseconds(100))) |
| 282 | + |
| 283 | + let handler1 = Handler() |
| 284 | + let task = Task.detached { |
| 285 | + print(configuration.description) |
| 286 | + logger.info("hello") |
| 287 | + let runner = Lambda.Runner(eventLoop: eventLoopGroup.next(), configuration: configuration) |
| 288 | + |
| 289 | + try runner.run(logger: logger, handler: handler1).wait() |
| 290 | + |
| 291 | + try runner.initialize(logger: logger, terminator: LambdaTerminator(), handlerType: Handler.self).flatMap { handler2 in |
| 292 | + runner.run(logger: logger, handler: handler2) |
| 293 | + }.wait() |
| 294 | + } |
| 295 | + |
| 296 | + try await task.value |
| 297 | + } |
| 298 | + #endif |
253 | 299 | }
|
254 | 300 |
|
255 | 301 | private struct Behavior: LambdaServerBehavior {
|
|
0 commit comments