package org.infinispan.server.router.profiling;
import java.util.List;
import java.util.Optional;
import java.util.Set;
import java.util.UUID;
import java.util.stream.IntStream;
import org.infinispan.client.hotrod.RemoteCache;
import org.infinispan.client.hotrod.RemoteCacheManager;
import org.infinispan.server.hotrod.HotRodServer;
import org.infinispan.server.router.MultiTenantRouter;
import org.infinispan.server.router.routes.Route;
import org.infinispan.server.router.routes.RouteDestination;
import org.infinispan.server.router.routes.RouteSource;
public interface PerfTestConfiguration {
List<HotRodServer> initServers();
RemoteCacheManager initClient(Optional<MultiTenantRouter> router, Optional<Set<Route<? extends RouteSource, ? extends RouteDestination>>> routes, List<HotRodServer> servers);
default Optional<Set<Route<? extends RouteSource, ? extends RouteDestination>>> initRoutes(List<HotRodServer> servers) {
return Optional.empty();
}
default Optional<MultiTenantRouter> initRouter(Optional<Set<Route<? extends RouteSource, ? extends RouteDestination>>> routes) {
return Optional.empty();
}
default void shutdown(List<HotRodServer> servers, Optional<MultiTenantRouter> router) {
servers.forEach(s -> s.stop());
router.ifPresent(r -> r.stop());
}
default void performLoadTesting(RemoteCacheManager client, int numberOfIterations) {
String keyPrefix = UUID.randomUUID().toString();
RemoteCache<String, String> cache = client.getCache();
IntStream.range(0, numberOfIterations).forEach(i -> cache.put(keyPrefix + i, "val" + i));
}
}