]> git.somenet.org - pub/jan/dst18.git/blob - ass1-kv/src/test/java/dst/ass1/kv/RedisCleaner.java
Make ElasticityControllerTest more tolernat to edge cases
[pub/jan/dst18.git] / ass1-kv / src / test / java / dst / ass1 / kv / RedisCleaner.java
1 package dst.ass1.kv;
2
3 import java.io.IOException;
4 import java.io.InputStream;
5 import java.util.Properties;
6
7 import org.junit.rules.ExternalResource;
8
9 import redis.clients.jedis.Jedis;
10
11 /**
12  * Drops the entire key space of a redis instance before and after a test run.
13  */
14 public class RedisCleaner extends ExternalResource {
15
16     private Properties properties;
17     private Jedis jedis;
18
19     @Override
20     protected void before() throws IOException {
21         properties = loadProperties();
22
23         String host = properties.getProperty("redis.host");
24         int port = Integer.parseInt(properties.getProperty("redis.port"));
25         jedis = new Jedis(host, port);
26
27         // completely clear the redis instance before each test
28         jedis.flushAll();
29     }
30
31     @Override
32     protected void after() {
33         // completely clear the redis instance after each test
34         try {
35             jedis.flushAll();
36         } finally {
37             // close the connection pool
38             jedis.close();
39         }
40     }
41
42     /**
43      * @return loaded redis properties
44      */
45     public Properties getProperties() {
46         return properties;
47     }
48
49     public Jedis getJedis() {
50         return jedis;
51     }
52
53     private Properties loadProperties() throws IOException {
54         Properties properties = new Properties();
55         try (InputStream in = getClass().getClassLoader().getResourceAsStream("redis.properties")) {
56             properties.load(in);
57         }
58         return properties;
59     }
60
61 }