You are viewing a plain text version of this content. The canonical link for it is here.
Posted to ddlutils-dev@db.apache.org by to...@apache.org on 2008/08/11 07:40:21 UTC
svn commit: r684637 - in
/db/ddlutils/trunk/src/test/java/org/apache/ddlutils: RunAllTests.java
task/TestWriteDataToDatabaseCommand.java
Author: tomdz
Date: Sun Aug 10 22:40:21 2008
New Revision: 684637
URL: http://svn.apache.org/viewvc?rev=684637&view=rev
Log:
Added test for the writeDataToDatabase Ant task
Added:
db/ddlutils/trunk/src/test/java/org/apache/ddlutils/task/TestWriteDataToDatabaseCommand.java
Modified:
db/ddlutils/trunk/src/test/java/org/apache/ddlutils/RunAllTests.java
Modified: db/ddlutils/trunk/src/test/java/org/apache/ddlutils/RunAllTests.java
URL: http://svn.apache.org/viewvc/db/ddlutils/trunk/src/test/java/org/apache/ddlutils/RunAllTests.java?rev=684637&r1=684636&r2=684637&view=diff
==============================================================================
--- db/ddlutils/trunk/src/test/java/org/apache/ddlutils/RunAllTests.java (original)
+++ db/ddlutils/trunk/src/test/java/org/apache/ddlutils/RunAllTests.java Sun Aug 10 22:40:21 2008
@@ -59,6 +59,7 @@
import org.apache.ddlutils.platform.TestSqlBuilder;
import org.apache.ddlutils.platform.TestSybasePlatform;
import org.apache.ddlutils.task.TestDropTablesCommand;
+import org.apache.ddlutils.task.TestWriteDataToDatabaseCommand;
import org.apache.ddlutils.task.TestWriteSchemaToFileCommand;
import junit.framework.Test;
@@ -144,6 +145,7 @@
suite.addTest(TestMisc.suite());
suite.addTest(TestDropTablesCommand.suite());
suite.addTest(TestWriteSchemaToFileCommand.suite());
+ suite.addTest(TestWriteDataToDatabaseCommand.suite());
return suite;
}
Added: db/ddlutils/trunk/src/test/java/org/apache/ddlutils/task/TestWriteDataToDatabaseCommand.java
URL: http://svn.apache.org/viewvc/db/ddlutils/trunk/src/test/java/org/apache/ddlutils/task/TestWriteDataToDatabaseCommand.java?rev=684637&view=auto
==============================================================================
--- db/ddlutils/trunk/src/test/java/org/apache/ddlutils/task/TestWriteDataToDatabaseCommand.java (added)
+++ db/ddlutils/trunk/src/test/java/org/apache/ddlutils/task/TestWriteDataToDatabaseCommand.java Sun Aug 10 22:40:21 2008
@@ -0,0 +1,151 @@
+package org.apache.ddlutils.task;
+
+import java.io.File;
+import java.io.FileWriter;
+import java.io.IOException;
+import java.util.List;
+
+import junit.framework.Test;
+
+import org.apache.ddlutils.io.DatabaseIO;
+
+/**
+ * Tests the writeDataToDatabase sub task.
+ *
+ * @version $Revision: $
+ */
+public class TestWriteDataToDatabaseCommand extends TestTaskBase
+{
+ /**
+ * Parameterized test case pattern.
+ *
+ * @return The tests
+ */
+ public static Test suite() throws Exception
+ {
+ return getTests(TestWriteDataToDatabaseCommand.class);
+ }
+
+ /**
+ * Adds the writeDataToDatabase sub task to the given task, executes it, and checks its output.
+ *
+ * @param task The task
+ * @param dataXml The data xml to write
+ * @param useBatchMode Whether to use batch mode for inserting the data
+ * @param ensureFkOrder Whether to ensure foreign key order
+ */
+ private void runTask(DatabaseToDdlTask task, String dataXml, boolean useBatchMode, boolean ensureFkOrder) throws IOException
+ {
+ WriteDataToDatabaseCommand subTask = new WriteDataToDatabaseCommand();
+ File tmpFile = File.createTempFile("schema", ".xml");
+ FileWriter writer = null;
+
+ try
+ {
+ writer = new FileWriter(tmpFile);
+
+ writer.write(dataXml);
+ writer.close();
+
+ subTask.setDataFile(tmpFile);
+ subTask.setBatchSize(100);
+ subTask.setFailOnError(true);
+ subTask.setUseBatchMode(useBatchMode);
+ subTask.setEnsureForeignKeyOrder(ensureFkOrder);
+ task.setUseDelimitedSqlIdentifiers(getPlatform().isDelimitedIdentifierModeOn());
+ task.addWriteDataToDatabase(subTask);
+ task.setModelName("roundtriptest");
+ task.execute();
+ }
+ finally
+ {
+ if (writer != null)
+ {
+ try
+ {
+ writer.close();
+ }
+ catch (IOException ex)
+ {
+ getLog().error("Could not close the writer for the temporary file " + tmpFile.getAbsolutePath(), ex);
+ }
+ }
+ if (!tmpFile.delete())
+ {
+ getLog().warn("Could not delete temporary file " + tmpFile.getAbsolutePath());
+ }
+ }
+ }
+
+ public void testSimple() throws Exception
+ {
+ final String modelXml =
+ "<?xml version='1.0' encoding='ISO-8859-1'?>\n"+
+ "<database xmlns='" + DatabaseIO.DDLUTILS_NAMESPACE + "' name='roundtriptest'>\n"+
+ " <table name='roundtrip'>\n"+
+ " <column name='pk' type='VARCHAR' size='32' primaryKey='true' required='true'/>\n"+
+ " <column name='avalue' type='INTEGER'/>\n"+
+ " </table>\n"+
+ "</database>";
+ final String dataXml =
+ "<?xml version='1.0' encoding='ISO-8859-1'?>\n"+
+ "<data>\n" +
+ " <roundtrip pk='val1' avalue='1'/>\n" +
+ " <roundtrip pk='val2' avalue='2'/>\n" +
+ " <roundtrip pk='val3' avalue='3'/>\n" +
+ "</data>";
+
+ createDatabase(modelXml);
+
+ runTask(getDatabaseToDdlTaskInstance(), dataXml, false, false);
+
+ List beans = getRows("roundtrip");
+
+ assertEquals(3, beans.size());
+ assertEquals((Object)"val1", beans.get(0), "pk");
+ assertEquals(new Integer(1), beans.get(0), "avalue");
+ assertEquals((Object)"val2", beans.get(1), "pk");
+ assertEquals(new Integer(2), beans.get(1), "avalue");
+ assertEquals((Object)"val3", beans.get(2), "pk");
+ assertEquals(new Integer(3), beans.get(2), "avalue");
+ }
+
+ public void testBatchMode() throws Exception
+ {
+ final String modelXml =
+ "<?xml version='1.0' encoding='ISO-8859-1'?>\n"+
+ "<database xmlns='" + DatabaseIO.DDLUTILS_NAMESPACE + "' name='roundtriptest'>\n"+
+ " <table name='roundtrip'>\n"+
+ " <column name='pk' type='VARCHAR' size='32' primaryKey='true' required='true'/>\n"+
+ " <column name='avalue' type='INTEGER'/>\n"+
+ " </table>\n"+
+ "</database>";
+
+ StringBuffer dataXml = new StringBuffer();
+ final int numObjs = 2000;
+
+ dataXml.append("<?xml version='1.0' encoding='ISO-8859-1'?>\n<data>");
+ for (int idx = 0; idx < numObjs; idx++)
+ {
+ dataXml.append(" <roundtrip pk='val");
+ dataXml.append(idx);
+ dataXml.append("' avalue='");
+ dataXml.append(idx);
+ dataXml.append("'/>\n");
+ }
+ dataXml.append("</data>");
+
+ createDatabase(modelXml);
+
+ runTask(getDatabaseToDdlTaskInstance(), dataXml.toString(), true, false);
+
+ List beans = getRows("roundtrip");
+
+ assertEquals(numObjs, beans.size());
+ for (int idx = 0; idx < numObjs; idx++)
+ {
+ assertEquals((Object)("val" + idx), beans.get(idx), "pk");
+ assertEquals(new Integer(idx), beans.get(idx), "avalue");
+ }
+ }
+}