package org.littlewings.hazelcast.aggregation; import java.util.List; import java.util.function.Function; import java.util.stream.Collectors; import java.util.stream.IntStream; import com.hazelcast.config.Config; import com.hazelcast.core.Hazelcast; import com.hazelcast.core.HazelcastInstance; public interface HazelcastTestSupport { default <R> R withHazelcast(int numInstances, Function<HazelcastInstance, R> fun) { Config config = new Config(); List<HazelcastInstance> hazelcastInstances = IntStream .rangeClosed(1, numInstances) .mapToObj(i -> Hazelcast.newHazelcastInstance(config)) .collect(Collectors.toList()); try { return hazelcastInstances .stream() .findFirst() .map(hazelcast -> fun.apply(hazelcast)) .orElse(null); } finally { hazelcastInstances .stream() .forEach(h -> h.getLifecycleService().shutdown()); Hazelcast.shutdownAll(); } } }