public CachedGrainLocator( IGrainDirectoryResolver grainDirectoryResolver, DhtGrainLocator inClusterGrainLocator, IClusterMembershipService clusterMembershipService) { this.grainDirectoryResolver = grainDirectoryResolver; this.inClusterGrainLocator = inClusterGrainLocator; this.clusterMembershipService = clusterMembershipService; this.cache = new LRUBasedGrainDirectoryCache(GrainDirectoryOptions.DEFAULT_CACHE_SIZE, GrainDirectoryOptions.DEFAULT_MAXIMUM_CACHE_TTL); }
public CachedGrainLocatorTests(ITestOutputHelper output) { this.loggerFactory = new LoggerFactory(new[] { new XunitLoggerProvider(output) }); this.lifecycle = new SiloLifecycleSubject(this.loggerFactory.CreateLogger <SiloLifecycleSubject>()); this.grainDirectory = Substitute.For <IGrainDirectory>(); this.grainDirectoryResolver = Substitute.For <IGrainDirectoryResolver>(); this.grainDirectoryResolver.Resolve(Arg.Any <LegacyGrainId>()).Returns(this.grainDirectory); this.grainDirectoryResolver.Directories.Returns(new[] { this.grainDirectory }); this.localGrainDirectory = Substitute.For <ILocalGrainDirectory>(); this.mockMembershipService = new MockClusterMembershipService(); this.grainLocator = new CachedGrainLocator( this.grainDirectoryResolver, new DhtGrainLocator(this.localGrainDirectory), this.mockMembershipService.Target); this.grainLocator.Participate(this.lifecycle); }
public GrainDirectoryResolverTests(ITestOutputHelper output) { this.azureDirectory = Substitute.For <IGrainDirectory>(); var hostBuilder = new HostBuilder(); hostBuilder.UseOrleans(siloBuilder => { siloBuilder .ConfigureServices((ctx, svc) => svc.AddSingletonNamedService(AzureTableDirectoryGrain.DIRECTORY, (sp, nameof) => this.azureDirectory)) .ConfigureServices((ctx, svc) => svc.AddSingletonNamedService("OtherDirectory", (sp, nameof) => this.otherDirectory)) .ConfigureServices((ctx, svc) => svc.AddSingletonNamedService("AgainAnotherDirectory", (sp, nameof) => this.againAnotherDirectory)) .ConfigureLogging(builder => builder.AddProvider(new XunitLoggerProvider(output))) .UseLocalhostClustering(); }); var host = hostBuilder.Build(); this.target = host.Services.GetRequiredService <IGrainDirectoryResolver>(); }
public GrainLocatorSelector(IGrainDirectoryResolver grainDirectoryResolver, CachedGrainLocator cachedGrainLocator, DhtGrainLocator dhtGrainLocator) { this.grainDirectoryResolver = grainDirectoryResolver; this.cachedGrainLocator = cachedGrainLocator; this.dhtGrainLocator = dhtGrainLocator; }