private static void InitializePlacements() { RandomPlacement.InitializeClass(); PreferLocalPlacement.InitializeClass(); StatelessWorkerPlacement.InitializeClass(NodeConfiguration.DEFAULT_MAX_LOCAL_ACTIVATIONS); SystemPlacement.InitializeClass(); ActivationCountBasedPlacement.InitializeClass(); }
public async Task LocallyPlacedGrainShouldCreateActivationsOnLocalSilo() { await this.HostedCluster.WaitForLivenessToStabilizeAsync(); logger.Info("********************** Starting the test LocallyPlacedGrainShouldCreateActivationsOnLocalSilo ******************************"); TestSilosStarted(2); const int sampleSize = 5; var placement = new StatelessWorkerPlacement(sampleSize); var proxy = GrainClient.GrainFactory.GetGrain<IRandomPlacementTestGrain>(Guid.NewGuid()); await proxy.StartLocalGrains(new List<Guid> { Guid.Empty }); var expected = await proxy.GetEndpoint(); // locally placed grains are multi-activation and stateless. this means that we have to sample the value of // the result, rather than simply ask for it once in order to get a consensus of the result. var actual = await proxy.SampleLocalGrainEndpoint(Guid.Empty, sampleSize); Assert.True(actual.All(expected.Equals), "A grain instantiated with the local placement strategy should create activations on the local silo."); }