public async Task Test_logging_output()
        {
            var random   = new Random();
            var reporter = new OrphanedResponseLogger
            {
                Interval = 100
            };

            foreach (var i in Enumerable.Range(1, 100))
            {
                var context = OperationContext.CreateKvContext((uint)i);
                context.ConnectionId   = "connection-id";
                context.BucketName     = "default";
                context.LocalEndpoint  = "192.168.1.1:16212";
                context.RemoteEndpoint = "cb-1.domain.com";
                context.ServerDuration = random.Next(10, 100);
                reporter.Add(context);

                await Task.Delay(10);
            }

            await Task.Delay(10000);

            reporter.Dispose();
        }
        public void OrphanedResponseLogger_has_correct_default_values()
        {
            var reporter = new OrphanedResponseLogger();

            Assert.AreEqual(10000, reporter.Interval);
            Assert.AreEqual(10, reporter.SampleSize);
        }
        public void OrphanedResponseLogger_can_override_defaults()
        {
            const int interval   = 5000;
            const int sampleSize = 20;
            var       reporter   = new OrphanedResponseLogger
            {
                Interval   = interval,
                SampleSize = sampleSize
            };

            Assert.AreEqual(interval, reporter.Interval);
            Assert.AreEqual(sampleSize, reporter.SampleSize);
        }
예제 #4
0
        public async Task Can_add_lots_of_operation_contexts_concurrently()
        {
            var tracer = new OrphanedResponseLogger();

            var tasks = Enumerable.Range(1, 1000).Select(x =>
            {
                tracer.Add(new OperationContext(CouchbaseTags.ServiceKv));
                return(Task.FromResult(true));
            });

            // schedule all the tasks using threadpool
            await Task.WhenAll(tasks);

            // wait for queue to flush
            await Task.Delay(1000);

            // check all items made it into sample
            Assert.AreEqual(1000, tracer.TotalCount);
        }