1+ package io .cloudflight .testresources .springboot .redis ;
2+
3+ import io .micronaut .testresources .testcontainers .AbstractTestContainersProvider ;
4+ import org .testcontainers .containers .GenericContainer ;
5+ import org .testcontainers .utility .DockerImageName ;
6+
7+ import java .util .*;
8+
9+ public class RedisTestResourceProvider extends AbstractTestContainersProvider <GenericContainer <?>> {
10+
11+ public static final String REDIS_URI = "spring.data.redis.url" ;
12+ public static final String DEFAULT_IMAGE = "redis" ;
13+ public static final String SIMPLE_NAME = "redis" ;
14+ public static final int REDIS_PORT = 6379 ;
15+
16+ private static final Set <String > SUPPORTED_PROPERTIES ;
17+
18+ static {
19+ SUPPORTED_PROPERTIES = Set .of (REDIS_URI );
20+ }
21+
22+ @ Override
23+ public List <String > getResolvableProperties (Map <String , Collection <String >> propertyEntries , Map <String , Object > testResourcesConfig ) {
24+ return Collections .singletonList (REDIS_URI );
25+ }
26+
27+ @ Override
28+ protected String getSimpleName () {
29+ return SIMPLE_NAME ;
30+ }
31+
32+ @ Override
33+ protected String getDefaultImageName () {
34+ return DEFAULT_IMAGE ;
35+ }
36+
37+ @ Override
38+ protected GenericContainer <?> createContainer (DockerImageName imageName , Map <String , Object > requestedProperties , Map <String , Object > testResourcesConfiguration ) {
39+ GenericContainer <?> container = new GenericContainer <>(imageName );
40+ container .withExposedPorts (REDIS_PORT );
41+ return container ;
42+ }
43+
44+ @ Override
45+ protected Optional <String > resolveProperty (String propertyName , GenericContainer <?> container ) {
46+ if (REDIS_URI .equals (propertyName )) {
47+ return Optional .of ("redis://" + container .getHost () + ":" + container .getMappedPort (REDIS_PORT ));
48+ }
49+ return Optional .empty ();
50+ }
51+
52+ @ Override
53+ protected boolean shouldAnswer (String propertyName , Map <String , Object > requestedProperties , Map <String , Object > testResourcesConfiguration ) {
54+ return SUPPORTED_PROPERTIES .contains (propertyName );
55+ }
56+ }
0 commit comments