Пример #1
0
        public AspNetCoreGenericWebHostTests(RemoteServiceFixtures.AspNetCore3FeaturesFixture fixture, ITestOutputHelper output)
        {
            _fixture            = fixture;
            _fixture.TestLogger = output;
            _fixture.Actions
            (
                setupConfiguration: () =>
            {
                var configPath     = fixture.DestinationNewRelicConfigFilePath;
                var configModifier = new NewRelicConfigModifier(configPath);
                configModifier.ForceTransactionTraces();
            },
                exerciseApplication: () =>
            {
                _fixture.Get();
                _fixture.ThrowException();

                _fixture.AgentLog.WaitForLogLine(AgentLogBase.ErrorTraceDataLogLineRegex, TimeSpan.FromMinutes(2));
            }
            );
            _fixture.Initialize();
        }
        public AspNetCoreLocalHSMDisabledAndServerSideHSMDisabledTests(RemoteServiceFixtures.AspNetCoreMvcBasicRequestsFixture fixture, ITestOutputHelper output)
        {
            _fixture            = fixture;
            _fixture.TestLogger = output;
            _fixture.Actions
            (
                setupConfiguration: () =>
            {
                var configPath     = fixture.DestinationNewRelicConfigFilePath;
                var configModifier = new NewRelicConfigModifier(configPath);
                configModifier.ForceTransactionTraces();

                CommonUtils.ModifyOrCreateXmlAttributeInNewRelicConfig(configPath, new[] { "configuration", "log" }, "level", "debug");
                CommonUtils.ModifyOrCreateXmlAttributeInNewRelicConfig(configPath, new[] { "configuration", "requestParameters" }, "enabled", "true");
                CommonUtils.ModifyOrCreateXmlAttributeInNewRelicConfig(configPath, new[] { "configuration", "service" }, "ssl", "false");
                CommonUtils.ModifyOrCreateXmlAttributeInNewRelicConfig(configPath, new[] { "configuration", "transactionTracer" }, "recordSql", "raw");
                CommonUtils.ModifyOrCreateXmlAttributeInNewRelicConfig(configPath, new[] { "configuration", "highSecurity" }, "enabled", "false");
            },
                exerciseApplication: () => _fixture.GetWithData(QueryStringParameterValue)
            );
            _fixture.Initialize();
        }
        public InstrumentationLoaderTestsCore(RemoteServiceFixtures.ConsoleInstrumentationLoaderFixtureCore fixture, ITestOutputHelper output) : base(fixture)
        {
            _fixture            = fixture;
            _fixture.TestLogger = output;

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

                configModifier.ForceTransactionTraces();
                configModifier.SetLogLevel("finest");
            },
                exerciseApplication: () =>
            {
            }
            );

            _fixture.Initialize();
        }
        public GetBrowserTimingHeader(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.AutoInstrumentBrowserMonitoring(false);
                configModifier.BrowserMonitoringEnableAttributes(true);
            },
                exerciseApplication: () =>
            {
                _browserTimingHeader = _fixture.GetBrowserTimingHeader();
            }
            );
            _fixture.Initialize();
        }
