Additional tests

pull/21120/head
James Newton-King 5 years ago
parent f7ddf4ed63
commit 7cccfb37b9
No known key found for this signature in database
GPG Key ID: A66B2F456BF5526
  1. 71
      src/csharp/Grpc.HealthCheck.Tests/HealthServiceImplTest.cs

@ -125,6 +125,77 @@ namespace Grpc.HealthCheck.Tests
await callTask; await callTask;
} }
[Test]
public async Task Watch_MultipleWatchesForSameService()
{
var cts = new CancellationTokenSource();
var context = new TestServerCallContext(cts.Token);
var writer1 = new TestResponseStreamWriter();
var writer2 = new TestResponseStreamWriter();
var impl = new HealthServiceImpl();
var callTask1 = impl.Watch(new HealthCheckRequest { Service = "" }, writer1, context);
var callTask2 = impl.Watch(new HealthCheckRequest { Service = "" }, writer2, context);
// Calling Watch on a service that doesn't have a value set will initially return ServiceUnknown
var nextWriteTask1 = writer1.WrittenMessagesReader.ReadAsync();
var nextWriteTask2 = writer2.WrittenMessagesReader.ReadAsync();
Assert.AreEqual(HealthCheckResponse.Types.ServingStatus.ServiceUnknown, (await nextWriteTask1).Status);
Assert.AreEqual(HealthCheckResponse.Types.ServingStatus.ServiceUnknown, (await nextWriteTask2).Status);
nextWriteTask1 = writer1.WrittenMessagesReader.ReadAsync();
nextWriteTask2 = writer2.WrittenMessagesReader.ReadAsync();
impl.SetStatus("", HealthCheckResponse.Types.ServingStatus.Serving);
Assert.AreEqual(HealthCheckResponse.Types.ServingStatus.Serving, (await nextWriteTask1).Status);
Assert.AreEqual(HealthCheckResponse.Types.ServingStatus.Serving, (await nextWriteTask2).Status);
nextWriteTask1 = writer1.WrittenMessagesReader.ReadAsync();
nextWriteTask2 = writer2.WrittenMessagesReader.ReadAsync();
impl.ClearStatus("");
Assert.AreEqual(HealthCheckResponse.Types.ServingStatus.ServiceUnknown, (await nextWriteTask1).Status);
Assert.AreEqual(HealthCheckResponse.Types.ServingStatus.ServiceUnknown, (await nextWriteTask2).Status);
cts.Cancel();
await callTask1;
await callTask2;
}
[Test]
public async Task Watch_MultipleWatchesForDifferentServices()
{
var cts = new CancellationTokenSource();
var context = new TestServerCallContext(cts.Token);
var writer1 = new TestResponseStreamWriter();
var writer2 = new TestResponseStreamWriter();
var impl = new HealthServiceImpl();
var callTask1 = impl.Watch(new HealthCheckRequest { Service = "One" }, writer1, context);
var callTask2 = impl.Watch(new HealthCheckRequest { Service = "Two" }, writer2, context);
// Calling Watch on a service that doesn't have a value set will initially return ServiceUnknown
var nextWriteTask1 = writer1.WrittenMessagesReader.ReadAsync();
var nextWriteTask2 = writer2.WrittenMessagesReader.ReadAsync();
Assert.AreEqual(HealthCheckResponse.Types.ServingStatus.ServiceUnknown, (await nextWriteTask1).Status);
Assert.AreEqual(HealthCheckResponse.Types.ServingStatus.ServiceUnknown, (await nextWriteTask2).Status);
nextWriteTask1 = writer1.WrittenMessagesReader.ReadAsync();
nextWriteTask2 = writer2.WrittenMessagesReader.ReadAsync();
impl.SetStatus("One", HealthCheckResponse.Types.ServingStatus.Serving);
impl.SetStatus("Two", HealthCheckResponse.Types.ServingStatus.NotServing);
Assert.AreEqual(HealthCheckResponse.Types.ServingStatus.Serving, (await nextWriteTask1).Status);
Assert.AreEqual(HealthCheckResponse.Types.ServingStatus.NotServing, (await nextWriteTask2).Status);
nextWriteTask1 = writer1.WrittenMessagesReader.ReadAsync();
nextWriteTask2 = writer2.WrittenMessagesReader.ReadAsync();
impl.ClearAll();
Assert.AreEqual(HealthCheckResponse.Types.ServingStatus.ServiceUnknown, (await nextWriteTask1).Status);
Assert.AreEqual(HealthCheckResponse.Types.ServingStatus.ServiceUnknown, (await nextWriteTask2).Status);
cts.Cancel();
await callTask1;
await callTask2;
}
[Test] [Test]
public async Task Watch_ExceedMaximumCapacitySize_DiscardOldValues() public async Task Watch_ExceedMaximumCapacitySize_DiscardOldValues()
{ {

Loading…
Cancel
Save