package org.infinispan.server.core;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.ObjectOutputStream;
import java.util.Random;
import org.infinispan.commons.CacheException;
import org.infinispan.commons.marshall.StreamingMarshaller;
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.AfterClass;
import org.testng.annotations.BeforeClass;
/**
* Abstract class to help marshalling tests in different server modules.
*
* @author Galder ZamarreƱo
* @since 4.1
*/
public abstract class AbstractMarshallingTest extends AbstractInfinispanTest {
protected StreamingMarshaller marshaller;
protected EmbeddedCacheManager cm;
@BeforeClass(alwaysRun=true)
public void setUp() {
// Manual addition of externalizers to replication what happens in fully functional tests
cm = TestCacheManagerFactory.createCacheManager();
marshaller = TestingUtil.extractGlobalMarshaller(cm.getCache().getCacheManager());
}
@AfterClass(alwaysRun=true)
public void tearDown() {
if (cm != null) cm.stop();
}
protected byte[] getBigByteArray() {
String value = new String(randomByteArray(1000));
ByteArrayOutputStream result = new ByteArrayOutputStream(1000);
try {
ObjectOutputStream oos = new ObjectOutputStream(result);
oos.writeObject(value);
return result.toByteArray();
} catch (IOException e) {
throw new CacheException(e);
}
}
private byte[] randomByteArray(int i) {
Random r = new Random();
byte[] result = new byte[i];
r.nextBytes(result);
return result;
}
}