示例#1
0
 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);
 }
示例#2
0
        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;
 }