コード例 #1
0
        public void TracingDataShouldContainAdditionaProperties()
        {
            TracingData tData = new TracingData
            {
                ParentSpanID = "ParentSpanID1",
                SpanID       = "SpanID1"
            };

            JObject     jObject     = JObject.FromObject(tData);
            TracingData tDataResult = DeserializeObject <TracingData>(jObject);

            tDataResult.ParentSpanID.ShouldBe("ParentSpanID1");
            tDataResult.SpanID.ShouldBe("SpanID1");
            tDataResult.AdditionalProperties.ShouldBeNull();

            jObject.Add("TracingData", "AdditionalData1");
            tDataResult = DeserializeObject <TracingData>(jObject);

            tDataResult.ParentSpanID.ShouldBe("ParentSpanID1");
            tDataResult.SpanID.ShouldBe("SpanID1");
            tDataResult.AdditionalProperties.ShouldContainKeyAndValue("TracingData", "AdditionalData1");
        }
コード例 #2
0
        public void HttpServiceRequestShouldContainAdditionaPropertiesRecursively()
        {
            TracingData tData = new TracingData
            {
                ParentSpanID = "ParentSpanID1",
                SpanID       = "SpanID1"
            };
            RequestOverrides requestOverrides = new RequestOverrides
            {
                Hosts = new[] { new HostOverride {
                                    ServiceName = "Service1", Host = "HostNameOverride"
                                } }.ToList(),
                             SuppressCaching = CacheSuppress.RecursiveAllDownstreamServices
            };
            InvocationTarget invocationTarget = new InvocationTarget {
                MethodName = "MethodName1"
            };

            HttpServiceRequest serviceRequest = new HttpServiceRequest
            {
                TracingData = tData,
                Overrides   = requestOverrides,
                Target      = invocationTarget
            };

            dynamic            jObject = JObject.FromObject(serviceRequest);
            HttpServiceRequest serviceRequestResult = DeserializeObject <HttpServiceRequest>(jObject);

            AssertShouldBeNull(serviceRequestResult);

            jObject.Add("ServiceRequestData", "ServiceRequestData1");
            jObject["TracingData"].Add("TracingData", "TracingData1");
            jObject["Overrides"].Add("OverridesData", "OverridesData1");
            jObject["Overrides"]["Hosts"][0].Add("HostOverrideData", "HostOverrideData1");
            jObject["Target"].Add("TargetData", "TargetData1");

            serviceRequestResult = DeserializeObject <HttpServiceRequest>(jObject);
            AssertShouldNotBeNull(serviceRequestResult);
        }
コード例 #3
0
        /// <summary>
        /// POST Verb
        /// Request for Patterns calculation.
        /// If Token found - returns Token ID with 202, otherwise no Toke with 204.
        /// </summary>
        /// <param name="Token">Token ID</param>
        /// <param name="inData">Input tracing data</param>
        /// <returns>TokenID</returns>
        public Session CalculatePatterns(String Token, TracingData inData)
        {
            var  guidHndlr = GUIDHandler.Init();
            var  curGuid   = new Guid(Token);
            bool bExist    = guidHndlr.FindGuid(curGuid);

            if (!bExist)
            {
                WebOperationContext.Current.OutgoingResponse.StatusCode = HttpStatusCode.NotFound;
                Logger.WriteLogEntry(TraceEventType.Error, "Patterns Add On Service, Patterns Service, Calculate Patterns", "GUID not found");
                return(new Session()
                {
                    TokenId = String.Empty
                });
            }

            var session = guidHndlr.GetSession(curGuid);

            if (session == null)
            {
                WebOperationContext.Current.OutgoingResponse.StatusCode = HttpStatusCode.NoContent;
                Logger.WriteLogEntry(TraceEventType.Error, "Patterns Add On Service, Patterns Service, Calculate Patterns", "Couldn't find session");
                return(new Session()
                {
                    TokenId = curGuid.ToString()
                });
            }

            // Check that results aren't stored for more than half an hour after last results request.
            var resultsLength = DateTime.Now - session.LastResultRequest;

            //System.Diagnostics.Trace.WriteLine("Last result request: " + resultsLength.TotalMinutes.ToString() + " ago");
            if (resultsLength.TotalMinutes > Settings_MaxAmountOfResults)
            {
                WebOperationContext.Current.OutgoingResponse.StatusCode = HttpStatusCode.NotAcceptable;
                Logger.WriteLogEntry(TraceEventType.Critical, "Patterns Add On Service, Patterns Service, Calculate Patterns", "Maximum size of results exceeded");
                return(new Session()
                {
                    TokenId = curGuid.ToString()
                });
            }

            Logger.WriteLogEntry(TraceEventType.Verbose, "Patterns Add On Service, Patterns Service, Calculate Patterns", "Session found for GUID: " + curGuid.ToString());

            if (!session.AppendRequest(inData))
            {
                WebOperationContext.Current.OutgoingResponse.StatusCode = HttpStatusCode.NoContent;
                Logger.WriteLogEntry(TraceEventType.Critical, "Patterns Add On Service, Patterns Service, Calculate Patterns", "Input slice length exceeded");
                return(new Session()
                {
                    TokenId = curGuid.ToString()
                });
            }

            Logger.WriteLogEntry(TraceEventType.Information, "Patterns Add On Service, Patterns Service, Calculate Patterns", "Tracings accepted");
            WebOperationContext.Current.OutgoingResponse.StatusCode = HttpStatusCode.Accepted;
            return(new Session()
            {
                TokenId = curGuid.ToString()
            });
        }