コード例 #1
0
ファイル: ExporterViewModel.cs プロジェクト: sedrion/Crema
 public ExporterViewModel(ICremaAppHost cremaAppHost, IAppConfiguration configs)
 {
     this.cremaAppHost              = cremaAppHost;
     this.configs                   = configs;
     this.settings                  = new ExporterSettings();
     this.settings.PropertyChanged += Settings_PropertyChanged;
     this.configs.Update(this.settings);
 }
コード例 #2
0
        public static Task <bool> RunAsync(ProcessInfo process)
        {
            var settings = new ExporterSettings(process.Configuration);

            var url = settings.AgentUri.ToString();

            AnsiConsole.WriteLine(DetectedAgentUrlFormat(url));

            return(RunAsync(new ImmutableExporterSettings(settings)));
        }
コード例 #3
0
        public void UseJsonConfigFromAppConfig()
        {
            var process = new ProcessInfo(
                "CallDatadogConfigJson.exe",
                1,
                new Dictionary <string, string>(),
                mainModule: Path.Combine(Environment.CurrentDirectory, "CallDatadogConfigJson.exe"),
                GetModulesForNetFramework());

            var settings = new ExporterSettings(process.Configuration);

            settings.AgentUri.Should().Be("http://datadogConfig.json/");
        }
コード例 #4
0
        private ExporterSettings Setup(Func <string, bool> fileExistsMock, params string[] config)
        {
            var configNameValues = new NameValueCollection();

            foreach (var item in config)
            {
                var parts = item.Split(':');
                configNameValues.Add(parts[0], parts[1]);
            }

            var configSource = new NameValueConfigurationSource(configNameValues);

            var exporterSettings = new ExporterSettings(configSource, fileExistsMock);

            return(exporterSettings);
        }
コード例 #5
0
        public void UseEnvironment()
        {
            var process = new ProcessInfo(
                "CallDatadogConfigJson.exe",
                1,
                new Dictionary <string, string>()
            {
                { "DD_TRACE_AGENT_URL", "http://environment/" }
            },
                mainModule: Path.Combine(Environment.CurrentDirectory, "noAppConfig.exe"),
                GetModulesForNetFramework());

            var settings = new ExporterSettings(process.Configuration);

            settings.AgentUri.Should().Be("http://environment/");
        }
コード例 #6
0
        public void AllPropertyValuesMatch()
        {
            var equalityCheckers = new List <Func <ExporterSettings, ImmutableExporterSettings, bool> >()
            {
                (e, i) => e.MetricsPipeName == i.MetricsPipeName,
                (e, i) => e.TracesPipeName == i.TracesPipeName,
                (e, i) => e.DogStatsdPort == i.DogStatsdPort,
                (e, i) => e.MetricsTransport == i.MetricsTransport,
                (e, i) => e.TracesTransport == i.TracesTransport,
                (e, i) => e.TracesPipeTimeoutMs == i.TracesPipeTimeoutMs,
                (e, i) => e.AgentUri == i.AgentUri,
                (e, i) => e.PartialFlushEnabled == i.PartialFlushEnabled,
                (e, i) => e.PartialFlushMinSpans == i.PartialFlushMinSpans,
                (e, i) => e.MetricsUnixDomainSocketPath == i.MetricsUnixDomainSocketPath,
                (e, i) => e.TracesUnixDomainSocketPath == i.TracesUnixDomainSocketPath,
            };

            var mutableProperties = typeof(ExporterSettings)
                                    .GetProperties(Flags);

            // Ensure that all properties are represented
            Assert.Equal(mutableProperties.Count(), equalityCheckers.Count);

            var exporterSettings = new ExporterSettings();

            exporterSettings.MetricsUnixDomainSocketPath = "metricsuds";
            exporterSettings.TracesUnixDomainSocketPath  = "tracesuds";
            exporterSettings.MetricsPipeName             = "metricspipe";
            exporterSettings.TracesPipeName      = "tracespipe";
            exporterSettings.DogStatsdPort       = 1234;
            exporterSettings.MetricsTransport    = Vendors.StatsdClient.Transport.TransportType.NamedPipe;
            exporterSettings.TracesTransport     = TracesTransportType.WindowsNamedPipe;
            exporterSettings.TracesPipeTimeoutMs = 5556;
            exporterSettings.AgentUri            = new Uri("http://localhost:8282");

            var immutableSettings = new ImmutableExporterSettings(exporterSettings);

            foreach (var equalityCheck in equalityCheckers)
            {
                Assert.True(equalityCheck(exporterSettings, immutableSettings));
            }
        }
コード例 #7
0
        public override async Task <int> ExecuteAsync(CommandContext context, CheckAgentSettings settings)
        {
            ExporterSettings configuration;

            if (settings.Url == null)
            {
                // Try to autodetect the agent settings
                configuration = new ExporterSettings(new EnvironmentConfigurationSource());

                AnsiConsole.WriteLine("No Agent URL provided, using environment variables");
            }
            else
            {
                configuration = new ExporterSettings {
                    AgentUri = new Uri(settings.Url)
                };

                // TODO: Remove when the logic has been moved to the ImmutableExporterSettings constructor
                if (settings.Url.StartsWith("unix://"))
                {
                    configuration.TracesTransport            = TracesTransportType.UnixDomainSocket;
                    configuration.TracesUnixDomainSocketPath = configuration.AgentUri.PathAndQuery;
                }
            }

            var result = await AgentConnectivityCheck.RunAsync(new ImmutableExporterSettings(configuration)).ConfigureAwait(false);

            if (!result)
            {
                return(1);
            }

            Utils.WriteSuccess("Connected successfully to the Agent.");

            return(0);
        }