Пример #1
0
 /// <summary>
 /// Asserts that the NumOps and quantiles for a metric have been changed at
 /// some point to a non-zero value.
 /// </summary>
 /// <param name="prefix">of the metric</param>
 /// <param name="rb">MetricsRecordBuilder with the metric</param>
 public static void AssertQuantileGauges(string prefix, MetricsRecordBuilder rb)
 {
     Org.Mockito.Mockito.Verify(rb).AddGauge(EqName(Interns.Info(prefix + "NumOps", string.Empty
                                                                 )), AdditionalMatchers.Geq(0l));
     foreach (Quantile q in MutableQuantiles.quantiles)
     {
         string nameTemplate = prefix + "%dthPercentileLatency";
         int    percentile   = (int)(100 * q.quantile);
         Org.Mockito.Mockito.Verify(rb).AddGauge(EqName(Interns.Info(string.Format(nameTemplate
                                                                                   , percentile), string.Empty)), AdditionalMatchers.Geq(0l));
     }
 }
Пример #2
0
        public virtual void TestSnapshot()
        {
            MetricsRecordBuilder mb       = MetricsAsserts.MockMetricsRecordBuilder();
            MetricsRegistry      registry = new MetricsRegistry("test");

            registry.NewCounter("c1", "int counter", 1);
            registry.NewCounter("c2", "long counter", 2L);
            registry.NewGauge("g1", "int gauge", 3);
            registry.NewGauge("g2", "long gauge", 4L);
            registry.NewStat("s1", "stat", "Ops", "Time", true).Add(0);
            registry.NewRate("s2", "stat", false).Add(0);
            registry.Snapshot(mb, true);
            MutableStat s2 = (MutableStat)registry.Get("s2");

            s2.Snapshot(mb, true);
            // should get the same back.
            s2.Add(1);
            s2.Snapshot(mb, true);
            // should get new interval values back
            Org.Mockito.Mockito.Verify(mb).AddCounter(Interns.Info("c1", "int counter"), 1);
            Org.Mockito.Mockito.Verify(mb).AddCounter(Interns.Info("c2", "long counter"), 2L);
            Org.Mockito.Mockito.Verify(mb).AddGauge(Interns.Info("g1", "int gauge"), 3);
            Org.Mockito.Mockito.Verify(mb).AddGauge(Interns.Info("g2", "long gauge"), 4L);
            Org.Mockito.Mockito.Verify(mb).AddCounter(Interns.Info("S1NumOps", "Number of ops for stat"
                                                                   ), 1L);
            Org.Mockito.Mockito.Verify(mb).AddGauge(Matchers.Eq(Interns.Info("S1AvgTime", "Average time for stat"
                                                                             )), AdditionalMatchers.Eq(0.0, Epsilon));
            Org.Mockito.Mockito.Verify(mb).AddGauge(Matchers.Eq(Interns.Info("S1StdevTime", "Standard deviation of time for stat"
                                                                             )), AdditionalMatchers.Eq(0.0, Epsilon));
            Org.Mockito.Mockito.Verify(mb).AddGauge(Matchers.Eq(Interns.Info("S1IMinTime", "Interval min time for stat"
                                                                             )), AdditionalMatchers.Eq(0.0, Epsilon));
            Org.Mockito.Mockito.Verify(mb).AddGauge(Matchers.Eq(Interns.Info("S1IMaxTime", "Interval max time for stat"
                                                                             )), AdditionalMatchers.Eq(0.0, Epsilon));
            Org.Mockito.Mockito.Verify(mb).AddGauge(Matchers.Eq(Interns.Info("S1MinTime", "Min time for stat"
                                                                             )), AdditionalMatchers.Eq(0.0, Epsilon));
            Org.Mockito.Mockito.Verify(mb).AddGauge(Matchers.Eq(Interns.Info("S1MaxTime", "Max time for stat"
                                                                             )), AdditionalMatchers.Eq(0.0, Epsilon));
            Org.Mockito.Mockito.Verify(mb, Org.Mockito.Mockito.Times(2)).AddCounter(Interns.Info
                                                                                        ("S2NumOps", "Number of ops for stat"), 1L);
            Org.Mockito.Mockito.Verify(mb, Org.Mockito.Mockito.Times(2)).AddGauge(Matchers.Eq
                                                                                      (Interns.Info("S2AvgTime", "Average time for stat")), AdditionalMatchers.Eq(0.0,
                                                                                                                                                                  Epsilon));
            Org.Mockito.Mockito.Verify(mb).AddCounter(Interns.Info("S2NumOps", "Number of ops for stat"
                                                                   ), 2L);
            Org.Mockito.Mockito.Verify(mb).AddGauge(Matchers.Eq(Interns.Info("S2AvgTime", "Average time for stat"
                                                                             )), AdditionalMatchers.Eq(1.0, Epsilon));
        }
