package org.infinispan.marshall;
import static org.testng.AssertJUnit.assertEquals;
import static org.testng.AssertJUnit.assertTrue;
import org.infinispan.commons.marshall.WrappedBytes;
import org.infinispan.compat.TypeConverter;
import org.infinispan.configuration.cache.ConfigurationBuilder;
import org.infinispan.container.DataContainer;
import org.infinispan.container.entries.InternalCacheEntry;
import org.infinispan.manager.EmbeddedCacheManager;
import org.infinispan.test.AbstractInfinispanTest;
import org.infinispan.test.TestingUtil;
import org.infinispan.test.fwk.TestCacheManagerFactory;
import org.testng.annotations.AfterMethod;
import org.testng.annotations.Test;
/**
* Tests just enabling marshalled values on keys and not values, and vice versa.
*
* @author Manik Surtani
*/
@Test(groups = "functional", testName = "marshall.MarshalledValuesFineGrainedTest")
public class MarshalledValuesFineGrainedTest extends AbstractInfinispanTest {
EmbeddedCacheManager ecm;
final CustomClass key = new CustomClass("key");
final CustomClass value = new CustomClass("value");
@AfterMethod
public void cleanup() {
TestingUtil.killCacheManagers(ecm);
ecm = null;
}
public void testStoreAsBinaryOnBoth() {
ConfigurationBuilder c = new ConfigurationBuilder();
c.storeAsBinary().enable().build();
ecm = TestCacheManagerFactory.createCacheManager(c);
ecm.getCache().put(key, value);
TypeConverter converter = ecm.getCache().getAdvancedCache().getComponentRegistry().getComponent(TypeConverter.class);
DataContainer<?, ?> dc = ecm.getCache().getAdvancedCache().getDataContainer();
InternalCacheEntry entry = dc.iterator().next();
Object key = entry.getKey();
Object value = entry.getValue();
assertTrue(key instanceof WrappedBytes);
assertEquals(converter.unboxKey(key), this.key);
assertTrue(value instanceof WrappedBytes);
assertEquals(converter.unboxValue(value), this.value);
}
}