public async Task Test_Indexing_IndexLookup1() { //await GrainClient.GrainFactory.DropAllIndexes<IPlayerGrain>(); IPlayerChain1Grain p1 = GrainClient.GrainFactory.GetGrain <IPlayerChain1Grain>(1); await p1.SetLocation("Seattle"); //bool isLocIndexCreated = await GrainClient.GrainFactory.CreateAndRegisterIndex<HashIndexSingleBucketInterface<string, IPlayerGrain>, PlayerLocIndexGen>("__GetLocation"); //Assert.IsTrue(isLocIndexCreated); IPlayerChain1Grain p2 = GrainClient.GrainFactory.GetGrain <IPlayerChain1Grain>(2); IPlayerChain1Grain p3 = GrainClient.GrainFactory.GetGrain <IPlayerChain1Grain>(3); IPlayerChain1Grain p4 = GrainClient.GrainFactory.GetGrain <IPlayerChain1Grain>(4); IPlayerChain1Grain p5 = GrainClient.GrainFactory.GetGrain <IPlayerChain1Grain>(5); IPlayerChain1Grain p6 = GrainClient.GrainFactory.GetGrain <IPlayerChain1Grain>(6); IPlayerChain1Grain p7 = GrainClient.GrainFactory.GetGrain <IPlayerChain1Grain>(7); IPlayerChain1Grain p8 = GrainClient.GrainFactory.GetGrain <IPlayerChain1Grain>(8); IPlayerChain1Grain p9 = GrainClient.GrainFactory.GetGrain <IPlayerChain1Grain>(9); IPlayerChain1Grain p10 = GrainClient.GrainFactory.GetGrain <IPlayerChain1Grain>(10); await p2.SetLocation("San Jose"); await p3.SetLocation("San Fransisco"); await p4.SetLocation("Bellevue"); await p5.SetLocation("Redmond"); await p6.SetLocation("Kirkland"); await p7.SetLocation("Kirkland"); await p8.SetLocation("Kirkland"); await p9.SetLocation("Seattle"); await p10.SetLocation("Kirkland"); IndexInterface <string, IPlayerChain1Grain> locIdx = GrainClient.GrainFactory.GetIndex <string, IPlayerChain1Grain>("__Location"); while (!await locIdx.IsAvailable()) { Thread.Sleep(50); } Assert.Equal(2, await IndexingTestUtils.CountPlayersStreamingIn <IPlayerChain1Grain, PlayerChain1Properties>("Seattle", output)); Assert.Equal(4, await IndexingTestUtils.CountPlayersStreamingIn <IPlayerChain1Grain, PlayerChain1Properties>("Kirkland", output)); await p8.Deactivate(); await p9.Deactivate(); Thread.Sleep(1000); Assert.Equal(1, await IndexingTestUtils.CountPlayersStreamingIn <IPlayerChain1Grain, PlayerChain1Properties>("Seattle", output)); Assert.Equal(3, await IndexingTestUtils.CountPlayersStreamingIn <IPlayerChain1Grain, PlayerChain1Properties>("Kirkland", output)); p10 = GrainClient.GrainFactory.GetGrain <IPlayerChain1Grain>(10); Assert.Equal("Kirkland", await p10.GetLocation()); }
public async Task Test_Indexing_IndexLookup1() { IPlayerChain1Grain p1 = base.GetGrain <IPlayerChain1Grain>(1); await p1.SetLocation(ITC.Seattle); IPlayerChain1Grain p2 = base.GetGrain <IPlayerChain1Grain>(2); IPlayerChain1Grain p3 = base.GetGrain <IPlayerChain1Grain>(3); IPlayerChain1Grain p4 = base.GetGrain <IPlayerChain1Grain>(4); IPlayerChain1Grain p5 = base.GetGrain <IPlayerChain1Grain>(5); IPlayerChain1Grain p6 = base.GetGrain <IPlayerChain1Grain>(6); IPlayerChain1Grain p7 = base.GetGrain <IPlayerChain1Grain>(7); IPlayerChain1Grain p8 = base.GetGrain <IPlayerChain1Grain>(8); IPlayerChain1Grain p9 = base.GetGrain <IPlayerChain1Grain>(9); IPlayerChain1Grain p10 = base.GetGrain <IPlayerChain1Grain>(10); await p2.SetLocation(ITC.SanJose); await p3.SetLocation(ITC.SanFrancisco); await p4.SetLocation(ITC.Bellevue); await p5.SetLocation(ITC.Redmond); await p6.SetLocation(ITC.Kirkland); await p7.SetLocation(ITC.Kirkland); await p8.SetLocation(ITC.Kirkland); await p9.SetLocation(ITC.Seattle); await p10.SetLocation(ITC.Kirkland); var locIdx = await base.GetAndWaitForIndex <string, IPlayerChain1Grain>(ITC.LocationProperty); Task <int> getLocationCount(string location) => this.GetPlayerLocationCount <IPlayerChain1Grain, PlayerChain1Properties>(location); Assert.Equal(2, await getLocationCount(ITC.Seattle)); Assert.Equal(4, await getLocationCount(ITC.Kirkland)); await p8.Deactivate(); await p9.Deactivate(); Thread.Sleep(1000); Assert.Equal(1, await getLocationCount(ITC.Seattle)); Assert.Equal(3, await getLocationCount(ITC.Kirkland)); p10 = base.GetGrain <IPlayerChain1Grain>(10); Assert.Equal(ITC.Kirkland, await p10.GetLocation()); }