Пример #5
0
        public OtherTransactionAsync(RemoteServiceFixtures.BasicMvcApplicationTestFixture fixture, ITestOutputHelper output)
        {
            _fixture            = fixture;
            _fixture.TestLogger = output;
            _fixture.Actions
            (
                setupConfiguration: () =>
            {
                var configModifier = new NewRelicConfigModifier(_fixture.DestinationNewRelicConfigFilePath);
                configModifier.ForceTransactionTraces();

                var instrumentationFilePath = $@"{fixture.DestinationNewRelicExtensionsDirectoryPath}\CustomInstrumentation.xml";

                CommonUtils.AddCustomInstrumentation(instrumentationFilePath, "BasicMvcApplication", "BasicMvcApplication.Controllers.CustomInstrumentationAsyncController", "CustomMethodBackgroundThread", "AsyncForceNewTransactionWrapper", "MyCustomMetricName");
            },
                exerciseApplication: () =>
            {
                _fixture.GetBackgroundThread();
            }
            );
            _fixture.Initialize();
        }
        public DataTransmissionPutGzip(MvcWithCollectorFixture fixture, ITestOutputHelper output)
        {
            _fixture            = fixture;
            _fixture.TestLogger = output;

            _fixture.AddActions(
                setupConfiguration: () =>
            {
                var configModifier = new NewRelicConfigModifier(fixture.DestinationNewRelicConfigFilePath);

                configModifier.PutForDataSend();
                configModifier.CompressedContentEncoding("gzip");
            },
                exerciseApplication: () =>
            {
                _fixture.Get();
                _fixture.AgentLog.WaitForLogLine(AgentLogFile.AgentConnectedLogLineRegex, TimeSpan.FromMinutes(1));
                _collectedRequests = _fixture.GetCollectedRequests();
            }
                );
            _fixture.Initialize();
        }
 public RestSharpInstrumentationTaskResult(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.ForceTransactionTraces();
         },
         exerciseApplication: () =>
         {
             _fixture.GetRestSharpTaskResultClient(method: "GET", generic: true, cancelable: true);
             _fixture.GetRestSharpTaskResultClient(method: "PUT", generic: false, cancelable: false);
             _fixture.GetRestSharpTaskResultClient(method: "POST", generic: false, cancelable: false);
             _fixture.GetRestSharpTaskResultClient(method: "DELETE", generic: true, cancelable: true);
         }
     );
     _fixture.Initialize();
 }
        public LogLevelInfoAndAuditLogTrueTests(RemoteServiceFixtures.BasicMvcApplicationTestFixture fixture, ITestOutputHelper output)
        {
            _fixture            = fixture;
            _fixture.TestLogger = output;
            _fixture.Actions
            (
                setupConfiguration: () =>
            {
                var configPath     = fixture.DestinationNewRelicConfigFilePath;
                var configModifier = new NewRelicConfigModifier(configPath);
                configModifier.ForceTransactionTraces();

                CommonUtils.ModifyOrCreateXmlAttributeInNewRelicConfig(configPath, new[] { "configuration", "log" }, "level", "info");
                CommonUtils.ModifyOrCreateXmlAttributeInNewRelicConfig(configPath, new[] { "configuration", "log" }, "auditLog", "true");
            },
                exerciseApplication: () =>
            {
                _fixture.Get();
            }
            );
            _fixture.Initialize();
        }
Пример #9
0
        public SpanEventsNotCreatedAttributesTest(RemoteServiceFixtures.DTBasicMVCApplicationFixture fixture, ITestOutputHelper output)
        {
            _fixture            = fixture;
            _fixture.TestLogger = output;

            _fixture.Actions
            (
                setupConfiguration: () =>
            {
                var configPath     = fixture.DestinationNewRelicConfigFilePath;
                var configModifier = new NewRelicConfigModifier(configPath);
                configModifier.SetOrDeleteDistributedTraceEnabled(true);
                configModifier.SetOrDeleteSpanEventsEnabled(false);
                configModifier.ForceTransactionTraces();
            },
                exerciseApplication: () =>
            {
                _fixture.Initiate();
            }
            );
            _fixture.Initialize();
        }
Пример #10
0
        public CouchbaseQueryTests(RemoteServiceFixtures.CouchbaseBasicMvcFixture fixture, ITestOutputHelper output)
        {
            _fixture            = fixture;
            _fixture.TestLogger = output;
            _fixture.Actions
            (
                setupConfiguration: () =>
            {
                var configPath     = fixture.DestinationNewRelicConfigFilePath;
                var configModifier = new NewRelicConfigModifier(configPath);

                configModifier.ForceTransactionTraces();
                configModifier.ForceSqlTraces();
            },
                exerciseApplication: () =>
            {
                _fixture.Couchbase_Query();
            }
            );

            _fixture.Initialize();
        }
        public CatEnabledChainedTaskResultRestSharp(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.ForceTransactionTraces();

                CommonUtils.ModifyOrCreateXmlAttributeInNewRelicConfig(_fixture.DestinationNewRelicConfigFilePath, new[] { "configuration" }, "crossApplicationTracingEnabled", "true");
                CommonUtils.ModifyOrCreateXmlAttributeInNewRelicConfig(_fixture.DestinationNewRelicConfigFilePath, new[] { "configuration", "crossApplicationTracer" }, "enabled", "true");
            },
                exerciseApplication: () =>
            {
                _fixture.GetIgnored();
                _responseHeaders = _fixture.GetRestSharpTaskResultClientWithHeaders(method: "GET", generic: true, cancelable: true);
            }
                );
            _fixture.Initialize();
        }
 public AspNetCoreCollectibleAssemblyContextTests(RemoteServiceFixtures.AspNetCore3FeaturesFixture fixture, ITestOutputHelper output)
 {
     _fixture            = fixture;
     _fixture.TestLogger = output;
     _fixture.Actions
     (
         setupConfiguration: () =>
     {
         var configPath     = fixture.DestinationNewRelicConfigFilePath;
         var configModifier = new NewRelicConfigModifier(configPath);
         configModifier.ForceTransactionTraces();
         configModifier.SetLogLevel("finest");
     },
         exerciseApplication: () =>
     {
         _fixture.AccessCollectible();
         _fixture.AccessCollectible();
         _fixture.TestLogger?.WriteLine(_fixture.ProfilerLog.GetFullLogAsString());
     }
     );
     _fixture.Initialize();
 }
