// this test test the rowSource over head. // when param set to 1, also gets the overhead for writeExternal for Storables protected void SF002(int param) throws StandardException, T_Fail { T_RowSource rowSource = new T_RowSource(500000, 13, 2, false, null); DynamicByteArrayOutputStream out = new DynamicByteArrayOutputStream(16384); FormatIdOutputStream logicalDataOut = new FormatIdOutputStream(out); long startms = System.currentTimeMillis(); System.out.println("starting rowSource test, time: " + startms); try { FormatableBitSet validColumns = rowSource.getValidColumns(); int numberFields = 0; if (validColumns != null) { for (int i = validColumns.getLength() - 1; i >= 0; i--) { if (validColumns.get(i)) { numberFields = i + 1; break; } } } DataValueDescriptor[] row = rowSource.getNextRowFromRowSource().getRowArray(); while (row != null) { if (SanityManager.DEBUG) { SanityManager.ASSERT(row != null, "RowSource returned null"); } int arrayPosition = -1; for (int i = 0; i < numberFields; i++) { // write each column out if (validColumns.get(i)) { arrayPosition++; DataValueDescriptor column = row[arrayPosition]; if (param == 1) { try { Storable sColumn = (Storable) column; if (!sColumn.isNull()) { sColumn.writeExternal(logicalDataOut); out.reset(); } } catch (IOException ioe) { throw T_Fail.exceptionFail(ioe); } } } } row = rowSource.getNextRowFromRowSource().getRowArray(); } } finally { } long endms = System.currentTimeMillis(); long time2 = endms - startms; if (param != 1) System.out.println("ended rowSource test, time: " + endms + ", time spent = " + time2); else System.out.println( "------ writeExternal called....\n ended rowSource test, time: " + endms + ", time spent = " + time2); PASS("SF002"); }
/* * create a stream container load with rowCount number of rows. * fetch it all back, and check to make sure all rows are correct. */ protected void SF001(int rowCount, int columnCount, int columnType, boolean forceAbort) throws StandardException, T_Fail { Transaction t = t_util.t_startTransaction(); int segmentId = StreamContainerHandle.TEMPORARY_SEGMENT; Properties properties = new Properties(); properties.put(RawStoreFactory.STREAM_FILE_BUFFER_SIZE_PARAMETER, "16384"); // create row source T_RowSource testRowSource = null; if (forceAbort) testRowSource = new T_RowSource(rowCount, columnCount, columnType, forceAbort, t); else testRowSource = new T_RowSource(rowCount, columnCount, columnType, forceAbort, null); long startms = System.currentTimeMillis(); long containerId = t.addAndLoadStreamContainer(segmentId, properties, testRowSource, null); long endms = System.currentTimeMillis(); long time = endms - startms; REPORT("SF001 - write: " + time + "ms"); // open the container, and start fetching... StreamContainerHandle scHandle = t.openStreamContainer(segmentId, containerId, false); // set up the template row DataValueDescriptor template[] = null; template = testRowSource.getTemplate(); DataValueDescriptor readRow[] = null; readRow = testRowSource.getTemplate(); segmentId = StreamContainerHandle.TEMPORARY_SEGMENT; int fetchCount = 0; startms = System.currentTimeMillis(); ValueRow vReadRow = new ValueRow(readRow.length); while (scHandle.fetchNext(vReadRow)) { fetchCount++; // check to make sure the row is what we inserted. // this depends on T_RowSource generate identical rows. if (!vReadRow.toString().equals(template.toString())) throw T_Fail.testFailMsg( "Record's value incorrect, expected :" + template.toString() + ": - got :" + vReadRow.toString()); } endms = System.currentTimeMillis(); time = endms - startms; // check to make sure we got the right number of rows. if (fetchCount != rowCount) throw T_Fail.testFailMsg( "incorrect number of row fetched. Expecting " + rowCount + " rows, got " + fetchCount + ", rows instead."); REPORT("SF001 - fetch: " + time + "ms"); scHandle.close(); t_util.t_commit(t); t.close(); PASS( "SF001, rowCount = " + rowCount + ", columnCount = " + columnCount + ", clumn type: " + columnType); }