public void Test_CassandraCase()
        {
            const long toNano = 1000000L;

            var intervalHistory = new LongIntervalHistory(4);

            intervalHistory.Enqueue(111 * toNano);
            intervalHistory.Enqueue(111 * toNano);
            intervalHistory.Enqueue(111 * toNano);
            intervalHistory.Enqueue(111 * toNano);
            intervalHistory.Enqueue(111 * toNano);

            Assert.AreEqual(1.0, PhiFailureDetector.Exponential(666 * toNano, 555 * toNano, intervalHistory));
            Assert.AreEqual(22.03, PhiFailureDetector.Exponential(3000 * toNano, 555 * toNano, intervalHistory), 0.01);
        }
Exemplo n.º 2
0
        static void Main(string[] args)
        {
            Console.OutputEncoding = Encoding.UTF8;

            Console.WriteLine("===== Normal Distribution =====");

            var arrivalWindow = new LongIntervalHistory(1000);
            var mean          = TimeSpan.FromSeconds(1).TotalMilliseconds;
            var stdDeviation  = mean / 4;

            arrivalWindow.Enqueue((long)(mean - stdDeviation));
            arrivalWindow.Enqueue((long)(mean + stdDeviation));
            //arrivalWindow.Enqueue(1000);
            Console.WriteLine(Normal(1000, arrivalWindow));
            Console.WriteLine(Normal(2000, arrivalWindow));
            Console.WriteLine(Normal(3000, arrivalWindow));

            //PrintPhi(666, last, arrivalWindow, PhiFailureDetector.Normal);
            //PrintPhi(777, last, arrivalWindow, PhiFailureDetector.Normal);
            //PrintPhi(888, last, arrivalWindow, PhiFailureDetector.Normal);
            //PrintPhi(999, last, arrivalWindow, PhiFailureDetector.Normal);
            //PrintPhi(1100, last, arrivalWindow, PhiFailureDetector.Normal);
            //PrintPhi(1200, last, arrivalWindow, PhiFailureDetector.Normal);

            Console.WriteLine();


            Console.WriteLine("===== Exponential Distribution =====");

            arrivalWindow = new LongIntervalHistory(4);
            arrivalWindow.Enqueue(111 * toNano);
            arrivalWindow.Enqueue(111 * toNano);
            arrivalWindow.Enqueue(111 * toNano);
            arrivalWindow.Enqueue(111 * toNano);

            PrintPhi(666, last, arrivalWindow, PhiFailureDetector.Exponential);
            PrintPhi(777, last, arrivalWindow, PhiFailureDetector.Exponential);
            PrintPhi(888, last, arrivalWindow, PhiFailureDetector.Exponential);
            PrintPhi(999, last, arrivalWindow, PhiFailureDetector.Exponential);
            PrintPhi(1100, last, arrivalWindow, PhiFailureDetector.Exponential);
            PrintPhi(1200, last, arrivalWindow, PhiFailureDetector.Exponential);
            PrintPhi(3000, last, arrivalWindow, PhiFailureDetector.Exponential);

            Console.WriteLine();
        }
Exemplo n.º 3
0
        public void Test_Baseline()
        {
            var arrivalWindow = new LongIntervalHistory(5);

            arrivalWindow.Enqueue(1);
            arrivalWindow.Enqueue(2);
            arrivalWindow.Enqueue(3);
            arrivalWindow.Enqueue(4);
            arrivalWindow.Enqueue(5);
            arrivalWindow.Enqueue(6);
            arrivalWindow.Enqueue(7);

            var queueArray = arrivalWindow.ToArray();

            Array.Sort(queueArray);

            CollectionAssert.AreEqual(
                new long[] { 3, 4, 5, 6, 7 },
                queueArray
                );

            Assert.AreEqual(25, arrivalWindow.Sum);
            Assert.AreEqual(5, arrivalWindow.Avg);
        }
Exemplo n.º 4
0
 private static void PrintPhi(int nowTimestamp, long lastTimestamp, LongIntervalHistory arrivalWindow, PhiFailureDetector.PhiFunc phiFunc)
 {
     Console.WriteLine("Phi({0}) = {1:F3}", nowTimestamp, phiFunc(nowTimestamp * toNano, lastTimestamp, arrivalWindow));
 }