Пример #13
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();
        }
Пример #14
0
        public AspNetCoreMvcCoreFrameworkTests(AspNetCoreMvcCoreFrameworkFixture fixture, ITestOutputHelper output)
            : base(fixture)
        {
            _fixture            = fixture;
            _fixture.TestLogger = output;

            _fixture.Actions
            (
                setupConfiguration: () =>
            {
                var configPath     = fixture.DestinationNewRelicConfigFilePath;
                var configModifier = new NewRelicConfigModifier(configPath);
                configModifier.SetLogLevel("FINEST");
            },
                exerciseApplication: () =>
            {
                _fixture.Get();
                _fixture.Get();
            }
            );
            _fixture.Initialize();
        }
Пример #15
0
        public CallStackFallbackMvc(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.SetLogLevel("Finest");

                _fixture.DisableAsyncLocalCallStack();
            },
                exerciseApplication: () =>
            {
                _fixture.Get();
            }
            );
            _fixture.Initialize();
        }
        public OtherTransaction(RemoteServiceFixtures.AgentApiExecutor fixture, ITestOutputHelper output)
            : base(fixture)
        {
            _fixture            = fixture;
            _fixture.TestLogger = output;
            _fixture.Actions
            (
                setupConfiguration: () =>
            {
                var configModifier = new NewRelicConfigModifier(_fixture.DestinationNewRelicConfigFilePath);

                var instrumentationFilePath = $@"{fixture.DestinationNewRelicExtensionsDirectoryPath}\CustomInstrumentation.xml";

                //Use the two different wrappers here to ensure that they both filter to OtherTransactionWrapper and create the same behavior

                CommonUtils.AddCustomInstrumentation(instrumentationFilePath, "NewRelic.Agent.IntegrationTests.Applications.AgentApiExecutor", "NewRelic.Agent.IntegrationTests.Applications.AgentApiExecutor.Program", "RealMain", "NewRelic.Providers.Wrapper.CustomInstrumentation.OtherTransactionWrapper", "MyCustomMetricName");

                CommonUtils.AddCustomInstrumentation(instrumentationFilePath, "NewRelic.Agent.IntegrationTests.Applications.AgentApiExecutor", "NewRelic.Agent.IntegrationTests.Applications.AgentApiExecutor.Program", "SomeSlowMethod", "NewRelic.Agent.Core.Tracer.Factories.BackgroundThreadTracerFactory");
            }
            );
            _fixture.Initialize();
        }
        public HighSecurityAndCustomAttributes(HSMCustomAttributesWebApi fixture, ITestOutputHelper output)
        {
            _fixture            = fixture;
            _fixture.TestLogger = output;
            _fixture.Actions(
                setupConfiguration: () =>
            {
                var configPath     = fixture.DestinationNewRelicConfigFilePath;
                var configModifier = new NewRelicConfigModifier(configPath);
                configModifier.ForceTransactionTraces();
                configModifier.SetHighSecurityMode(true);
                configModifier.SetLogLevel("debug");
            },
                exerciseApplication: () =>
            {
                _fixture.Get();
                _fixture.GetCustomErrorAttributes();
                _fixture.AgentLog.WaitForLogLine(AgentLogFile.ErrorEventDataLogLineRegex, TimeSpan.FromMinutes(2));
            }

                );
            _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();
        }
