Beispiel #1
0
        private static void Init(out CappedLog.CappedLogScope scrape, out CappedLog.CappedLogConf conf2, out CappedLog.CappedLogConf conf3, out CappedLog.CappedLogConf conf1, out CappedLog.CappedLogMetric metric11, out CappedLog.CappedLogMetric metric12, out CappedLog.CappedLogMetric metric2, out CappedLog.CappedLogMetric metric3)
        {
            var log = new CappedLog.CappedLog();

            scrape = new CappedLog.CappedLogScope(log);
            var builder1 = new CappedLog.CappedLogConfBuilder()
                           .AddConstLabel("one", "1")
                           .AddConstLabels(new[] { "two", "2", "three", "3" })
                           .SetDefaultCapacity(10);

            conf2 = builder1.Clone()
                    .SetDefaultCapacity(20)
                    .AddLabelNames(new[] { "four", "five" })
                    .Build();
            conf3 = builder1
                    .AddLabelName("four")
                    .Build();
            conf1 = builder1
                    .AddLabelName("six")
                    .AddConstLabel("seven", "7")
                    .Build();
            var conf0 = builder1
                        .AddLabelName("nine")
                        .Build();
            var container0 = log.GetOrCreate(conf0);
            var container1 = scrape.GetOrCreate(conf1);
            var container2 = scrape.GetOrCreate(conf2);
            var container3 = scrape.GetOrCreate(conf3);

            try { scrape.GetOrCreate(conf0); Assert.Fail(); }
            catch { }
            Assert.AreNotEqual(container1, container2);
            Assert.AreNotEqual(container1, container3);
            Assert.AreNotEqual(container2, container3);
            Assert.AreNotEqual(container1, container0);
            Assert.AreNotEqual(container2, container0);
            Assert.AreNotEqual(container3, container0);

            metric11 = container1.GetMetric(new[] { "41", "61" });
            metric12 = container1.GetMetric(new[] { "42", "62" });
            metric2  = container2.GetMetric(new[] { "4", "5" });
            metric3  = container3.GetMetric(new[] { "4" });
        }
Beispiel #2
0
        public void TestAddMessages()
        {
            var log      = new CappedLog.CappedLog();
            var builder1 = new CappedLog.CappedLogConfBuilder()
                           .AddConstLabel("one", "1")
                           .AddConstLabels(new[] { "two", "2", "three", "3" })
                           .SetDefaultCapacity(10);
            var conf2 = builder1.Clone()
                        .SetDefaultCapacity(20)
                        .AddLabelNames(new[] { "four", "five" })
                        .Build();
            var conf3 = builder1
                        .AddLabelName("four")
                        .Build();
            var conf1 = builder1
                        .AddLabelName("six")
                        .AddConstLabel("seven", "7")
                        .Build();
            var container1 = log.GetOrCreate(conf1);
            var container2 = log.GetOrCreate(conf2);
            var container3 = log.GetOrCreate(conf3);
            var metric11   = container1.GetMetric(new[] { "41", "61" });
            var metric12   = container1.GetMetric(new[] { "42", "62" });
            var metric2    = container2.GetMetric(new[] { "4", "5" });
            var metric3    = container3.GetMetric(new[] { "4" });

            var    i11    = 0;
            var    i12    = 0;
            var    i2     = 0;
            var    i3     = 0;
            Action insert = () =>
            {
                var id = Thread.CurrentThread.ManagedThreadId;
                for (var i = 0; i < 10; ++i)
                {
                    if (metric11.TryEnqueue(() => $"message11 {id}-{i}"))
                    {
                        Interlocked.Increment(ref i11);
                    }
                    if (metric12.TryEnqueue(() => $"message12 {id}-{i}"))
                    {
                        Interlocked.Increment(ref i12);
                    }
                    if (metric2.TryEnqueue(() => $"message2 {id}-{i}"))
                    {
                        Interlocked.Increment(ref i2);
                    }
                    if (metric3.TryEnqueue(() => $"message2 {id}-{i}"))
                    {
                        Interlocked.Increment(ref i3);
                    }
                    Task.Delay(1).Wait();
                }
            };
            var tasks = new List <Task>();

            for (var i = 0; i < 8; ++i)
            {
                tasks.Add(Task.Factory.StartNew(insert));
            }

            Task.WaitAll(tasks.ToArray());

            Assert.AreEqual(i11, 10);
            Assert.AreEqual(i12, 10);
            Assert.AreEqual(i2, 20);
            Assert.AreEqual(i3, 10);
        }