public RemoteApplication SetupReceiverApplication(bool isDistributedTracing, bool isWebApplication)
        {
            RemoteApplication receiverApplication;

            if (isWebApplication)
            {
                receiverApplication = new RemoteWebApplication("BasicMvcApplication", ApplicationType.Bounded);
            }
            else
            {
                receiverApplication = new RemoteService(_applicationDirectoryName, _executableName, _targetFramework, ApplicationType.Bounded, createsPidFile: true, isCoreApp: false, publishApp: false);
            }
            receiverApplication.TestLogger = new XUnitTestLogger(TestLogger);
            receiverApplication.DeleteWorkingSpace();
            receiverApplication.CopyToRemote();

            SetSecrets(receiverApplication.DestinationNewRelicConfigFilePath);

            var configModifier = new NewRelicConfigModifier(receiverApplication.DestinationNewRelicConfigFilePath);

            configModifier.SetLogLevel("all");

            if (isDistributedTracing)
            {
                configModifier.SetOrDeleteDistributedTraceEnabled(true);
                configModifier.SetOrDeleteSpanEventsEnabled(true);
            }
            else
            {
                configModifier.SetOrDeleteDistributedTraceEnabled(false);
                configModifier.SetOrDeleteSpanEventsEnabled(false);
            }

            return(receiverApplication);
        }
Пример #2
0
        public ExpectedErrorTests(RemoteServiceFixtures.AspNetCoreMvcBasicRequestsFixture fixture, ITestOutputHelper output)
            : base(fixture)
        {
            _fixture            = fixture;
            _fixture.TestLogger = output;
            _fixture.Actions
            (
                setupConfiguration: () =>
            {
                var configPath     = fixture.DestinationNewRelicConfigFilePath;
                var configModifier = new NewRelicConfigModifier(configPath);

                configModifier.SetOrDeleteDistributedTraceEnabled(true);
                configModifier.AddExpectedStatusCodes("410-450")
                .AddExpectedErrorMessages("System.Exception", new List <string> {
                    "test exception"
                })
                .AddExpectedErrorClasses(new List <string> {
                    "AspNetCoreMvcBasicRequestsApplication.Controllers.CustomExceptionClass"
                });
            },
                exerciseApplication: () =>
            {
                _fixture.ReturnADesiredStatusCode(415);
                _fixture.ThrowExceptionWithMessage("test exception message");
                _fixture.ThrowCustomException();
                _fixture.AgentLog.WaitForLogLine(AgentLogBase.ErrorTraceDataLogLineRegex, TimeSpan.FromMinutes(2));
            }
            );
            _fixture.Initialize();
        }
        public RestSharpInstrumentationDistributedTracing(RemoteServiceFixtures.BasicMvcApplicationTestFixture fixture, ITestOutputHelper output) : base(fixture)
        {
            _fixture            = fixture;
            _fixture.TestLogger = output;
            _fixture.Actions(
                setupConfiguration: () =>
            {
                var configPath     = fixture.DestinationNewRelicConfigFilePath;
                var configModifier = new NewRelicConfigModifier(configPath);
                configModifier.SetOrDeleteDistributedTraceEnabled(true);
                configModifier.ForceTransactionTraces();
            },
                exerciseApplication: () =>
            {
                _fixture.GetRestSharpSyncClient(method: "GET", generic: false);
                _fixture.GetRestSharpSyncClient(method: "PUT", generic: false);
                _fixture.GetRestSharpSyncClient(method: "POST", generic: false);
                _fixture.GetRestSharpSyncClient(method: "DELETE", generic: false);
                _fixture.GetRestSharpClientTaskCancelled();

                //Adding some time for metrics to be fully generated.
                Thread.Sleep(3000);
            }
                );
            _fixture.Initialize();
        }
        public DTSupportabilityMetricTests(RemoteServiceFixtures.DTBasicMVCApplicationFixture fixture, ITestOutputHelper output) : base(fixture)
        {
            _fixture            = fixture;
            _fixture.TestLogger = output;

            _fixture.Actions
            (
                setupConfiguration: () =>
            {
                var configPath     = fixture.DestinationNewRelicConfigFilePath;
                var configModifier = new NewRelicConfigModifier(configPath);
                configModifier.SetOrDeleteDistributedTraceEnabled(true);
                configModifier.ForceTransactionTraces();
                configModifier.SetOrDeleteSpanEventsEnabled(true);
            },
                exerciseApplication: () =>
            {
                _fixture.GenerateMajorVersionMetric();
                _fixture.GenerateIgnoredNullMetric();
                _fixture.GenerateParsePayloadMetric();
                _fixture.GenerateAcceptSuccessMetric();
                _fixture.GenerateUntrustedAccountMetric();
                _fixture.GenerateCreateSuccessMetric();
            }
            );

            _fixture.Initialize();
        }
