public void When_correlation_is_set_with_a_predefined_correlation_id_Then_it_should_always_return_it() { var correlationId1 = Guid.NewGuid(); var correlationId2 = Guid.NewGuid(); var thread1 = Task <Guid?> .Factory.StartNew(() => { CorrelationState.InitializeCorrelation(correlationId1); var correlationid = CorrelationState.GetCurrentCorrelationId(); CorrelationState.ClearCorrelation(); return(correlationid); }); var thread2 = Task <Guid?> .Factory.StartNew(() => { CorrelationState.InitializeCorrelation(correlationId2); var correlationid = CorrelationState.GetCurrentCorrelationId(); CorrelationState.ClearCorrelation(); return(correlationid); }); Task.WaitAll(thread1, thread2); Assert.Equal(correlationId1, thread1.Result); Assert.Equal(correlationId2, thread2.Result); }
public void When_correlation_is_access_different_threads_It_returns_different_ids() { var thread1 = Task <Guid?> .Factory.StartNew(() => { CorrelationState.InitializeCorrelation(); var correlationid = CorrelationState.GetCurrentCorrelationId(); CorrelationState.ClearCorrelation(); return(correlationid); }); var thread2 = Task <Guid?> .Factory.StartNew(() => { CorrelationState.InitializeCorrelation(); var correlationid = CorrelationState.GetCurrentCorrelationId(); CorrelationState.ClearCorrelation(); return(correlationid); }); Task.WaitAll(thread1, thread2); Assert.NotEqual(thread1.Result, thread2.Result); }
public override void OnActionExecuting(HttpActionContext actionContext) { Guid? existingCorrelationId = null; dynamic request = actionContext.ActionArguments.Values.FirstOrDefault(); if (request != null) { if (_setCorrelationIdFromContext) { try { existingCorrelationId = Guid.Parse(request.Context); } catch { } } } var disposableCorrelationState = CorrelationState.InitializeCorrelation(existingCorrelationId); actionContext.Request.RegisterForDispose(disposableCorrelationState); if (request != null) { CorrelationState.TryAddOrUpdateCorrelationValue("CallerContext", request.Context); } }
public async Task When_correlation_id_is_set_outside_an_async_call_then_the_correlation_id_is_available_inside_the_async_call() { var expectedCorrelationId = Guid.NewGuid(); CorrelationState.InitializeCorrelation(expectedCorrelationId); var correlationId = await Task.Run(() => CorrelationState.GetCurrentCorrelationId()); Assert.Equal(expectedCorrelationId, correlationId); }
public void When_correlation_is_initialized_and_cleared_Then_it_returns_null_when_asked_for_current_correlation_id() { var thread = Task <Guid?> .Factory.StartNew(() => { CorrelationState.InitializeCorrelation(); CorrelationState.ClearCorrelation(); return(CorrelationState.GetCurrentCorrelationId()); }); Task.WaitAll(thread); Assert.Null(thread.Result); }
public async Task When_correlation_values_is_set_outside_an_async_call_then_the_correlation_values_are_available_inside_the_async_call() { var key = Guid.NewGuid().ToString(); var value = Guid.NewGuid().ToString(); CorrelationState.InitializeCorrelation(); CorrelationState.TryAddOrUpdateCorrelationValue(key, value); var correlationValues = (await Task.Run(() => CorrelationState.GetCorrelationValues())).ToList(); Assert.Equal(1, correlationValues.Count); var firstCorrelationValue = correlationValues.First(); Assert.Equal(key, firstCorrelationValue.Key); Assert.Equal(value, firstCorrelationValue.Value); }
public void When_correlation_is_initialized_and_then_cleared_then_it_forgets_the_correlation_keyvalues() { var thread = Task <IEnumerable <KeyValuePair <string, object> > > .Factory.StartNew(() => { CorrelationState.InitializeCorrelation(); CorrelationState.TryAddOrUpdateCorrelationValue(Guid.NewGuid().ToString(), Guid.NewGuid().ToString()); CorrelationState.ClearCorrelation(); return(CorrelationState.GetCorrelationValues()); }); Task.WaitAll(thread); Assert.False(thread.Result.Any()); }
public override void OnActionExecuting(ActionExecutingContext filterContext) { Guid?existingCorrelationId = null; if (_setCorrelationIdFromContext) { try { existingCorrelationId = Guid.Parse(filterContext.HttpContext.Request.QueryString["Context"]); } catch { } } CorrelationState.InitializeCorrelation(existingCorrelationId); }
public void When_correlation_is_initialized_then_correlation_dictionary_accepts_new_correlation_keyvalues() { var key = Guid.NewGuid().ToString(); var expectedValue = Guid.NewGuid().ToString(); var thread = Task <IEnumerable <KeyValuePair <string, object> > > .Factory.StartNew(() => { CorrelationState.InitializeCorrelation(); CorrelationState.TryAddOrUpdateCorrelationValue(key, expectedValue); return(CorrelationState.GetCorrelationValues()); }); Task.WaitAll(thread); var actualValue = thread.Result.SingleOrDefault(c => c.Key == key); Assert.Equal(expectedValue, actualValue.Value); }
public override void OnActionExecuting(ActionExecutingContext actionContext) { CorrelationState.InitializeCorrelation(); }