public void SimpleGrain_PromiseForward() { ISimpleGrain forwardGrain = GrainClient.GrainFactory.GetGrain <IPromiseForwardGrain>(GetRandomGrainId()); Task <int> promise = forwardGrain.GetAxB(5, 6); int result = promise.Result; Assert.AreEqual(30, result); }
public async Task GettingGrainWithMultipleConstructorsActivesViaDefaultConstructor() { ISimpleGrain grain = GrainFactory.GetGrain <ISimpleGrain>(GetRandomGrainId(), grainClassNamePrefix: MultipleConstructorsSimpleGrain.MultipleConstructorsSimpleGrainPrefix); var actual = await grain.GetA(); Assert.Equal(MultipleConstructorsSimpleGrain.ValueUsedByParameterlessConstructor, actual); }
public async Task LoadSheddingBasic() { ISimpleGrain grain = GrainClient.GrainFactory.GetGrain <ISimpleGrain>(random.Next(), SimpleGrain.SimpleGrainNamePrefix); this.HostedCluster.Primary.TestHook.LatchIsOverloaded(true); // Do not accept message in overloaded state await Assert.ThrowsAsync <GatewayTooBusyException>(() => grain.SetA(5)); }
public async Task LoadSheddingBasic() { ISimpleGrain grain = GrainClient.GrainFactory.GetGrain <ISimpleGrain>(random.Next(), SimpleGrain.SimpleGrainNamePrefix); this.HostedCluster.Primary.Silo.Metrics.LatchIsOverload(true); Assert.True(this.HostedCluster.Primary.Silo.Metrics.IsOverloaded, "Primary silo did not successfully latch overload state"); // Do not accept message in overloaded state await Assert.ThrowsAsync <GatewayTooBusyException>(() => grain.SetA(5)); }
public void LoadSheddingComplex() { ISimpleGrain grain = GrainClient.GrainFactory.GetGrain <ISimpleGrain>(random.Next(), SimpleGrain.SimpleGrainNamePrefix); Console.WriteLine("Acquired grain reference"); var promise = grain.SetA(1); try { promise.Wait(); } catch (Exception ex) { Assert.Fail("Simple request failed with exception: " + ex); } Console.WriteLine("First set succeeded"); Primary.Silo.Metrics.LatchIsOverload(true); Assert.IsTrue(Primary.Silo.Metrics.IsOverloaded, "Primary silo did not successfully latch overload state"); promise = grain.SetA(2); try { promise.Wait(); Assert.Fail("Message was accepted even though silo was in overload state"); } catch (Exception ex) { var exc = ex.GetBaseException(); if (!(exc is GatewayTooBusyException)) { Assert.Fail("Incorrect exception thrown for load-shed rejection: " + exc); } } Console.WriteLine("Second set was shed"); Primary.Silo.Metrics.LatchIsOverload(false); Assert.IsFalse(Primary.Silo.Metrics.IsOverloaded, "Primary silo did not successfully latch non-overload state"); promise = grain.SetA(4); try { promise.Wait(); } catch (Exception ex) { Assert.Fail("Simple request after overload is cleared failed with exception: " + ex); } Console.WriteLine("Third set succeeded"); }
public void GrainReferenceComparison_DifferentReference() { ISimpleGrain ref1 = this.GrainFactory.GetGrain <ISimpleGrain>(random.Next(), UnitTests.Grains.SimpleGrain.SimpleGrainNamePrefix); ISimpleGrain ref2 = this.GrainFactory.GetGrain <ISimpleGrain>(random.Next(), UnitTests.Grains.SimpleGrain.SimpleGrainNamePrefix); Assert.True(ref1 != ref2); Assert.True(ref2 != ref1); Assert.False(ref1 == ref2); Assert.False(ref2 == ref1); Assert.False(ref1.Equals(ref2)); Assert.False(ref2.Equals(ref1)); }
public void SimpleGrainControlFlow() { ISimpleGrain grain = GetSimpleGrain(); Task setPromise = grain.SetA(2); setPromise.Wait(); setPromise = grain.SetB(3); setPromise.Wait(); Task <int> intPromise = grain.GetAxB(); Assert.AreEqual(6, intPromise.Result); }
public async Task BootstrapProvider_GrainCall() { string providerName = "bootstrap2"; GrainCallBootstrapper bootstrapProvider = (GrainCallBootstrapper)FindBootstrapProvider(providerName); Assert.IsNotNull(bootstrapProvider, "Found bootstrap provider {0}", providerName); Assert.AreEqual(1, bootstrapProvider.InitCount, "Init count"); long grainId = GrainCallBootstrapTestConstants.GrainId; int a = GrainCallBootstrapTestConstants.A; int b = GrainCallBootstrapTestConstants.B; ISimpleGrain grain = GrainClient.GrainFactory.GetGrain <ISimpleGrain>(grainId, SimpleGrain.SimpleGrainNamePrefix); int axb = await grain.GetAxB(); Assert.AreEqual((a * b), axb, "Returned value from {0}", grainId); }
public async Task BootstrapProvider_GrainCall() { string providerName = "bootstrap2"; GrainCallBootstrapper bootstrapProvider = (GrainCallBootstrapper)FindBootstrapProvider(providerName); Assert.NotNull(bootstrapProvider); Assert.Equal(1, bootstrapProvider.InitCount); // Init count long grainId = GrainCallBootstrapTestConstants.GrainId; int a = GrainCallBootstrapTestConstants.A; int b = GrainCallBootstrapTestConstants.B; ISimpleGrain grain = this.GrainFactory.GetGrain <ISimpleGrain>(grainId, SimpleGrain.SimpleGrainNamePrefix); int axb = await grain.GetAxB(); Assert.Equal((a * b), axb); }
public async Task BootstrapProvider_GrainCall() { string providerName = BootstrapProviderName2; bool canGetBootstrapProvider = await CanFindBootstrapProviderInUse(providerName); Assert.True(canGetBootstrapProvider); int initCount = await GetInitCountForBootstrapProviderInUse(providerName); Assert.Equal(1, initCount); // Init count long grainId = GrainCallBootstrapTestConstants.GrainId; int a = GrainCallBootstrapTestConstants.A; int b = GrainCallBootstrapTestConstants.B; ISimpleGrain grain = this.GrainFactory.GetGrain <ISimpleGrain>(grainId, SimpleGrain.SimpleGrainNamePrefix); int axb = await grain.GetAxB(); Assert.Equal((a * b), axb); }
public void GetGrainStatistics_ActivationCounts_OrleansManagedGrains() { SimpleGrainStatistic[] stats = GetSimpleGrainStatistics("Before Create"); Assert.IsTrue(stats.Length > 0, "Got some grain statistics: " + stats.Length); string grainType = typeof(SimpleGrain).FullName; Assert.AreEqual(0, stats.Count(s => s.GrainType == grainType), "No activation counter yet for grain: " + grainType); ISimpleGrain grain1 = GrainClient.GrainFactory.GetGrain <ISimpleGrain>(random.Next(), SimpleGrain.SimpleGrainNamePrefix); int x = grain1.GetA().Result; // Call grain method stats = GetSimpleGrainStatistics("After Invoke"); Assert.AreEqual(1, stats.Count(s => s.GrainType == grainType), "Activation counter now exists for grain: " + grainType); SimpleGrainStatistic grainStats = stats.First(s => s.GrainType == grainType); Assert.AreEqual(1, grainStats.ActivationCount, "Activation count for grain after activation: " + grainType); }
public void LoadSheddingBasic() { ISimpleGrain grain = GrainClient.GrainFactory.GetGrain <ISimpleGrain>(random.Next(), SimpleGrain.SimpleGrainNamePrefix); Primary.Silo.Metrics.LatchIsOverload(true); Assert.IsTrue(Primary.Silo.Metrics.IsOverloaded, "Primary silo did not successfully latch overload state"); var promise = grain.SetA(5); bool failed = false; try { promise.Wait(); } catch (Exception) { failed = true; } Assert.IsTrue(failed, "Message was accepted even though silo was in overload state"); }
public override async Task Init(string name, IProviderRuntime providerRuntime, IProviderConfiguration config) { await base.Init(name, providerRuntime, config); long grainId = GrainCallBootstrapTestConstants.GrainId; int a = GrainCallBootstrapTestConstants.A; int b = GrainCallBootstrapTestConstants.B; ISimpleGrain grain = providerRuntime.GrainFactory.GetGrain <ISimpleGrain>(grainId, SimpleGrain.SimpleGrainNamePrefix); logger.Info("Setting A={0} on {1}", a, grainId); await grain.SetA(a); logger.Info("Setting B={0} on {1}", b, grainId); await grain.SetB(b); logger.Info("Getting AxB from {0}", grainId); int axb = await grain.GetAxB(); logger.Info("Got AxB={0} from {1}", axb, grainId); Assert.AreEqual((a * b), axb, "Value returned to {0} by {1}", this.GetType().Name, grainId); }
public async Task SimpleGrainGetGrain() { ISimpleGrain grain = GetSimpleGrain(); _ = await grain.GetAxB(); }