Пример #5
0
        public OwinCATChainTests(OwinTracingChainFixture fixture, ITestOutputHelper output) : base(fixture)
        {
            _fixture            = fixture;
            _fixture.TestLogger = output;
            _fixture.Actions
            (
                setupConfiguration: () =>
            {
                var configModifier = new NewRelicConfigModifier(_fixture.DestinationNewRelicConfigFilePath);
                configModifier.SetOrDeleteDistributedTraceEnabled(false);
                configModifier.SetOrDeleteSpanEventsEnabled(false);
                configModifier.SetLogLevel("all");

                _fixture.ReceiverApplication = _fixture.SetupReceiverApplication(isDistributedTracing: false, isWebApplication: false);
                _fixture.ReceiverApplication.Start(string.Empty, captureStandardOutput: true);
            },
                exerciseApplication: () =>
            {
                _fixture.ExecuteTraceRequestChainHttpClient();

                _fixture.ReceiverApplication.AgentLog.WaitForLogLine(AgentLogFile.AnalyticsEventDataLogLineRegex, TimeSpan.FromMinutes(2));
            }
            );

            _fixture.Initialize();
        }
Пример #6
0
        public RabbitMqDistributedTracingTestsBase(TFixture fixture, ITestOutputHelper output)  : base(fixture)
        {
            _fixture           = fixture;
            fixture.TestLogger = output;

            // RabbitMQ SendRecieve uses the BasicGet method to receive, which does not process incoming tracing payloads
            _fixture.AddCommand($"RabbitMQ SendReceive {_sendReceiveQueue} TestMessage");
            // RabbitMQ SendRecieveWithEventingConsumer uses the HandleBasicDeliverWrapper on the receiving side, which does process incoming tracing headers
            // We execute the method twice to make sure this issue stays fixed: https://github.com/newrelic/newrelic-dotnet-agent/issues/464
            _fixture.AddCommand($"RabbitMQ SendReceiveWithEventingConsumer {_sendReceiveQueue} EventingConsumerTestMessageOne");
            _fixture.AddCommand($"RabbitMQ SendReceiveWithEventingConsumer {_sendReceiveQueue} EventingConsumerTestMessageTwo");
            // This is needed to avoid a hang on shutdown in the test app
            _fixture.AddCommand("RabbitMQ Shutdown");

            fixture.Actions
            (
                setupConfiguration: () =>
            {
                var configModifier = new NewRelicConfigModifier(fixture.DestinationNewRelicConfigFilePath);
                configModifier.ForceTransactionTraces();

                configModifier.SetOrDeleteDistributedTraceEnabled(true);
                configModifier.SetOrDeleteSpanEventsEnabled(true);
            }
            );
            fixture.Initialize();
        }
Пример #7
0
        public CatEnabledHeaderPresentDistributedTraceSettingFalse(RemoteServiceFixtures.BasicMvcApplicationTestFixture fixture, ITestOutputHelper output)
        {
            _fixture            = fixture;
            _fixture.TestLogger = output;
            _fixture.Actions
            (
                setupConfiguration: () =>
            {
                var configPath     = fixture.DestinationNewRelicConfigFilePath;
                var configModifier = new NewRelicConfigModifier(configPath);

                configModifier.ForceTransactionTraces();

                configModifier.SetOrDeleteDistributedTraceEnabled(false);

                CommonUtils.ModifyOrCreateXmlAttributeInNewRelicConfig(_fixture.DestinationNewRelicConfigFilePath, new[] { "configuration" }, "crossApplicationTracingEnabled", "true");
                CommonUtils.ModifyOrCreateXmlAttributeInNewRelicConfig(_fixture.DestinationNewRelicConfigFilePath, new[] { "configuration", "crossApplicationTracer" }, "enabled", "true");
            },
                exerciseApplication: () =>
            {
                _fixture.GetIgnored();
                _responseHeaders = _fixture.GetWithCatHeader();
            }
            );
            _fixture.Initialize();
        }
        public RabbitMqW3cTracingTests(RemoteServiceFixtures.RabbitMqBasicMvcFixture fixture, ITestOutputHelper output)
        {
            fixture.TestLogger = output;
            fixture.Actions
            (
                setupConfiguration: () =>
            {
                var configModifier = new NewRelicConfigModifier(fixture.DestinationNewRelicConfigFilePath);
                configModifier.ForceTransactionTraces();

                configModifier.SetOrDeleteDistributedTraceEnabled(true);
                configModifier.SetOrDeleteSpanEventsEnabled(true);
            }
            );
        }
