public async Task ServerRepliesWithResponse() { var request = new RequestPacket() { Seq = 21, Command = "foo" }; var writer = new TestTextWriter(new Action<string>[] { value => { var packet = JsonConvert.DeserializeObject<EventPacket>(value); Assert.Equal("started", packet.Event); }, value => { var packet = JsonConvert.DeserializeObject<ResponsePacket>(value); Assert.Equal(request.Seq, packet.Request_seq); Assert.Equal(request.Command, packet.Command); Assert.Equal(true, packet.Success); Assert.Equal(true, packet.Running); Assert.Null(packet.Message); } }); var factory = new StdioServerFactory(new StringReader(JsonConvert.SerializeObject(request) + "\r\n"), writer); factory.Start(new StdioServerInformation(), features => { return Task.FromResult<object>(null); }); await writer.Completion; }
public void ServerRepliesWithResponse() { var request = new RequestPacket() { Seq = 21, Command = "foo" }; var writer = new TestTextWriter( value => { var packet = JsonConvert.DeserializeObject<EventPacket>(value); Assert.Equal("started", packet.Event); }, value => { var packet = JsonConvert.DeserializeObject<ResponsePacket>(value); Assert.Equal(request.Seq, packet.Request_seq); Assert.Equal(request.Command, packet.Command); Assert.Equal(true, packet.Success); Assert.Equal(true, packet.Running); Assert.Null(packet.Message); } ); BuildTestServerAndStart(new StringReader(JsonConvert.SerializeObject(request) + "\r\n"), writer); Assert.True(writer.Completion.WaitOne(TimeSpan.FromSeconds(1000)), "Timeout"); Assert.Null(writer.Exception); }
public void ServerRepliesWithResponseWhenHandlerFails() { var request = new RequestPacket() { Seq = 21, Command = "foo" }; var writer = new TestTextWriter( value => { var packet = JsonConvert.DeserializeObject<EventPacket>(value); Assert.Equal("started", packet.Event); }, value => { var packet = JsonConvert.DeserializeObject<ResponsePacket>(value); Assert.Equal(request.Seq, packet.Request_seq); Assert.Equal(request.Command, packet.Command); Assert.Equal(false, packet.Success); Assert.Equal(true, packet.Running); Assert.NotNull(packet.Message); } ); var exceptionApplication = new MockHttpApplication { ProcessAction = _ => { throw new Exception("Boom"); } }; BuildTestServerAndStart(new StringReader(JsonConvert.SerializeObject(request) + "\r\n"), writer, exceptionApplication); Assert.True(writer.Completion.WaitOne(TimeSpan.FromHours(10)), "Timeout"); Assert.Null(writer.Exception); }
public async Task ServerRepliesWithResponseWhenTaskDoesNotReturnAnything() { var request = new RequestPacket() { Seq = 21, Command = "foo" }; var writer = new TestTextWriter(new Action<string>[] { value => { var packet = JsonConvert.DeserializeObject<EventPacket>(value); Assert.Equal("started", packet.Event); }, value => { Assert.True(value.Contains("\"Body\":null")); // Deserialize is too relaxed... var packet = JsonConvert.DeserializeObject<ResponsePacket>(value); Assert.Equal(request.Seq, packet.Request_seq); Assert.Equal(request.Command, packet.Command); Assert.Equal(true, packet.Success); Assert.Equal(true, packet.Running); Assert.Null(packet.Message); Assert.Null(packet.Body); } }); var factory = new StdioServerFactory(new StringReader(JsonConvert.SerializeObject(request) + "\r\n"), writer); factory.Start(new StdioServerInformation(), features => { return Task.WhenAll(); }); await writer.Completion; }