Search in sources :

Example 6 with RandImpl

use of com.amazonaws.xray.strategy.sampling.rand.RandImpl in project aws-xray-sdk-java by aws.

the class CentralizedRuleTest method testRuleUpdateWithoutInvalidation.

@Test
public void testRuleUpdateWithoutInvalidation() {
    SamplingRule input = createInput("r1", 300, 10, 0.0).withHTTPMethod("POST").withServiceName("s1").withURLPath("/foo/bar");
    CentralizedRule r = new CentralizedRule(input, new RandImpl());
    SamplingRule update = createInput("r1", 300, 10, 0.0).withHTTPMethod("GET").withServiceName("s2").withURLPath("/bar/foo");
    boolean invalidate = r.update(update);
    Matchers m = Whitebox.getInternalState(r, "matchers", CentralizedRule.class);
    Assert.assertEquals("GET", Whitebox.getInternalState(m, "method", Matchers.class));
    Assert.assertEquals("s2", Whitebox.getInternalState(m, "service", Matchers.class));
    Assert.assertEquals("/bar/foo", Whitebox.getInternalState(m, "url", Matchers.class));
    Assert.assertFalse(invalidate);
}
Also used : RandImpl(com.amazonaws.xray.strategy.sampling.rand.RandImpl) SamplingRule(com.amazonaws.services.xray.model.SamplingRule) Test(org.junit.Test)

Example 7 with RandImpl

use of com.amazonaws.xray.strategy.sampling.rand.RandImpl in project aws-xray-sdk-java by aws.

the class CentralizedRuleTest method testPositiveSampleTake.

@Test
public void testPositiveSampleTake() {
    Clock clock = Clock.fixed(Instant.ofEpochSecond(1500000000), ZoneId.systemDefault());
    SamplingRule input = createInput("r1", 300, 10, 0.0);
    CentralizedRule rule = new CentralizedRule(input, new RandImpl());
    SamplingTargetDocument target = createTarget(2, 0.0, 1500000010);
    rule.update(target, clock.instant());
    SamplingResponse response = rule.sample(clock.instant());
    Assert.assertTrue(response.isSampled());
    Assert.assertEquals("r1", response.getRuleName().get());
    Statistics s = Whitebox.getInternalState(rule, "statistics", CentralizedRule.class);
    Assert.assertEquals(1, s.getSampled());
    Assert.assertEquals(1, s.getRequests());
    Assert.assertEquals(0, s.getBorrowed());
}
Also used : RandImpl(com.amazonaws.xray.strategy.sampling.rand.RandImpl) SamplingRule(com.amazonaws.services.xray.model.SamplingRule) Clock(java.time.Clock) SamplingTargetDocument(com.amazonaws.services.xray.model.SamplingTargetDocument) SamplingResponse(com.amazonaws.xray.strategy.sampling.SamplingResponse) Test(org.junit.Test)

Example 8 with RandImpl

use of com.amazonaws.xray.strategy.sampling.rand.RandImpl in project aws-xray-sdk-java by aws.

the class CentralizedRuleTest method testSnapshot.

@Test
public void testSnapshot() {
    Clock clock = Clock.fixed(Instant.ofEpochSecond(1500000000), ZoneId.systemDefault());
    SamplingRule input = createInput("r1", 300, 10, 0.0);
    CentralizedRule rule = new CentralizedRule(input, new RandImpl());
    SamplingTargetDocument target = createTarget(2, 0.0, 1500000010);
    rule.update(target, clock.instant());
    rule.sample(clock.instant());
    Statistics s = Whitebox.getInternalState(rule, "statistics", CentralizedRule.class);
    // Assert statistics were updated
    Assert.assertEquals(1, s.getSampled());
    Assert.assertEquals(1, s.getRequests());
    Assert.assertEquals(0, s.getBorrowed());
    SamplingStatisticsDocument snapshot = rule.snapshot(Date.from(clock.instant()));
    // Assert snapshot contains expected statistics
    Assert.assertEquals("r1", snapshot.getRuleName());
    Assert.assertEquals(TimeUnit.SECONDS.toMillis(1500000000), snapshot.getTimestamp().toInstant().toEpochMilli());
    Assert.assertEquals(1, snapshot.getRequestCount().intValue());
    Assert.assertEquals(1, snapshot.getSampledCount().intValue());
    Assert.assertEquals(0, snapshot.getBorrowCount().intValue());
    // Assert current statistics are empty
    Assert.assertEquals(0, rule.snapshot(Date.from(clock.instant())).getRequestCount().intValue());
    Assert.assertEquals(0, rule.snapshot(Date.from(clock.instant())).getSampledCount().intValue());
    Assert.assertEquals(0, rule.snapshot(Date.from(clock.instant())).getBorrowCount().intValue());
}
Also used : RandImpl(com.amazonaws.xray.strategy.sampling.rand.RandImpl) SamplingStatisticsDocument(com.amazonaws.services.xray.model.SamplingStatisticsDocument) SamplingRule(com.amazonaws.services.xray.model.SamplingRule) Clock(java.time.Clock) SamplingTargetDocument(com.amazonaws.services.xray.model.SamplingTargetDocument) Test(org.junit.Test)

Aggregations

SamplingRule (com.amazonaws.services.xray.model.SamplingRule)8 RandImpl (com.amazonaws.xray.strategy.sampling.rand.RandImpl)8 Test (org.junit.Test)6 SamplingTargetDocument (com.amazonaws.services.xray.model.SamplingTargetDocument)4 CentralizedRule (com.amazonaws.xray.strategy.sampling.rule.CentralizedRule)2 Clock (java.time.Clock)2 ArrayList (java.util.ArrayList)2 SamplingStatisticsDocument (com.amazonaws.services.xray.model.SamplingStatisticsDocument)1 SamplingResponse (com.amazonaws.xray.strategy.sampling.SamplingResponse)1 CentralizedReservoir (com.amazonaws.xray.strategy.sampling.reservoir.CentralizedReservoir)1 HashMap (java.util.HashMap)1 LinkedHashMap (java.util.LinkedHashMap)1 Test (org.junit.jupiter.api.Test)1