Procházet zdrojové kódy

Fix the GRPCTests again without using a sleep call:

We need to return status OK here, as it seems like the server might never send out the last few messages once it has been asked to send a non-OK status. Alternatively, we could send a non-OK status here, but then we would need to sleep for a few milliseconds before sending the non-OK status.
Daniel Alm před 7 roky
rodič
revize
415307ee6f
1 změnil soubory, kde provedl 18 přidání a 16 odebrání
  1. 18 16
      Tests/SwiftGRPCTests/GRPCTests.swift

+ 18 - 16
Tests/SwiftGRPCTests/GRPCTests.swift

@@ -193,8 +193,8 @@ func callServerStream(channel: Channel) throws {
   try call.start(.serverStreaming, metadata: metadata, message: message) {
     response in
 
-    XCTAssertEqual(response.statusCode, StatusCode.outOfRange)
-    XCTAssertEqual(response.statusMessage, "Out of range")
+    XCTAssertEqual(response.statusCode, .ok)
+    XCTAssertEqual(response.statusMessage, "Custom Status Message ServerStreaming")
 
     // verify the trailing metadata from the server
     let trailingMetadata = response.trailingMetadata!
@@ -233,8 +233,8 @@ func callBiDiStream(channel: Channel) throws {
   try call.start(.bidiStreaming, metadata: metadata, message: message) {
     response in
 
-    XCTAssertEqual(response.statusCode, StatusCode.resourceExhausted)
-    XCTAssertEqual(response.statusMessage, "Resource Exhausted")
+    XCTAssertEqual(response.statusCode, .ok)
+    XCTAssertEqual(response.statusMessage, "Custom Status Message BiDi")
 
     // verify the trailing metadata from the server
     let trailingMetadata = response.trailingMetadata!
@@ -351,15 +351,16 @@ func handleServerStream(requestHandler: Handler) throws {
       XCTAssertNil(error)
     }
     requestHandler.call.messageQueueEmpty.wait()
-    // FIXME(danielalm): For some (so far unknown) reason, this delay is required to prevent some sent messages to get
-    // dropped, even though we already queue messages that can't be sent right now.
-    Thread.sleep(forTimeInterval: 0.0001)
   }
 
   let trailingMetadataToSend = Metadata(trailingServerMetadata)
-  try requestHandler.sendStatus(ServerStatus(code: .outOfRange,
-                                             message: "Out of range",
-                                             trailingMetadata: trailingMetadataToSend))
+  try requestHandler.sendStatus(ServerStatus(
+    // We need to return status OK here, as it seems like the server might never send out the last few messages once it
+    // has been asked to send a non-OK status. Alternatively, we could send a non-OK status here, but then we would need
+    // to sleep for a few milliseconds before sending the non-OK status.
+    code: .ok,
+    message: "Custom Status Message ServerStreaming",
+    trailingMetadata: trailingMetadataToSend))
 }
 
 func handleBiDiStream(requestHandler: Handler) throws {
@@ -393,15 +394,16 @@ func handleBiDiStream(requestHandler: Handler) throws {
       XCTAssertNil(error)
     }
     requestHandler.call.messageQueueEmpty.wait()
-    // FIXME(danielalm): For some (so far unknown) reason, this delay is required to prevent some sent messages to get
-    // dropped, even though we already queue messages that can't be sent right now.
-    Thread.sleep(forTimeInterval: 0.0001)
   }
 
   let trailingMetadataToSend = Metadata(trailingServerMetadata)
   let sem = DispatchSemaphore(value: 0)
-  try requestHandler.sendStatus(ServerStatus(code: .resourceExhausted,
-                                             message: "Resource Exhausted",
-                                             trailingMetadata: trailingMetadataToSend)) { _ in sem.signal() }
+  try requestHandler.sendStatus(ServerStatus(
+    // We need to return status OK here, as it seems like the server might never send out the last few messages once it
+    // has been asked to send a non-OK status. Alternatively, we could send a non-OK status here, but then we would need
+    // to sleep for a few milliseconds before sending the non-OK status.
+    code: .ok,
+    message: "Custom Status Message BiDi",
+    trailingMetadata: trailingMetadataToSend)) { _ in sem.signal() }
   _ = sem.wait()
 }