package org.infinispan.api.mvcc.repeatable_read;
import javax.transaction.HeuristicMixedException;
import javax.transaction.HeuristicRollbackException;
import javax.transaction.RollbackException;
import javax.transaction.SystemException;
import org.infinispan.configuration.cache.ConfigurationBuilder;
import org.infinispan.container.DataContainer;
import org.infinispan.container.entries.InternalCacheEntry;
import org.infinispan.persistence.dummy.DummyInMemoryStoreConfigurationBuilder;
import org.infinispan.test.TestingUtil;
import org.testng.annotations.Test;
@Test(groups = "functional", testName = "api.mvcc.repeatable_read.WriteSkewWithPersistenceTest")
public class WriteSkewWithPersistenceTest extends WriteSkewTest {
@Override
protected ConfigurationBuilder createConfigurationBuilder() {
ConfigurationBuilder configurationBuilder = super.createConfigurationBuilder();
configurationBuilder.persistence().addStore(new DummyInMemoryStoreConfigurationBuilder(configurationBuilder.persistence()));
return configurationBuilder;
}
@Override
protected void commit() throws RollbackException, HeuristicMixedException, HeuristicRollbackException, SystemException {
// Make sure that all entries are evicted from DC
DataContainer<Object, Object> dataContainer = TestingUtil.extractComponent(cache, DataContainer.class);
Object[] keys = dataContainer.entrySet().stream().map(InternalCacheEntry::getKey).toArray(Object[]::new);
for (Object key : keys) {
dataContainer.evict(key);
}
super.commit();
}
}