Package com.github.mrcritical.ironcache

Source Code of com.github.mrcritical.ironcache.DefaultIronCacheProviderIntegrationTest

/**
*
*/
package com.github.mrcritical.ironcache;

import java.net.URISyntaxException;
import java.util.List;
import java.util.UUID;

import org.junit.After;
import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;

import com.github.mrcritical.ironcache.model.Cache;
import com.github.mrcritical.ironcache.model.CacheItemRequest;
import com.github.mrcritical.ironcache.model.CachedItem;
import com.google.api.client.util.Strings;
import com.google.common.base.Optional;

/**
* @author pjarrell
*
*/
public class DefaultIronCacheProviderIntegrationTest {

  private static DefaultIronCacheProvider cacheProvider;

  private static final int EXPIRATION_IN_SECONDS = 60 * 5;

  private static final String TEST_CACHE_NAME_PREFIX = "Cache-Test-";

  private static final String TEST_CACHE_PREFIX_KEY = "key-";

  private static final String TEST_CACHE_PREFIX_NAME = "Test Item ";

  private String cacheName;

  private int index;

  private void addToCache(final String cacheName, final int index, Object value) {
    final CacheItemRequest request = CacheItemRequest.create().key(TEST_CACHE_PREFIX_KEY + index).value(value)
        .expireAfter(EXPIRATION_IN_SECONDS).onlyIfNotExists();
    cacheProvider.putItem(cacheName, request);
  }

  private void primeTheCache(final String cacheName) {
    for (int i = 0; i < 10; i++) {
      addToCache(cacheName, i, TEST_CACHE_PREFIX_NAME + index);
    }
  }

  @Before
  public void setUp() {
    cacheProvider = new DefaultIronCacheProvider(System.getProperty("token"), System.getProperty("project_id"));
    cacheName = TEST_CACHE_NAME_PREFIX + UUID.randomUUID().toString();
    index++;
  }

  @After
  public void tearDownAfter() {
    try {
      cacheProvider.deleteCache(cacheName);
    } catch (Exception e) {
      // Ignore since we are just trying to cleanup a bit
    }
  }

  /**
   * Test method for
   * {@link com.github.mrcritical.ironcache.DefaultIronCacheProvider#clearCache(java.lang.String)}
   * .
   *
   * @throws URISyntaxException
   */
  @Test
  public void testClearCache() throws URISyntaxException {

    // Add items to the cache first
    primeTheCache(cacheName);

    Assert.assertTrue(cacheProvider.getCache(cacheName).or(new Cache()).getSize() > 0);

    cacheProvider.clearCache(cacheName);

    Assert.assertTrue(cacheProvider.getCache(cacheName).get().getSize() == 0);
  }

  /**
   * Test method for
   * {@link com.github.mrcritical.ironcache.DefaultIronCacheProvider#deleteCache(java.lang.String)}
   * .
   */
  @Test
  public void testDeleteCache() {

    addToCache(cacheName, index, TEST_CACHE_PREFIX_NAME + index);

    cacheProvider.deleteCache(cacheName);

    Assert.assertFalse(cacheProvider.getCache(cacheName).isPresent());

  }

  /**
   * Test method for
   * {@link com.github.mrcritical.ironcache.DefaultIronCacheProvider#deleteItem(java.lang.String, java.lang.String)}
   * .
   */
  @Test
  public void testDeleteItem() {

    addToCache(cacheName, index, TEST_CACHE_PREFIX_NAME + index);

    Assert.assertTrue(cacheProvider.getItem(cacheName, TEST_CACHE_PREFIX_KEY + index).isPresent());

    cacheProvider.deleteItem(cacheName, TEST_CACHE_PREFIX_KEY + index);

    Assert.assertFalse(cacheProvider.getItem(cacheName, TEST_CACHE_PREFIX_KEY + index).isPresent());

  }