Пример #3
0
        /// <summary>
        /// Ensure that quantile estimates from
        /// <see cref="MutableQuantiles"/>
        /// are within
        /// specified error bounds.
        /// </summary>
        /// <exception cref="System.Exception"/>
        public virtual void TestMutableQuantilesError()
        {
            MetricsRecordBuilder mb       = MetricsAsserts.MockMetricsRecordBuilder();
            MetricsRegistry      registry = new MetricsRegistry("test");
            // Use a 5s rollover period
            MutableQuantiles quantiles = registry.NewQuantiles("foo", "stat", "Ops", "Latency"
                                                               , 5);
            // Push some values in and wait for it to publish
            long start = Runtime.NanoTime() / 1000000;

            for (long i = 1; i <= 1000; i++)
            {
                quantiles.Add(i);
                quantiles.Add(1001 - i);
            }
            long end = Runtime.NanoTime() / 1000000;

            Thread.Sleep(6000 - (end - start));
            registry.Snapshot(mb, false);
            // Print out the snapshot
            IDictionary <Quantile, long> previousSnapshot = quantiles.previousSnapshot;

            foreach (KeyValuePair <Quantile, long> item in previousSnapshot)
            {
                System.Console.Out.WriteLine(string.Format("Quantile %.2f has value %d", item.Key
                                                           .quantile, item.Value));
            }
            // Verify the results are within our requirements
            Org.Mockito.Mockito.Verify(mb).AddGauge(Interns.Info("FooNumOps", "Number of ops for stat with 5s interval"
                                                                 ), (long)2000);
            Quantile[] quants = MutableQuantiles.quantiles;
            string     name   = "Foo%dthPercentileLatency";
            string     desc   = "%d percentile latency with 5 second interval for stat";

            foreach (Quantile q in quants)
            {
                int    percentile = (int)(100 * q.quantile);
                int    error      = (int)(1000 * q.error);
                string n          = string.Format(name, percentile);
                string d          = string.Format(desc, percentile);
                long   expected   = (long)(q.quantile * 1000);
                Org.Mockito.Mockito.Verify(mb).AddGauge(Matchers.Eq(Interns.Info(n, d)), AdditionalMatchers.Leq
                                                            (expected + error));
                Org.Mockito.Mockito.Verify(mb).AddGauge(Matchers.Eq(Interns.Info(n, d)), AdditionalMatchers.Geq
                                                            (expected - error));
            }
        }
 /// <summary>
 /// the test creates 2 electors which try to become active using a real
 /// zookeeper server.
 /// </summary>
 /// <remarks>
 /// the test creates 2 electors which try to become active using a real
 /// zookeeper server. It verifies that 1 becomes active and 1 becomes standby.
 /// Upon becoming active the leader quits election and the test verifies that
 /// the standby now becomes active.
 /// </remarks>
 /// <exception cref="System.Exception"/>
 public virtual void TestActiveStandbyTransition()
 {
     Log.Info("starting test with parentDir:" + ParentDir);
     NUnit.Framework.Assert.IsFalse(electors[0].ParentZNodeExists());
     electors[0].EnsureParentZNode();
     Assert.True(electors[0].ParentZNodeExists());
     // First elector joins election, becomes active.
     electors[0].JoinElection(appDatas[0]);
     ActiveStandbyElectorTestUtil.WaitForActiveLockData(null, zkServer, ParentDir, appDatas
                                                        [0]);
     Org.Mockito.Mockito.Verify(cbs[0], Org.Mockito.Mockito.Timeout(1000)).BecomeActive
         ();
     CheckFatalsAndReset();
     // Second elector joins election, becomes standby.
     electors[1].JoinElection(appDatas[1]);
     Org.Mockito.Mockito.Verify(cbs[1], Org.Mockito.Mockito.Timeout(1000)).BecomeStandby
         ();
     CheckFatalsAndReset();
     // First elector quits, second one should become active
     electors[0].QuitElection(true);
     ActiveStandbyElectorTestUtil.WaitForActiveLockData(null, zkServer, ParentDir, appDatas
                                                        [1]);
     Org.Mockito.Mockito.Verify(cbs[1], Org.Mockito.Mockito.Timeout(1000)).BecomeActive
         ();
     CheckFatalsAndReset();
     // First one rejoins, becomes standby, second one stays active
     electors[0].JoinElection(appDatas[0]);
     Org.Mockito.Mockito.Verify(cbs[0], Org.Mockito.Mockito.Timeout(1000)).BecomeStandby
         ();
     CheckFatalsAndReset();
     // Second one expires, first one becomes active
     electors[1].PreventSessionReestablishmentForTests();
     try
     {
         zkServer.CloseSession(electors[1].GetZKSessionIdForTests());
         ActiveStandbyElectorTestUtil.WaitForActiveLockData(null, zkServer, ParentDir, appDatas
                                                            [0]);
         Org.Mockito.Mockito.Verify(cbs[1], Org.Mockito.Mockito.Timeout(1000)).EnterNeutralMode
             ();
         Org.Mockito.Mockito.Verify(cbs[0], Org.Mockito.Mockito.Timeout(1000)).FenceOldActive
             (AdditionalMatchers.AryEq(appDatas[1]));
         Org.Mockito.Mockito.Verify(cbs[0], Org.Mockito.Mockito.Timeout(1000)).BecomeActive
             ();
     }
     finally
     {
         electors[1].AllowSessionReestablishmentForTests();
     }
     // Second one eventually reconnects and becomes standby
     Org.Mockito.Mockito.Verify(cbs[1], Org.Mockito.Mockito.Timeout(5000)).BecomeStandby
         ();
     CheckFatalsAndReset();
     // First one expires, second one should become active
     electors[0].PreventSessionReestablishmentForTests();
     try
     {
         zkServer.CloseSession(electors[0].GetZKSessionIdForTests());
         ActiveStandbyElectorTestUtil.WaitForActiveLockData(null, zkServer, ParentDir, appDatas
                                                            [1]);
         Org.Mockito.Mockito.Verify(cbs[0], Org.Mockito.Mockito.Timeout(1000)).EnterNeutralMode
             ();
         Org.Mockito.Mockito.Verify(cbs[1], Org.Mockito.Mockito.Timeout(1000)).FenceOldActive
             (AdditionalMatchers.AryEq(appDatas[0]));
         Org.Mockito.Mockito.Verify(cbs[1], Org.Mockito.Mockito.Timeout(1000)).BecomeActive
             ();
     }
     finally
     {
         electors[0].AllowSessionReestablishmentForTests();
     }
     CheckFatalsAndReset();
 }