import XCTest import Foundation import Dispatch @testable import gRPC func Log(_ message : String) { FileHandle.standardError.write((message + "\n").data(using:.utf8)!) } class gRPCTests: XCTestCase { var count : Int = 0 func testBasicSanity() { gRPC.initialize() let done = NSCondition() self.count = 2 DispatchQueue.global().async() { server() Log("server finished") done.lock() self.count = self.count - 1 done.signal() done.unlock() } DispatchQueue.global().async() { client() Log("client finished") done.lock() self.count = self.count - 1 done.signal() done.unlock() } var running = true while (running) { Log("waiting") done.lock() done.wait() if (self.count == 0) { running = false } Log("count \(self.count)") done.unlock() } } } extension gRPCTests { static var allTests : [(String, (gRPCTests) -> () throws -> Void)] { return [ ("testBasicSanity", testBasicSanity), ] } } let address = "localhost:8999" let host = "foo.test.google.fr" let clientText = "hello, server!" let serverText = "hello, client!" let initialClientMetadata = ["x": "xylophone", "y": "yu", "z": "zither"] let initialServerMetadata = ["a": "Apple", "b": "Banana", "c": "Cherry"] let trailingServerMetadata = ["0": "zero", "1": "one", "2": "two"] let steps = 30 let hello = "/hello" let goodbye = "/goodbye" let statusCode = 0 let statusMessage = "OK" func verify_metadata(_ metadata: Metadata, expected: [String:String]) { XCTAssertGreaterThanOrEqual(metadata.count(), expected.count) for i in 0..