package org.swisspush.redisques.util;
import io.vertx.core.json.JsonObject;
import io.vertx.ext.unit.TestContext;
import io.vertx.ext.unit.junit.VertxUnitRunner;
import org.junit.Test;
import org.junit.runner.RunWith;
import static org.swisspush.redisques.util.RedisquesConfiguration.*;
/**
* Tests for {@link RedisquesConfiguration} class.
*
* @author https://github.com/mcweba [Marc-Andre Weber]
*/
@RunWith(VertxUnitRunner.class)
public class RedisquesConfigurationTest {
@Test
public void testDefaultConfiguration(TestContext testContext){
RedisquesConfiguration config = new RedisquesConfiguration();
testContext.assertEquals(config.getAddress(), "redisques");
testContext.assertEquals(config.getRedisPrefix(), "redisques:");
testContext.assertEquals(config.getProcessorAddress(), "redisques-processor");
testContext.assertEquals(config.getRefreshPeriod(), 10);
testContext.assertEquals(config.getRedisHost(), "localhost");
testContext.assertEquals(config.getRedisPort(), 6379);
testContext.assertEquals(config.getRedisEncoding(), "UTF-8");
testContext.assertEquals(config.getCheckInterval(), 60);
testContext.assertEquals(config.getProcessorTimeout(), 240000);
testContext.assertFalse(config.getHttpRequestHandlerEnabled());
testContext.assertEquals(config.getHttpRequestHandlerPrefix(), "/queuing");
testContext.assertEquals(config.getHttpRequestHandlerPort(), 7070);
testContext.assertEquals(config.getHttpRequestHandlerUserHeader(), "x-rp-usr");
}
@Test
public void testOverrideConfiguration(TestContext testContext){
RedisquesConfiguration config = with()
.address("new_address")
.redisHost("anotherhost")
.redisPort(1234)
.checkInterval(5)
.processorTimeout(10)
.httpRequestHandlerEnabled(true)
.httpRequestHandlerPrefix("/queuing/test")
.httpRequestHandlerPort(7171)
.httpRequestHandlerUserHeader("x-custom-user-header")
.build();
// default values
testContext.assertEquals(config.getRedisPrefix(), "redisques:");
testContext.assertEquals(config.getProcessorAddress(), "redisques-processor");
testContext.assertEquals(config.getRefreshPeriod(), 10);
testContext.assertEquals(config.getRedisEncoding(), "UTF-8");
// overriden values
testContext.assertEquals(config.getAddress(), "new_address");
testContext.assertEquals(config.getRedisHost(), "anotherhost");
testContext.assertEquals(config.getRedisPort(), 1234);
testContext.assertEquals(config.getCheckInterval(), 5);
testContext.assertEquals(config.getProcessorTimeout(), 10);
testContext.assertTrue(config.getHttpRequestHandlerEnabled());
testContext.assertEquals(config.getHttpRequestHandlerPrefix(), "/queuing/test");
testContext.assertEquals(config.getHttpRequestHandlerPort(), 7171);
testContext.assertEquals(config.getHttpRequestHandlerUserHeader(), "x-custom-user-header");
}
@Test
public void testGetDefaultAsJsonObject(TestContext testContext){
RedisquesConfiguration config = new RedisquesConfiguration();
JsonObject json = config.asJsonObject();
testContext.assertEquals(json.getString(PROP_ADDRESS), "redisques");
testContext.assertEquals(json.getString(PROP_REDIS_PREFIX), "redisques:");
testContext.assertEquals(json.getString(PROP_PROCESSOR_ADDRESS), "redisques-processor");
testContext.assertEquals(json.getInteger(PROP_REFRESH_PERIOD), 10);
testContext.assertEquals(json.getString(PROP_REDIS_HOST), "localhost");
testContext.assertEquals(json.getInteger(PROP_REDIS_PORT), 6379);
testContext.assertEquals(json.getString(PROP_REDIS_ENCODING), "UTF-8");
testContext.assertEquals(json.getInteger(PROP_CHECK_INTERVAL), 60);
testContext.assertEquals(json.getInteger(PROP_PROCESSOR_TIMEOUT), 240000);
testContext.assertFalse(json.getBoolean(PROP_HTTP_REQUEST_HANDLER_ENABLED));
testContext.assertEquals(json.getString(PROP_HTTP_REQUEST_HANDLER_PREFIX), "/queuing");
testContext.assertEquals(json.getInteger(PROP_HTTP_REQUEST_HANDLER_PORT), 7070);
testContext.assertEquals(json.getString(PROP_HTTP_REQUEST_HANDLER_USER_HEADER), "x-rp-usr");
}
@Test
public void testGetOverridenAsJsonObject(TestContext testContext){
RedisquesConfiguration config = with()
.address("new_address")
.redisHost("anotherhost")
.redisPort(1234)
.checkInterval(5)
.processorTimeout(20)
.httpRequestHandlerPort(7171)
.httpRequestHandlerUserHeader("x-custom-user-header")
.build();
JsonObject json = config.asJsonObject();
// default values
testContext.assertEquals(json.getString(PROP_REDIS_PREFIX), "redisques:");
testContext.assertEquals(json.getString(PROP_PROCESSOR_ADDRESS), "redisques-processor");
testContext.assertEquals(json.getInteger(PROP_REFRESH_PERIOD), 10);
testContext.assertEquals(json.getString(PROP_REDIS_ENCODING), "UTF-8");
testContext.assertFalse(json.getBoolean(PROP_HTTP_REQUEST_HANDLER_ENABLED));
testContext.assertEquals(json.getString(PROP_HTTP_REQUEST_HANDLER_PREFIX), "/queuing");
// overriden values
testContext.assertEquals(json.getString(PROP_ADDRESS), "new_address");
testContext.assertEquals(json.getString(PROP_REDIS_HOST), "anotherhost");
testContext.assertEquals(json.getInteger(PROP_REDIS_PORT), 1234);
testContext.assertEquals(json.getInteger(PROP_CHECK_INTERVAL), 5);
testContext.assertEquals(json.getInteger(PROP_PROCESSOR_TIMEOUT), 20);
testContext.assertEquals(json.getInteger(PROP_HTTP_REQUEST_HANDLER_PORT), 7171);
testContext.assertEquals(json.getString(PROP_HTTP_REQUEST_HANDLER_USER_HEADER), "x-custom-user-header");
}
@Test
public void testGetDefaultFromJsonObject(TestContext testContext){
JsonObject json = new RedisquesConfiguration().asJsonObject();
RedisquesConfiguration config = fromJsonObject(json);
testContext.assertEquals(config.getAddress(), "redisques");
testContext.assertEquals(config.getRedisPrefix(), "redisques:");
testContext.assertEquals(config.getProcessorAddress(), "redisques-processor");
testContext.assertEquals(config.getRefreshPeriod(), 10);
testContext.assertEquals(config.getRedisHost(), "localhost");
testContext.assertEquals(config.getRedisPort(), 6379);
testContext.assertEquals(config.getRedisEncoding(), "UTF-8");
testContext.assertEquals(config.getCheckInterval(), 60);
testContext.assertEquals(config.getProcessorTimeout(), 240000);
testContext.assertFalse(config.getHttpRequestHandlerEnabled());
testContext.assertEquals(config.getHttpRequestHandlerPrefix(), "/queuing");
testContext.assertEquals(config.getHttpRequestHandlerPort(), 7070);
testContext.assertEquals(config.getHttpRequestHandlerUserHeader(), "x-rp-usr");
}
@Test
public void testGetOverridenFromJsonObject(TestContext testContext){
JsonObject json = new JsonObject();
json.put(PROP_ADDRESS, "new_address");
json.put(PROP_REDIS_PREFIX, "new_redis-prefix");
json.put(PROP_PROCESSOR_ADDRESS, "new_processor-address");
json.put(PROP_REFRESH_PERIOD, 99);
json.put(PROP_REDIS_HOST, "newredishost");
json.put(PROP_REDIS_PORT, 4321);
json.put(PROP_REDIS_ENCODING, "new_encoding");
json.put(PROP_CHECK_INTERVAL, 5);
json.put(PROP_PROCESSOR_TIMEOUT, 30);
json.put(PROP_HTTP_REQUEST_HANDLER_ENABLED, Boolean.TRUE);
json.put(PROP_HTTP_REQUEST_HANDLER_PREFIX, "/queuing/test123");
json.put(PROP_HTTP_REQUEST_HANDLER_PORT, 7171);
json.put(PROP_HTTP_REQUEST_HANDLER_USER_HEADER, "x-custom-user-header");
RedisquesConfiguration config = fromJsonObject(json);
testContext.assertEquals(config.getAddress(), "new_address");
testContext.assertEquals(config.getRedisPrefix(), "new_redis-prefix");
testContext.assertEquals(config.getProcessorAddress(), "new_processor-address");
testContext.assertEquals(config.getRefreshPeriod(), 99);
testContext.assertEquals(config.getRedisHost(), "newredishost");
testContext.assertEquals(config.getRedisPort(), 4321);
testContext.assertEquals(config.getRedisEncoding(), "new_encoding");
testContext.assertEquals(config.getCheckInterval(), 5);
testContext.assertEquals(config.getProcessorTimeout(), 30);
testContext.assertTrue(config.getHttpRequestHandlerEnabled());
testContext.assertEquals(config.getHttpRequestHandlerPort(), 7171);
testContext.assertEquals(config.getHttpRequestHandlerPrefix(), "/queuing/test123");
testContext.assertEquals(config.getHttpRequestHandlerUserHeader(), "x-custom-user-header");
}
@Test
public void testCleanupInterval(TestContext testContext){
int additional = 500;
RedisquesConfiguration config = with().checkInterval(5).build();
testContext.assertEquals(5, config.getCheckInterval());
testContext.assertEquals(add500ms(2500), config.getCheckIntervalTimerMs());
config = with().checkInterval(1).build();
testContext.assertEquals(1, config.getCheckInterval());
testContext.assertEquals(add500ms(500), config.getCheckIntervalTimerMs());
config = with().checkInterval(2).build();
testContext.assertEquals(2, config.getCheckInterval());
testContext.assertEquals(add500ms(1000), config.getCheckIntervalTimerMs());
config = with().checkInterval(3).build();
testContext.assertEquals(3, config.getCheckInterval());
testContext.assertEquals(add500ms(1500), config.getCheckIntervalTimerMs());
config = with().checkInterval(7).build();
testContext.assertEquals(7, config.getCheckInterval());
testContext.assertEquals(add500ms(3500), config.getCheckIntervalTimerMs());
config = with().checkInterval(0).build();
testContext.assertEquals(60, config.getCheckInterval());
testContext.assertEquals(add500ms(30000), config.getCheckIntervalTimerMs());
config = with().checkInterval(-5).build();
testContext.assertEquals(60, config.getCheckInterval());
testContext.assertEquals(add500ms(30000), config.getCheckIntervalTimerMs());
config = with().checkInterval(60).build();
testContext.assertEquals(60, config.getCheckInterval());
testContext.assertEquals(add500ms(30000), config.getCheckIntervalTimerMs());
JsonObject json = new JsonObject();
json.put(PROP_CHECK_INTERVAL, 5);
config = fromJsonObject(json);
testContext.assertEquals(5, config.getCheckInterval());
testContext.assertEquals(add500ms(2500), config.getCheckIntervalTimerMs());
}
private int add500ms(int interval){
return interval + 500;
}
}