// Path: jbase-cache/src/main/java/com/jayqqaa12/jbase/cache/provider/NullCacheProvider.java
// public class NullCacheProvider implements CacheProvider {
// 
//   private static final NullCache cache=new NullCache();
// 
//   @Override
//   public void init(CacheConfig cacheConfig) {
//   }
//   @Override
//   public Cache buildCache(String region, int expire) {
//     return buildCache(region);
//   }
// 
//   @Override
//   public Cache buildCache(String region) {
//     return cache;
//   }
// 
//   @Override
//   public void stop() {
// 
//   }
// }
// 
// Path: jbase-cache/src/main/java/com/jayqqaa12/jbase/cache/provider/caffeine/CaffeineCacheProvider.java
// public class CaffeineCacheProvider implements CacheProvider {
// 
//   private CacheConfig cacheConfig;
// 
//   private Map<String, Cache> cacheMap = new HashMap<>();
//   private CaffeineConfig defualtConfig = new CaffeineConfig();
// 
//   @Override
//   public void init(CacheConfig cacheConfig) {
// 
//     this.cacheConfig = cacheConfig;
// 
//     this.defualtConfig.setSize(10000);
//     this.defualtConfig.setExpire(60 * 30);
// 
//   }
// 
//   @Override
//   public Cache
//   buildCache(String region, int expire) {
//     CaffeineConfig config = cacheConfig.getCaffeineConfig().getOrDefault(region, defualtConfig);
// 
//     return newCache(region, config.getSize(), expire);
//   }
// 
//   private Cache newCache(String region, int size, int expire) {
//     return cacheMap.computeIfAbsent(region, v -> {
//       Caffeine<Object, Object> caffeine = Caffeine.newBuilder();
// 
//       caffeine = caffeine.maximumSize(size);
//       if (expire > 0) {
//         caffeine = caffeine.expireAfterWrite(expire, TimeUnit.SECONDS);
//       }
// 
//       com.github.benmanes.caffeine.cache.Cache<String, CacheObject> loadingCache = caffeine.build();
//       return new CaffeineCache(loadingCache);
//     });
//   }
// 
//   @Override
//   public Cache buildCache(String region) {
//     CaffeineConfig config = cacheConfig.getCaffeineConfig().getOrDefault(region, defualtConfig);
//     return newCache(region, config.getSize(), config.getExpire());
//   }
// 
// 
//   @Override
//   public void stop() {
//     cacheMap.clear();
//   }
// }


import static org.junit.Assert.*;
import com.google.common.collect.Lists;
import com.jayqqaa12.jbase.cache.provider.NullCacheProvider;
import com.jayqqaa12.jbase.cache.provider.caffeine.CaffeineCacheProvider;
import lombok.extern.slf4j.Slf4j;
import org.junit.Before;
import org.junit.Test;
import redis.embedded.RedisServer;
import java.util.concurrent.TimeUnit;
package com.jayqqaa12.jbase.cache.core;




/**
 * @author 12, {@literal <shuai.wang@leyantech.com>}
 * @date 2020-10-12.
 */
@Slf4j
public class CaffeineTest {

  private JbaseCache jbaseCache;

  @Before
  public void init() {

    CacheConfig cacheConfig = new CacheConfig();

    cacheConfig.setProviderClassList(
        Lists.newArrayList(NullCacheProvider.class.getName(),
// Path: jbase-cache/src/main/java/com/jayqqaa12/jbase/cache/provider/NullCacheProvider.java
// public class NullCacheProvider implements CacheProvider {
// 
//   private static final NullCache cache=new NullCache();
// 
//   @Override
//   public void init(CacheConfig cacheConfig) {
//   }
//   @Override
//   public Cache buildCache(String region, int expire) {
//     return buildCache(region);
//   }
// 
//   @Override
//   public Cache buildCache(String region) {
//     return cache;
//   }
// 
//   @Override
//   public void stop() {
// 
//   }
// }
// 
// Path: jbase-cache/src/main/java/com/jayqqaa12/jbase/cache/provider/caffeine/CaffeineCacheProvider.java
// public class CaffeineCacheProvider implements CacheProvider {
// 
//   private CacheConfig cacheConfig;
// 
//   private Map<String, Cache> cacheMap = new HashMap<>();
//   private CaffeineConfig defualtConfig = new CaffeineConfig();
// 
//   @Override
//   public void init(CacheConfig cacheConfig) {
// 
//     this.cacheConfig = cacheConfig;
// 
//     this.defualtConfig.setSize(10000);
//     this.defualtConfig.setExpire(60 * 30);
// 
//   }
// 
//   @Override
//   public Cache
//   buildCache(String region, int expire) {
//     CaffeineConfig config = cacheConfig.getCaffeineConfig().getOrDefault(region, defualtConfig);
// 
//     return newCache(region, config.getSize(), expire);
//   }
// 
//   private Cache newCache(String region, int size, int expire) {
//     return cacheMap.computeIfAbsent(region, v -> {
//       Caffeine<Object, Object> caffeine = Caffeine.newBuilder();
// 
//       caffeine = caffeine.maximumSize(size);
//       if (expire > 0) {
//         caffeine = caffeine.expireAfterWrite(expire, TimeUnit.SECONDS);
//       }
// 
//       com.github.benmanes.caffeine.cache.Cache<String, CacheObject> loadingCache = caffeine.build();
//       return new CaffeineCache(loadingCache);
//     });
//   }
// 
//   @Override
//   public Cache buildCache(String region) {
//     CaffeineConfig config = cacheConfig.getCaffeineConfig().getOrDefault(region, defualtConfig);
//     return newCache(region, config.getSize(), config.getExpire());
//   }
// 
// 
//   @Override
//   public void stop() {
//     cacheMap.clear();
//   }
// }


// Path: jbase-cache/src/test/java/com/jayqqaa12/jbase/cache/core/CaffeineTest.java
import static org.junit.Assert.*;
import com.google.common.collect.Lists;
import com.jayqqaa12.jbase.cache.provider.NullCacheProvider;
import com.jayqqaa12.jbase.cache.provider.caffeine.CaffeineCacheProvider;
import lombok.extern.slf4j.Slf4j;
import org.junit.Before;
import org.junit.Test;
import redis.embedded.RedisServer;
import java.util.concurrent.TimeUnit;

package com.jayqqaa12.jbase.cache.core;




/**
 * @author 12, {@literal <shuai.wang@leyantech.com>}
 * @date 2020-10-12.
 */
@Slf4j
public class CaffeineTest {

  private JbaseCache jbaseCache;

  @Before
  public void init() {

    CacheConfig cacheConfig = new CacheConfig();

    cacheConfig.setProviderClassList(
        Lists.newArrayList(NullCacheProvider.class.getName(),
            CaffeineCacheProvider.class.getName()