public async Task ObserverTest_SimpleNotification_GeneratedFactory() { TestInitialize(); var result = new AsyncResultHandle(); ISimpleObserverableGrain grain = GetGrain(); observer1 = new SimpleGrainObserver(ObserverTest_SimpleNotification_Callback, result); ISimpleGrainObserver reference = await GrainFactory.CreateObjectReference<ISimpleGrainObserver>(observer1); await grain.Subscribe(reference); await grain.SetA(3); await grain.SetB(2); Assert.True(await result.WaitForFinished(timeout)); await GrainFactory.DeleteObjectReference<ISimpleGrainObserver>(reference); }
public async Task ObserverTest_DoubleSubscriptionDifferentReferences() { TestInitialize(); var result = new AsyncResultHandle(); ISimpleObserverableGrain grain = GetGrain(); observer1 = new SimpleGrainObserver(ObserverTest_DoubleSubscriptionDifferentReferences_Callback, result); ISimpleGrainObserver reference1 = await GrainFactory.CreateObjectReference<ISimpleGrainObserver>(observer1); observer2 = new SimpleGrainObserver(ObserverTest_DoubleSubscriptionDifferentReferences_Callback, result); ISimpleGrainObserver reference2 = await GrainFactory.CreateObjectReference<ISimpleGrainObserver>(observer2); await grain.Subscribe(reference1); await grain.Subscribe(reference2); grain.SetA(6).Ignore(); Assert.True(await result.WaitForFinished(timeout), string.Format("Should not timeout waiting {0} for SetA", timeout)); await GrainFactory.DeleteObjectReference<ISimpleGrainObserver>(reference1); await GrainFactory.DeleteObjectReference<ISimpleGrainObserver>(reference2); }
public async Task ObserverTest_DeleteObject() { TestInitialize(); var result = new AsyncResultHandle(); ISimpleObserverableGrain grain = GetGrain(); observer1 = new SimpleGrainObserver(ObserverTest_DeleteObject_Callback, result); ISimpleGrainObserver reference = await GrainFactory.CreateObjectReference<ISimpleGrainObserver>(observer1); await grain.Subscribe(reference); await grain.SetA(5); Assert.True(await result.WaitForContinue(timeout), string.Format("Should not timeout waiting {0} for SetA", timeout)); await GrainFactory.DeleteObjectReference<ISimpleGrainObserver>(reference); await grain.SetB(3); Assert.False(await result.WaitForFinished(timeout), string.Format("Should timeout waiting {0} for SetB", timeout)); }
public async Task ObserverTest_DoubleSubscriptionSameReference() { TestInitialize(); var result = new AsyncResultHandle(); ISimpleObserverableGrain grain = GetGrain(); observer1 = new SimpleGrainObserver(ObserverTest_DoubleSubscriptionSameReference_Callback, result); ISimpleGrainObserver reference = await GrainFactory.CreateObjectReference<ISimpleGrainObserver>(observer1); await grain.Subscribe(reference); await grain.SetA(1); // Use grain try { await grain.Subscribe(reference); } catch (TimeoutException) { throw; } catch (Exception exc) { Exception baseException = exc.GetBaseException(); logger.Info("Received exception: {0}", baseException); Assert.IsAssignableFrom<OrleansException>(baseException); if (!baseException.Message.StartsWith("Cannot subscribe already subscribed observer")) { Assert.True(false, "Unexpected exception message: " + baseException); } } await grain.SetA(2); // Use grain Assert.False(await result.WaitForFinished(timeout), string.Format("Should timeout waiting {0} for SetA(2)", timeout)); await GrainFactory.DeleteObjectReference<ISimpleGrainObserver>(reference); }