Ejemplo n.º 1
0
        public async Task ClientInvokeCallback_SetActivityId()
        {
            Guid setActivityId = Guid.NewGuid();
            Guid activityId2   = Guid.NewGuid();

            RequestContextTestUtils.SetActivityId(activityId2);
            TestClientInvokeCallback callback = new TestClientInvokeCallback(output, setActivityId);

            this.runtimeClient.ClientInvokeCallback = callback.OnInvoke;
            IRequestContextProxyGrain grain = this.fixture.GrainFactory.GetGrain <IRequestContextProxyGrain>(GetRandomGrainId());

            Guid activityId = await grain.E2EActivityId();

            Assert.Equal(setActivityId, activityId); // "E2EActivityId Call#1"
            Assert.Equal(1, callback.TotalCalls);    // "Number of callbacks"

            RequestContextTestUtils.SetActivityId(Guid.Empty);
            RequestContext.Clear(); // Need this to clear out any old ActivityId value cached in RequestContext. Code optimization in RequestContext does not unset entry if Trace.CorrelationManager.ActivityId == Guid.Empty [which is the "normal" case]
            this.runtimeClient.ClientInvokeCallback = null;

            activityId = await grain.E2EActivityId();

            Assert.Equal(Guid.Empty, activityId);   // "E2EActivityId Call#2 == Zero"
            Assert.Equal(1, callback.TotalCalls);   // "Number of callbacks - should be unchanged"
        }
Ejemplo n.º 2
0
        public async Task ClientInvokeCallback_SetActivityId()
        {
            Guid setActivityId = Guid.NewGuid();
            Guid activityId2   = Guid.NewGuid();

            Trace.CorrelationManager.ActivityId = activityId2; // Set up initial value that will be overridden by the callback function

            TestClientInvokeCallback callback = new TestClientInvokeCallback(setActivityId);

            GrainClient.ClientInvokeCallback = callback.OnInvoke;
            IRequestContextProxyGrain grain = GrainClient.GrainFactory.GetGrain <IRequestContextProxyGrain>(GetRandomGrainId());

            Guid activityId = await grain.E2EActivityId();

            Assert.AreEqual(setActivityId, activityId, "E2EActivityId Call#1");
            Assert.AreEqual(1, callback.TotalCalls, "Number of callbacks");

            Trace.CorrelationManager.ActivityId = Guid.Empty;
            RequestContext.Clear(); // Need this to clear out any old ActivityId value cached in RequestContext. Code optimization in RequestContext does not unset entry if Trace.CorrelationManager.ActivityId == Guid.Empty [which is the "normal" case]
            GrainClient.ClientInvokeCallback = null;

            activityId = await grain.E2EActivityId();

            Assert.AreEqual(Guid.Empty, activityId, "E2EActivityId Call#2 == Zero");
            Assert.AreEqual(1, callback.TotalCalls, "Number of callbacks - should be unchanged");
        }
Ejemplo n.º 3
0
        public async Task RequestContext_ActivityId_CM_E2E_ViaProxy()
        {
            Guid activityId     = Guid.NewGuid();
            Guid activityId2    = Guid.NewGuid();
            Guid nullActivityId = Guid.Empty;

            IRequestContextProxyGrain grain = this.fixture.GrainFactory.GetGrain <IRequestContextProxyGrain>(GetRandomGrainId());

            Trace.CorrelationManager.ActivityId = activityId;
            Assert.Null(RequestContext.Get(RequestContext.E2_E_TRACING_ACTIVITY_ID_HEADER));
            Guid result = await grain.E2EActivityId();

            Assert.Equal(activityId, result);   // "E2E ActivityId not propagated correctly"
            RequestContext.Clear();

            Trace.CorrelationManager.ActivityId = nullActivityId;
            Assert.Null(RequestContext.Get(RequestContext.E2_E_TRACING_ACTIVITY_ID_HEADER));
            for (int i = 0; i < Environment.ProcessorCount; i++)
            {
                result = await grain.E2EActivityId();

                Assert.Equal(nullActivityId, result);   // "Null ActivityId propagated E2E incorrectly"
            }
            RequestContext.Clear();

            Trace.CorrelationManager.ActivityId = activityId2;
            Assert.Null(RequestContext.Get(RequestContext.E2_E_TRACING_ACTIVITY_ID_HEADER));
            result = await grain.E2EActivityId();

            Assert.Equal(activityId2, result);   // "E2E ActivityId 2 not propagated correctly"
            RequestContext.Clear();
        }
Ejemplo n.º 4
0
        public async Task ClientInvokeCallback_CountCallbacks()
        {
            TestClientInvokeCallback callback = new TestClientInvokeCallback(Guid.Empty);
            GrainClient.ClientInvokeCallback = callback.OnInvoke;
            IRequestContextProxyGrain grain = GrainClient.GrainFactory.GetGrain<IRequestContextProxyGrain>(GetRandomGrainId());

            Trace.CorrelationManager.ActivityId = Guid.Empty;
            Guid activityId = await grain.E2EActivityId();
            Assert.AreEqual(Guid.Empty, activityId, "E2EActivityId Call#1");
            Assert.AreEqual(1, callback.TotalCalls, "Number of callbacks");

            GrainClient.ClientInvokeCallback = null;
            activityId = await grain.E2EActivityId();
            Assert.AreEqual(Guid.Empty, activityId, "E2EActivityId Call#2");
            Assert.AreEqual(1, callback.TotalCalls, "Number of callbacks - should be unchanged");
        }
Ejemplo n.º 5
0
        public async Task ClientInvokeCallback_CountCallbacks()
        {
            TestClientInvokeCallback callback = new TestClientInvokeCallback(output, Guid.Empty);

            this.runtimeClient.ClientInvokeCallback = callback.OnInvoke;
            IRequestContextProxyGrain grain = this.fixture.GrainFactory.GetGrain <IRequestContextProxyGrain>(GetRandomGrainId());

            RequestContextTestUtils.SetActivityId(Guid.Empty);
            Guid activityId = await grain.E2EActivityId();

            Assert.Equal(Guid.Empty, activityId);   // "E2EActivityId Call#1"
            Assert.Equal(1, callback.TotalCalls);   // "Number of callbacks"

            this.runtimeClient.ClientInvokeCallback = null;
            activityId = await grain.E2EActivityId();

            Assert.Equal(Guid.Empty, activityId);   // "E2EActivityId Call#2"
            Assert.Equal(1, callback.TotalCalls);   // "Number of callbacks - should be unchanged"
        }