public async Task Constructor_Bad_Await() { try { int id = random.Next(); IBadConstructorTestGrain grain = GrainClient.GrainFactory.GetGrain <IBadConstructorTestGrain>(id); await grain.DoSomething(); Assert.Fail("Expected ThrowSomething call to fail as unable to Activate grain"); } catch (TimeoutException te) { Console.WriteLine("Received timeout: " + te); throw; // Fail test } catch (Exception exc) { Console.WriteLine("Received exception: " + exc); Exception e = exc.GetBaseException(); Console.WriteLine("Nested exception type: " + e.GetType().FullName); Console.WriteLine("Nested exception message: " + e.Message); Assert.IsInstanceOfType(e, typeof(Exception), "Did not get expected exception type returned: " + e); Assert.IsNotInstanceOfType(e, typeof(InvalidOperationException), "Did not get expected exception type returned: " + e); Assert.IsTrue(e.Message.Contains("Constructor"), "Did not get expected exception message returned: " + e.Message); } }
public void CastGrainRefUpCastFromGrandchild() { // GeneratorTestDerivedGrain1Reference derives from GeneratorTestGrainReference // GeneratorTestDerivedGrain2Reference derives from GeneratorTestGrainReference // GeneratorTestDerivedDerivedGrainReference derives from GeneratorTestDerivedGrain2Reference GrainReference cast; GrainReference grain = (GrainReference)GrainClient.GrainFactory.GetGrain <IGeneratorTestDerivedDerivedGrain>(GetRandomGrainId()); // Parent cast = (GrainReference)grain.AsReference <IGeneratorTestDerivedGrain2>(); Assert.IsInstanceOfType(cast, typeof(IGeneratorTestDerivedDerivedGrain)); Assert.IsInstanceOfType(cast, typeof(IGeneratorTestDerivedGrain2)); Assert.IsInstanceOfType(cast, typeof(IGeneratorTestGrain)); // Cross-cast outside the inheritance hierarchy should not work Assert.IsNotInstanceOfType(cast, typeof(IGeneratorTestDerivedGrain1)); // Grandparent cast = (GrainReference)grain.AsReference <IGeneratorTestGrain>(); Assert.IsInstanceOfType(cast, typeof(IGeneratorTestDerivedDerivedGrain)); Assert.IsInstanceOfType(cast, typeof(IGeneratorTestGrain)); // Cross-cast outside the inheritance hierarchy should not work Assert.IsNotInstanceOfType(cast, typeof(IGeneratorTestDerivedGrain1)); }
public void CastGrainRefUpCastFromDerivedDerivedChild() { // GeneratorTestDerivedDerivedGrainReference extends GeneratorTestDerivedGrain2Reference // GeneratorTestDerivedGrain2Reference extends GeneratorTestGrainReference GrainReference grain = (GrainReference)GrainClient.GrainFactory.GetGrain <IGeneratorTestDerivedDerivedGrain>(GetRandomGrainId()); GrainReference cast = (GrainReference)grain.AsReference <IGeneratorTestDerivedGrain2>(); Assert.IsInstanceOfType(cast, typeof(IGeneratorTestDerivedDerivedGrain)); Assert.IsInstanceOfType(cast, typeof(IGeneratorTestDerivedGrain2)); Assert.IsInstanceOfType(cast, typeof(IGeneratorTestGrain)); Assert.IsNotInstanceOfType(cast, typeof(IGeneratorTestDerivedGrain1)); }
public async Task BadActivate_Await_ViaOtherGrain() { try { int id = random.Next(); ICreateGrainReferenceTestGrain grain = GrainClient.GrainFactory.GetGrain <ICreateGrainReferenceTestGrain>(id); await grain.ForwardCall(GrainClient.GrainFactory.GetGrain <IBadActivateDeactivateTestGrain>(id)); Assert.Fail("Expected ThrowSomething call to fail as unable to Activate grain"); } catch (Exception exc) { Console.WriteLine("Received exception: " + exc); Exception e = exc.GetBaseException(); Console.WriteLine("Nested exception type: " + e.GetType().FullName); Console.WriteLine("Nested exception message: " + e.Message); Assert.IsInstanceOfType(e, typeof(Exception), "Did not get expected exception type returned: " + e); Assert.IsNotInstanceOfType(e, typeof(InvalidOperationException), "Did not get expected exception type returned: " + e); Assert.IsTrue(e.Message.Contains("Application-OnActivateAsync"), "Did not get expected exception message returned: " + e.Message); } }