Пример #19
0
        public NServiceBusReceiveTests(NServiceBusReceiverFixture fixture, ITestOutputHelper output)
        {
            _fixture            = fixture;
            _fixture.TestLogger = output;
            _fixture.Actions
            (
                setupConfiguration: () =>
            {
                var configPath     = _fixture.DestinationNewRelicConfigFilePath;
                var configModifier = new NewRelicConfigModifier(configPath);

                configModifier.ForceTransactionTraces();
            },
                exerciseApplication: () =>
            {
                _fixture.SendValidAndInvalidMessages();

                _fixture.AgentLog.WaitForLogLine(AgentLogFile.ErrorTraceDataLogLineRegex, TimeSpan.FromMinutes(2));
                _fixture.AgentLog.WaitForLogLine(AgentLogFile.TransactionSampleLogLineRegex, TimeSpan.FromMinutes(1));
            }
            );
            _fixture.Initialize();
        }
        public CustomInstrumentationEditorConnectCommand(MvcWithCollectorFixture fixture, ITestOutputHelper output) : base(fixture)
        {
            _fixture            = fixture;
            _fixture.TestLogger = output;

            _fixture.AddActions(
                setupConfiguration: () =>
            {
                var configModifier = new NewRelicConfigModifier(_fixture.DestinationNewRelicConfigFilePath);
                CommonUtils.ModifyOrCreateXmlAttributeInNewRelicConfig(_fixture.DestinationNewRelicConfigFilePath, new[] { "configuration", "service" }, "autoStart", "false");
                configModifier.SetLogLevel("finest");
            },
                exerciseApplication: () =>
            {
                _fixture.SetCustomInstrumentationEditorOnConnect();
                _fixture.Get();
                _fixture.StartAgent();
                _fixture.AgentLog.WaitForLogLine(AgentLogFile.AgentConnectedLogLineRegex, TimeSpan.FromMinutes(1));
                _fixture.GenerateCallsToCustomInstrumentationEditorMethods();
            }
                );
            _fixture.Initialize();
        }
        public CustomInstrumentationEditorAgentCommand(MvcWithCollectorFixture fixture, ITestOutputHelper output)
        {
            _fixture            = fixture;
            _fixture.TestLogger = output;

            _fixture.AddActions(
                setupConfiguration: () =>
            {
                var configModifier = new NewRelicConfigModifier(_fixture.DestinationNewRelicConfigFilePath);
                configModifier.SetLogLevel("finest");
            },
                exerciseApplication: () =>
            {
                _fixture.Get();
                _fixture.TriggerCustomInstrumentationEditorAgentCommand();
                _fixture.AgentLog.WaitForLogLine(AgentLogBase.InstrumentationUpdateCommandLogLineRegex, TimeSpan.FromMinutes(3));

                _fixture.AgentLog.ClearLog(TimeSpan.FromSeconds(5));
                _fixture.GenerateCallsToCustomInstrumentationEditorMethods();
            }
                );
            _fixture.Initialize();
        }
        public CustomAttributesIgnoredErrorAttributesNotInTransactionTrace(CustomAttributesWebApi fixture, ITestOutputHelper output)
        {
            _fixture            = fixture;
            _fixture.TestLogger = output;
            _fixture.Actions
            (
                setupConfiguration: () =>
            {
                var configPath     = fixture.DestinationNewRelicConfigFilePath;
                var configModifier = new NewRelicConfigModifier(configPath);
                configModifier.ForceTransactionTraces();

                CommonUtils.ModifyOrCreateXmlAttributeInNewRelicConfig(configPath, new[] { "configuration", "log" }, "level", "debug");
                CommonUtils.ModifyOrCreateXmlNodeInNewRelicConfig(configPath, new[] { "configuration", "errorCollector", "ignoreErrors" }, "exception", "System.ArithmeticException");
            },
                exerciseApplication: () =>
            {
                _fixture.Get404();
                _fixture.AgentLog.WaitForLogLine(AgentLogFile.TransactionSampleLogLineRegex, TimeSpan.FromMinutes(2));
            }
            );
            _fixture.Initialize();
        }
 public WebForms45Application(RemoteServiceFixtures.WebForms45Application fixture, ITestOutputHelper output) : base(fixture)
 {
     _fixture            = fixture;
     _fixture.TestLogger = output;
     _fixture.Actions
     (
         setupConfiguration: () =>
     {
         var newRelicConfig = _fixture.DestinationNewRelicConfigFilePath;
         var configModifier = new NewRelicConfigModifier(newRelicConfig);
         configModifier.ForceTransactionTraces();
     },
         exerciseApplication: () =>
     {
         // Make a request with an invalid query string to ensure that the agent handles it safely
         var queryStringParams = new Dictionary <string, string> {
             { "a", "<b>" }
         };
         _fixture.GetWithQueryString(queryStringParams, true);
     }
     );
     _fixture.Initialize();
 }
        public CustomAttributesLegacyIgnored(RemoteServiceFixtures.CustomAttributesWebApi fixture, ITestOutputHelper output) : base(fixture)
        {
            _fixture            = fixture;
            _fixture.TestLogger = output;
            _fixture.Actions(
                setupConfiguration: () =>
            {
                var configPath     = fixture.DestinationNewRelicConfigFilePath;
                var configModifier = new NewRelicConfigModifier(configPath);
                configModifier.ForceTransactionTraces();

                CommonUtils.ModifyOrCreateXmlNodeInNewRelicConfig(configPath,
                                                                  new[] { "configuration", "parameterGroups", "customParameters" }, "ignore", "key");
            },
                exerciseApplication: () =>
            {
                _fixture.Get();
                _fixture.AgentLog.WaitForLogLine(AgentLogFile.TransactionSampleLogLineRegex, TimeSpan.FromMinutes(2));
            }

                );
            _fixture.Initialize();
        }
