use of io.jaegertracing.internal.samplers.http.SamplingStrategyResponse in project jaeger-client-java by jaegertracing.
the class RemoteControlledSampler method updateSampler.
/**
* Updates {@link #sampler} to a new sampler when it is different.
*/
void updateSampler() {
// visible for testing
SamplingStrategyResponse response;
try {
response = manager.getSamplingStrategy(serviceName);
metrics.samplerRetrieved.inc(1);
} catch (SamplingStrategyErrorException e) {
metrics.samplerQueryFailure.inc(1);
return;
}
if (response.getOperationSampling() != null) {
updatePerOperationSampler(response.getOperationSampling());
} else {
updateRateLimitingOrProbabilisticSampler(response);
}
}
use of io.jaegertracing.internal.samplers.http.SamplingStrategyResponse in project jaeger-client-java by jaegertracing.
the class RemoteControlledSamplerTest method testNullResponse.
@Test
public void testNullResponse() throws Exception {
when(samplingManager.getSamplingStrategy(SERVICE_NAME)).thenReturn(new SamplingStrategyResponse(null, null, null));
undertest.updateSampler();
assertEquals(initialSampler, undertest.getSampler());
}
use of io.jaegertracing.internal.samplers.http.SamplingStrategyResponse in project jaeger-client-java by jaegertracing.
the class RemoteControlledSamplerTest method testUpdateToPerOperationSamplerReplacesProbabilisticSampler.
@Test
public void testUpdateToPerOperationSamplerReplacesProbabilisticSampler() throws Exception {
List<PerOperationSamplingParameters> operationToSampler = new ArrayList<>();
operationToSampler.add(new PerOperationSamplingParameters("operation", new ProbabilisticSamplingStrategy(0.1)));
OperationSamplingParameters parameters = new OperationSamplingParameters(0.11, 0.22, operationToSampler);
SamplingStrategyResponse response = new SamplingStrategyResponse(null, null, parameters);
when(samplingManager.getSamplingStrategy(SERVICE_NAME)).thenReturn(response);
undertest.updateSampler();
PerOperationSampler perOperationSampler = new PerOperationSampler(2000, parameters);
Sampler actualSampler = undertest.getSampler();
assertEquals(perOperationSampler, actualSampler);
}
use of io.jaegertracing.internal.samplers.http.SamplingStrategyResponse in project jaeger-client-java by jaegertracing.
the class RemoteControlledSamplerTest method testUpdatePerOperationSamplerUpdatesExistingPerOperationSampler.
@Test
public void testUpdatePerOperationSamplerUpdatesExistingPerOperationSampler() throws Exception {
undertest.close();
PerOperationSampler perOperationSampler = mock(PerOperationSampler.class);
OperationSamplingParameters parameters = mock(OperationSamplingParameters.class);
when(samplingManager.getSamplingStrategy(SERVICE_NAME)).thenReturn(new SamplingStrategyResponse(null, null, parameters));
undertest = new RemoteControlledSampler.Builder(SERVICE_NAME).withSamplingManager(samplingManager).withInitialSampler(perOperationSampler).withMetrics(metrics).build();
undertest.updateSampler();
Thread.sleep(20);
// updateSampler is hit once automatically because of the pollTimer
verify(perOperationSampler, times(2)).update(parameters);
}
use of io.jaegertracing.internal.samplers.http.SamplingStrategyResponse in project jaeger-client-java by jaegertracing.
the class HttpSamplingManagerTest method testParseRateLimitingSampling.
@Test
public void testParseRateLimitingSampling() throws Exception {
SamplingStrategyResponse response = undertest.parseJson(readFixture("ratelimiting_sampling.json"));
assertEquals(new RateLimitingSamplingStrategy(2.1), response.getRateLimitingSampling());
assertNull(response.getProbabilisticSampling());
}
Aggregations