package org.llittlewings.hazelcast.indexing; import java.util.List; import java.util.function.Consumer; import java.util.stream.Collectors; import java.util.stream.IntStream; import com.hazelcast.config.ClasspathXmlConfig; import com.hazelcast.core.Hazelcast; import com.hazelcast.core.HazelcastInstance; public abstract class HazelcastTestSupport { protected void withHazelcast(int numInstances, Consumer<HazelcastInstance> f) { int initialPort = 5701; List<HazelcastInstance> instances = IntStream .rangeClosed(1, numInstances) .mapToObj(i -> { ClasspathXmlConfig config = new ClasspathXmlConfig("hazelcast.xml"); config.setInstanceName("MyHazelcastInstance-" + (initialPort + i - 1)); return Hazelcast.newHazelcastInstance(config); }) .collect(Collectors.toList()); try { f.accept(instances.get(0)); } finally { instances .stream() .forEach(h -> h.getLifecycleService().shutdown()); Hazelcast.shutdownAll(); } } }