package org.apache.ode.bpel.compiler_2_0; import static org.junit.Assert.assertEquals; import java.io.File; import java.net.URI; import java.net.URL; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.apache.ode.bpel.obj.OProcess; import org.apache.ode.bpel.obj.migrate.DeepEqualityHelper; import org.apache.ode.bpel.obj.migrate.DomElementComparator; import org.apache.ode.bpel.obj.migrate.ExtensibeImplEqualityComp; import org.apache.ode.bpel.obj.migrate.ObjectTraverser; import org.apache.ode.bpel.obj.migrate.UpgradeChecker; import org.apache.ode.bpel.obj.serde.DeSerializer; import org.junit.Assert; import org.junit.Test; public class MigrationTest extends GoodCompileTest{ private static final Logger __log = LoggerFactory.getLogger(MigrationTest.class); /** * compare compiled OProcess with migrated ones. */ public void runTest(String bpel) throws Exception { try { Class testClass = getClass(); URL url = testClass.getResource(bpel); URI uri = url.toURI(); String path = uri.getPath(); File bpelFile = new File(path); String cbpPath = bpel.substring(0, bpel.lastIndexOf(".")) + ".cbp"; String oldCbpPath = "/oldcbp" + cbpPath; File oldCbpFile = new File(testClass.getResource(oldCbpPath).getFile()); OProcess nu = _compiler.compile2OProcess(bpelFile, 0); __log.debug("compiled new OProcess " + nu.getFieldContainer()); DeSerializer deSerializer = new DeSerializer(oldCbpFile); OProcess migrated = deSerializer.deserialize(); __log.debug("Read and migrated old OProcess " + migrated.getFieldContainer()); //check DeepEqualityHelper de = new DeepEqualityHelper(); de.addCustomComparator(new ExtensibeImplEqualityComp()); de.addCustomComparator(new DomElementComparator()); boolean res = de.deepEquals(nu, migrated); assertEquals(Boolean.TRUE, res); UpgradeChecker checker = new UpgradeChecker(); ObjectTraverser traverser = new ObjectTraverser(); traverser.accept(checker); traverser.traverseObject(migrated); assertEquals(true, checker.isNewest()); } catch (Exception ex) { ex.printStackTrace(); Assert.fail("Compilation or migration did not succeed."); } } @Test public void testCompensation1() throws Exception { //skip this test for no corresponding cbp from 1.3.x // runTest("/2.0/good/compensation/comp1-2.0.bpel"); } @Test public void testMultipleEmbeddedSchemas() throws Exception { //skip this test for no corresponding cbp from 1.3.x // runTest("/org/apache/ode/bpel/compiler/MultipleEmbeddedSchemas.bpel"); } }