Пример #9
0
        public RabbitMqW3cTracingTests(ConsoleDynamicMethodFixtureFW471 fixture, ITestOutputHelper output)  : base(fixture)
        {
            fixture.TestLogger = output;
            fixture.Actions
            (
                setupConfiguration: () =>
            {
                var configModifier = new NewRelicConfigModifier(fixture.DestinationNewRelicConfigFilePath);
                configModifier.ForceTransactionTraces();

                configModifier.SetOrDeleteDistributedTraceEnabled(true);
                configModifier.SetOrDeleteSpanEventsEnabled(true);
            }
            );
        }
        public AspNetCoreDistTraceRequestChainFixture()
            : base(new RemoteService(ApplicationDirectoryName, ExecutableName, ApplicationType.Bounded, true, true, true))
        {
            Actions(setupConfiguration: () =>
            {
                var configModifier = new NewRelicConfigModifier(DestinationNewRelicConfigFilePath);
                configModifier.SetOrDeleteDistributedTraceEnabled(true);
                configModifier.SetOrDeleteSpanEventsEnabled(true);
                configModifier.SetLogLevel("all");

                //Do during setup so TestLogger is set.
                FirstCallApplication  = SetupDistributedTracingApplication();
                SecondCallApplication = SetupDistributedTracingApplication();

                FirstCallApplication.Start(string.Empty, captureStandardOutput: true);
                SecondCallApplication.Start(string.Empty, captureStandardOutput: true);
            });
        }
Пример #11
0
        public DtApiTestBase(DistributedTracingApiFixture fixture, ITestOutputHelper output, TracingTestOption tracingTestOption) : base(fixture)
        {
            _fixture                      = fixture;
            _fixture.TestLogger           = output;
            _fixture.CommandLineArguments = tracingTestOption == TracingTestOption.W3cAndNewrelicHeaders ? "w3c" : null;

            _fixture.Actions
            (
                setupConfiguration: () =>
            {
                _fixture.RemoteApplication.NewRelicConfig.SetLogLevel("finest");
                var configModifier = new NewRelicConfigModifier(_fixture.DestinationNewRelicConfigFilePath);
                configModifier.SetOrDeleteDistributedTraceEnabled(true);
            }
            );

            _fixture.Initialize();
        }
        protected RemoteService SetupDistributedTracingApplication()
        {
            var service = new RemoteService(ApplicationDirectoryName, ExecutableName, ApplicationType.Bounded, true, true, true);

            service.TestLogger = new XUnitTestLogger(TestLogger);
            service.DeleteWorkingSpace();
            service.CopyToRemote();

            SetSecrets(service.DestinationNewRelicConfigFilePath);

            var configModifier = new NewRelicConfigModifier(service.DestinationNewRelicConfigFilePath);

            configModifier.SetOrDeleteDistributedTraceEnabled(true);
            configModifier.SetOrDeleteSpanEventsEnabled(true);
            configModifier.SetLogLevel("all");

            return(service);
        }
        public W3CTestBase(T fixture, ITestOutputHelper output)
        {
            _fixture            = fixture;
            _fixture.TestLogger = output;

            _fixture.Actions
            (
                setupConfiguration: () =>
            {
                var configModifier = new NewRelicConfigModifier(_fixture.DestinationNewRelicConfigFilePath);
                configModifier.SetOrDeleteDistributedTraceEnabled(true);
                configModifier.SetOrDeleteSpanEventsEnabled(true);
                configModifier.SetLogLevel("debug");

                _fixture.ReceiverApplication = _fixture.SetupReceiverApplication(isDistributedTracing: true, isWebApplication: _fixture is OwinTracingChainFixture ? false : true);
                _fixture.ReceiverApplication.Start(string.Empty, captureStandardOutput: true);
            });
        }
Пример #14
0
 public HttpClientInstrumentationNet5(AspNet5BasicWebApiApplicationFixture fixture, ITestOutputHelper output)
     : base(fixture)
 {
     _fixture            = fixture;
     _fixture.TestLogger = output;
     _fixture.Actions(
         setupConfiguration: () =>
     {
         var configPath     = fixture.DestinationNewRelicConfigFilePath;
         var configModifier = new NewRelicConfigModifier(configPath);
         configModifier.SetOrDeleteDistributedTraceEnabled(true);
         configModifier.ForceTransactionTraces();
     },
         exerciseApplication: () =>
     {
         _fixture.MakeExternalCallUsingHttpClient("http://www.google.com", "/search");
     }
         );
     _fixture.Initialize();
 }
Пример #15
0
 public HttpClientInstrumentationNetCore(AspNetCoreMvcBasicRequestsFixture fixture, ITestOutputHelper output)
 {
     _fixture            = fixture;
     _fixture.TestLogger = output;
     _fixture.Actions(
         setupConfiguration: () =>
     {
         var configPath     = fixture.DestinationNewRelicConfigFilePath;
         var configModifier = new NewRelicConfigModifier(configPath);
         configModifier.SetOrDeleteDistributedTraceEnabled(true);
         configModifier.ForceTransactionTraces();
     },
         exerciseApplication: () =>
     {
         _fixture.GetHttpClient();
         _fixture.GetHttpClientTaskCancelled();
     }
         );
     _fixture.Initialize();
 }
