package eu.dnetlib.enabling.resultset.push;

import java.util.List;

import net.sf.ehcache.CacheManager;

import org.junit.After;

import eu.dnetlib.miscutils.cache.Cache;
import eu.dnetlib.miscutils.cache.EhCache;

/**
 * concrete push resultset dao test.
 * 
 * @author marko
 *
 */
public class CacheTransientPushResultSetDaoTest extends AbstractTransientPushResultSetDaoTest { // NOPMD
	
    /**
     * max in memory elements.
     */
    private static final int MAX_IN_MEM = 100;

    /**
     * default time.
     */
    private static final int DEFAULT_TTI = 1000;

    /**
     * default time to live.
     */
    private static final int DEFAULT_TTL = 1000;

	
	/**
	 * cache manager.
	 */
	private final transient CacheManager cacheManager = CacheManager.create();
	

	/**
	 * clean cache after test.
	 */
	@After
	public void cleanCache() {
		cacheManager.removalAll();
	}
	
	/** 
	 * {@inheritDoc}
	 * @see eu.dnetlib.enabling.resultset.push.AbstractTransientPushResultSetDaoTest#newInstance()
	 */
	@Override
	protected TransientPushResultSetDao newInstance() {
		final net.sf.ehcache.Cache ehcache = new net.sf.ehcache.Cache("testCache", MAX_IN_MEM, false, false, DEFAULT_TTL, DEFAULT_TTI);
		cacheManager.addCache(ehcache);
		
		final CacheTransientResultSetDaoImpl resultSet = new CacheTransientResultSetDaoImpl();
		final Cache<String, List<String>> cache = new EhCache<String, List<String>>(ehcache);
		resultSet.setCache(cache);
		return resultSet;
	}

}
