diff --git a/src/main/resources/props/sample.props.template b/src/main/resources/props/sample.props.template index 9b565bd08..dbdb4dec3 100644 --- a/src/main/resources/props/sample.props.template +++ b/src/main/resources/props/sample.props.template @@ -517,6 +517,8 @@ featured_apis=elasticSearchWarehouseV300 # Define how many calls per time a Customer can make # In case isn't defined default value is "false" # use_consumer_limits=false +# In case isn't defined default value is "false" +# use_consumer_limits_in_memory_mode=false # redis_address=127.0.0.1 # redis_port=6379 # ----------------------------------------------------- diff --git a/src/main/scala/code/api/util/RateLimitUtil.scala b/src/main/scala/code/api/util/RateLimitUtil.scala index 92f3b3ba6..94b2b9e95 100644 --- a/src/main/scala/code/api/util/RateLimitUtil.scala +++ b/src/main/scala/code/api/util/RateLimitUtil.scala @@ -51,18 +51,30 @@ object RateLimitPeriod extends Enumeration { object RateLimitUtil extends MdcLoggable { val useConsumerLimits = APIUtil.getPropsAsBoolValue("use_consumer_limits", false) + val inMemoryMode = APIUtil.getPropsAsBoolValue("use_consumer_limits_in_memory_mode", false) lazy val jedis = Props.mode match { case Props.RunModes.Test => - import ai.grakn.redismock.RedisServer - import redis.clients.jedis.Jedis - val server = RedisServer.newRedisServer // bind to a random port - server.start() - new Jedis(server.getHost, server.getBindPort) + startMockedRedis(mode="Test") case _ => - val port = APIUtil.getPropsAsIntValue("redis_port", 6379) - val url = APIUtil.getPropsValue("redis_address", "127.0.0.1") - new Jedis(url, port) + if(inMemoryMode == true) { + startMockedRedis(mode="In-Memory") + } else { + val port = APIUtil.getPropsAsIntValue("redis_port", 6379) + val url = APIUtil.getPropsValue("redis_address", "127.0.0.1") + new Jedis(url, port) + } + } + + private def startMockedRedis(mode: String): Jedis = { + import ai.grakn.redismock.RedisServer + import redis.clients.jedis.Jedis + val server = RedisServer.newRedisServer // bind to a random port + server.start() + logger.info(msg = "-------------| Mocked Redis instance has been run in " + mode + " mode") + logger.info(msg = "-------------| at host: " + server.getHost) + logger.info(msg = "-------------| at port: " + server.getBindPort) + new Jedis(server.getHost, server.getBindPort) } def isRedisAvailable() = {