package org.springframework.data.aerospike; import com.aerospike.client.AerospikeClient; import com.aerospike.client.policy.ClientPolicy; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.testcontainers.containers.BindMode; import org.testcontainers.containers.GenericContainer; @Configuration public class EmbeddedAerospikeAutoConfiguration { @Bean(initMethod = "start", destroyMethod = "stop") public GenericContainer aerosike() { GenericContainer aerosike = new GenericContainer("aerospike:latest") .withExposedPorts(TestConstants.AS_PORT) .withClasspathResourceMapping("aerospike.conf", "/etc/aerospike/aerospike.conf", BindMode.READ_ONLY); return aerosike; } @Bean public EmbeddedAerospikeInfo embeddedAerospikeInfo(GenericContainer aerosike) { Integer mappedPort = aerosike.getMappedPort(TestConstants.AS_PORT); String host = aerosike.getContainerIpAddress(); return new EmbeddedAerospikeInfo(host, mappedPort, TestConstants.AS_NAMESPACE); } @Bean(destroyMethod = "close") public AerospikeClient aerospikeClient(EmbeddedAerospikeInfo info) { ClientPolicy policy = new ClientPolicy(); policy.failIfNotConnected = true; policy.timeout = TestConstants.AS_TIMEOUT; AerospikeClient client = new AerospikeClient(policy, info.getHost(), info.getPort()); client.writePolicyDefault.expiration = -1; return client; } }