Revision: 1587 http://ogsa-dai.svn.sourceforge.net/ogsa-dai/?rev=1587&view=rev Author: charaka1 Date: 2010-12-16 15:43:28 +0000 (Thu, 16 Dec 2010) Log Message: ----------- Fixed some of the unit tests for ByteArraysToResultset - work in progress. Modified Paths: -------------- ogsa-dai/trunk/extensions/relational/client/src/test/unit/java/uk/org/ogsadai/client/toolkit/activities/transform/ByteArraysToResultSetTest.java Modified: ogsa-dai/trunk/extensions/relational/client/src/test/unit/java/uk/org/ogsadai/client/toolkit/activities/transform/ByteArraysToResultSetTest.java =================================================================== --- ogsa-dai/trunk/extensions/relational/client/src/test/unit/java/uk/org/ogsadai/client/toolkit/activities/transform/ByteArraysToResultSetTest.java 2010-12-16 15:36:38 UTC (rev 1586) +++ ogsa-dai/trunk/extensions/relational/client/src/test/unit/java/uk/org/ogsadai/client/toolkit/activities/transform/ByteArraysToResultSetTest.java 2010-12-16 15:43:28 UTC (rev 1587) @@ -18,6 +18,7 @@ import java.io.DataInputStream; import java.io.DataOutputStream; +import java.io.IOException; import java.io.PipedInputStream; import java.io.PipedOutputStream; import java.sql.ResultSet; @@ -37,6 +38,9 @@ /** Copyright statement. */ private static final String COPYRIGHT_NOTICE = "Copyright (c) The University of Edinburgh, 2007-2009."; + + PipedOutputStream mOut = null; + DataOutputStream mDataOut = null; public ByteArraysToResultSetTest(String name) { super(name); @@ -44,6 +48,9 @@ protected void setUp() throws Exception { super.setUp(); + + mOut = new PipedOutputStream(); + mDataOut = new DataOutputStream(mOut); } protected void tearDown() throws Exception { @@ -52,95 +59,157 @@ public void testStringTypes() throws Exception { -// String[] col1 = { "1", "2", "3", "4", "5", "6", "7", "8", "9" }; -// char[] col2 = { (char) 1, (char) 2, (char) 3, (char) 4, (char) 5, -// (char) 6, (char) 7, (char) 8, (char) 9 }; -// -// // Create an InputStream representing some metadata and corresponding -// // set of rows. -// PipedOutputStream out = new PipedOutputStream(); -// PipedInputStream in = new PipedInputStream(out); -// -// DataOutputStream dataOut = new DataOutputStream(out); -// DataInputStream dataIn = new DataInputStream(in); -// -// // Create serialisers -// ObjectSerialiser intSerialiser = ObjectSerialiserFactory -// .createObjectSerialiser(TupleTypes._INT); -// ObjectSerialiser stringSerialiser = ObjectSerialiserFactory -// .createObjectSerialiser(TupleTypes._STRING); -// ObjectSerialiser charSerialiser = ObjectSerialiserFactory -// .createObjectSerialiser(TupleTypes._CHAR); -// -// // Number of columns -// intSerialiser.writeObject(dataOut, 2); -// -// // Metadata for 1st column -// // Column name -// stringSerialiser.writeObject(dataOut, "A"); -// // Table name -// stringSerialiser.writeObject(dataOut, "TestTable"); -// // Type -// intSerialiser.writeObject(dataOut, Types.VARCHAR); -// // write id - an arbitrary value is set -// stringSerialiser.writeObject(dataOut, "991"); -// // uri -// stringSerialiser.writeObject(dataOut, "http://www.someuri.com"); -// // precision -// intSerialiser.writeObject(dataOut, 0); -// // nullable -// intSerialiser.writeObject(dataOut, 0); -// // display size -// intSerialiser.writeObject(dataOut, 0); -// -// // Metadata for 2nd column -// stringSerialiser.writeObject(dataOut, "B"); -// stringSerialiser.writeObject(dataOut, "TestTable"); -// intSerialiser.writeObject(dataOut, Types.CHAR); -// stringSerialiser.writeObject(dataOut, "992"); -// stringSerialiser.writeObject(dataOut, "http://www.someuri.com"); -// intSerialiser.writeObject(dataOut, 0); -// intSerialiser.writeObject(dataOut, 0); -// intSerialiser.writeObject(dataOut, 0); -// -// // Pack data -// -// // data for 1st row -// stringSerialiser.writeObject(dataOut, col1[0]); -// charSerialiser.writeObject(dataOut, col2[0]); -// + String[] col1 = { "1", "2", "3", "4", "5", "6", "7", "8", "9" }; + char[] col2 = { (char) 1, (char) 2, (char) 3, (char) 4, (char) 5, + (char) 6, (char) 7, (char) 8, (char) 9 }; + + // Create an InputStream representing some metadata and corresponding + // set of rows. + //PipedOutputStream out = new PipedOutputStream(); + PipedInputStream in = new PipedInputStream(mOut); + + //DataOutputStream dataOut = new DataOutputStream(out); + DataInputStream dataIn = new DataInputStream(in); + + // Create serialisers + //ObjectSerialiser intSerialiser = ObjectSerialiserFactory + // .createObjectSerialiser(TupleTypes._INT); + //ObjectSerialiser stringSerialiser = ObjectSerialiserFactory + // .createObjectSerialiser(TupleTypes._STRING); + //ObjectSerialiser charSerialiser = ObjectSerialiserFactory + // .createObjectSerialiser(TupleTypes._CHAR); + + // Number of columns + //intSerialiser.writeObject(dataOut, 2); + mDataOut.writeInt(2); + + // Metadata for 1st column + // Column name + //stringSerialiser.writeObject(mDataOut, "A"); + writeAsString("A"); + + // Table name + //stringSerialiser.writeObject(mDataOut, "TestTable"); + writeAsString("TestTable"); + + // Type + //intSerialiser.writeObject(mDataOut, Types.VARCHAR); + mDataOut.writeInt(TupleTypes._STRING); + + // write id - an arbitrary value is set + //stringSerialiser.writeObject(mDataOut, "991"); + writeAsString("991"); + + // uri + //stringSerialiser.writeObject(mDataOut, "http://www.someuri.com"); + writeAsString("http://www.someuri.com"); + + // precision + //intSerialiser.writeObject(mDataOut, 0); + mDataOut.writeInt(0); + + // nullable + //intSerialiser.writeObject(mDataOut, 0); + mDataOut.writeInt(0); + + // display size + //intSerialiser.writeObject(mDataOut, 0); + mDataOut.writeInt(0); + + // Metadata for 2nd column + //stringSerialiser.writeObject(dataOut, "B"); + writeAsString("B"); + //stringSerialiser.writeObject(dataOut, "TestTable"); + writeAsString("TestTable"); + //intSerialiser.writeObject(dataOut, Types.CHAR); + mDataOut.writeInt(TupleTypes._CHAR); + //stringSerialiser.writeObject(dataOut, "992"); + writeAsString("992"); + //stringSerialiser.writeObject(dataOut, "http://www.someuri.com"); + writeAsString("http://www.someuri.com"); + //intSerialiser.writeObject(dataOut, 0); + mDataOut.writeInt(0); + //intSerialiser.writeObject(dataOut, 0); + mDataOut.writeInt(0); + //intSerialiser.writeObject(dataOut, 0); + mDataOut.writeInt(0); + + // Pack data + + // data for 1st row + mDataOut.writeBoolean(false); + mDataOut.writeUTF(col1[0]); + + mDataOut.writeBoolean(false); + mDataOut.writeChar(col2[0]); + + + // data for 2nd row + mDataOut.writeBoolean(false); + mDataOut.writeUTF(col1[1]); + + mDataOut.writeBoolean(false); + mDataOut.writeChar(col2[1]); + + + // data for 3rd row + mDataOut.writeBoolean(false); + mDataOut.writeUTF(col1[2]); + + mDataOut.writeBoolean(false); + mDataOut.writeChar(col2[2]); + // // data for 2nd row -// stringSerialiser.writeObject(dataOut, col1[1]); -// charSerialiser.writeObject(dataOut, col2[1]); -// -// // Make sure data output stream pipe is closed - otherwise converter -// // will hang. -// // Note, data ouput stream is the sending end whilst data input stream -// // is the -// // receiving end. -// dataOut.close(); -// -// // submit the inputBytes -// ByteArraysToResultSet converter = new ByteArraysToResultSet(dataIn); -// -// // Get ResultSet from the converter -// // What format should the bytes be passed in? byte[]? -// ResultSet actualResultSet = converter.getResultSet(); -// -// int i = 0; -// while (actualResultSet.next()) { -// String stringVal = actualResultSet.getString(1); -// assertEquals(col1[i], stringVal); -// -// //FIXME no character retrieval available? -//// char charVal = actualResultSet.getCharacterStream(2); -//// assertEquals(col1[i], stringVal); -// -// i++; +// //stringSerialiser.writeObject(dataOut, col1[1]); +// //writeAsString(col1[1]); +// mDataOut.writeBoolean(false); +// mDataOut.writeUTF(col1[1]); +// +// //charSerialiser.writeObject(dataOut, col2[1]); +// //mDataOut.writeChar(col2[1]); +// mDataOut.writeBoolean(false); +// mDataOut.writeChar(col2[1]); + + // Make sure data output stream pipe is closed - otherwise converter + // will hang. + // Note, data output stream is the sending end whilst data input stream + // is the receiving end. + mDataOut.close(); + + // submit the inputBytes + ByteArraysToResultSet converter = new ByteArraysToResultSet(dataIn); + + // Get ResultSet from the converter + // What format should the bytes be passed in? byte[]? + ResultSet actualResultSet = converter.getResultSet(); + + int i = 0; + while (actualResultSet.next()) { + String stringVal = actualResultSet.getString(1); + assertEquals(col1[i], stringVal); + + //FIXME no character retrieval available? +// char charVal = actualResultSet.getCharacterStream(2); +// assertEquals(col2[i], stringVal); + // System.out.println("Compared row: " + (i + 1)); -// } + i++; + } } + private void writeAsString(Object value) throws IOException + { + if (value == null) + { + mDataOut.writeBoolean(false); + } + else + { + mDataOut.writeBoolean(true); + mDataOut.writeUTF(value.toString()); + } + } + public void testTimeTypes() throws Exception { // List<ColumnMetadata> columns = new ArrayList<ColumnMetadata>(); @@ -237,68 +306,63 @@ public void testNumericTypes() throws Exception { -// int[] col1 = {1, 2, 3, 4, 5}; -// long[] col2 = {2345L, 2346L, 2347L, 2348L, 2349L}; -// float[] col3 = {0.3f, 0.5f, 0.6f, 0.7f, 0.9f}; -// double[] col4 = {.5234, .5243, .5256, .5278, .5289}; -// short[] col5 = {(short)15, (short)16, (short)17, (short)18, (short)19}; -// -// //Create an InputStream representing some metadata and corresponding -// //set of rows. -// PipedOutputStream out = new PipedOutputStream(); -// PipedInputStream in = new PipedInputStream(out); + int[] col1 = {1, 2, 3, 4, 5}; + long[] col2 = {2345L, 2346L, 2347L, 2348L, 2349L}; + float[] col3 = {0.3f, 0.5f, 0.6f, 0.7f, 0.9f}; + double[] col4 = {.5234, .5243, .5256, .5278, .5289}; + short[] col5 = {(short)15, (short)16, (short)17, (short)18, (short)19}; + + // Create an InputStream representing some metadata and corresponding + // set of rows. + //PipedOutputStream out = new PipedOutputStream(); + PipedInputStream in = new PipedInputStream(mOut); + + //DataOutputStream dataOut = new DataOutputStream(out); + DataInputStream dataIn = new DataInputStream(in); + + // Number of columns + //mDataOut.writeInt(5); + mDataOut.writeInt(3); + + // Metadata for 1st column + // Column name + writeAsString("A"); + // Table name + writeAsString("TestTable"); + // Type + mDataOut.writeInt(TupleTypes._INT); + // write id - an arbitrary value is set + writeAsString("991"); + // uri + writeAsString("http://www.someuri.com"); + // precision + mDataOut.writeInt(0); + // nullable + mDataOut.writeInt(0); + // display size + mDataOut.writeInt(0); + + // Metadata for 2nd column + //stringSerialiser.writeObject(dataOut, "B"); + writeAsString("B"); + writeAsString("TestTable"); + mDataOut.writeInt(TupleTypes._LONG); + writeAsString("992"); + writeAsString("http://www.someuri.com"); + mDataOut.writeInt(0); + mDataOut.writeInt(0); + mDataOut.writeInt(0); + +// // Metadata for 3rd column + writeAsString("C"); + writeAsString("TestTable"); + mDataOut.writeInt(TupleTypes._FLOAT); + writeAsString("993"); + writeAsString("http://www.someuri.com"); + mDataOut.writeInt(0); + mDataOut.writeInt(0); + mDataOut.writeInt(0); // -// DataOutputStream dataOut = new DataOutputStream(out); -// DataInputStream dataIn = new DataInputStream(in); -// -// //Create metadata -// //TODO: insert a ControlBlock.NO_MORE_DATA to the InputStream -// -// //Create serialisers -// ObjectSerialiser intSerialiser = -// ObjectSerialiserFactory.createObjectSerialiser(TupleTypes._INT); -// ObjectSerialiser stringSerialiser = -// ObjectSerialiserFactory.createObjectSerialiser(TupleTypes._STRING); -// ObjectSerialiser longSerialiser = -// ObjectSerialiserFactory.createObjectSerialiser(TupleTypes._LONG); -// ObjectSerialiser floatSerialiser = -// ObjectSerialiserFactory.createObjectSerialiser(TupleTypes._FLOAT); -// ObjectSerialiser doubleSerialiser = -// ObjectSerialiserFactory.createObjectSerialiser(TupleTypes._DOUBLE); -// ObjectSerialiser shortSerialiser = -// ObjectSerialiserFactory.createObjectSerialiser(TupleTypes._SHORT); -// -// //Number of columns -// intSerialiser.writeObject(dataOut, 5); -// -// // Metadata for 1st column -// //Column name -// stringSerialiser.writeObject(dataOut, "A"); -// //Table name -// stringSerialiser.writeObject(dataOut, "TestTable"); -// //Type -// intSerialiser.writeObject(dataOut, Types.INTEGER); -// //write id - an arbitrary value is set -// stringSerialiser.writeObject(dataOut, "991"); -// //uri -// stringSerialiser.writeObject(dataOut, "http://www.someuri.com"); -// //precision -// intSerialiser.writeObject(dataOut, 0); -// //nullable -// intSerialiser.writeObject(dataOut, 0); -// //display size -// intSerialiser.writeObject(dataOut, 0); -// -// // Metadata for 2nd column -// stringSerialiser.writeObject(dataOut, "B"); -// stringSerialiser.writeObject(dataOut, "TestTable"); -// intSerialiser.writeObject(dataOut, Types.BIGINT); -// stringSerialiser.writeObject(dataOut, "992"); -// stringSerialiser.writeObject(dataOut, "http://www.someuri.com"); -// intSerialiser.writeObject(dataOut, 0); -// intSerialiser.writeObject(dataOut, 0); -// intSerialiser.writeObject(dataOut, 0); -// // // Metadata for 3rd column // stringSerialiser.writeObject(dataOut, "C"); // stringSerialiser.writeObject(dataOut, "TestTable"); @@ -337,8 +401,34 @@ // floatSerialiser.writeObject(dataOut, col3[0]); // doubleSerialiser.writeObject(dataOut, col4[0]); // shortSerialiser.writeObject(dataOut, col5[0]); -// -// //data for 2nd row + + // data for 1st row + //Note that "false" below indicate that value is not Null. + mDataOut.writeBoolean(false); + mDataOut.writeInt(col1[0]); + mDataOut.writeBoolean(false); + mDataOut.writeLong(col2[0]); + mDataOut.writeBoolean(false); + mDataOut.writeDouble(col3[0]); + //FIXME Only work if converted to Double. This is because the OD type mapper + // maps type Float to Double so the client side converter uses the Double Desrialiser. + + //data for 2nd row + mDataOut.writeBoolean(false); + mDataOut.writeInt(col1[1]); + mDataOut.writeBoolean(false); + mDataOut.writeLong(col2[1]); + mDataOut.writeBoolean(false); + mDataOut.writeDouble(col3[1]); + + //data for 3rd row + mDataOut.writeBoolean(false); + mDataOut.writeInt(col1[2]); + mDataOut.writeBoolean(false); + mDataOut.writeLong(col2[2]); + mDataOut.writeBoolean(false); + mDataOut.writeDouble(col3[2]); + // intSerialiser.writeObject(dataOut, col1[1]); // longSerialiser.writeObject(dataOut, col2[1]); // floatSerialiser.writeObject(dataOut, col3[1]); @@ -355,24 +445,24 @@ // //Make sure data output stream pipe is closed - otherwise converter will hang. // //Note, data ouput stream is the sending end whilst data input stream is the // // receiving end. -// dataOut.close(); -// -// // submit the inputBytes -// ByteArraysToResultSet converter = new ByteArraysToResultSet(dataIn); -// -// // Get ResultSet from the converter -// // What format should the bytes be passed in? byte[]? -// ResultSet actualResultSet = converter.getResultSet(); -// -// int i = 0; -// while (actualResultSet.next()) -// { -// int intActualVal = actualResultSet.getInt(1); -// assertEquals(col1[i], intActualVal); -// long longActualValue = actualResultSet.getLong(2); -// assertEquals(col2[i], longActualValue); -// float floatActualValue = actualResultSet.getFloat(3); -// assertEquals(col3[i], floatActualValue); + mDataOut.close(); + + // submit the inputBytes + ByteArraysToResultSet converter = new ByteArraysToResultSet(dataIn); + + // Get ResultSet from the converter + // What format should the bytes be passed in? byte[]? + ResultSet actualResultSet = converter.getResultSet(); + + int i = 0; + while (actualResultSet.next()) + { + int intActualVal = actualResultSet.getInt(1); + assertEquals(col1[i], intActualVal); + long longActualValue = actualResultSet.getLong(2); + assertEquals(col2[i], longActualValue); + float floatActualValue = actualResultSet.getFloat(3); + assertEquals(col3[i], floatActualValue); // double doubleActualValue = actualResultSet.getDouble(4); // assertEquals(col4[i], doubleActualValue); // @@ -380,8 +470,9 @@ // short shortActualValue = actualResultSet.getShort(5); // // assertEquals(col5[i], shortActualValue); -// i++; -// } +// System.out.println("Compared row: " + (i + 1)); + i++; + } } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |