public async Task LocalhostSiloTest() { using var portAllocator = new TestClusterPortAllocator(); var(siloPort, gatewayPort) = portAllocator.AllocateConsecutivePortPairs(1); var silo = new SiloHostBuilder() .AddMemoryGrainStorage("MemoryStore") .UseLocalhostClustering(siloPort, gatewayPort) .Build(); var client = new ClientBuilder() .UseLocalhostClustering(gatewayPort) .Build(); try { await silo.StartAsync(); await client.Connect(); var grain = client.GetGrain <IEchoGrain>(Guid.NewGuid()); var result = await grain.Echo("test"); Assert.Equal("test", result); } finally { await OrleansTaskExtentions.SafeExecute(() => silo.StopAsync()); await OrleansTaskExtentions.SafeExecute(() => client.Close()); Utils.SafeExecute(() => silo.Dispose()); Utils.SafeExecute(() => client.Close()); } }
public async Task LocalhostSiloTest() { var opts = TestSiloSpecificOptions.Create(new TestClusterOptions(), 1, true); var silo = new SiloHostBuilder() .AddMemoryGrainStorage("MemoryStore") .UseLocalhostClustering(opts.SiloPort, opts.GatewayPort) .Build(); var client = new ClientBuilder() .UseLocalhostClustering(opts.GatewayPort) .Build(); try { await silo.StartAsync(); await client.Connect(); var grain = client.GetGrain <IEchoGrain>(Guid.NewGuid()); var result = await grain.Echo("test"); Assert.Equal("test", result); } finally { await OrleansTaskExtentions.SafeExecute(() => silo.StopAsync()); await OrleansTaskExtentions.SafeExecute(() => client.Close()); Utils.SafeExecute(() => silo.Dispose()); Utils.SafeExecute(() => client.Close()); } }
public async Task LocalhostClusterTest() { using var portAllocator = new TestClusterPortAllocator(); var(baseSiloPort, baseGatewayPort) = portAllocator.AllocateConsecutivePortPairs(2); var silo1 = new SiloHostBuilder() .AddMemoryGrainStorage("MemoryStore") .UseLocalhostClustering(baseSiloPort, baseGatewayPort) .Build(); var silo2 = new SiloHostBuilder() .AddMemoryGrainStorage("MemoryStore") .UseLocalhostClustering(baseSiloPort + 1, baseGatewayPort + 1, new IPEndPoint(IPAddress.Loopback, baseSiloPort)) .Build(); var client = new ClientBuilder() .UseLocalhostClustering(new[] { baseGatewayPort, baseGatewayPort + 1 }) .Build(); try { await Task.WhenAll(silo1.StartAsync(), silo2.StartAsync()); await client.Connect(); var grain = client.GetGrain <IEchoGrain>(Guid.NewGuid()); var result = await grain.Echo("test"); Assert.Equal("test", result); } finally { var cancelled = new CancellationTokenSource(); cancelled.Cancel(); Utils.SafeExecute(() => silo1.StopAsync(cancelled.Token)); Utils.SafeExecute(() => silo2.StopAsync(cancelled.Token)); Utils.SafeExecute(() => silo1.Dispose()); Utils.SafeExecute(() => silo2.Dispose()); Utils.SafeExecute(() => client.Close()); Utils.SafeExecute(() => client.Dispose()); } }
public async Task LocalhostClusterTest() { var silo1 = new SiloHostBuilder() .AddMemoryGrainStorage("MemoryStore") .UseLocalhostClustering(12111, 30001) .Build(); var silo2 = new SiloHostBuilder() .AddMemoryGrainStorage("MemoryStore") .UseLocalhostClustering(12112, 30002, new IPEndPoint(IPAddress.Loopback, 12111)) .Build(); var client = new ClientBuilder() .UseLocalhostClustering(new[] { 30001, 30002 }) .Build(); try { await Task.WhenAll(silo1.StartAsync(), silo2.StartAsync()); await client.Connect(); var grain = client.GetGrain <IEchoGrain>(Guid.NewGuid()); var result = await grain.Echo("test"); Assert.Equal("test", result); } finally { var cancelled = new CancellationTokenSource(); cancelled.Cancel(); Utils.SafeExecute(() => silo1.StopAsync(cancelled.Token)); Utils.SafeExecute(() => silo2.StopAsync(cancelled.Token)); Utils.SafeExecute(() => silo1.Dispose()); Utils.SafeExecute(() => silo2.Dispose()); Utils.SafeExecute(() => client.Close()); Utils.SafeExecute(() => client.Dispose()); } }