Пример #1
0
        private static void SetUp()
        {
            FacadePipe myPipe = new FacadePipe(myConfig.Station[0]);

            myMaster = new FacadeApplicationLayerMaster();
            myFacadeISegmentStatistics = new FacadeISegmentStatistics();

            SegmentTiming();

            myMachine = new SegmentStateMachine(myMaster, parameters, false, myFacadeISegmentStatistics, myTimeList);
            myMachine.ResetCounter();
            myMachine.DisconnectedAfterFailureEntered += new EventHandler(myMachine_DisconnectedAfterFailureEntered);
            FacadeSegment myFacadeSegment   = new FacadeSegment();
            int           myMaxNumberOfTags = int.MaxValue;

            Statistics.ChannelStatistics myChanel  = new Statistics.ChannelStatistics(myConfig.Channels[0]);
            DiagnosticSegment            mySegment = new DiagnosticSegment(myConfig.Segments[0], myChanel);

            myInterface = (new FacadeSegment.FacadePipeInterface(new InterfaceParameters(myConfig.Interfaces[0]), myPipe, mySegment));
            myInterface.ResetCounter();
            FacadeSegment.FacadeDataDescription myDataDescription = new FacadeSegment.FacadeDataDescription(myConfig.DataBlocks[0], ref myMaxNumberOfTags);
            myDataDescription.ResetCounter();
            myPipeDataBlock = new FacadeSegment.FacadePipeInterface.FacadePipeDataBlock(myFacadeSegment, myDataDescription, myInterface);
            myPipeDataBlock.ResetCounter();
        }
        public void TestSubsegment()
        {
            _recorder.BeginSubsegment("subsegment1");
            Subsegment    subsegment1   = (Subsegment)TraceContext.GetEntity();
            FacadeSegment facadeSegment = (FacadeSegment)subsegment1.RootSegment;

            _recorder.EndSubsegment();
            Assert.AreEqual(facadeSegment.GetType(), typeof(FacadeSegment));
            Assert.IsFalse(facadeSegment.Subsegments.Contains(subsegment1)); //only subsegment is streamed
            Assert.IsFalse(TraceContext.IsEntityPresent());                  // facade segment is cleared from TraceContext
        }
        public void TestNestedSubsegments()
        {
            _recorder.BeginSubsegment("subsegment1");
            Subsegment    child         = (Subsegment)TraceContext.GetEntity();
            FacadeSegment facadeSegment = (FacadeSegment)child.RootSegment;

            _recorder.BeginSubsegment("subsegment2");
            Assert.AreEqual("subsegment2", TraceContext.GetEntity().Name);
            Assert.AreEqual(facadeSegment.TraceId, TraceContext.GetEntity().RootSegment.TraceId); //root segment of subsegment2 is facade segment
            _recorder.EndSubsegment();
            _recorder.EndSubsegment();
            Assert.AreEqual(facadeSegment.GetType(), typeof(FacadeSegment));
            Assert.IsFalse(facadeSegment.Subsegments.Contains(child)); //only subsegments are streamed
            Assert.IsFalse(TraceContext.IsEntityPresent());
        }
        public void TestLambdaLeakedSubsegments()
        {
            String secondTraceHeader = "Root=" + Core.Internal.Entities.TraceId.NewId() + ";Parent=53995c3f42cd8ad1;Sampled=1";

            _recorder.BeginSubsegment("subsegment1");
            Subsegment subsegment1 = (Subsegment)TraceContext.GetEntity();

            Environment.SetEnvironmentVariable(AWSXRayRecorder.LambdaTraceHeaderKey, secondTraceHeader);
            _recorder.BeginSubsegment("subsegment2"); //Environment variables changed, subsegment1 will be dropped
            Subsegment    subsegment2   = (Subsegment)TraceContext.GetEntity();
            FacadeSegment facadeSegment = (FacadeSegment)subsegment2.RootSegment;

            Assert.IsFalse(facadeSegment.Subsegments.Contains(subsegment1)); //subsegment1 dropped
            Assert.IsTrue(facadeSegment.Subsegments.Contains(subsegment2));  //only subsegment2 is present
            _recorder.EndSubsegment();                                       //subsegment2 streamed
            Assert.IsFalse(TraceContext.IsEntityPresent());                  // Facade segment not present in the callcontext
        }
        public void TestNotSampledNestedSubsegments()
        {
            String notSampledTraceHeader = "Root=" + Core.Internal.Entities.TraceId.NewId() + ";Parent=53995c3f42cd8ad1;Sampled=0"; //not sampled

            Environment.SetEnvironmentVariable(AWSXRayRecorder.LambdaTraceHeaderKey, notSampledTraceHeader);
            _recorder.BeginSubsegment("subsegment1");
            _recorder.BeginSubsegment("subsegment2");
            Subsegment subsegment2 = (Subsegment)TraceContext.GetEntity(); //even if facade segment not sampled, subsegment tree is still available

            _recorder.EndSubsegment();
            Subsegment subsegment1 = (Subsegment)TraceContext.GetEntity();

            Assert.AreEqual("subsegment1", TraceContext.GetEntity().Name);
            FacadeSegment facadeSegment = (FacadeSegment)subsegment1.RootSegment;

            Assert.IsFalse(facadeSegment.Subsegments.Contains(subsegment2)); //subsegment1 dropped
            Assert.IsTrue(facadeSegment.Subsegments.Contains(subsegment1));
            _recorder.EndSubsegment();
            Assert.IsFalse(TraceContext.IsEntityPresent());
        }
Пример #6
0
 public void Initialize()
 {
     _facadeSegment = new FacadeSegment("Facade", TraceId, ParentId);
 }