diff --git a/obp-api/pom.xml b/obp-api/pom.xml index 81dcd5f8a..ffba421d2 100644 --- a/obp-api/pom.xml +++ b/obp-api/pom.xml @@ -316,10 +316,11 @@ scalameta_${scala.version} 3.7.4 + - ai.grakn - redis-mock - 0.1.6 + com.github.codemonstur + embedded-redis + 1.0.0 diff --git a/obp-api/src/main/scala/code/api/cache/Redis.scala b/obp-api/src/main/scala/code/api/cache/Redis.scala index b96ec3eb7..c73a106c9 100644 --- a/obp-api/src/main/scala/code/api/cache/Redis.scala +++ b/obp-api/src/main/scala/code/api/cache/Redis.scala @@ -14,8 +14,8 @@ import scala.language.postfixOps object Redis extends MdcLoggable { - val url = APIUtil.getPropsValue("guava.cache.url", "127.0.0.1") - val port = APIUtil.getPropsAsIntValue("guava.cache.port", 6379) + val url = APIUtil.getPropsValue("guava.redis.url", "127.0.0.1") + val port = APIUtil.getPropsAsIntValue("guava.redis.port", 6379) implicit val scalaCache = ScalaCache(RedisCache(url, port)) implicit val flags = Flags(readsEnabled = true, writesEnabled = true) diff --git a/obp-api/src/main/scala/code/api/util/RateLimitingUtil.scala b/obp-api/src/main/scala/code/api/util/RateLimitingUtil.scala index a2c12cde1..24e615772 100644 --- a/obp-api/src/main/scala/code/api/util/RateLimitingUtil.scala +++ b/obp-api/src/main/scala/code/api/util/RateLimitingUtil.scala @@ -9,9 +9,11 @@ import com.openbankproject.commons.model.User import net.liftweb.common.{Box, Empty, Full} import net.liftweb.util.Props import redis.clients.jedis.Jedis +import redis.embedded.RedisServer import scala.collection.immutable import scala.collection.immutable.{List, Nil} +import scala.util.Random object RateLimitingPeriod extends Enumeration { @@ -71,6 +73,13 @@ object RateLimitingJson { object RateLimitingUtil extends MdcLoggable { import code.api.util.RateLimitingPeriod._ + + val port = APIUtil.getPropsAsIntValue("redis_port", 6379) + val url = APIUtil.getPropsValue("redis_address", "127.0.0.1") + + private val mockedRedisPort = 6380 + Random.nextInt(20) + private val mockedRedisHost = "127.0.0.1" + private var server: RedisServer = null def useConsumerLimits = APIUtil.getPropsAsBoolValue("use_consumer_limits", false) def inMemoryMode = APIUtil.getPropsAsBoolValue("use_consumer_limits_in_memory_mode", false) @@ -82,21 +91,18 @@ object RateLimitingUtil extends MdcLoggable { 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 = new RedisServer(mockedRedisPort) 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) + logger.info(msg = "-------------| Mocked Redis instance has been run in " + mode + " mode") + logger.info(msg = "-------------| at host: " + mockedRedisHost) + logger.info(msg = "-------------| at port: " + mockedRedisPort) + new Jedis(mockedRedisHost, mockedRedisPort) } def isRedisAvailable() = { @@ -123,7 +129,7 @@ object RateLimitingUtil extends MdcLoggable { case (_, false) => // Redis is NOT available logger.warn("Redis is NOT available") true - case (l, true) if l > 0 => // Redis is available and limit is set + case (l, true) if l >= 0 => // Redis is available and limit is set val key = createUniqueKey(consumerKey, period) val exists = jedis.exists(key) exists match {