/* * create a container that all threads can use */ private long commonContainer() throws T_Fail { ContextManager cm1 = contextService.newContextManager(); contextService.setCurrentContextManager(cm1); long cid; try { Transaction t = t_util.t_startTransaction(); cid = t_util.t_addContainer(t, 0); t_util.t_commit(t); t.close(); } catch (StandardException se) { cm1.cleanupOnError(se); throw T_Fail.exceptionFail(se); } finally { contextService.resetCurrentContextManager(cm1); } return cid; }
/** * Run the tests * * @exception T_Fail Unexpected behaviour from the API */ protected void setupTest() throws T_Fail { String rollbackOff = PropertyUtil.getSystemProperty(TEST_ROLLBACK_OFF); testRollback = !Boolean.valueOf(rollbackOff).booleanValue(); // don't automatic boot this service if it gets left around if (startParams == null) { startParams = new Properties(); } startParams.put(Property.NO_AUTO_BOOT, Boolean.TRUE.toString()); // remove the service directory to ensure a clean run startParams.put(Property.DELETE_ON_CREATE, Boolean.TRUE.toString()); // see if we are testing encryption startParams = T_Util.setEncryptionParam(startParams); try { factory = (RawStoreFactory) Monitor.createPersistentService( getModuleToTestProtocolName(), testService, startParams); if (factory == null) { throw T_Fail.testFailMsg(getModuleToTestProtocolName() + " service not started."); } lf = factory.getLockFactory(); if (lf == null) { throw T_Fail.testFailMsg("LockFactory.MODULE not found"); } } catch (StandardException mse) { throw T_Fail.exceptionFail(mse); } t_util = new T_Util(factory, lf, contextService); commonContainer = commonContainer(); return; }
/* * 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); }