package eu.scape_project.planning.manager; import static org.junit.Assert.*; import javax.inject.Inject; import eu.scape_project.planning.exception.PlanningException; import eu.scape_project.planning.manager.ByteStreamManager; import eu.scape_project.planning.manager.FileStorage; import eu.scape_project.planning.manager.IByteStreamManager; import eu.scape_project.planning.manager.IByteStreamStorage; import eu.scape_project.planning.manager.StorageException; import eu.scape_project.planning.utils.ConfigurationLoader; import eu.scape_project.planning.utils.FileUtils; import eu.scape_project.planning.utils.LoggerFactory; import eu.scape_project.planning.utils.OS; import org.jboss.arquillian.container.test.api.Deployment; import org.jboss.arquillian.junit.Arquillian; import org.jboss.shrinkwrap.api.ShrinkWrap; import org.jboss.shrinkwrap.api.asset.EmptyAsset; import org.jboss.shrinkwrap.api.spec.WebArchive; import org.jboss.shrinkwrap.resolver.api.DependencyResolvers; import org.jboss.shrinkwrap.resolver.api.maven.MavenDependencyResolver; import org.junit.Test; import org.junit.runner.RunWith; @RunWith(Arquillian.class) public class ByteStreamManagerIT { @Deployment public static WebArchive createDeployment() { MavenDependencyResolver resolver = DependencyResolvers.use(MavenDependencyResolver.class).loadMetadataFromPom( "pom.xml"); WebArchive wa = ShrinkWrap .create(WebArchive.class) .addAsWebInfResource(EmptyAsset.INSTANCE, "beans.xml") .addAsResource("config/configurationLocation.xml") .addAsResource("config/configurationBuilder.xml") .addAsResource("config/configuration.properties") .addAsLibraries(resolver.artifact("commons-configuration:commons-configuration:1.9").resolveAsFiles()) .addAsLibraries(resolver.artifact("commons-beanutils:commons-beanutils:1.8.3").resolveAsFiles()) .addClasses(PlanningException.class, StorageException.class, FileUtils.class, OS.class, IByteStreamManager.class, IByteStreamStorage.class, FileStorage.class, ByteStreamManager.class, LoggerFactory.class, ConfigurationLoader.class); System.out.println(wa.toString(true)); return wa; } @Inject ByteStreamManager bm; @Test public void testStoreLoad() throws StorageException { byte[] array = {1, 2, 3, 4}; String pid = bm.store(null, array); byte[] loaded = bm.load(pid); assertTrue(loaded.length == array.length); for (int i = 0; i < loaded.length; i++) { assertTrue(loaded[i] == array[i]); } } @Test public void testUpdate() throws StorageException { byte[] array = {1, 2, 3, 4}; byte[] update = {1, 2, 3, 4, 5, 6}; bm.store("plato:test", array); bm.store("plato:test", update); byte[] loaded = bm.load("plato:test"); assertFalse(loaded.length == array.length); assertTrue(loaded.length == update.length); for (int i = 0; i < loaded.length; i++) { assertTrue(loaded[i] == update[i]); } } @Test(expected = StorageException.class) public void testDelete() throws StorageException { byte[] array = {1, 2, 3, 4}; String pid = null; try { pid = bm.store(null, array); byte[] loaded = bm.load(pid); assertTrue(loaded.length == array.length); bm.delete(pid); for (int i = 0; i < loaded.length; i++) { assertTrue(loaded[i] == array[i]); } } catch (StorageException e) { fail("Failed to store and delete bytestream. " + e.getMessage()); } // this call *should* fail bm.load(pid); } }