コード例 #1
0
        static void Main(string[] args)
        {
            var e = new HttpEventListener();

            var arguments = new Dictionary <string, string>
            {
                { "EventCounterIntervalSec", "1" }
            };

            _ = Go();

            Console.ReadKey();
        }
コード例 #2
0
        private static async Task RunAsync()
        {
            var endpoint = "/delay/5ms";

            using var listener = new HttpEventListener();

            source = new ActivitySource("http-client-test");

            var serviceCollection = new ServiceCollection();

            serviceCollection.AddHttpOptionsTelemetry(builder => builder.AddConsoleExporter());


            serviceCollection.AddHttpClientOptions(options =>
            {
                options.ServiceName           = "service";
                options.Handler.MaxConnection = 500;
                _server.ConfigureWireMockServer(options);
            });


            var services =
                serviceCollection.BuildServiceProvider();
            await Task.WhenAll(services.GetServices <IHostedService>()
                               .Select(e => e.StartAsync(CancellationToken.None)));

            var factory = services.GetRequiredService <IHttpClientFactory>();
            var client  = factory.CreateClient("service");

            var stopwatch = Stopwatch.StartNew();

            Console.WriteLine("oooo: ");

            do
            {
                try
                {
                    await client.GetAsync(endpoint).ConfigureAwait(false);
                }
                catch (Exception e)
                {
                }
            } while (Console.ReadKey().Key != ConsoleKey.Escape);


            do
            {
                try
                {
                    var activityLinks = new List <ActivityLink>();
                    var initialTags   = new ActivityTagsCollection();

                    initialTags["com.mycompany.product.mytag1"] = "tagValue1";
                    initialTags["com.mycompany.product.mytag2"] = "tagValue2";

                    var linkedContext1 = new ActivityContext(
                        ActivityTraceId.CreateRandom(),
                        ActivitySpanId.CreateRandom(),
                        ActivityTraceFlags.None);

                    var linkedContext2 = new ActivityContext(
                        ActivityTraceId.CreateRandom(),
                        ActivitySpanId.CreateRandom(),
                        ActivityTraceFlags.Recorded);

                    activityLinks.Add(new ActivityLink(linkedContext1));
                    activityLinks.Add(new ActivityLink(linkedContext2));


                    using var activity = source.StartActivity(
                              "ActivityWithLinks",
                              ActivityKind.Server,
                              default(ActivityContext),
                              initialTags,
                              activityLinks);
                    var latencyStats = await TrafficGenerator
                                       .GenerateTraffic(100, () => client.GetAsync(endpoint))
                                       .Latency()
                                       .TakeUntil(DateTimeOffset.Now.AddSeconds(20));

                    Console.WriteLine(latencyStats.Print());
                    await client.GetAsync(endpoint).ConfigureAwait(false);

                    System.Console.WriteLine("Press Enter key to continue.");
                }
                catch (Exception e)
                {
                    Console.WriteLine(e);
                    throw;
                }
            } while (Console.ReadKey().Key != ConsoleKey.Escape);
        }