public GetValues ( HystrixRollingNumberEvent type ) : long[] | ||
type | HystrixRollingNumberEvent | HystrixRollingNumberEvent defining which counter to retrieve values from |
return | long[] |
public void RollingNumber_CumulativeCounterAfterRollingAndReset() { MockedTime time = new MockedTime(); HystrixRollingNumberEvent type = HystrixRollingNumberEvent.Success; HystrixRollingNumber counter = new HystrixRollingNumber(time, 20, 2); Assert.AreEqual(0, counter.GetCumulativeSum(type)); // iterate over 20 buckets on a queue sized for 2 for (int i = 0; i < 20; i++) { // first bucket counter.Increment(type); try { time.Increment(counter.BucketSizeInMilliseconds); } catch (Exception) { // ignore } Assert.AreEqual(2, counter.GetValues(type).Length); counter.GetValueOfLatestBucket(type); if (i == 5 || i == 15) { // simulate a reset occurring every once in a while // so we ensure the absolute sum is handling it okay counter.Reset(); } } // cumulative count should be 20 (for the number of loops above) regardless of buckets rolling Assert.AreEqual(20, counter.GetCumulativeSum(type)); }
public void RollingNumber_Rolling() { MockedTime time = new MockedTime(); HystrixRollingNumberEvent type = HystrixRollingNumberEvent.ThreadMaxActive; HystrixRollingNumber counter = new HystrixRollingNumber(time, 20, 2); // iterate over 20 buckets on a queue sized for 2 for (int i = 0; i < 20; i++) { // first bucket counter.GetCurrentBucket(); try { time.Increment(counter.BucketSizeInMilliseconds); } catch (Exception) { // ignore } Assert.AreEqual(2, counter.GetValues(type).Length); counter.GetValueOfLatestBucket(type); // System.out.println("Head: " + counter.Buckets.state.Get().head); // System.out.println("Tail: " + counter.Buckets.state.Get().tail); } }
public void RollingNumber_CumulativeCounterAfterRolling() { MockedTime time = new MockedTime(); HystrixRollingNumberEvent type = HystrixRollingNumberEvent.Success; HystrixRollingNumber counter = new HystrixRollingNumber(time, 20, 2); Assert.AreEqual(0, counter.GetCumulativeSum(type)); // iterate over 20 buckets on a queue sized for 2 for (int i = 0; i < 20; i++) { // first bucket counter.Increment(type); try { time.Increment(counter.BucketSizeInMilliseconds); } catch (Exception) { // ignore } Assert.AreEqual(2, counter.GetValues(type).Length); counter.GetValueOfLatestBucket(type); } // cumulative count should be 20 (for the number of loops above) regardless of buckets rolling Assert.AreEqual(20, counter.GetCumulativeSum(type)); }
public void RollingNumber_UpdateMax2() { MockedTime time = new MockedTime(); try { HystrixRollingNumber counter = new HystrixRollingNumber(time, 200, 10); // increment counter.UpdateRollingMax(HystrixRollingNumberEvent.ThreadMaxActive, 10); counter.UpdateRollingMax(HystrixRollingNumberEvent.ThreadMaxActive, 30); counter.UpdateRollingMax(HystrixRollingNumberEvent.ThreadMaxActive, 20); // we should have 1 bucket Assert.AreEqual(1, counter.Buckets.Size); // the count should be 30 Assert.AreEqual(30, counter.Buckets.GetLast().GetMaxUpdater(HystrixRollingNumberEvent.ThreadMaxActive).Max()); Assert.AreEqual(30, counter.GetRollingMaxValue(HystrixRollingNumberEvent.ThreadMaxActive)); // sleep to get to a new bucket time.Increment(counter.BucketSizeInMilliseconds * 3); counter.UpdateRollingMax(HystrixRollingNumberEvent.ThreadMaxActive, 30); counter.UpdateRollingMax(HystrixRollingNumberEvent.ThreadMaxActive, 30); counter.UpdateRollingMax(HystrixRollingNumberEvent.ThreadMaxActive, 50); // we should have 4 buckets Assert.AreEqual(4, counter.Buckets.Size); // the count Assert.AreEqual(50, counter.Buckets.GetLast().GetMaxUpdater(HystrixRollingNumberEvent.ThreadMaxActive).Max()); Assert.AreEqual(50, counter.GetValueOfLatestBucket(HystrixRollingNumberEvent.ThreadMaxActive)); // values per bucket long[] values = counter.GetValues(HystrixRollingNumberEvent.ThreadMaxActive); Assert.AreEqual(30, values[0]); // oldest bucket Assert.AreEqual(0, values[1]); Assert.AreEqual(0, values[2]); Assert.AreEqual(50, values[3]); // latest bucket } catch (Exception e) { TestContext.WriteLine(e.ToString()); Assert.Fail("Exception: " + e.Message); } }