Пример #16
0
        public InitiateDTAttributesTest(RemoteServiceFixtures.DTBasicMVCApplicationFixture fixture, ITestOutputHelper output) : base(fixture)
        {
            _fixture            = fixture;
            _fixture.TestLogger = output;

            _fixture.Actions
            (
                setupConfiguration: () =>
            {
                var configPath     = fixture.DestinationNewRelicConfigFilePath;
                var configModifier = new NewRelicConfigModifier(configPath);
                configModifier.SetOrDeleteDistributedTraceEnabled(true);
                configModifier.ForceTransactionTraces();
            },
                exerciseApplication: () =>
            {
                _fixture.Initiate();
            }
            );
            _fixture.Initialize();
        }
Пример #17
0
        public ApiCallsTests(TFixture fixture, ITestOutputHelper output) : base(fixture)
        {
            Fixture            = fixture;
            Fixture.TestLogger = output;

            foreach (var apiCall in ApiCalls)
            {
                Fixture.AddCommand($"ApiCalls {apiCall}");
            }

            Fixture.Actions
            (
                setupConfiguration: () =>
            {
                var configModifier = new NewRelicConfigModifier(Fixture.DestinationNewRelicConfigFilePath);
                configModifier.SetOrDeleteDistributedTraceEnabled(true);
                configModifier.SetLogLevel("finest");
            }
            );

            Fixture.Initialize();
        }
Пример #18
0
        public RabbitMqDistributedTracingTestsBase(TFixture fixture, ITestOutputHelper output)  : base(fixture)
        {
            _fixture           = fixture;
            fixture.TestLogger = output;

            _fixture.AddCommand($"RabbitMQ SendReceive {_sendReceiveQueue} TestMessage");
            _fixture.AddCommand($"RabbitMQ SendReceiveWithEventingConsumer {_sendReceiveQueue} EventingConsumerTestMessage");
            // This is needed to avoid a hang on shutdown in the test app
            _fixture.AddCommand("RabbitMQ Shutdown");

            fixture.Actions
            (
                setupConfiguration: () =>
            {
                var configModifier = new NewRelicConfigModifier(fixture.DestinationNewRelicConfigFilePath);
                configModifier.ForceTransactionTraces();

                configModifier.SetOrDeleteDistributedTraceEnabled(true);
                configModifier.SetOrDeleteSpanEventsEnabled(true);
            }
            );
            fixture.Initialize();
        }
        public RabbitMqLegacyDistributedTracingTests(RemoteServiceFixtures.RabbitMqLegacyBasicMvcFixture fixture, ITestOutputHelper output)
        {
            _fixture           = fixture;
            fixture.TestLogger = output;
            fixture.Actions
            (
                setupConfiguration: () =>
            {
                var configModifier = new NewRelicConfigModifier(fixture.DestinationNewRelicConfigFilePath);
                configModifier.ForceTransactionTraces();

                configModifier.SetOrDeleteDistributedTraceEnabled(true);
                configModifier.SetOrDeleteSpanEventsEnabled(true);
            },
                exerciseApplication: () =>
            {
                _headerExists = fixture.GetMessageQueue_RabbitMQ_SendReceive_HeaderExists("Test Message");
                _headerValue  = fixture.GetMessageQueue_RabbitMQ_SendReceive_HeaderValue("Test Message");
                fixture.GetMessageQueue_RabbitMQ_SendReceiveWithEventingConsumer_HeaderValue("Test Message");
            }
            );
            fixture.Initialize();
        }
Пример #20
0
        public TraceIdTests(AspNetCore3BasicWebApiApplicationFixture fixture, ITestOutputHelper output)
        {
            _fixture            = fixture;
            _fixture.TestLogger = output;
            _fixture.Actions
            (
                setupConfiguration: () =>
            {
                var configModifier = new NewRelicConfigModifier(_fixture.DestinationNewRelicConfigFilePath);
                configModifier.SetOrDeleteDistributedTraceEnabled(true);
                configModifier.SetOrDeleteSpanEventsEnabled(true);
                configModifier.SetLogLevel("all");
            },
                exerciseApplication: () =>
            {
                _traceId = _fixture.GetTraceId();
                _fixture.RemoteApplication.AgentLog.WaitForLogLine(AgentLogFile.AnalyticsEventDataLogLineRegex, TimeSpan.FromMinutes(2));
                _fixture.RemoteApplication.AgentLog.WaitForLogLine(AgentLogFile.SpanEventDataLogLineRegex, TimeSpan.FromMinutes(2));
            }
            );

            _fixture.Initialize();
        }