Пример #25
0
        public CustomAttributes(RemoteServiceFixtures.CustomAttributesWebApi fixture, ITestOutputHelper output)
        {
            _fixture            = fixture;
            _fixture.TestLogger = output;
            _fixture.Actions(
                setupConfiguration: () =>
            {
                var configPath     = fixture.DestinationNewRelicConfigFilePath;
                var configModifier = new NewRelicConfigModifier(configPath);
                configModifier.ForceTransactionTraces();

                CommonUtils.ModifyOrCreateXmlAttributeInNewRelicConfig(configPath, new[] { "configuration", "log" }, "level", "debug");
            },
                exerciseApplication: () =>
            {
                _fixture.Get();

                //This transaction trace will appear as error trace instead of transaction trace.
                _fixture.Get404();
                _fixture.AgentLog.WaitForLogLine(AgentLogFile.TransactionSampleLogLineRegex, TimeSpan.FromMinutes(2));
            });
            _fixture.Initialize();
        }
        public CouchbaseAsyncUpsertTests(RemoteServiceFixtures.CouchbaseBasicMvcFixture fixture, ITestOutputHelper output)  : base(fixture)
        {
            _fixture            = fixture;
            _fixture.TestLogger = output;
            _fixture.Actions
            (
                setupConfiguration: () =>
            {
                var configPath     = fixture.DestinationNewRelicConfigFilePath;
                var configModifier = new NewRelicConfigModifier(configPath);

                configModifier.ForceTransactionTraces();
            },
                exerciseApplication: () =>
            {
                _fixture.Couchbase_UpsertAsync();
                _fixture.Couchbase_UpsertCASReplicatePersistWithExpirationAsync();
                _fixture.Couchbase_UpsertCASWithExpirationAsync();
            }
            );

            _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();
        }
Пример #28
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();
        }
        public CatEnabledWithServerRedirect(RemoteServiceFixtures.BasicMvcApplicationTestFixture fixture, ITestOutputHelper output)
        {
            _fixture            = fixture;
            _fixture.TestLogger = output;
            _fixture.Actions
            (
                setupConfiguration: () =>
            {
                var configPath     = fixture.DestinationNewRelicConfigFilePath;
                var configModifier = new NewRelicConfigModifier(configPath);

                configModifier.ForceTransactionTraces();

                CommonUtils.ModifyOrCreateXmlAttributeInNewRelicConfig(_fixture.DestinationNewRelicConfigFilePath, new[] { "configuration" }, "crossApplicationTracingEnabled", "true");
                CommonUtils.ModifyOrCreateXmlAttributeInNewRelicConfig(_fixture.DestinationNewRelicConfigFilePath, new[] { "configuration", "crossApplicationTracer" }, "enabled", "true");
            },
                exerciseApplication: () =>
            {
                _fixture.GetIgnored();
                _responseHeaders = _fixture.GetWithCatHeaderWithRedirect();
            }
            );
            _fixture.Initialize();
        }
        public CatEnabledChainedRequestsHttpClient(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.ForceTransactionTraces();

                CommonUtils.ModifyOrCreateXmlAttributeInNewRelicConfig(_fixture.DestinationNewRelicConfigFilePath, new[] { "configuration" }, "crossApplicationTracingEnabled", "true");
                CommonUtils.ModifyOrCreateXmlAttributeInNewRelicConfig(_fixture.DestinationNewRelicConfigFilePath, new[] { "configuration", "crossApplicationTracer" }, "enabled", "true");
            },
                exerciseApplication: () =>
            {
                _fixture.GetIgnored();
                _responseHeaders = _fixture.GetWithCatHeaderChainedHttpClient(requestData: new CrossApplicationRequestData("guid", false, "tripId", "pathHash"));
            }
            );
            _fixture.Initialize();
        }