use of org.infinispan.counter.api.CounterConfiguration in project infinispan by infinispan.
the class CounterManagerImplTestStrategy method testUpperBoundedStrongCounter.
@Override
public void testUpperBoundedStrongCounter(Method method) {
final Random random = generateRandom();
final String counterName = method.getName();
CounterConfiguration config = builder(CounterType.BOUNDED_STRONG).initialValue(5).upperBound(15).storage(random.nextBoolean() ? Storage.VOLATILE : Storage.PERSISTENT).build();
doCreationTest(counterName, config);
}
use of org.infinispan.counter.api.CounterConfiguration in project infinispan by infinispan.
the class CounterResourceTest method testWeakCounterLifecycle.
@Test
public void testWeakCounterLifecycle() {
CounterConfiguration counterConfig = CounterConfiguration.builder(CounterType.WEAK).initialValue(5).storage(Storage.VOLATILE).concurrencyLevel(6).build();
createCounter("sample-counter", counterConfig);
RestCounterClient counterClient = client.counter("sample-counter");
RestResponse response = join(counterClient.configuration(APPLICATION_JSON_TYPE));
Json jsonNode = Json.read(response.getBody());
Json config = jsonNode.at("weak-counter");
assertEquals(config.at("initial-value").asInteger(), 5);
assertEquals(config.at("storage").asString(), "VOLATILE");
assertEquals(config.at("concurrency-level").asInteger(), 6);
response = join(counterClient.delete());
assertThat(response).isOk();
response = join(counterClient.configuration());
assertThat(response).isNotFound();
}
use of org.infinispan.counter.api.CounterConfiguration in project infinispan by infinispan.
the class CounterRequestProcessor method applyCounter.
private void applyCounter(HotRodHeader header, String counterName, BiConsumer<HotRodHeader, StrongCounter> applyStrong, BiConsumer<HotRodHeader, WeakCounter> applyWeak) {
EmbeddedCounterManager counterManager = counterManager(header);
CounterConfiguration config = counterManager.getConfiguration(counterName);
if (config == null) {
writeResponse(header, missingCounterResponse(header));
return;
}
switch(config.type()) {
case UNBOUNDED_STRONG:
case BOUNDED_STRONG:
applyStrong.accept(header, counterManager.getStrongCounter(counterName));
break;
case WEAK:
applyWeak.accept(header, counterManager.getWeakCounter(counterName));
break;
}
}
use of org.infinispan.counter.api.CounterConfiguration in project infinispan by infinispan.
the class ClientNotificationManager method createListener.
private Handle<Listener> createListener(byte version, String counterName, ByRef<Boolean> status) {
CounterConfiguration configuration = counterManager.getConfiguration(counterName);
if (configuration == null) {
status.set(false);
return null;
}
Handle<Listener> handle;
if (configuration.type() == CounterType.WEAK) {
handle = counterManager.getWeakCounter(counterName).addListener(new Listener(counterName, version));
} else {
handle = counterManager.getStrongCounter(counterName).addListener(new Listener(counterName, version));
}
status.set(true);
return handle;
}
use of org.infinispan.counter.api.CounterConfiguration in project infinispan by infinispan.
the class CounterResource method createCounter.
private CompletionStage<RestResponse> createCounter(RestRequest request) throws RestResponseException {
NettyRestResponse.Builder responseBuilder = new NettyRestResponse.Builder();
String counterName = request.variables().get("counterName");
String contents = request.contents().asString();
if (contents == null || contents.length() == 0) {
responseBuilder.status(HttpResponseStatus.BAD_REQUEST);
responseBuilder.entity("Configuration not provided");
return completedFuture(responseBuilder.build());
}
CounterConfiguration configuration = createCounterConfiguration(contents);
if (configuration == null) {
responseBuilder.status(HttpResponseStatus.BAD_REQUEST).entity("Invalid configuration");
return completedFuture(responseBuilder.build());
}
return invocationHelper.getCounterManager().defineCounterAsync(counterName, configuration).thenApply(r -> responseBuilder.build());
}
Aggregations