コード例 #1
0
        private static void VerifySetsAndRestoresActivityIdOnSyncError(Func <ICalculatorClientAsync, Task <double> > doAsync)
        {
            ClientEventSource            eventSource       = ClientEventSource.Instance;
            InvalidProgramException      expectedException = new InvalidProgramException("Expected.");
            CalculatorClientWithActivity client            = new CalculatorClientWithActivity(new CalculatorClientStub(() => Throw(expectedException)), eventSource, Guid.Empty);

            using (ClientEventListener listener = new ClientEventListener(eventSource, EventLevel.Informational, ClientEventSource.Keywords.Request))
            {
                Guid originalActivityId = new Guid(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1);
                EventProvider.SetActivityId(ref originalActivityId);
                listener.EventWritten += (o, e) => Assert.NotEqual(originalActivityId, Trace.CorrelationManager.ActivityId);

                InvalidProgramException ipe = Assert.Throws <InvalidProgramException>(() => doAsync(client));
                Assert.Same(expectedException, ipe);

                Assert.Equal(originalActivityId, Trace.CorrelationManager.ActivityId);
            }
        }
コード例 #2
0
        private static void VerifyTracesStartAndEnd(Func <ICalculatorClientAsync, Task <double> > doAsync)
        {
            ClientEventSource             eventSource = ClientEventSource.Instance;
            TaskCompletionSource <double> tcs         = new TaskCompletionSource <double>();
            Guid clientId = new Guid(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0xC);
            CalculatorClientWithActivity client = new CalculatorClientWithActivity(new CalculatorClientStub(() => tcs.Task), eventSource, clientId);

            using (ClientEventListener listener = new ClientEventListener(eventSource, EventLevel.Informational, ClientEventSource.Keywords.Request))
            {
                Task <double> task = VerifyPending(doAsync(client));

                listener.VerifyEvent(ClientEventId.Request, EventLevel.Informational, ClientEventSource.Keywords.Request, EventOpcode.Start, clientId);
                listener.Events.Clear();

                tcs.SetResult(0.0d);
                VerifyResult(0.0d, task);

                listener.VerifyEvent(ClientEventId.RequestCompleted, EventLevel.Informational, ClientEventSource.Keywords.Request, EventOpcode.Stop, clientId);
            }
        }
コード例 #3
0
        private static void VerifyTracesStartAndEndError(Func <ICalculatorClientAsync, Task <double> > doAsync)
        {
            ClientEventSource             eventSource = ClientEventSource.Instance;
            TaskCompletionSource <double> tcs         = new TaskCompletionSource <double>();
            Guid clientId = new Guid(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0xC);
            CalculatorClientWithActivity client = new CalculatorClientWithActivity(new CalculatorClientStub(() => tcs.Task), eventSource, clientId);

            using (ClientEventListener listener = new ClientEventListener(eventSource, EventLevel.Informational, ClientEventSource.Keywords.Request))
            {
                Task <double> task = VerifyPending(doAsync(client));

                listener.VerifyEvent(ClientEventId.Request, EventLevel.Informational, ClientEventSource.Keywords.Request, EventOpcode.Start, clientId);
                listener.Events.Clear();

                InvalidCastException expectedException = new InvalidCastException("Expected.");
                tcs.SetException(expectedException);
                VerifyResultError(expectedException, task);

                listener.VerifyEvent(ClientEventId.RequestError, EventLevel.Warning, ClientEventSource.Keywords.Request, EventOpcode.Stop, clientId, "System.InvalidCastException", "Expected.");
            }
        }
コード例 #4
0
        private static void VerifySetsAndRestoresActivityId(Func <ICalculatorClientAsync, Task <double> > doAsync)
        {
            ClientEventSource             eventSource = ClientEventSource.Instance;
            TaskCompletionSource <double> tcs         = new TaskCompletionSource <double>();
            CalculatorClientWithActivity  client      = new CalculatorClientWithActivity(new CalculatorClientStub(() => tcs.Task), eventSource, Guid.Empty);

            using (ClientEventListener listener = new ClientEventListener(eventSource, EventLevel.Informational, ClientEventSource.Keywords.Request))
            {
                Guid originalActivityId = new Guid(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1);
                EventProvider.SetActivityId(ref originalActivityId);
                listener.EventWritten += (o, e) => Assert.NotEqual(originalActivityId, Trace.CorrelationManager.ActivityId);

                Task <double> task = VerifyPending(doAsync(client));

                Assert.Equal(originalActivityId, Trace.CorrelationManager.ActivityId);

                tcs.SetResult(0.0d);
                VerifyResult(0.0d, task);

                Assert.Equal(originalActivityId, Trace.CorrelationManager.ActivityId);
            }
        }
コード例 #5
0
        private static void VerifyTracesStartAndEndSyncError(Func <ICalculatorClientAsync, Task <double> > doAsync)
        {
            ClientEventSource eventSource = ClientEventSource.Instance;
            Guid clientId = new Guid(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0xC);
            InvalidTimeZoneException expectedException = new InvalidTimeZoneException("Expected.");

            using (ClientEventListener listener = new ClientEventListener(eventSource, EventLevel.Informational, ClientEventSource.Keywords.Request))
            {
                Func <Task <double> > verifyStartEventAndThrow = delegate
                {
                    listener.VerifyEvent(ClientEventId.Request, EventLevel.Informational, ClientEventSource.Keywords.Request, EventOpcode.Start, clientId);
                    listener.Events.Clear();
                    throw expectedException;
                };

                CalculatorClientWithActivity client = new CalculatorClientWithActivity(new CalculatorClientStub(verifyStartEventAndThrow), eventSource, clientId);

                InvalidTimeZoneException ite = Assert.Throws <InvalidTimeZoneException>(() => doAsync(client));
                Assert.Same(expectedException, ite);

                listener.VerifyEvent(ClientEventId.RequestError, EventLevel.Warning, ClientEventSource.Keywords.Request, EventOpcode.Stop, clientId, "System.InvalidTimeZoneException", "Expected.");
            }
        }