diff options
16 files changed, 216 insertions, 0 deletions
diff --git a/bundles/ie.wombat.jbdiff.test/.classpath b/bundles/ie.wombat.jbdiff.test/.classpath new file mode 100644 index 000000000..751c8f2e5 --- /dev/null +++ b/bundles/ie.wombat.jbdiff.test/.classpath @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="UTF-8"?> +<classpath> + <classpathentry kind="src" path="src"/> + <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/> + <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/> + <classpathentry kind="output" path="bin"/> +</classpath> diff --git a/bundles/ie.wombat.jbdiff.test/.project b/bundles/ie.wombat.jbdiff.test/.project new file mode 100644 index 000000000..ac8a8a03f --- /dev/null +++ b/bundles/ie.wombat.jbdiff.test/.project @@ -0,0 +1,28 @@ +<?xml version="1.0" encoding="UTF-8"?> +<projectDescription> + <name>ie.wombat.jbdiff.test</name> + <comment></comment> + <projects> + </projects> + <buildSpec> + <buildCommand> + <name>org.eclipse.jdt.core.javabuilder</name> + <arguments> + </arguments> + </buildCommand> + <buildCommand> + <name>org.eclipse.pde.ManifestBuilder</name> + <arguments> + </arguments> + </buildCommand> + <buildCommand> + <name>org.eclipse.pde.SchemaBuilder</name> + <arguments> + </arguments> + </buildCommand> + </buildSpec> + <natures> + <nature>org.eclipse.pde.PluginNature</nature> + <nature>org.eclipse.jdt.core.javanature</nature> + </natures> +</projectDescription> diff --git a/bundles/ie.wombat.jbdiff.test/.settings/org.eclipse.pde.core.prefs b/bundles/ie.wombat.jbdiff.test/.settings/org.eclipse.pde.core.prefs new file mode 100644 index 000000000..0c5082bd7 --- /dev/null +++ b/bundles/ie.wombat.jbdiff.test/.settings/org.eclipse.pde.core.prefs @@ -0,0 +1,4 @@ +#Thu Nov 01 14:26:02 CET 2007 +eclipse.preferences.version=1 +pluginProject.extensions=false +resolve.requirebundle=false diff --git a/bundles/ie.wombat.jbdiff.test/META-INF/MANIFEST.MF b/bundles/ie.wombat.jbdiff.test/META-INF/MANIFEST.MF new file mode 100644 index 000000000..d302fe5fa --- /dev/null +++ b/bundles/ie.wombat.jbdiff.test/META-INF/MANIFEST.MF @@ -0,0 +1,12 @@ +Manifest-Version: 1.0 +Bundle-ManifestVersion: 2 +Bundle-Name: JBDiff Test Plug-in +Bundle-SymbolicName: ie.wombat.jbdiff.test +Bundle-Version: 0.1.0.1 +Bundle-Activator: ie.wombat.jbdiff.test.Activator +Import-Package: org.osgi.framework;version="1.3.0" +Eclipse-LazyStart: true +Bundle-RequiredExecutionEnvironment: CDC-1.1/Foundation-1.1, + J2SE-1.4 +Require-Bundle: org.junit, + ie.wombat.jbdiff diff --git a/bundles/ie.wombat.jbdiff.test/build.properties b/bundles/ie.wombat.jbdiff.test/build.properties new file mode 100644 index 000000000..34d2e4d2d --- /dev/null +++ b/bundles/ie.wombat.jbdiff.test/build.properties @@ -0,0 +1,4 @@ +source.. = src/ +output.. = bin/ +bin.includes = META-INF/,\ + . diff --git a/bundles/ie.wombat.jbdiff.test/src/ie/wombat/jbdiff/test/Activator.java b/bundles/ie.wombat.jbdiff.test/src/ie/wombat/jbdiff/test/Activator.java new file mode 100644 index 000000000..0d0bb3f2a --- /dev/null +++ b/bundles/ie.wombat.jbdiff.test/src/ie/wombat/jbdiff/test/Activator.java @@ -0,0 +1,45 @@ +/******************************************************************************* + * Copyright (c) 2007 compeople AG and others. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * compeople AG (Stefan Liebig) - initial API and implementation + *******************************************************************************/ +package ie.wombat.jbdiff.test; + +import org.osgi.framework.BundleActivator; +import org.osgi.framework.BundleContext; + +public class Activator implements BundleActivator { + + private static BundleContext context; + + /* + * (non-Javadoc) + * + * @see org.osgi.framework.BundleActivator#start(org.osgi.framework.BundleContext) + */ + public void start(BundleContext context) throws Exception { + Activator.context = context; + } + + /* + * (non-Javadoc) + * + * @see org.osgi.framework.BundleActivator#stop(org.osgi.framework.BundleContext) + */ + public void stop(BundleContext context) throws Exception { + Activator.context = null; + } + + /** + * @return the context + */ + public static BundleContext getContext() { + return context; + } + +} diff --git a/bundles/ie.wombat.jbdiff.test/src/ie/wombat/jbdiff/test/DiffPatchTest.java b/bundles/ie.wombat.jbdiff.test/src/ie/wombat/jbdiff/test/DiffPatchTest.java new file mode 100644 index 000000000..5f5e7d8f7 --- /dev/null +++ b/bundles/ie.wombat.jbdiff.test/src/ie/wombat/jbdiff/test/DiffPatchTest.java @@ -0,0 +1,112 @@ +/******************************************************************************* + * Copyright (c) 2007 compeople AG and others. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * compeople AG (Stefan Liebig) - initial API and implementation + *******************************************************************************/ +package ie.wombat.jbdiff.test; + +import ie.wombat.jbdiff.JBDiff; +import ie.wombat.jbdiff.JBPatch; + +import java.io.BufferedInputStream; +import java.io.ByteArrayOutputStream; +import java.io.IOException; +import java.io.InputStream; +import java.util.Arrays; + +import junit.framework.TestCase; + +public class DiffPatchTest extends TestCase { + + public void testNullData() throws Exception { + bench("null.data", "null.data"); + } + + public void testOneData() throws Exception { + bench("one.data", "one.data"); + } + + public void testOneHundredData() throws Exception { + bench("onehundred.data", "onehundred.data"); + } + + public void testOneHundredXData() throws Exception { + bench("onehundred.data", "onehundredX.data"); + } + + public void testOneXHundredXData() throws Exception { + bench("onehundred.data", "oneXhundredX.data"); + } + + public void testPdeCoreJar() throws Exception { + bench("org.eclipse.pde.core_3.2.jar", "org.eclipse.pde.core_3.3.jar"); + } + + public void testEclipse() throws Exception { + bench("eclipse-3.2.exe", "eclipse-3.3.exe"); + } + + private void bench(String resource1, String resource2) throws Exception { + + byte[] oldData = getTestData(resource1); + byte[] newData = getTestData(resource2); + + System.out.println(resource1 + "(" + (oldData.length / 1024) + + " kb) -> " + resource2 + "(" + (newData.length / 1024) + + " kb)"); + + diffAndPatchJBDiff(oldData, newData); + + System.out.println(""); + } + + /** + * @param resource1 + * @param resource2 + * @throws IOException + */ + private void diffAndPatchJBDiff(byte[] oldData, byte[] newData) + throws IOException { + + try { + + long start = System.currentTimeMillis(); + + byte[] diff = JBDiff.bsdiff(oldData, oldData.length, newData, + newData.length); + + long diffEnd = System.currentTimeMillis(); + + byte[] patch = JBPatch.bspatch(oldData, oldData.length, diff); + + long patchEnd = System.currentTimeMillis(); + + System.out.println("JBDiff: Size= " + diff.length + " b (" + + diff.length / 1024 + " kb), Diffing " + (diffEnd - start) + + " ms, Patching: " + (patchEnd - diffEnd) + " ms"); + + assertTrue(Arrays.equals(newData, patch)); + + } catch (RuntimeException re) { + System.err.println("JBDiff: error: " + re.getMessage()); + } + } + + private static byte[] getTestData(String name) throws IOException { + ByteArrayOutputStream out = new ByteArrayOutputStream(); + InputStream input = new BufferedInputStream(Activator.getContext() + .getBundle().getEntry("testData/" + name).openStream()); + int r; + while ((r = input.read()) != -1) { + out.write(r); + } + input.close(); + out.close(); + return out.toByteArray(); + } +}
\ No newline at end of file diff --git a/bundles/ie.wombat.jbdiff.test/testData/eclipse-3.2.exe b/bundles/ie.wombat.jbdiff.test/testData/eclipse-3.2.exe Binary files differnew file mode 100644 index 000000000..7826d1ed8 --- /dev/null +++ b/bundles/ie.wombat.jbdiff.test/testData/eclipse-3.2.exe diff --git a/bundles/ie.wombat.jbdiff.test/testData/eclipse-3.3.exe b/bundles/ie.wombat.jbdiff.test/testData/eclipse-3.3.exe Binary files differnew file mode 100644 index 000000000..c5cd8f038 --- /dev/null +++ b/bundles/ie.wombat.jbdiff.test/testData/eclipse-3.3.exe diff --git a/bundles/ie.wombat.jbdiff.test/testData/null.data b/bundles/ie.wombat.jbdiff.test/testData/null.data new file mode 100644 index 000000000..e69de29bb --- /dev/null +++ b/bundles/ie.wombat.jbdiff.test/testData/null.data diff --git a/bundles/ie.wombat.jbdiff.test/testData/one.data b/bundles/ie.wombat.jbdiff.test/testData/one.data new file mode 100644 index 000000000..56a6051ca --- /dev/null +++ b/bundles/ie.wombat.jbdiff.test/testData/one.data @@ -0,0 +1 @@ +1
\ No newline at end of file diff --git a/bundles/ie.wombat.jbdiff.test/testData/oneXhundredX.data b/bundles/ie.wombat.jbdiff.test/testData/oneXhundredX.data new file mode 100644 index 000000000..bb1077fd5 --- /dev/null +++ b/bundles/ie.wombat.jbdiff.test/testData/oneXhundredX.data @@ -0,0 +1 @@ +0123456789X0123456789X0123456789X0123456789X0123456789X0123456789X0123456789X0123456789X0123456789X0123456789X
\ No newline at end of file diff --git a/bundles/ie.wombat.jbdiff.test/testData/onehundred.data b/bundles/ie.wombat.jbdiff.test/testData/onehundred.data new file mode 100644 index 000000000..edd4e96b7 --- /dev/null +++ b/bundles/ie.wombat.jbdiff.test/testData/onehundred.data @@ -0,0 +1 @@ +0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
\ No newline at end of file diff --git a/bundles/ie.wombat.jbdiff.test/testData/onehundredX.data b/bundles/ie.wombat.jbdiff.test/testData/onehundredX.data new file mode 100644 index 000000000..cb96be8dd --- /dev/null +++ b/bundles/ie.wombat.jbdiff.test/testData/onehundredX.data @@ -0,0 +1 @@ +012345678901234567890123456789012345678901234567890X234567890123456789012345678901234567890123456789
\ No newline at end of file diff --git a/bundles/ie.wombat.jbdiff.test/testData/org.eclipse.pde.core_3.2.jar b/bundles/ie.wombat.jbdiff.test/testData/org.eclipse.pde.core_3.2.jar Binary files differnew file mode 100644 index 000000000..f772f865e --- /dev/null +++ b/bundles/ie.wombat.jbdiff.test/testData/org.eclipse.pde.core_3.2.jar diff --git a/bundles/ie.wombat.jbdiff.test/testData/org.eclipse.pde.core_3.3.jar b/bundles/ie.wombat.jbdiff.test/testData/org.eclipse.pde.core_3.3.jar Binary files differnew file mode 100644 index 000000000..a78ea76fa --- /dev/null +++ b/bundles/ie.wombat.jbdiff.test/testData/org.eclipse.pde.core_3.3.jar |