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); }
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(); }
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); }