public void Configure(ISiloBuilder hostBuilder) { hostBuilder.Configure <SiloMessagingOptions>(options => options.AssumeHomogenousSilosForTesting = false); hostBuilder.Configure <TypeManagementOptions>(options => options.TypeMapRefreshInterval = RefreshInterval); hostBuilder.Configure <GrainTypeOptions>(options => { var cfg = hostBuilder.GetConfiguration(); var siloOptions = new TestSiloSpecificOptions(); cfg.Bind(siloOptions); // The blacklist is only intended for the primary silo in these tests. if (string.Equals(siloOptions.SiloName, Silo.PrimarySiloName)) { var typeNames = cfg["BlockedGrainTypes"].Split('|').ToList(); foreach (var typeName in typeNames) { var type = Type.GetType(typeName); options.Classes.Remove(type); } } }); hostBuilder.ConfigureServices(services => { var defaultPlacementStrategy = Type.GetType(hostBuilder.GetConfiguration()["DefaultPlacementStrategy"]); services.AddSingleton(typeof(PlacementStrategy), defaultPlacementStrategy); }); }
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()); } }