  /**
   * Test method for
   * {@link com.github.mrcritical.ironcache.DefaultIronCacheProvider#getCache(java.lang.String)}
   * .
   */
  @Test
  public void testGetCache() {

    addToCache(cacheName, index, TEST_CACHE_PREFIX_NAME + index);

    Assert.assertTrue(cacheProvider.getCache(cacheName).isPresent());

  }

  /**
   * Test method for
   * {@link com.github.mrcritical.ironcache.DefaultIronCacheProvider#getItem(java.lang.String, java.lang.String)}
   * .
   */
  @Test
  public void testGetItem() {

    addToCache(cacheName, index, TEST_CACHE_PREFIX_NAME + index);

    final Optional<CachedItem> item = cacheProvider.getItem(cacheName, TEST_CACHE_PREFIX_KEY + index);
    Assert.assertTrue(item.isPresent());
    Assert.assertEquals(TEST_CACHE_PREFIX_KEY + index, item.get().getKey());
    Assert.assertEquals(TEST_CACHE_PREFIX_NAME + index, item.get().getValue());
    Assert.assertFalse(Strings.isNullOrEmpty(item.get().getCas()));
    Assert.assertNotNull(item.get().getExpires());

  }

  @Test
  public void testGetItem_UTF8() {
    String hebrew = "אני אוהב שוקולד";

    addToCache(cacheName, index, hebrew);

    final Optional<CachedItem> item = cacheProvider.getItem(cacheName, TEST_CACHE_PREFIX_KEY + index);
    Assert.assertTrue(item.isPresent());
    Assert.assertEquals(TEST_CACHE_PREFIX_KEY + index, item.get().getKey());
    Assert.assertEquals(hebrew, item.get().getValue());
    Assert.assertFalse(Strings.isNullOrEmpty(item.get().getCas()));
    Assert.assertNotNull(item.get().getExpires());

  }

  /**
   * Test method for
   * {@link com.github.mrcritical.ironcache.DefaultIronCacheProvider#incrementItem(java.lang.String, java.lang.String, int)}
   * .
   */
  @Test
  public void testIncrementItem() {

    cacheProvider.putItem(cacheName, CacheItemRequest.create().key(TEST_CACHE_PREFIX_KEY + index).value(1)
        .expireAfter(EXPIRATION_IN_SECONDS).onlyIfNotExists());

    cacheProvider.incrementItem(cacheName, TEST_CACHE_PREFIX_KEY + index, 1);

    final Optional<CachedItem> item = cacheProvider.getItem(cacheName, TEST_CACHE_PREFIX_KEY + index);
    Assert.assertEquals(2, item.get().getValue());
  }

  /**
   * Test method for
   * {@link com.github.mrcritical.ironcache.DefaultIronCacheProvider#listCaches()}
   * .
   */
  @Test
  public void testListCaches() {

    addToCache(cacheName, index, TEST_CACHE_PREFIX_NAME + index);

    final List<Cache> caches = cacheProvider.listCaches();
    Assert.assertTrue(caches.size() > 0);

    Assert.assertNotNull(caches.get(0).getName());
    Assert.assertNotNull(caches.get(0).getId());
    Assert.assertNotNull(caches.get(0).getProjectId());
    Assert.assertNull(caches.get(0).getSize());

  }

  /**
   * Test method for
   * {@link com.github.mrcritical.ironcache.DefaultIronCacheProvider#putItem(java.lang.String, com.github.mrcritical.ironcache.model.CacheItemRequest)}
   * .
   */
  @Test
  public void testPutItem() {

    cacheProvider.putItem(cacheName, CacheItemRequest.create().key(TEST_CACHE_PREFIX_KEY + index).value("1")
        .expireAfter(EXPIRATION_IN_SECONDS).onlyIfNotExists());

    Assert.assertTrue(cacheProvider.getItem(cacheName, TEST_CACHE_PREFIX_KEY + index).isPresent());

  }

}
TOP

Related Classes of com.github.mrcritical.ironcache.DefaultIronCacheProviderIntegrationTest

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.