use of com.yahoo.test.ManualClock in project vespa by vespa-engine.
the class AthenzIdentityProviderImplTest method metrics_updated_on_refresh.
@Test
public void metrics_updated_on_refresh() {
IdentityDocumentService identityDocumentService = mock(IdentityDocumentService.class);
AthenzService athenzService = mock(AthenzService.class);
ManualClock clock = new ManualClock(Instant.EPOCH);
Metric metric = mock(Metric.class);
when(identityDocumentService.getSignedIdentityDocument()).thenReturn(getIdentityDocument());
when(athenzService.sendInstanceRegisterRequest(any(), any())).then(new Answer<InstanceIdentity>() {
@Override
public InstanceIdentity answer(InvocationOnMock invocationOnMock) throws Throwable {
return new InstanceIdentity(getCertificate(getExpirationSupplier(clock)), "TOKEN");
}
});
when(athenzService.sendInstanceRefreshRequest(anyString(), anyString(), anyString(), anyString(), any(), any(), any(), any())).thenThrow(new RuntimeException("#1")).thenThrow(new RuntimeException("#2")).thenReturn(new InstanceIdentity(getCertificate(getExpirationSupplier(clock)), "TOKEN"));
AthenzCredentialsService credentialService = new AthenzCredentialsService(IDENTITY_CONFIG, identityDocumentService, athenzService, clock);
AthenzIdentityProviderImpl identityProvider = new AthenzIdentityProviderImpl(IDENTITY_CONFIG, metric, credentialService, mock(ScheduledExecutorService.class), clock);
identityProvider.reportMetrics();
verify(metric).set(eq(AthenzIdentityProviderImpl.CERTIFICATE_EXPIRY_METRIC_NAME), eq(certificateValidity.getSeconds()), any());
// Advance 1 day, refresh fails, cert is 1 day old
clock.advance(Duration.ofDays(1));
identityProvider.refreshCertificate();
identityProvider.reportMetrics();
verify(metric).set(eq(AthenzIdentityProviderImpl.CERTIFICATE_EXPIRY_METRIC_NAME), eq(certificateValidity.minus(Duration.ofDays(1)).getSeconds()), any());
// Advance 1 more day, refresh fails, cert is 2 days old
clock.advance(Duration.ofDays(1));
identityProvider.refreshCertificate();
identityProvider.reportMetrics();
verify(metric).set(eq(AthenzIdentityProviderImpl.CERTIFICATE_EXPIRY_METRIC_NAME), eq(certificateValidity.minus(Duration.ofDays(2)).getSeconds()), any());
// Advance 1 more day, refresh succeds, cert is new
clock.advance(Duration.ofDays(1));
identityProvider.refreshCertificate();
identityProvider.reportMetrics();
verify(metric).set(eq(AthenzIdentityProviderImpl.CERTIFICATE_EXPIRY_METRIC_NAME), eq(certificateValidity.getSeconds()), any());
}
use of com.yahoo.test.ManualClock in project vespa by vespa-engine.
the class TimeoutBudgetTest method testHasTimeLeft.
@Test
public void testHasTimeLeft() {
ManualClock clock = new ManualClock();
TimeoutBudget budget = new TimeoutBudget(clock, Duration.ofMillis(7));
assertThat(budget.hasTimeLeft(), is(true));
clock.advance(Duration.ofMillis(1));
assertThat(budget.hasTimeLeft(), is(true));
clock.advance(Duration.ofMillis(5));
assertThat(budget.hasTimeLeft(), is(true));
assertThat(budget.hasTimeLeft(), is(true));
clock.advance(Duration.ofMillis(1));
assertThat(budget.hasTimeLeft(), is(false));
clock.advance(Duration.ofMillis(5));
assertThat(budget.hasTimeLeft(), is(false));
clock.advance(Duration.ofMillis(1));
assertThat(budget.timesUsed(), is("[0 ms, 1 ms, 5 ms, 0 ms, 1 ms, 5 ms, total: 13 ms]"));
}
use of com.yahoo.test.ManualClock in project vespa by vespa-engine.
the class HostedDeployTest method testDeployMultipleVersions.
@Test
public void testDeployMultipleVersions() {
ManualClock clock = new ManualClock("2016-10-09T00:00:00");
List<ModelFactory> modelFactories = new ArrayList<>();
modelFactories.add(DeployTester.createModelFactory(Version.fromString("6.1.0"), clock));
modelFactories.add(DeployTester.createModelFactory(Version.fromString("6.2.0"), clock));
modelFactories.add(DeployTester.createModelFactory(Version.fromString("7.0.0"), clock));
DeployTester tester = new DeployTester("src/test/apps/hosted/", modelFactories, createConfigserverConfig());
ApplicationId app = tester.deployApp("myApp", Instant.now());
assertEquals(3, tester.getAllocatedHostsOf(app).getHosts().size());
}
use of com.yahoo.test.ManualClock in project vespa by vespa-engine.
the class AthenzIdentityProviderImplTest method component_creation_fails_when_credentials_not_found.
@Test(expected = AthenzIdentityProviderException.class)
public void component_creation_fails_when_credentials_not_found() {
AthenzCredentialsService credentialService = mock(AthenzCredentialsService.class);
when(credentialService.registerInstance()).thenThrow(new RuntimeException("athenz unavailable"));
new AthenzIdentityProviderImpl(IDENTITY_CONFIG, mock(Metric.class), credentialService, mock(ScheduledExecutorService.class), new ManualClock(Instant.EPOCH));
}
use of com.yahoo.test.ManualClock in project vespa by vespa-engine.
the class RateLimitingSearcherTestCase method testRateLimiting.
@Test
public void testRateLimiting() {
RateLimitingConfig.Builder rateLimitingConfig = new RateLimitingConfig.Builder();
rateLimitingConfig.maxAvailableCapacity(4);
rateLimitingConfig.capacityIncrement(2);
rateLimitingConfig.recheckForCapacityProbability(1.0);
ClusterInfoConfig.Builder clusterInfoConfig = new ClusterInfoConfig.Builder();
clusterInfoConfig.clusterId("testCluster");
clusterInfoConfig.nodeCount(4);
ManualClock clock = new ManualClock();
MetricReceiver.MockReceiver metric = new MetricReceiver.MockReceiver();
Chain<Searcher> chain = new Chain<Searcher>("test", new RateLimitingSearcher(new RateLimitingConfig(rateLimitingConfig), new ClusterInfoConfig(clusterInfoConfig), metric, clock), new CostSettingSearcher());
assertEquals("'rate' request are available initially", 2, tryRequests(chain, "id1"));
assertTrue("However, don't reject if we dryRun", executeWasAllowed(chain, "id1", true));
// causes 2 new requests to become available
clock.advance(Duration.ofMillis(1500));
assertEquals("'rate' new requests became available", 2, tryRequests(chain, "id1"));
assertEquals("Another id", 2, tryRequests(chain, "id2"));
clock.advance(Duration.ofMillis(1000000));
assertEquals("'maxAvailableCapacity' request became available", 4, tryRequests(chain, "id2"));
assertFalse("If quota is set to 0, all requests are rejected, even initially", executeWasAllowed(chain, "id3", 0));
clock.advance(Duration.ofMillis(1000000));
assertTrue("A single query which costs more than capacity is allowed as cost is calculated after allowing it", executeWasAllowed(chain, "id1", 8, 8, false));
assertFalse("capacity is -4: disallowing", executeWasAllowed(chain, "id1"));
clock.advance(Duration.ofMillis(1000));
assertFalse("capacity is -2: disallowing", executeWasAllowed(chain, "id1"));
clock.advance(Duration.ofMillis(1000));
assertFalse("capacity is 0: disallowing", executeWasAllowed(chain, "id1"));
clock.advance(Duration.ofMillis(1000));
assertTrue(executeWasAllowed(chain, "id1"));
// check metrics
Map<Point, UntypedMetric> map = metric.getSnapshot().getMapForMetric("requestsOverQuota");
assertEquals(requestsToTry - 2 + 1 + requestsToTry - 2 + 3, map.get(metric.point("id", "id1")).getCount());
assertEquals(requestsToTry - 2 + requestsToTry - 4, map.get(metric.point("id", "id2")).getCount());
}
Aggregations