public void SetUp() { _environment = Mock.Create <IEnvironment>(); Mock.Arrange(() => _environment.GetEnvironmentVariable(Arg.IsAny <string>())) .Returns(null as string); _processStatic = Mock.Create <IProcessStatic>(); _httpRuntimeStatic = Mock.Create <IHttpRuntimeStatic>(); _configurationManagerStatic = new ConfigurationManagerStaticMock(); _dnsStatic = Mock.Create <IDnsStatic>(); _securityPoliciesConfiguration = new SecurityPoliciesConfiguration(); _runTimeConfiguration = new RunTimeConfiguration(); _serverConfig = new ServerConfiguration(); _localConfig = new configuration(); _localConfig.crossApplicationTracingEnabled = true; _localConfig.attributes.enabled = true; _localConfig.spanEvents.enabled = true; _localConfig.distributedTracing.enabled = true; _configurationService = Mock.Create <IConfigurationService>(); UpdateConfig(); _configAutoResponder = new ConfigurationAutoResponder(_configuration); _transactionMetricNameMaker = Mock.Create <ITransactionMetricNameMaker>(); _attribDefSvc = new AttributeDefinitionService((f) => new AttributeDefinitions(f)); _transactionAttributeMaker = new TransactionAttributeMaker(_configurationService, _attribDefSvc); }
public void SetUp() { _environment = Mock.Create <IEnvironment>(); _processStatic = Mock.Create <IProcessStatic>(); _httpRuntimeStatic = Mock.Create <IHttpRuntimeStatic>(); _configurationManagerStatic = Mock.Create <IConfigurationManagerStatic>(); _dnsStatic = Mock.Create <IDnsStatic>(); _securityPoliciesConfiguration = new SecurityPoliciesConfiguration(); _runTimeConfiguration = new RunTimeConfiguration(); _serverConfig = new ServerConfiguration(); SetLocalConfigurationDefaults(); PublishConfig(); _configAutoResponder = new ConfigurationAutoResponder(_config); _configurationService = Mock.Create <IConfigurationService>(); Mock.Arrange(() => _configurationService.Configuration).Returns(() => _config); _attribDefSvc = new AttributeDefinitionService((f) => new AttributeDefinitions(f)); _metricNameSvc = new MetricNameService(); _transactionMetricNameMaker = new TransactionMetricNameMaker(_metricNameSvc); _transactionAttribMaker = new TransactionAttributeMaker(_configurationService, _attribDefSvc); _spanEventMaker = new SpanEventMaker(_attribDefSvc, _configurationService); _databaseService = new DatabaseService(Mock.Create <ICacheStatsReporter>()); _transactionEventMaker = new TransactionEventMaker(_attribDefSvc); _transactionGuid = GuidGenerator.GenerateNewRelicGuid(); _startTime = new DateTime(2018, 7, 18, 7, 0, 0, DateTimeKind.Utc); // unixtime = 1531897200000 // Generic Segments _baseGenericSegment = new Segment(CreateTransactionSegmentState(3, null, 777), new MethodCallData(MethodCallType, MethodCallMethod, 1)); _baseGenericSegment.SetSegmentData(new SimpleSegmentData(SegmentName)); _childGenericSegment = new Segment(CreateTransactionSegmentState(4, 3, 777), new MethodCallData(MethodCallType, MethodCallMethod, 1)); _childGenericSegment.SetSegmentData(new SimpleSegmentData(SegmentName)); // Datastore Segments _connectionInfo = new ConnectionInfo("localhost", "1234", "default", "maininstance"); _parsedSqlStatement = SqlParser.GetParsedDatabaseStatement(DatastoreVendor.MSSQL, System.Data.CommandType.Text, ShortQuery); _obfuscatedSql = _databaseService.GetObfuscatedSql(ShortQuery, DatastoreVendor.MSSQL); _baseDatastoreSegment = new Segment(CreateTransactionSegmentState(3, null, 777), new MethodCallData(MethodCallType, MethodCallMethod, 1)); _baseDatastoreSegment.SetSegmentData(new DatastoreSegmentData(_databaseService, _parsedSqlStatement, ShortQuery, _connectionInfo)); // Http Segments _baseHttpSegment = new Segment(CreateTransactionSegmentState(3, null, 777), new MethodCallData(MethodCallType, MethodCallMethod, 1)); _baseHttpSegment.SetSegmentData(new ExternalSegmentData(new Uri(HttpUri), HttpMethod)); }
private static void ValidateAllRequiredPoliciesFromServerExist(Dictionary <string, SecurityPolicyState> securityPoliciesFromServer) { var missingRequiredPolicies = SecurityPoliciesConfiguration.GetMissingRequiredPolicies(securityPoliciesFromServer); if (missingRequiredPolicies.Count > 0) { var formattedMissingRequiredPolicies = string.Join(", ", missingRequiredPolicies); var errorMessage = $"The agent received one or more required security policies that it does not recognize and will shut down: {formattedMissingRequiredPolicies}. Please check if a newer agent version supports these policies or contact support."; throw new SecurityPoliciesValidationException(errorMessage); } }
private static void ValidateAgentExpectedSecurityPoliciesExist(Dictionary <string, SecurityPolicyState> securityPoliciesFromServer) { var missingExpectedPolicies = SecurityPoliciesConfiguration.GetMissingExpectedSeverPolicyNames(securityPoliciesFromServer); if (missingExpectedPolicies.Count > 0) { var formattedMissingExpectedPolicies = string.Join(", ", missingExpectedPolicies); var errorMessage = $"The agent did not receive one or more security policies that it expected and will shut down: {formattedMissingExpectedPolicies}. Please contact support."; throw new SecurityPoliciesValidationException(errorMessage); } }
public void Setup() { _environment = Mock.Create <IEnvironment>(); _processStatic = Mock.Create <IProcessStatic>(); _httpRuntimeStatic = Mock.Create <IHttpRuntimeStatic>(); _configurationManagerStatic = Mock.Create <IConfigurationManagerStatic>(); _localConfig = new configuration(); _serverConfig = new ServerConfiguration(); _runTimeConfig = new RunTimeConfiguration(); _securityPoliciesConfiguration = new SecurityPoliciesConfiguration(); _dnsStatic = Mock.Create <IDnsStatic>(); _defaultConfig = new TestDefaultConfiguration(_environment, _localConfig, _serverConfig, _runTimeConfig, _securityPoliciesConfiguration, _processStatic, _httpRuntimeStatic, _configurationManagerStatic, _dnsStatic); }
private void SetUp(TestCase testCase) { _environment = Mock.Create <IEnvironment>(); Mock.Arrange(() => _environment.GetEnvironmentVariable(Arg.IsAny <string>())) .Returns(null as string); _processStatic = Mock.Create <IProcessStatic>(); _httpRuntimeStatic = Mock.Create <IHttpRuntimeStatic>(); _configurationManagerStatic = new ConfigurationManagerStaticMock(); _dnsStatic = Mock.Create <IDnsStatic>(); _securityPoliciesConfiguration = new SecurityPoliciesConfiguration(); _runTimeConfiguration = new RunTimeConfiguration(); _serverConfig = new ServerConfiguration(); _localConfig = new configuration(); _localConfig.crossApplicationTracingEnabled = true; _localConfig.attributes.enabled = true; _localConfig.service.licenseKey = testCase.LicenseKey; _localConfig.appSettings.Add(new configurationAdd() { key = "NewRelic.LicenseKey", value = testCase.LicenseKey }); _serverConfig.RumSettingsJavaScriptAgentLoader = "JSAGENT"; _serverConfig.RumSettingsJavaScriptAgentFile = testCase.ConnectReply.JsAgentFile; _serverConfig.RumSettingsBeacon = testCase.ConnectReply.Beacon; _serverConfig.RumSettingsErrorBeacon = testCase.ConnectReply.ErrorBeacon; _serverConfig.RumSettingsBrowserKey = testCase.ConnectReply.BrowserKey; _serverConfig.RumSettingsApplicationId = testCase.ConnectReply.ApplicationId; _localConfig.browserMonitoring.attributes.enabled = testCase.BrowserMonitoringAttributesEnabled; _configuration = new TestableDefaultConfiguration(_environment, _localConfig, _serverConfig, _runTimeConfiguration, _securityPoliciesConfiguration, _processStatic, _httpRuntimeStatic, _configurationManagerStatic, _dnsStatic); _configurationService = Mock.Create <IConfigurationService>(); Mock.Arrange(() => _configurationService.Configuration).Returns(_configuration); _configAutoResponder = new ConfigurationAutoResponder(_configuration); _transactionMetricNameMaker = Mock.Create <ITransactionMetricNameMaker>(); _attribDefSvc = new AttributeDefinitionService((f) => new AttributeDefinitions(f)); _transactionAttributeMaker = new TransactionAttributeMaker(_configurationService, _attribDefSvc); _browserMonitoringScriptMaker = new BrowserMonitoringScriptMaker(_configurationService, _transactionMetricNameMaker, _transactionAttributeMaker, _attribDefSvc); }
public void Connect() { // Need to disable before connecting so that we can easily tell that we just finished connecting during a configuration update Disable(); try { ValidateNotBothHsmAndSecurityPolicies(_configuration); var preconnectResult = SendPreconnectRequest(); _connectionInfo = new ConnectionInfo(_configuration, preconnectResult.RedirectHost); ValidateAgentTokenSettingToPoliciesReceived(preconnectResult.SecurityPolicies); if (_configuration.SecurityPoliciesTokenExists) { ValidateAgentExpectedSecurityPoliciesExist(preconnectResult.SecurityPolicies); ValidateAllRequiredPoliciesFromServerExist(preconnectResult.SecurityPolicies); var securityPoliciesConfiguration = new SecurityPoliciesConfiguration(preconnectResult.SecurityPolicies); EventBus <SecurityPoliciesConfigurationUpdatedEvent> .Publish(new SecurityPoliciesConfigurationUpdatedEvent(securityPoliciesConfiguration)); } var serverConfiguration = SendConnectRequest(); EventBus <ServerConfigurationUpdatedEvent> .Publish(new ServerConfigurationUpdatedEvent(serverConfiguration)); LogSecurityPolicySettingsOnceAllSettingsResolved(); GenerateFasterEventHarvestConfigMetrics(serverConfiguration.EventHarvestConfig); _dataRequestWire = _collectorWireFactory.GetCollectorWire(_configuration, serverConfiguration.RequestHeadersMap, _agentHealthReporter); SendAgentSettings(); EventBus <AgentConnectedEvent> .Publish(new AgentConnectedEvent()); Log.Info("Agent fully connected."); } catch (Exception e) { Disable(); Log.Error($"Unable to connect to the New Relic service at {_connectionInfo} : {e}"); throw; } }
public TestDefaultConfiguration(IEnvironment environment, configuration localConfig, ServerConfiguration serverConfig, RunTimeConfiguration runTimeConfiguration, SecurityPoliciesConfiguration _securityPoliciesConfiguration, IProcessStatic processStatic, IHttpRuntimeStatic httpRuntimeStatic, IConfigurationManagerStatic configurationManagerStatic, IDnsStatic dnsStatic) : base(environment, localConfig, serverConfig, runTimeConfiguration, _securityPoliciesConfiguration, processStatic, httpRuntimeStatic, configurationManagerStatic, dnsStatic) { }
public SecurityPoliciesConfigurationUpdatedEvent(SecurityPoliciesConfiguration configuration) { Configuration = configuration; }