public void TestUpdateResources() { var channelManager = new GrpcChannelManager( new string[] { "server1", "server2" }, timeout: TimeSpan.FromMilliseconds(200)); var channelsBeforeUpdate = channelManager .ResourceManager .Resources .Keys .ToDictionary(x => x.Url, x => x.Channel); Assert.AreEqual(2, channelManager.ResourceManager.Resources.Count); Assert.IsNotNull(channelsBeforeUpdate["server1"]); Assert.IsNotNull(channelsBeforeUpdate["server2"]); channelManager.UpdateResources(new string[] { "server1", "server3", "server4" }); var channelsAfterUpdate = channelManager .ResourceManager .Resources .Keys .ToDictionary(x => x.Url, x => x.Channel); Assert.AreEqual(3, channelManager.ResourceManager.Resources.Count); Assert.IsNotNull(channelsAfterUpdate["server1"]); Assert.IsNotNull(channelsAfterUpdate["server3"]); Assert.IsNotNull(channelsAfterUpdate["server4"]); Assert.AreSame(channelsBeforeUpdate["server1"], channelsAfterUpdate["server1"]); }
public void TestUpdateResourcesOnClient() { var server1 = SampleApiMock.CreateLocalServer(() => { return(Task.FromResult(new SampleResponse() { Payload = "server1" })); }); var server2 = SampleApiMock.CreateLocalServer(() => { return(Task.FromResult(new SampleResponse() { Payload = "server2" })); }); server1.Start(); server2.Start(); try { var server1Url = GrpcServerUtil.GetServerUrl(server1); var server2Url = GrpcServerUtil.GetServerUrl(server2); var channelManager = new GrpcChannelManager( new string[] { server1Url }, timeout: TimeSpan.FromMilliseconds(200)); var lbCallInvoker = channelManager.GetCallInvoker(); var client = new SampleApi.SampleApiClient(lbCallInvoker); var result1 = client.SampleRpcMethod(new SampleRequest() { Payload = "" }); Assert.AreEqual(result1.Payload, "server1"); channelManager.UpdateResources(new string[] { server2Url }); var result2 = client.SampleRpcMethod(new SampleRequest() { Payload = "" }); Assert.AreEqual(result2.Payload, "server2"); } finally { server1.ShutdownAsync().Wait(); server2.ShutdownAsync().Wait(); } }