Inheritance diagram for LcsRowScanExecStreamTest:
Public Member Functions | |
LcsRowScanExecStreamTest () | |
void | testCaseSetUp () |
Equivalent to JUnit TestCase.setUp; this is called before each test case method is invoked. | |
void | testCaseTearDown () |
Equivalent to JUnit TestCase.tearDown; this is called after each test case method is invoked. | |
void | testScans () |
void | testScanOnEmptyCluster () |
Create an empty cluster with 1 column. | |
void | testScanPastEndOfCluster () |
Create a cluster with only a single row. | |
void | testCompressedFiltering () |
void | testBernoulliSampling () |
Configure Bernoulli sampling, with a specific seed and verify that the expected number of rows are returned. | |
void | testSystemSampling () |
Configure system sampling, with a specific clump size and verify that the expected number of rows are returned. | |
virtual void | openStorage (DeviceMode openMode) |
virtual void | openSegmentStorage (DeviceMode openMode) |
virtual void | openRandomSegment () |
SharedSegment | createLinearDeviceSegment (DeviceId deviceId, uint nPages) |
void | closeLinearSegment () |
void | closeRandomSegment () |
void | closeVersionedRandomSegment () |
void | closeSnapshotRandomSegment () |
virtual void | closeStorage () |
Cache & | getCache () |
virtual SharedCache | newCache () |
SharedRandomAccessDevice | openDevice (std::string devName, DeviceMode openMode, uint nDevicePages, DeviceId deviceId) |
void | closeDevice (DeviceId deviceId, SharedRandomAccessDevice &pDevice) |
TestSuite * | releaseTestSuite () |
void | beforeTestCase (std::string testCaseName) |
void | afterTestCase (std::string testCaseName) |
virtual void | notifyTrace (std::string source, TraceLevel level, std::string message) |
Receives notification when a trace event occurs. | |
virtual TraceLevel | getSourceTraceLevel (std::string source) |
Gets the level at which a particular source should be traced. | |
Static Public Member Functions | |
static void | readParams (int argc, char **argv) |
Parses the command line. | |
Static Public Attributes | |
static ParamName | paramTestSuiteName |
static ParamName | paramTraceFileName |
static ParamName | paramDictionaryFileName |
static ParamName | paramTraceLevel |
static ParamName | paramStatsFileName |
static ParamName | paramTraceStdout |
static ParamName | paramDegreeOfParallelism |
static ConfigMap | configMap |
Configuration parameters. | |
Protected Types | |
enum | VictimPolicy { victimTwoQ, victimLRU, victimRandom } |
The available victim policy implementations. More... | |
Protected Member Functions | |
void | loadClusters (uint nRows, uint nCols, uint nClusters, bool compressed) |
Serially loads nClusters, each cluster containing nCols and nRows. | |
void | loadOneCluster (uint nRows, uint nCols, int colStart, BTreeDescriptor &bTreeDescriptor, bool compressed) |
Loads a single cluster with nCols columns and nRows rows. | |
void | testScanCols (uint nRows, uint nCols, uint nClusters, TupleProjection proj, uint skipRows, uint expectedNumRows) |
Reads rows from clusters. | |
void | testFilterCols (uint nRows, uint nCols, uint nClusters, TupleProjection proj, uint skipRows, uint expectedNumRows, bool compressed) |
Filter rows from clusters. | |
void | setSearchKey (char lowerDirective, char upperDirective, uint64_t lowerVal, uint64_t upperVal, PBuffer inputBuf, uint &offset, TupleAccessor &inputTupleAccessor, TupleData &inputTupleData) |
void | testSampleScanCols (uint nRows, uint nRowsActual, uint nCols, uint nClusters, TupleProjection proj, uint skipRows, TableSamplingMode mode, float rate, int seed, uint clumps, uint expectedNumRows) |
Sample rows from clusters. | |
int | generateBitmaps (uint nRows, uint skipRows, TupleDescriptor const &bitmapTupleDesc, PBuffer pBuf) |
Generate bitmaps to pass as input into row scan exec stream. | |
void | produceEntry (LbmEntry &lbmEntry, TupleAccessor &bitmapTupleAccessor, PBuffer pBuf, int &bufSize) |
SharedExecStream | prepareSourceGraph (ExecStreamEmbryo &sourceStreamEmbryo) |
Defines and prepares a graph consisting of one source stream. | |
SharedExecStream | prepareTransformGraph (ExecStreamEmbryo &sourceStreamEmbryo, ExecStreamEmbryo &transformStreamEmbryo) |
Defines and prepares a graph consisting of one source stream and one transform stream. | |
SharedExecStream | prepareTransformGraph (ExecStreamEmbryo &sourceStreamEmbryo, std::vector< ExecStreamEmbryo > &transforms) |
Defines and prepares a graph consisting of one source stream and one or multiple transform streams. | |
SharedExecStream | prepareConfluenceGraph (ExecStreamEmbryo &sourceStreamEmbryo1, ExecStreamEmbryo &sourceStreamEmbryo2, ExecStreamEmbryo &confluenceStreamEmbryo) |
Defines and prepares a graph consisting of two source streams and one confluence stream. | |
SharedExecStream | prepareConfluenceGraph (std::vector< ExecStreamEmbryo > &sourceStreamEmbryos, ExecStreamEmbryo &confluenceStreamEmbryo) |
Defines and prepares a graph consisting of a list of source streams and one confluence stream. | |
SharedExecStream | prepareConfluenceGraph (std::vector< std::vector< ExecStreamEmbryo > > &sourceStreamEmbryosList, ExecStreamEmbryo &confluenceStreamEmbryo) |
Defines and prepares a graph consisting of one or more source streams and one confluence stream. | |
SharedExecStream | prepareConfluenceTransformGraph (ExecStreamEmbryo &sourceStreamEmbryo1, ExecStreamEmbryo &sourceStreamEmbryo2, ExecStreamEmbryo &confluenceStreamEmbryo, ExecStreamEmbryo &transformStreamEmbryo) |
Defines and prepares a graph consisting of two source streams, one confluence stream, and one transform stream. | |
SharedExecStream | prepareDAG (ExecStreamEmbryo &srcStreamEmbryo, ExecStreamEmbryo &splitterStreamEmbryo, std::vector< ExecStreamEmbryo > &interStreamEmbryos, ExecStreamEmbryo &destStreamEmbryo, bool createSink=true, bool saveSrc=true) |
Defines and prepares a graph consisting of a source, a splitter, and one or more parallel transform streams which flow together into a confluence stream. | |
SharedExecStream | prepareDAG (ExecStreamEmbryo &srcStreamEmbryo, ExecStreamEmbryo &splitterStreamEmbryo, std::vector< std::vector< ExecStreamEmbryo > > &interStreamEmbryosList, ExecStreamEmbryo &destStreamEmbryo, bool createSink=true, bool saveSrc=true) |
Defines and prepares a graph consisting of a source, a splitter, and one or more parallel transform streams which flow together into a confluence stream. | |
void | verifyOutput (ExecStream &stream, uint nRowsExpected, MockProducerExecStreamGenerator &verifier, bool stopEarly=false) |
Executes the prepared stream graph and verifies that its output matches that produced by a value generator. | |
void | verifyConstantOutput (ExecStream &stream, const TupleData &expectedTuple, uint nRowsExpected) |
Executes the prepared stream graph and verifies that all output tuples matche an expected and given one. | |
void | verifyBufferedOutput (ExecStream &stream, TupleDescriptor outputTupleDesc, uint nRowsExpected, PBuffer expectedBuffer) |
Executes the prepared stream graph and verifies the resultant tuples against a set of tuples supplied in an input buffer. | |
void | resetExecStreamTest () |
Reset stream graph so multiple iterations of a method can be called within a single testcase. | |
virtual void | tearDownExecStreamTest () |
ExecStream-specific handler called from testCaseTearDown. | |
virtual SharedExecStreamGraph | newStreamGraph () |
Creates a stream graph. | |
virtual SharedExecStreamGraphEmbryo | newStreamGraphEmbryo (SharedExecStreamGraph) |
Creates an embryo for a stream graph. | |
virtual ExecStreamScheduler * | newScheduler () |
Creates a scheduler. | |
virtual ExecStreamGovernor * | newResourceGovernor (ExecStreamResourceKnobs const &knobSettings, ExecStreamResourceQuantity const &resourcesAvailable) |
Creates the resource governor. | |
void | snooze (uint nSeconds) |
Protected Attributes | |
StandardTypeDescriptorFactory | stdTypeFactory |
TupleAttributeDescriptor | attrDesc_int64 |
TupleAttributeDescriptor | attrDesc_bitmap |
TupleAttributeDescriptor | attrDesc_char1 |
uint | bitmapColSize |
vector< boost::shared_ptr< BTreeDescriptor > > | bTreeClusters |
SharedExecStreamGraph | pGraph |
SharedExecStreamGraphEmbryo | pGraphEmbryo |
SharedExecStreamScheduler | pScheduler |
SharedExecStreamGovernor | pResourceGovernor |
SharedCacheAccessor | pCacheAccessor |
SharedSegmentFactory | pSegmentFactory |
SharedSegment | pLinearSegment |
Segment supporting linear page allocation. | |
SharedSegment | pRandomSegment |
(Optional) segment supporting random page allocation. | |
SharedSegment | pVersionedRandomSegment |
(Optional) segment supporting versioned random page allocation. | |
SharedSegment | pSnapshotRandomSegment |
(Optional) segment supporting snapshot random page allocation. | |
VictimPolicy | victimPolicy |
VictimPolicy to instantiate. | |
CacheParams | cacheParams |
Parameters for cache initialization. | |
SharedCache | pCache |
Cache instance being tested. | |
SharedRandomAccessDevice | pRandomAccessDevice |
The default cached device. | |
uint | nMemPages |
Size of cache in memory pages. | |
uint | nDiskPages |
Size of device in disk pages. | |
uint | cbPageFull |
Disk page size. | |
DeviceId | dataDeviceId |
Fixed ID to assign to data device. | |
TestSuite * | pTestSuite |
Boost test suite. | |
boost::shared_ptr< TestBase > | pTestObj |
std::ofstream | traceStream |
Output file stream for tracing. | |
StrictMutex | traceMutex |
Protects traceStream. | |
std::string | testName |
Name of test. | |
TraceLevel | traceLevel |
Level at which to trace test execution. | |
FileStatsTarget | statsTarget |
Output for stats. | |
StatsTimer | statsTimer |
Timer for stats collection. | |
bool | traceStdout |
Copy trace output to stdout. | |
bool | traceFile |
Copy trace output to file. | |
TestCaseGroup | defaultTests |
TestCaseGroup | extraTests |
Static Protected Attributes | |
static const uint | NDUPS = 20 |
static const uint | DefaultCacheReservePercent = 5 |
static const uint | DefaultConcurrentStatements = 4 |
static bool | runAll |
Run all test cases, including the extra tests. | |
static std::string | runSingle |
Run only the test case of this name. |
Note that LcsClusterAppendExecStreamTest also has some tests for scans, but those only test single cluster scans
Definition at line 51 of file LcsRowScanExecStreamTest.cpp.
enum CacheTestBase::VictimPolicy [protected, inherited] |
The available victim policy implementations.
Definition at line 44 of file CacheTestBase.h.
00044 { 00045 victimTwoQ, 00046 victimLRU, 00047 victimRandom 00048 };
LcsRowScanExecStreamTest::LcsRowScanExecStreamTest | ( | ) | [inline, explicit] |
Definition at line 217 of file LcsRowScanExecStreamTest.cpp.
References testBernoulliSampling(), testCompressedFiltering(), testScanOnEmptyCluster(), testScanPastEndOfCluster(), testScans(), and testSystemSampling().
00218 { 00219 FENNEL_UNIT_TEST_CASE(LcsRowScanExecStreamTest, testScans); 00220 FENNEL_UNIT_TEST_CASE(LcsRowScanExecStreamTest, testScanOnEmptyCluster); 00221 FENNEL_UNIT_TEST_CASE( 00222 LcsRowScanExecStreamTest, testScanPastEndOfCluster); 00223 FENNEL_UNIT_TEST_CASE( 00224 LcsRowScanExecStreamTest, testCompressedFiltering); 00225 FENNEL_UNIT_TEST_CASE(LcsRowScanExecStreamTest, testBernoulliSampling); 00226 FENNEL_UNIT_TEST_CASE(LcsRowScanExecStreamTest, testSystemSampling); 00227 }
void LcsRowScanExecStreamTest::loadClusters | ( | uint | nRows, | |
uint | nCols, | |||
uint | nClusters, | |||
bool | compressed | |||
) | [protected] |
Serially loads nClusters, each cluster containing nCols and nRows.
Definition at line 240 of file LcsRowScanExecStreamTest.cpp.
References bTreeClusters, loadOneCluster(), and ExecStreamUnitTestBase::resetExecStreamTest().
Referenced by testBernoulliSampling(), testCompressedFiltering(), testScans(), and testSystemSampling().
00245 { 00246 for (uint i = 0; i < nClusters; i++) { 00247 boost::shared_ptr<BTreeDescriptor> pBTreeDesc = 00248 boost::shared_ptr<BTreeDescriptor> (new BTreeDescriptor()); 00249 bTreeClusters.push_back(pBTreeDesc); 00250 loadOneCluster( 00251 nRows, nCols, i * nCols, *(bTreeClusters[i]), compressed); 00252 resetExecStreamTest(); 00253 } 00254 }
void LcsRowScanExecStreamTest::loadOneCluster | ( | uint | nRows, | |
uint | nCols, | |||
int | colStart, | |||
BTreeDescriptor & | bTreeDescriptor, | |||
bool | compressed | |||
) | [protected] |
Loads a single cluster with nCols columns and nRows rows.
Each column will have a different sequence of values, as follows: column0 - colStart, colStart+1, ..., colStart+nRows-1 column1 - colStart+1, colStart+2, ..., colStart+nRows column2 - colStart+2, colStart+3, ..., colStart+nRows+1 ...
Definition at line 256 of file LcsRowScanExecStreamTest.cpp.
References attrDesc_int64, BTreeBuilder::createEmptyRoot(), BTreeAccessBase::getRootPageId(), ExecStreamEmbryo::getStream(), ExecStreamEmbryo::init(), LcsClusterAppendExecStreamParams::inputProj, BTreeParams::keyProj, BTreeDescriptor::keyProjection, NDUPS, MockProducerExecStreamParams::nRows, NULL_PAGE_ID, SingleOutputExecStreamParams::outputTupleDesc, BTreeDescriptor::pageOwnerId, BTreeParams::pageOwnerId, CacheTestBase::pCache, SegmentAccessor::pCacheAccessor, ExecStreamParams::pCacheAccessor, MockProducerExecStreamParams::pGenerator, SegStorageTestBase::pRandomSegment, ExecStreamUnitTestBase::prepareTransformGraph(), BTreeParams::pRootMap, SegmentAccessor::pSegment, BTreeParams::pSegment, SegStorageTestBase::pSegmentFactory, BTreeParams::rootPageId, BTreeDescriptor::rootPageId, BTreeParams::rootPageIdParamId, ExecStreamParams::scratchAccessor, BTreeDescriptor::segmentAccessor, BTreeDescriptor::segmentId, BTreeParams::segmentId, BTreeParams::tupleDesc, BTreeDescriptor::tupleDescriptor, and ExecStreamUnitTestBase::verifyOutput().
Referenced by loadClusters(), and testScanPastEndOfCluster().
00262 { 00263 MockProducerExecStreamParams mockParams; 00264 for (uint i = 0; i < nCols; i++) { 00265 mockParams.outputTupleDesc.push_back(attrDesc_int64); 00266 } 00267 mockParams.nRows = nRows; 00268 00269 // generators for input stream load 00270 00271 vector<boost::shared_ptr<ColumnGenerator<int64_t> > > columnGenerators; 00272 for (uint i = 0; i < nCols; i++) { 00273 SharedInt64ColumnGenerator col = 00274 SharedInt64ColumnGenerator( 00275 compressed 00276 ? (Int64ColumnGenerator *) new MixedDupColumnGenerator( 00277 NDUPS, i + colStart, 500) 00278 : new SeqColumnGenerator(i + colStart)); 00279 columnGenerators.push_back(col); 00280 } 00281 mockParams.pGenerator.reset( 00282 new CompositeExecStreamGenerator(columnGenerators)); 00283 00284 ExecStreamEmbryo mockStreamEmbryo; 00285 mockStreamEmbryo.init(new MockProducerExecStream(), mockParams); 00286 mockStreamEmbryo.getStream()->setName("MockProducerExecStream"); 00287 00288 LcsClusterAppendExecStreamParams lcsAppendParams; 00289 lcsAppendParams.scratchAccessor = 00290 pSegmentFactory->newScratchSegment(pCache, 10); 00291 lcsAppendParams.pCacheAccessor = pCache; 00292 lcsAppendParams.pSegment = pRandomSegment; 00293 00294 // initialize the btree parameter portion of lcsAppendParams 00295 // BTree tuple desc only has one column 00296 (lcsAppendParams.tupleDesc).push_back(attrDesc_int64); 00297 (lcsAppendParams.tupleDesc).push_back(attrDesc_int64); 00298 00299 // BTree key only has one column which is the first column. 00300 (lcsAppendParams.keyProj).push_back(0); 00301 00302 // output only one value(rows inserted) 00303 lcsAppendParams.outputTupleDesc.push_back(attrDesc_int64); 00304 00305 for (uint i = 0; i < nCols; i++) { 00306 lcsAppendParams.inputProj.push_back(i); 00307 } 00308 lcsAppendParams.pRootMap = 0; 00309 lcsAppendParams.rootPageIdParamId = DynamicParamId(0); 00310 00311 // setup temporary btree descriptor to get an empty page to start the btree 00312 00313 bTreeDescriptor.segmentAccessor.pSegment = lcsAppendParams.pSegment; 00314 bTreeDescriptor.segmentAccessor.pCacheAccessor = pCache; 00315 bTreeDescriptor.tupleDescriptor = lcsAppendParams.tupleDesc; 00316 bTreeDescriptor.keyProjection = lcsAppendParams.keyProj; 00317 bTreeDescriptor.rootPageId = NULL_PAGE_ID; 00318 lcsAppendParams.segmentId = bTreeDescriptor.segmentId; 00319 lcsAppendParams.pageOwnerId = bTreeDescriptor.pageOwnerId; 00320 00321 BTreeBuilder builder(bTreeDescriptor, pRandomSegment); 00322 builder.createEmptyRoot(); 00323 lcsAppendParams.rootPageId = bTreeDescriptor.rootPageId = 00324 builder.getRootPageId(); 00325 00326 // Now use the above initialized parameter 00327 00328 LcsClusterAppendExecStream *lcsStream = new LcsClusterAppendExecStream(); 00329 00330 ExecStreamEmbryo lcsAppendStreamEmbryo; 00331 lcsAppendStreamEmbryo.init(lcsStream, lcsAppendParams); 00332 lcsAppendStreamEmbryo.getStream()->setName("LcsClusterAppendExecStream"); 00333 00334 SharedExecStream pOutputStream = prepareTransformGraph( 00335 mockStreamEmbryo, lcsAppendStreamEmbryo); 00336 00337 // set up a generator which can produce the expected output 00338 RampExecStreamGenerator expectedResultGenerator(mockParams.nRows); 00339 00340 verifyOutput(*pOutputStream, 1, expectedResultGenerator); 00341 }
void LcsRowScanExecStreamTest::testScanCols | ( | uint | nRows, | |
uint | nCols, | |||
uint | nClusters, | |||
TupleProjection | proj, | |||
uint | skipRows, | |||
uint | expectedNumRows | |||
) | [protected] |
Reads rows from clusters.
Assumes clusters have been loaded by loadClusters/loadOneCluster.
nRows | total number of rows in the clusters | |
nCols | number of columns in each cluster | |
nClusters | number of clusters | |
proj | columns to be projected | |
skipRows | read every "skipRows" rows | |
expectedNumRows | expected number of rows in scan result; normally should be the same as nRows unless skipping rows or testing exception cases |
Definition at line 343 of file LcsRowScanExecStreamTest.cpp.
References attrDesc_bitmap, attrDesc_int64, bitmapColSize, bTreeClusters, ValuesExecStreamParams::bufSize, FixedBuffer, generateBitmaps(), ExecStreamEmbryo::getStream(), LcsRowScanExecStreamParams::hasExtraFilter, ExecStreamEmbryo::init(), LcsRowScanExecStreamParams::isFullScan, LcsRowScanBaseExecStreamParams::lcsClusterScanDefs, max(), LcsRowScanBaseExecStreamParams::outputProj, SingleOutputExecStreamParams::outputTupleDesc, ExecStreamUnitTestBase::prepareTransformGraph(), ValuesExecStreamParams::pTupleBuffer, SAMPLING_OFF, LcsRowScanExecStreamParams::samplingMode, and ExecStreamUnitTestBase::verifyOutput().
Referenced by testScanOnEmptyCluster(), testScanPastEndOfCluster(), and testScans().
00350 { 00351 // setup input rid stream 00352 00353 ValuesExecStreamParams valuesParams; 00354 boost::shared_array<FixedBuffer> pBuffer; 00355 ExecStreamEmbryo valuesStreamEmbryo; 00356 LcsRowScanExecStreamParams scanParams; 00357 00358 scanParams.hasExtraFilter = false; 00359 scanParams.samplingMode = SAMPLING_OFF; 00360 00361 // setup a values stream either to provide an empty input to simulate 00362 // the scan of the deletion index (in the case of a full scan) or a stream 00363 // of rid values when we're doing reads based on specific rids 00364 valuesParams.outputTupleDesc.push_back(attrDesc_int64); 00365 valuesParams.outputTupleDesc.push_back(attrDesc_bitmap); 00366 valuesParams.outputTupleDesc.push_back(attrDesc_bitmap); 00367 00368 // set buffer size to max number of bytes required to represent each 00369 // bit (nRows/8) plus max number of segments (nRows/bitmapColSize) 00370 // times 8 bytes for each starting rid in the segment 00371 uint bufferSize = std::max( 00372 16, (int) (nRows / 8 + nRows / bitmapColSize * 8)); 00373 pBuffer.reset(new FixedBuffer[bufferSize]); 00374 valuesParams.pTupleBuffer = pBuffer; 00375 00376 if (nRows > 0) { 00377 valuesParams.bufSize = generateBitmaps( 00378 nRows, skipRows, valuesParams.outputTupleDesc, pBuffer.get()); 00379 assert(valuesParams.bufSize <= bufferSize); 00380 scanParams.isFullScan = false; 00381 } else { 00382 scanParams.isFullScan = true; 00383 valuesParams.bufSize = 0; 00384 } 00385 valuesStreamEmbryo.init(new ValuesExecStream(), valuesParams); 00386 valuesStreamEmbryo.getStream()->setName("ValuesExecStream"); 00387 00388 // setup parameters into scan 00389 // nClusters cluster with nCols columns each 00390 00391 for (uint i = 0; i < nClusters; i++) { 00392 struct LcsClusterScanDef clusterScanDef; 00393 00394 for (uint j = 0; j < nCols; j++) { 00395 clusterScanDef.clusterTupleDesc.push_back(attrDesc_int64); 00396 } 00397 00398 clusterScanDef.pSegment = bTreeClusters[i]->segmentAccessor.pSegment; 00399 clusterScanDef.pCacheAccessor = 00400 bTreeClusters[i]->segmentAccessor.pCacheAccessor; 00401 clusterScanDef.tupleDesc = bTreeClusters[i]->tupleDescriptor; 00402 clusterScanDef.keyProj = bTreeClusters[i]->keyProjection; 00403 clusterScanDef.rootPageId = bTreeClusters[i]->rootPageId; 00404 clusterScanDef.segmentId = bTreeClusters[i]->segmentId; 00405 clusterScanDef.pageOwnerId = bTreeClusters[i]->pageOwnerId; 00406 00407 scanParams.lcsClusterScanDefs.push_back(clusterScanDef); 00408 } 00409 00410 // setup projection 00411 scanParams.outputProj = proj; 00412 for (uint i = 0; i < proj.size(); i++) { 00413 scanParams.outputTupleDesc.push_back(attrDesc_int64); 00414 } 00415 00416 ExecStreamEmbryo scanStreamEmbryo; 00417 scanStreamEmbryo.init(new LcsRowScanExecStream(), scanParams); 00418 scanStreamEmbryo.getStream()->setName("RowScanExecStream"); 00419 SharedExecStream pOutputStream; 00420 00421 pOutputStream = 00422 prepareTransformGraph(valuesStreamEmbryo, scanStreamEmbryo); 00423 00424 // setup generators for result stream 00425 00426 vector<boost::shared_ptr<ColumnGenerator<int64_t> > > columnGenerators; 00427 for (uint i = 0; i < proj.size(); i++) { 00428 SharedInt64ColumnGenerator col = 00429 SharedInt64ColumnGenerator( 00430 new SeqColumnGenerator( 00431 proj[i], 00432 skipRows)); 00433 columnGenerators.push_back(col); 00434 } 00435 00436 CompositeExecStreamGenerator resultGenerator(columnGenerators); 00437 verifyOutput(*pOutputStream, expectedNumRows, resultGenerator); 00438 }
void LcsRowScanExecStreamTest::testFilterCols | ( | uint | nRows, | |
uint | nCols, | |||
uint | nClusters, | |||
TupleProjection | proj, | |||
uint | skipRows, | |||
uint | expectedNumRows, | |||
bool | compressed | |||
) | [protected] |
Filter rows from clusters.
Assumes clusters have been loaded by loadClusters/loadOneCluster.
nRows | total number of rows in the clusters | |
nCols | number of columns in each cluster | |
nClusters | number of clusters | |
proj | columns to be projected | |
skipRows | read every "skipRows" rows | |
expectedNumRows | expected number of rows in scan result; normally should be the same as nRows unless skipping rows or testing exception cases | |
compressed | testing compressed bitmap optimization |
Definition at line 772 of file LcsRowScanExecStreamTest.cpp.
References attrDesc_bitmap, attrDesc_char1, attrDesc_int64, bitmapColSize, bTreeClusters, ValuesExecStreamParams::bufSize, TupleAccessor::compute(), FixedBuffer, generateBitmaps(), TupleAccessor::getMaxByteCount(), ExecStreamEmbryo::getStream(), LcsRowScanExecStreamParams::hasExtraFilter, ExecStreamEmbryo::init(), LcsRowScanExecStreamParams::isFullScan, LcsRowScanBaseExecStreamParams::lcsClusterScanDefs, max(), NDUPS, StandardTypeDescriptorFactory::newDataType(), LcsRowScanBaseExecStreamParams::outputProj, SingleOutputExecStreamParams::outputTupleDesc, ExecStreamUnitTestBase::prepareConfluenceGraph(), ValuesExecStreamParams::pTupleBuffer, LcsRowScanExecStreamParams::residualFilterCols, SAMPLING_OFF, LcsRowScanExecStreamParams::samplingMode, setSearchKey(), STANDARD_TYPE_INT_64, stdTypeFactory, and ExecStreamUnitTestBase::verifyOutput().
Referenced by testCompressedFiltering(), and testScans().
00780 { 00781 // setup input rid stream 00782 00783 ValuesExecStreamParams valuesParams; 00784 boost::shared_array<FixedBuffer> pBuffer; 00785 ExecStreamEmbryo valuesStreamEmbryo; 00786 LcsRowScanExecStreamParams scanParams; 00787 00788 scanParams.hasExtraFilter = true; 00789 scanParams.samplingMode = SAMPLING_OFF; 00790 00791 // setup a values stream either to provide an empty input to simulate 00792 // the scan of the deletion index (in the case of a full scan) or a stream 00793 // of rid values when we're doing reads based on specific rids 00794 valuesParams.outputTupleDesc.push_back(attrDesc_int64); 00795 valuesParams.outputTupleDesc.push_back(attrDesc_bitmap); 00796 valuesParams.outputTupleDesc.push_back(attrDesc_bitmap); 00797 00798 00799 // set buffer size to max number of bytes required to represent each 00800 // bit (nRows/8) plus max number of segments (nRows/bitmapColSize) 00801 // times 8 bytes for each starting rid in the segment 00802 uint bufferSize = std::max( 00803 16, (int) (nRows / 8 + nRows / bitmapColSize * 8)); 00804 pBuffer.reset(new FixedBuffer[bufferSize]); 00805 valuesParams.pTupleBuffer = pBuffer; 00806 00807 if (nRows > 0) { 00808 valuesParams.bufSize = generateBitmaps( 00809 nRows, skipRows, valuesParams.outputTupleDesc, pBuffer.get()); 00810 assert(valuesParams.bufSize <= bufferSize); 00811 scanParams.isFullScan = false; 00812 } else { 00813 scanParams.isFullScan = true; 00814 valuesParams.bufSize = 0; 00815 } 00816 valuesStreamEmbryo.init(new ValuesExecStream(), valuesParams); 00817 valuesStreamEmbryo.getStream()->setName("ValuesExecStream"); 00818 00819 // setup the following search keys: 00820 // 1. key0 >= 2000 or key0 < 1000 00821 // 2. 500 <= key1 - nCols < 2999 or (key1 - nCols) == 2999 00822 // 3 key2 - 2*nCols > 1500 00823 // 00824 // where key0 corresponds to column #0, 00825 // key1 corresponds to the column #nCols, and 00826 // key2 corresponds to column #(2*nCols) 00827 00828 TupleAttributeDescriptor attrDesc_nullableInt64 = 00829 TupleAttributeDescriptor( 00830 stdTypeFactory.newDataType(STANDARD_TYPE_INT_64), 00831 true, sizeof(uint64_t)); 00832 00833 valuesParams.outputTupleDesc.resize(0); 00834 TupleDescriptor inputTupleDesc; 00835 for (uint i = 0; i < 2; i++) { 00836 inputTupleDesc.push_back(attrDesc_char1); 00837 inputTupleDesc.push_back(attrDesc_nullableInt64); 00838 valuesParams.outputTupleDesc.push_back(attrDesc_char1); 00839 valuesParams.outputTupleDesc.push_back(attrDesc_nullableInt64); 00840 } 00841 TupleData inputTupleData(inputTupleDesc); 00842 TupleAccessor inputTupleAccessor; 00843 inputTupleAccessor.compute(inputTupleDesc); 00844 00845 uint nInputTuples = 3; 00846 boost::shared_array<FixedBuffer> inputBuffer; 00847 inputBuffer.reset( 00848 new FixedBuffer[nInputTuples * inputTupleAccessor.getMaxByteCount()]); 00849 00850 PBuffer inputBuf = inputBuffer.get(); 00851 uint offset = 0; 00852 00853 setSearchKey( 00854 '-', ')', 0, 1000, inputBuf, offset, inputTupleAccessor, 00855 inputTupleData); 00856 setSearchKey( 00857 '[', '+', 2000, 0, inputBuf, offset, inputTupleAccessor, 00858 inputTupleData); 00859 00860 TupleData inputTupleData1(inputTupleDesc); 00861 boost::shared_array<FixedBuffer> inputBuffer1; 00862 inputBuffer1.reset( 00863 new FixedBuffer[nInputTuples * inputTupleAccessor.getMaxByteCount()]); 00864 PBuffer inputBuf1 = inputBuffer1.get(); 00865 uint offset1 = 0; 00866 00867 setSearchKey( 00868 '[', ')', 500 + nCols, 2999 + nCols, inputBuf1, offset1, 00869 inputTupleAccessor, 00870 inputTupleData1); 00871 setSearchKey( 00872 '[', ']', 2999 + nCols, 2999 + nCols, inputBuf1, offset1, 00873 inputTupleAccessor, inputTupleData1); 00874 00875 TupleData inputTupleData2(inputTupleDesc); 00876 boost::shared_array<FixedBuffer> inputBuffer2; 00877 inputBuffer2.reset( 00878 new FixedBuffer[nInputTuples * inputTupleAccessor.getMaxByteCount()]); 00879 PBuffer inputBuf2 = inputBuffer2.get(); 00880 uint offset2 = 0; 00881 00882 setSearchKey( 00883 '(', '+', 1500+2*nCols, 0, inputBuf2, offset2, inputTupleAccessor, 00884 inputTupleData1); 00885 00886 valuesParams.pTupleBuffer = inputBuffer; 00887 valuesParams.bufSize = offset; 00888 00889 ExecStreamEmbryo valuesStreamEmbryo1, valuesStreamEmbryo2, 00890 valuesStreamEmbryo3; 00891 valuesStreamEmbryo1.init(new ValuesExecStream(), valuesParams); 00892 valuesStreamEmbryo1.getStream()->setName("ValuesExecStream1"); 00893 00894 valuesParams.pTupleBuffer = inputBuffer1; 00895 valuesParams.bufSize = offset1; 00896 valuesStreamEmbryo2.init(new ValuesExecStream(), valuesParams); 00897 valuesStreamEmbryo2.getStream()->setName("ValuesExecStream2"); 00898 00899 valuesParams.pTupleBuffer = inputBuffer2; 00900 valuesParams.bufSize = offset2; 00901 valuesStreamEmbryo3.init(new ValuesExecStream(), valuesParams); 00902 valuesStreamEmbryo3.getStream()->setName("ValuesExecStream3"); 00903 00904 // setup parameters into scan 00905 // nClusters cluster with nCols columns each 00906 00907 for (uint i = 0; i < nClusters; i++) { 00908 struct LcsClusterScanDef clusterScanDef; 00909 00910 for (uint j = 0; j < nCols; j++) { 00911 clusterScanDef.clusterTupleDesc.push_back(attrDesc_int64); 00912 } 00913 00914 clusterScanDef.pSegment = bTreeClusters[i]->segmentAccessor.pSegment; 00915 clusterScanDef.pCacheAccessor = 00916 bTreeClusters[i]->segmentAccessor.pCacheAccessor; 00917 clusterScanDef.tupleDesc = bTreeClusters[i]->tupleDescriptor; 00918 clusterScanDef.keyProj = bTreeClusters[i]->keyProjection; 00919 clusterScanDef.rootPageId = bTreeClusters[i]->rootPageId; 00920 clusterScanDef.segmentId = bTreeClusters[i]->segmentId; 00921 clusterScanDef.pageOwnerId = bTreeClusters[i]->pageOwnerId; 00922 00923 scanParams.lcsClusterScanDefs.push_back(clusterScanDef); 00924 } 00925 00926 // setup projection 00927 scanParams.outputProj = proj; 00928 for (uint i = 0; i < proj.size(); i++) { 00929 scanParams.outputTupleDesc.push_back(attrDesc_int64); 00930 } 00931 scanParams.residualFilterCols.push_back(0); 00932 scanParams.residualFilterCols.push_back(nCols); 00933 scanParams.residualFilterCols.push_back(2*nCols); 00934 00935 ExecStreamEmbryo scanStreamEmbryo; 00936 scanStreamEmbryo.init(new LcsRowScanExecStream(), scanParams); 00937 scanStreamEmbryo.getStream()->setName("RowScanExecStream"); 00938 SharedExecStream pOutputStream; 00939 00940 std::vector<ExecStreamEmbryo> sources; 00941 sources.push_back(valuesStreamEmbryo); 00942 sources.push_back(valuesStreamEmbryo1); 00943 sources.push_back(valuesStreamEmbryo2); 00944 sources.push_back(valuesStreamEmbryo3); 00945 00946 pOutputStream = 00947 prepareConfluenceGraph(sources, scanStreamEmbryo); 00948 00949 // setup generators for result stream 00950 00951 vector<boost::shared_ptr<ColumnGenerator<int64_t> > > columnGenerators; 00952 offset = (int) ceil(2000.0 / skipRows) * skipRows; 00953 for (uint i = 0; i < proj.size(); i++) { 00954 SharedInt64ColumnGenerator col = 00955 SharedInt64ColumnGenerator( 00956 compressed ? 00957 (Int64ColumnGenerator*) new MixedDupColumnGenerator( 00958 NDUPS, proj[i] + 2000,500) : 00959 new SeqColumnGenerator(proj[i] + offset, skipRows)); 00960 columnGenerators.push_back(col); 00961 } 00962 00963 00964 CompositeExecStreamGenerator resultGenerator(columnGenerators); 00965 verifyOutput(*pOutputStream, expectedNumRows, resultGenerator); 00966 }
void LcsRowScanExecStreamTest::setSearchKey | ( | char | lowerDirective, | |
char | upperDirective, | |||
uint64_t | lowerVal, | |||
uint64_t | upperVal, | |||
PBuffer | inputBuf, | |||
uint & | offset, | |||
TupleAccessor & | inputTupleAccessor, | |||
TupleData & | inputTupleData | |||
) | [protected] |
Definition at line 759 of file LcsRowScanExecStreamTest.cpp.
References TupleAccessor::getCurrentByteCount(), and TupleAccessor::marshal().
Referenced by testFilterCols().
00763 { 00764 inputTupleData[0].pData = (PConstBuffer) &lowerDirective; 00765 inputTupleData[2].pData = (PConstBuffer) &upperDirective; 00766 inputTupleData[1].pData = (PConstBuffer) &lowerVal; 00767 inputTupleData[3].pData = (PConstBuffer) &upperVal; 00768 inputTupleAccessor.marshal(inputTupleData, inputBuf + offset); 00769 offset += inputTupleAccessor.getCurrentByteCount(); 00770 }
void LcsRowScanExecStreamTest::testSampleScanCols | ( | uint | nRows, | |
uint | nRowsActual, | |||
uint | nCols, | |||
uint | nClusters, | |||
TupleProjection | proj, | |||
uint | skipRows, | |||
TableSamplingMode | mode, | |||
float | rate, | |||
int | seed, | |||
uint | clumps, | |||
uint | expectedNumRows | |||
) | [protected] |
Sample rows from clusters.
Assumes clusters have been loaded by loadClusters/loadOneCluster.
nRows | total number of rows in the clusters; if set to 0, full table scans should be done | |
nRowsActual | actual total number of rows in the clusters | |
nCols | number of columns in each cluster | |
nClusters | number of clusters | |
proj | columns to be projected | |
skipRows | read every "skipRows" rows | |
mode | sampling mode (SAMPLING_BERNOULLI or SAMPLING_SYSTEM) | |
rate | sampling rate | |
seed | Bernoulli sampling RNG seed | |
clumps | number of system sampling clumps | |
expectedNumRows | expected number of rows in scan result; normally should be the same as nRows unless skipping rows or testing exception cases |
Definition at line 969 of file LcsRowScanExecStreamTest.cpp.
References attrDesc_bitmap, attrDesc_int64, bitmapColSize, bTreeClusters, ValuesExecStreamParams::bufSize, FixedBuffer, generateBitmaps(), ExecStreamEmbryo::getStream(), LcsRowScanExecStreamParams::hasExtraFilter, ExecStreamEmbryo::init(), LcsRowScanExecStreamParams::isFullScan, LcsRowScanBaseExecStreamParams::lcsClusterScanDefs, max(), LcsRowScanBaseExecStreamParams::outputProj, SingleOutputExecStreamParams::outputTupleDesc, ExecStreamUnitTestBase::prepareTransformGraph(), ValuesExecStreamParams::pTupleBuffer, SAMPLING_BERNOULLI, SAMPLING_SYSTEM, LcsRowScanExecStreamParams::samplingClumps, LcsRowScanExecStreamParams::samplingIsRepeatable, LcsRowScanExecStreamParams::samplingMode, LcsRowScanExecStreamParams::samplingRate, LcsRowScanExecStreamParams::samplingRepeatableSeed, LcsRowScanExecStreamParams::samplingRowCount, and ExecStreamUnitTestBase::verifyOutput().
Referenced by testBernoulliSampling(), and testSystemSampling().
00981 { 00982 // setup input rid stream 00983 00984 ValuesExecStreamParams valuesParams; 00985 boost::shared_array<FixedBuffer> pBuffer; 00986 ExecStreamEmbryo valuesStreamEmbryo; 00987 LcsRowScanExecStreamParams scanParams; 00988 00989 scanParams.hasExtraFilter = false; 00990 00991 // setup a values stream either to provide an empty input to simulate 00992 // the scan of the deletion index (in the case of a full scan) or a stream 00993 // of rid values when we're doing reads based on specific rids 00994 valuesParams.outputTupleDesc.push_back(attrDesc_int64); 00995 valuesParams.outputTupleDesc.push_back(attrDesc_bitmap); 00996 valuesParams.outputTupleDesc.push_back(attrDesc_bitmap); 00997 00998 uint nRowsInternal = (mode == SAMPLING_SYSTEM) ? 0 : nRows; 00999 01000 // set buffer size to max number of bytes required to represent each bit 01001 // (nRowsInternal/8) plus max number of segments 01002 // (nRowsInternal/bitmapColSize) times 8 bytes for each starting rid in the 01003 // segment 01004 uint bufferSize = std::max( 01005 16, (int) (nRowsInternal / 8 + nRowsInternal / bitmapColSize * 8)); 01006 pBuffer.reset(new FixedBuffer[bufferSize]); 01007 valuesParams.pTupleBuffer = pBuffer; 01008 01009 if (nRowsInternal > 0) { 01010 valuesParams.bufSize = generateBitmaps( 01011 nRowsInternal, skipRows, valuesParams.outputTupleDesc, 01012 pBuffer.get()); 01013 assert(valuesParams.bufSize <= bufferSize); 01014 scanParams.isFullScan = false; 01015 } else { 01016 scanParams.isFullScan = true; 01017 valuesParams.bufSize = 0; 01018 } 01019 valuesStreamEmbryo.init(new ValuesExecStream(), valuesParams); 01020 valuesStreamEmbryo.getStream()->setName("ValuesExecStream"); 01021 01022 // setup parameters into scan 01023 // nClusters cluster with nCols columns each 01024 01025 for (uint i = 0; i < nClusters; i++) { 01026 struct LcsClusterScanDef clusterScanDef; 01027 01028 for (uint j = 0; j < nCols; j++) { 01029 clusterScanDef.clusterTupleDesc.push_back(attrDesc_int64); 01030 } 01031 01032 clusterScanDef.pSegment = bTreeClusters[i]->segmentAccessor.pSegment; 01033 clusterScanDef.pCacheAccessor = 01034 bTreeClusters[i]->segmentAccessor.pCacheAccessor; 01035 clusterScanDef.tupleDesc = bTreeClusters[i]->tupleDescriptor; 01036 clusterScanDef.keyProj = bTreeClusters[i]->keyProjection; 01037 clusterScanDef.rootPageId = bTreeClusters[i]->rootPageId; 01038 clusterScanDef.segmentId = bTreeClusters[i]->segmentId; 01039 clusterScanDef.pageOwnerId = bTreeClusters[i]->pageOwnerId; 01040 01041 scanParams.lcsClusterScanDefs.push_back(clusterScanDef); 01042 } 01043 01044 // setup projection 01045 scanParams.outputProj = proj; 01046 for (uint i = 0; i < proj.size(); i++) { 01047 scanParams.outputTupleDesc.push_back(attrDesc_int64); 01048 } 01049 01050 01051 // setup sampling 01052 scanParams.samplingMode = mode; 01053 scanParams.samplingRate = rate; 01054 scanParams.samplingIsRepeatable = true; 01055 scanParams.samplingRepeatableSeed = seed; 01056 scanParams.samplingClumps = clumps; 01057 scanParams.samplingRowCount = nRowsActual; 01058 01059 ExecStreamEmbryo scanStreamEmbryo; 01060 scanStreamEmbryo.init(new LcsRowScanExecStream(), scanParams); 01061 scanStreamEmbryo.getStream()->setName("RowScanExecStream"); 01062 SharedExecStream pOutputStream; 01063 01064 pOutputStream = 01065 prepareTransformGraph(valuesStreamEmbryo, scanStreamEmbryo); 01066 01067 // setup generators for result stream 01068 01069 vector<boost::shared_ptr<ColumnGenerator<int64_t> > > columnGenerators; 01070 for (uint i = 0; i < proj.size(); i++) { 01071 SharedInt64ColumnGenerator col = 01072 SharedInt64ColumnGenerator( 01073 new SeqColumnGenerator( 01074 proj[i], 01075 skipRows)); 01076 columnGenerators.push_back(col); 01077 } 01078 01079 boost::shared_ptr<CompositeExecStreamGenerator> baseResultGenerator( 01080 new CompositeExecStreamGenerator(columnGenerators)); 01081 01082 if (mode == SAMPLING_BERNOULLI) { 01083 BernoulliSamplingExecStreamGenerator resultGenerator( 01084 baseResultGenerator, 01085 rate, 01086 seed, 01087 proj.size()); 01088 01089 verifyOutput(*pOutputStream, expectedNumRows, resultGenerator); 01090 } else { 01091 SystemSamplingExecStreamGenerator resultGenerator( 01092 baseResultGenerator, 01093 rate, 01094 nRows, 01095 proj.size(), 01096 clumps); 01097 01098 verifyOutput(*pOutputStream, expectedNumRows, resultGenerator); 01099 } 01100 }
int LcsRowScanExecStreamTest::generateBitmaps | ( | uint | nRows, | |
uint | skipRows, | |||
TupleDescriptor const & | bitmapTupleDesc, | |||
PBuffer | pBuf | |||
) | [protected] |
Generate bitmaps to pass as input into row scan exec stream.
nRows | number of rows in table | |
skipRows | generate rids every "skipRows" rows; i.e., if skipRows == 1, there are no gaps in the rids | |
bitmapTupleDesc | tuple descriptor for bitmap segment | |
pBuf | buffer where bitmap segment tuples will be marshalled |
Definition at line 440 of file LcsRowScanExecStreamTest.cpp.
References bitmapColSize, TupleAccessor::compute(), FixedBuffer, LbmEntry::getScratchBufferSize(), LbmEntry::init(), produceEntry(), LbmEntry::setEntryTuple(), and LbmEntry::setRID().
Referenced by testFilterCols(), testSampleScanCols(), and testScanCols().
00443 { 00444 int bufSize = 0; 00445 LbmEntry lbmEntry; 00446 boost::scoped_array<FixedBuffer> entryBuf; 00447 TupleAccessor bitmapTupleAccessor; 00448 LcsRid rid = LcsRid(0); 00449 00450 TupleData bitmapTupleData(bitmapTupleDesc); 00451 bitmapTupleData[0].pData = (PConstBuffer) &rid; 00452 bitmapTupleData[1].pData = NULL; 00453 bitmapTupleData[1].cbData = 0; 00454 bitmapTupleData[2].pData = NULL; 00455 bitmapTupleData[2].cbData = 0; 00456 00457 bitmapTupleAccessor.compute(bitmapTupleDesc); 00458 00459 // setup an LbmEntry with the initial rid value 00460 uint scratchBufSize = LbmEntry::getScratchBufferSize(bitmapColSize); 00461 entryBuf.reset(new FixedBuffer[scratchBufSize]); 00462 lbmEntry.init(entryBuf.get(), NULL, scratchBufSize, bitmapTupleDesc); 00463 lbmEntry.setEntryTuple(bitmapTupleData); 00464 00465 // add on the remaining rids 00466 for (rid = LcsRid(skipRows); rid < LcsRid(nRows); rid += skipRows) { 00467 if (!lbmEntry.setRID(LcsRid(rid))) { 00468 // if exhausted buffer space, write the tuple to the output 00469 // buffer and reset LbmEntry 00470 produceEntry(lbmEntry, bitmapTupleAccessor, pBuf, bufSize); 00471 lbmEntry.setEntryTuple(bitmapTupleData); 00472 } 00473 } 00474 // write out the last LbmEntry 00475 produceEntry(lbmEntry, bitmapTupleAccessor, pBuf, bufSize); 00476 00477 return bufSize; 00478 }
void LcsRowScanExecStreamTest::produceEntry | ( | LbmEntry & | lbmEntry, | |
TupleAccessor & | bitmapTupleAccessor, | |||
PBuffer | pBuf, | |||
int & | bufSize | |||
) | [protected] |
Definition at line 480 of file LcsRowScanExecStreamTest.cpp.
References TupleAccessor::getCurrentByteCount(), TupleAccessor::marshal(), and LbmEntry::produceEntryTuple().
Referenced by generateBitmaps().
00483 { 00484 TupleData bitmapTuple = lbmEntry.produceEntryTuple(); 00485 bitmapTupleAccessor.marshal(bitmapTuple, pBuf + bufSize); 00486 bufSize += bitmapTupleAccessor.getCurrentByteCount(); 00487 }
void LcsRowScanExecStreamTest::testCaseSetUp | ( | ) | [virtual] |
Equivalent to JUnit TestCase.setUp; this is called before each test case method is invoked.
Default is no-op.
Reimplemented from ExecStreamUnitTestBase.
Definition at line 1102 of file LcsRowScanExecStreamTest.cpp.
References attrDesc_bitmap, attrDesc_char1, attrDesc_int64, bitmapColSize, StandardTypeDescriptorFactory::newDataType(), SegStorageTestBase::pRandomSegment, STANDARD_TYPE_CHAR, STANDARD_TYPE_INT_64, STANDARD_TYPE_VARBINARY, stdTypeFactory, and ExecStreamUnitTestBase::testCaseSetUp().
01103 { 01104 ExecStreamUnitTestBase::testCaseSetUp(); 01105 01106 attrDesc_char1 = TupleAttributeDescriptor( 01107 stdTypeFactory.newDataType(STANDARD_TYPE_CHAR), false, 1); 01108 attrDesc_int64 = TupleAttributeDescriptor( 01109 stdTypeFactory.newDataType(STANDARD_TYPE_INT_64)); 01110 bitmapColSize = pRandomSegment->getUsablePageSize() / 8; 01111 attrDesc_bitmap = TupleAttributeDescriptor( 01112 stdTypeFactory.newDataType(STANDARD_TYPE_VARBINARY), 01113 true, bitmapColSize); 01114 }
void LcsRowScanExecStreamTest::testCaseTearDown | ( | ) | [virtual] |
Equivalent to JUnit TestCase.tearDown; this is called after each test case method is invoked.
Default is no-op.
Reimplemented from ExecStreamTestBase.
Definition at line 1116 of file LcsRowScanExecStreamTest.cpp.
References bTreeClusters, and ExecStreamTestBase::testCaseTearDown().
01117 { 01118 for (uint i = 0; i < bTreeClusters.size(); i++) { 01119 bTreeClusters[i]->segmentAccessor.reset(); 01120 } 01121 ExecStreamUnitTestBase::testCaseTearDown(); 01122 }
void LcsRowScanExecStreamTest::testScans | ( | ) |
Definition at line 489 of file LcsRowScanExecStreamTest.cpp.
References loadClusters(), ExecStreamUnitTestBase::resetExecStreamTest(), testFilterCols(), and testScanCols().
Referenced by LcsRowScanExecStreamTest().
00490 { 00491 // 1. load clusters, so they can be used by steps 2-5 below 00492 // 2. scan all data in clusters 00493 // 3. test projection 00494 // 4. test skipping of rows 00495 // 5. test full table scan 00496 00497 uint nRows = 50000; 00498 uint nCols = 12; 00499 uint nClusters = 3; 00500 TupleProjection proj; 00501 00502 loadClusters(nRows, nCols, nClusters, false); 00503 // note: no need to reset after loadClusters() because already done 00504 // there 00505 00506 // scan all rows and columns 00507 for (uint i = 0; i < nClusters; i++) { 00508 for (uint j = 0; j < nCols; j++) { 00509 proj.push_back(i * nCols + j); 00510 } 00511 } 00512 testScanCols(nRows, nCols, nClusters, proj, 1, nRows); 00513 resetExecStreamTest(); 00514 00515 // project columns 22, 10, 12, 26, 1, 35, 15, 5, 17, 30, 4, 20, 7, and 13 00516 proj.clear(); 00517 proj.push_back(22); 00518 proj.push_back(10); 00519 proj.push_back(12); 00520 proj.push_back(26); 00521 proj.push_back(1); 00522 proj.push_back(35); 00523 proj.push_back(15); 00524 proj.push_back(5); 00525 proj.push_back(17); 00526 proj.push_back(30); 00527 proj.push_back(4); 00528 proj.push_back(20); 00529 proj.push_back(7); 00530 proj.push_back(13); 00531 00532 testScanCols(nRows, nCols, nClusters, proj, 1, nRows); 00533 resetExecStreamTest(); 00534 00535 // read every 7 rows, same projection as above 00536 testScanCols( 00537 nRows, nCols, nClusters, proj, 7, (int) ceil((double) nRows / 7)); 00538 resetExecStreamTest(); 00539 00540 00541 // read every 37 rows, same projection as above 00542 testScanCols( 00543 nRows, nCols, nClusters, proj, 37, (int) ceil((double) nRows / 37)); 00544 resetExecStreamTest(); 00545 00546 // full table scan -- input stream is empty 00547 testScanCols(0, nCols, nClusters, proj, 1, nRows); 00548 00549 resetExecStreamTest(); 00550 00551 // scan 1000 rows and columns 00552 for (uint i = 0; i < nClusters; i++) { 00553 for (uint j = 0; j < nCols; j++) { 00554 proj.push_back(i * nCols + j); 00555 } 00556 } 00557 testFilterCols(nRows, nCols, nClusters, proj, 1, 1000, false); 00558 00559 resetExecStreamTest(); 00560 00561 // scan all columns execept the 1st & 2nd of the 1st & 2nd cluster 00562 proj.resize(0); 00563 for (uint i = 0; i < nClusters; i++) { 00564 for (uint j = 0; j < nCols; j++) { 00565 if (!(i < 2 && (j == 0 || j == 1))) { 00566 proj.push_back(i * nCols + j); 00567 } 00568 } 00569 } 00570 testFilterCols(nRows, nCols, nClusters, proj, 1, 1000, false); 00571 00572 resetExecStreamTest(); 00573 00574 // skip one cluster; also setup the input so every 7 rows are skipped 00575 proj.resize(0); 00576 for (uint i = 0; i < nClusters - 1; i++) { 00577 for (uint j = 0; j < nCols; j++) { 00578 proj.push_back(i * nCols + j); 00579 } 00580 } 00581 testFilterCols( 00582 nRows, nCols, nClusters, proj, 7, 1000 / 7 + 1, false); 00583 }
void LcsRowScanExecStreamTest::testScanOnEmptyCluster | ( | ) |
Create an empty cluster with 1 column.
Try reading a rid from it
Definition at line 640 of file LcsRowScanExecStreamTest.cpp.
References attrDesc_int64, bTreeClusters, BTreeBuilder::createEmptyRoot(), BTreeAccessBase::getRootPageId(), BTreeDescriptor::keyProjection, NULL_PAGE_ID, CacheTestBase::pCache, SegmentAccessor::pCacheAccessor, SegStorageTestBase::pRandomSegment, SegmentAccessor::pSegment, BTreeDescriptor::rootPageId, BTreeDescriptor::segmentAccessor, testScanCols(), and BTreeDescriptor::tupleDescriptor.
Referenced by LcsRowScanExecStreamTest().
00641 { 00642 // create empty btree 00643 00644 BTreeDescriptor &bTreeDescriptor = *(bTreeClusters[0]); 00645 00646 bTreeDescriptor.segmentAccessor.pSegment = pRandomSegment; 00647 bTreeDescriptor.segmentAccessor.pCacheAccessor = pCache; 00648 bTreeDescriptor.tupleDescriptor.push_back(attrDesc_int64); 00649 bTreeDescriptor.tupleDescriptor.push_back(attrDesc_int64); 00650 bTreeDescriptor.keyProjection.push_back(0); 00651 bTreeDescriptor.rootPageId = NULL_PAGE_ID; 00652 00653 BTreeBuilder builder(bTreeDescriptor, pRandomSegment); 00654 builder.createEmptyRoot(); 00655 bTreeDescriptor.rootPageId = builder.getRootPageId(); 00656 00657 // have testScanCols attempt to scan a single row, although it should 00658 // return no rows 00659 00660 TupleProjection proj; 00661 00662 proj.push_back(0); 00663 testScanCols(1, 1, 1, proj, 1, 0); 00664 }
void LcsRowScanExecStreamTest::testScanPastEndOfCluster | ( | ) |
Create a cluster with only a single row.
Do a rid search on a rid value larger than what's in the table
Definition at line 670 of file LcsRowScanExecStreamTest.cpp.
References bTreeClusters, loadOneCluster(), ExecStreamUnitTestBase::resetExecStreamTest(), and testScanCols().
Referenced by LcsRowScanExecStreamTest().
00671 { 00672 loadOneCluster(1, 1, 0, *(bTreeClusters[0]), false); 00673 resetExecStreamTest(); 00674 00675 // have testScanCols attempt to read 2 rows, although it should only 00676 // be able to read 1 00677 00678 TupleProjection proj; 00679 00680 proj.push_back(0); 00681 testScanCols(2, 1, 1, proj, 1, 1); 00682 }
void LcsRowScanExecStreamTest::testCompressedFiltering | ( | ) |
Definition at line 585 of file LcsRowScanExecStreamTest.cpp.
References loadClusters(), NDUPS, ExecStreamUnitTestBase::resetExecStreamTest(), and testFilterCols().
Referenced by LcsRowScanExecStreamTest().
00586 { 00587 // 1. load clusters, so they can be used by steps 2-5 below 00588 // 2. scan all data in clusters 00589 // 3. test projection 00590 // 4. test skipping of rows 00591 // 5. test full table scan 00592 00593 uint nRows = 50000; 00594 uint nCols = 12; 00595 uint nClusters = 3; 00596 TupleProjection proj; 00597 00598 // Test compressed bitmap optimization 00599 // 00600 loadClusters(nRows, nCols, nClusters, true); 00601 00602 // scan 500*NDUPS+500 rows and columns 00603 proj.resize(0); 00604 for (uint i = 0; i < nClusters; i++) { 00605 for (uint j = 0; j < nCols; j++) { 00606 proj.push_back(i * nCols + j); 00607 } 00608 } 00609 testFilterCols(nRows, nCols, nClusters, proj, 1, 500*NDUPS+500, true); 00610 00611 resetExecStreamTest(); 00612 00613 // scan all columns execept the 1st & 2nd of the 1st & 2nd cluster 00614 proj.resize(0); 00615 for (uint i = 0; i < nClusters; i++) { 00616 for (uint j = 0; j < nCols; j++) { 00617 if (!(i < 2 && (j == 0 || j == 1))) { 00618 proj.push_back(i * nCols + j); 00619 } 00620 } 00621 } 00622 testFilterCols(nRows, nCols, nClusters, proj, 1, 500*NDUPS+500, true); 00623 00624 resetExecStreamTest(); 00625 00626 // skip one cluster 00627 proj.resize(0); 00628 for (uint i = 0; i < nClusters - 1; i++) { 00629 for (uint j = 0; j < nCols; j++) { 00630 proj.push_back(i * nCols + j); 00631 } 00632 } 00633 testFilterCols(nRows, nCols, nClusters, proj, 1, 500*NDUPS+500, true); 00634 }
void LcsRowScanExecStreamTest::testBernoulliSampling | ( | ) |
Configure Bernoulli sampling, with a specific seed and verify that the expected number of rows are returned.
Definition at line 688 of file LcsRowScanExecStreamTest.cpp.
References loadClusters(), ExecStreamUnitTestBase::resetExecStreamTest(), SAMPLING_BERNOULLI, and testSampleScanCols().
Referenced by LcsRowScanExecStreamTest().
00689 { 00690 uint nRows = 50000; 00691 uint nCols = 12; 00692 uint nClusters = 3; 00693 TupleProjection proj; 00694 00695 int seed = 19721212; 00696 float rate = 0.1; 00697 TableSamplingMode mode = SAMPLING_BERNOULLI; 00698 00699 loadClusters(nRows, nCols, nClusters, false); 00700 // note: no need to reset after loadClusters() because already done 00701 // there 00702 00703 // scan all rows and columns 00704 for (uint i = 0; i < nClusters; i++) { 00705 for (uint j = 0; j < nCols; j++) { 00706 proj.push_back(i * nCols + j); 00707 } 00708 } 00709 00710 // Full Row Scan (4938 is based on the seed, but determine empirically) 00711 testSampleScanCols( 00712 0, nRows, nCols, nClusters, proj, 1, mode, rate, seed, 0, 4938); 00713 resetExecStreamTest(); 00714 00715 // Skip every other row 00716 testSampleScanCols( 00717 nRows, nRows, nCols, nClusters, proj, 2, mode, rate, seed, 0, 2489); 00718 resetExecStreamTest(); 00719 }
void LcsRowScanExecStreamTest::testSystemSampling | ( | ) |
Configure system sampling, with a specific clump size and verify that the expected number of rows are returned.
Definition at line 726 of file LcsRowScanExecStreamTest.cpp.
References loadClusters(), ExecStreamUnitTestBase::resetExecStreamTest(), SAMPLING_SYSTEM, and testSampleScanCols().
Referenced by LcsRowScanExecStreamTest().
00727 { 00728 uint nRows = 50000; 00729 uint nCols = 12; 00730 uint nClusters = 3; 00731 TupleProjection proj; 00732 00733 TableSamplingMode mode = SAMPLING_SYSTEM; 00734 00735 loadClusters(nRows, nCols, nClusters, false); 00736 // note: no need to reset after loadClusters() because already done 00737 // there 00738 00739 // scan all rows and columns 00740 for (uint i = 0; i < nClusters; i++) { 00741 for (uint j = 0; j < nCols; j++) { 00742 proj.push_back(i * nCols + j); 00743 } 00744 } 00745 00746 testSampleScanCols( 00747 nRows, nRows, nCols, nClusters, proj, 1, mode, 0.1, -1, 10, 5000); 00748 resetExecStreamTest(); 00749 00750 testSampleScanCols( 00751 nRows, nRows, nCols, nClusters, proj, 1, mode, 1.0, -1, 10, 50000); 00752 resetExecStreamTest(); 00753 00754 testSampleScanCols( 00755 nRows, nRows, nCols, nClusters, proj, 1, mode, 0.33333, -1, 10, 16670); 00756 resetExecStreamTest(); 00757 }
SharedExecStream ExecStreamUnitTestBase::prepareSourceGraph | ( | ExecStreamEmbryo & | sourceStreamEmbryo | ) | [protected, inherited] |
Defines and prepares a graph consisting of one source stream.
sourceStreamEmbryo | embryonic source stream which produces tuples |
Definition at line 41 of file ExecStreamUnitTestBase.cpp.
References ExecStreamUnitTestBase::prepareTransformGraph().
Referenced by FlatFileExecStreamTest::testStream().
00043 { 00044 std::vector<ExecStreamEmbryo> transforms; 00045 return prepareTransformGraph(sourceStreamEmbryo, transforms); 00046 }
SharedExecStream ExecStreamUnitTestBase::prepareTransformGraph | ( | ExecStreamEmbryo & | sourceStreamEmbryo, | |
ExecStreamEmbryo & | transformStreamEmbryo | |||
) | [protected, inherited] |
Defines and prepares a graph consisting of one source stream and one transform stream.
sourceStreamEmbryo | embryonic source stream which produces tuples | |
transformStreamEmbryo | embryonic transform stream which processes tuples produced by sourceStreamEmbryo |
Definition at line 48 of file ExecStreamUnitTestBase.cpp.
Referenced by LcsClusterReplaceExecStreamTest::loadCluster(), loadOneCluster(), ExecStreamUnitTestBase::prepareSourceGraph(), LcsClusterReplaceExecStreamTest::replaceCluster(), LcsMultiClusterAppendTest::scanCols(), LbmSplicerExecStreamTest::spliceInput(), ExecStreamTestSuite::testBTreeInsertExecStream(), CollectExecStreamTestSuite::testCollectCollectUncollectUncollect(), CollectExecStreamTestSuite::testCollectInts(), CollectExecStreamTestSuite::testCollectUncollect(), CalcExecStreamTestSuite::testConstant(), ExecStreamTestSuite::testCopyExecStream(), ExecStreamTestSuite::testCountAggExecStream(), LhxAggExecStreamTest::testCountImpl(), ExecStreamTestSuite::testDoubleBufferExecStream(), ExecStreamTestSuite::testGroupAggExecStreamNrows(), LhxAggExecStreamTest::testGroupCountImpl(), ExternalSortExecStreamTest::testImpl(), LcsClusterAppendExecStreamTest::testLoadMultiCol(), LcsClusterAppendExecStreamTest::testLoadSingleCol(), LbmNormalizerExecStreamTest::testNormalizer(), ExecStreamTestSuite::testReshapeExecStream(), testSampleScanCols(), testScanCols(), LbmSearchTest::testScanIdx(), LcsClusterAppendExecStreamTest::testScanMultiCol(), LcsClusterAppendExecStreamTest::testScanSingleCol(), ExecStreamTestSuite::testScratchBufferExecStream(), ExecStreamTestSuite::testSegBufferExecStream(), ExecStreamTestSuite::testSingleValueAggExecStream(), LhxAggExecStreamTest::testSingleValueImpl(), LbmSortedAggExecStreamTest::testSortedAgg(), ExecStreamTestSuite::testSumAggExecStream(), LhxAggExecStreamTest::testSumImpl(), LbmUnionExecStreamTest::testUnion(), and LcsClusterReplaceExecStreamTest::verifyCluster().
00051 { 00052 std::vector<ExecStreamEmbryo> transforms; 00053 transforms.push_back(transformStreamEmbryo); 00054 return prepareTransformGraph(sourceStreamEmbryo, transforms); 00055 }
SharedExecStream ExecStreamUnitTestBase::prepareTransformGraph | ( | ExecStreamEmbryo & | sourceStreamEmbryo, | |
std::vector< ExecStreamEmbryo > & | transforms | |||
) | [protected, inherited] |
Defines and prepares a graph consisting of one source stream and one or multiple transform streams.
sourceStreamEmbryo | embryonic source stream which produces tuples | |
transforms | embryonic transform streams which process tuples produced by sourceStreamEmbryo or a child stream |
Definition at line 57 of file ExecStreamUnitTestBase.cpp.
References BUFPROV_PRODUCER, ExecStreamEmbryo::getStream(), ExecStreamUnitTestBase::pGraph, and ExecStreamUnitTestBase::pGraphEmbryo.
00060 { 00061 pGraphEmbryo->saveStreamEmbryo(sourceStreamEmbryo); 00062 std::vector<ExecStreamEmbryo>::iterator it; 00063 00064 // save all transforms 00065 for (it = transforms.begin(); it != transforms.end(); ++it) { 00066 pGraphEmbryo->saveStreamEmbryo(*it); 00067 } 00068 00069 // connect streams in a cascade 00070 ExecStreamEmbryo& previousStream = sourceStreamEmbryo; 00071 for (it = transforms.begin(); it != transforms.end(); ++it) { 00072 pGraphEmbryo->addDataflow( 00073 previousStream.getStream()->getName(), 00074 (*it).getStream()->getName()); 00075 previousStream = *it; 00076 } 00077 00078 SharedExecStream pAdaptedStream = 00079 pGraphEmbryo->addAdapterFor( 00080 previousStream.getStream()->getName(), 00081 0, 00082 BUFPROV_PRODUCER); 00083 pGraph->addOutputDataflow(pAdaptedStream->getStreamId()); 00084 00085 pGraphEmbryo->prepareGraph(shared_from_this(), ""); 00086 return pAdaptedStream; 00087 }
SharedExecStream ExecStreamUnitTestBase::prepareConfluenceGraph | ( | ExecStreamEmbryo & | sourceStreamEmbryo1, | |
ExecStreamEmbryo & | sourceStreamEmbryo2, | |||
ExecStreamEmbryo & | confluenceStreamEmbryo | |||
) | [protected, inherited] |
Defines and prepares a graph consisting of two source streams and one confluence stream.
sourceStreamEmbryo1 | embryonic source stream which produces tuples | |
sourceStreamEmbryo2 | embryonic source stream which produces tuples | |
confluenceStreamEmbryo | embryonic confluence stream which processes tuples produced by the sourceStreamEmbryos |
Definition at line 89 of file ExecStreamUnitTestBase.cpp.
Referenced by ExecStreamUnitTestBase::prepareConfluenceGraph(), ExecStreamTestSuite::testCartesianJoinExecStream(), CorrelationJoinExecStreamTestSuite::testCorrelationJoin(), testFilterCols(), ExecStreamGovernorTest::testGovernor(), LhxJoinExecStreamTest::testImpl(), LbmIntersectExecStreamTest::testIntersect(), ExecStreamTestSuite::testMergeExecStream(), LbmMinusExecStreamTest::testMinus(), and ExecStreamTestSuite::testNestedLoopJoinExecStream().
00093 { 00094 std::vector<ExecStreamEmbryo> sourceStreamEmbryos; 00095 sourceStreamEmbryos.push_back(sourceStreamEmbryo1); 00096 sourceStreamEmbryos.push_back(sourceStreamEmbryo2); 00097 return prepareConfluenceGraph(sourceStreamEmbryos, confluenceStreamEmbryo); 00098 }
SharedExecStream ExecStreamUnitTestBase::prepareConfluenceGraph | ( | std::vector< ExecStreamEmbryo > & | sourceStreamEmbryos, | |
ExecStreamEmbryo & | confluenceStreamEmbryo | |||
) | [protected, inherited] |
Defines and prepares a graph consisting of a list of source streams and one confluence stream.
sourceStreamEmbryos | list of embryonic source streams that produce tuples | |
confluenceStreamEmbryo | embryonic confluence stream which processes tuples produced by the sourceStreamEmbryos |
Definition at line 155 of file ExecStreamUnitTestBase.cpp.
References ExecStreamUnitTestBase::prepareConfluenceGraph().
00158 { 00159 std::vector<std::vector<ExecStreamEmbryo> > sourceStreamEmbryosList; 00160 std::vector<ExecStreamEmbryo>::iterator it; 00161 std::vector<ExecStreamEmbryo> sourceStreamList; 00162 for (it = sourceStreamEmbryos.begin(); it != sourceStreamEmbryos.end(); 00163 it++) 00164 { 00165 sourceStreamList.clear(); 00166 sourceStreamList.push_back(*it); 00167 sourceStreamEmbryosList.push_back(sourceStreamList); 00168 } 00169 00170 return 00171 prepareConfluenceGraph(sourceStreamEmbryosList, confluenceStreamEmbryo); 00172 }
SharedExecStream ExecStreamUnitTestBase::prepareConfluenceGraph | ( | std::vector< std::vector< ExecStreamEmbryo > > & | sourceStreamEmbryosList, | |
ExecStreamEmbryo & | confluenceStreamEmbryo | |||
) | [protected, inherited] |
Defines and prepares a graph consisting of one or more source streams and one confluence stream.
Each source stream can be a list of streams.
sourceStreamEmbryosList | list of embryonic source streams which produce tuples | |
confluenceStreamEmbryo | embryonic confluence stream which processes tuples produced by the source streams |
Definition at line 174 of file ExecStreamUnitTestBase.cpp.
References BUFPROV_PRODUCER, ExecStreamEmbryo::getStream(), ExecStreamUnitTestBase::pGraph, and ExecStreamUnitTestBase::pGraphEmbryo.
00177 { 00178 pGraphEmbryo->saveStreamEmbryo(confluenceStreamEmbryo); 00179 00180 for (int i = 0; i < sourceStreamEmbryosList.size(); i++) { 00181 for (int j = 0; j < sourceStreamEmbryosList[i].size(); j++) { 00182 pGraphEmbryo->saveStreamEmbryo(sourceStreamEmbryosList[i][j]); 00183 } 00184 00185 // connect streams in each sourceStreamEmbryos list in a cascade 00186 for (int j = 1; j < sourceStreamEmbryosList[i].size(); j++) { 00187 pGraphEmbryo->addDataflow( 00188 sourceStreamEmbryosList[i][j - 1].getStream()->getName(), 00189 sourceStreamEmbryosList[i][j].getStream()->getName()); 00190 } 00191 pGraphEmbryo->addDataflow( 00192 sourceStreamEmbryosList[i].back().getStream()->getName(), 00193 confluenceStreamEmbryo.getStream()->getName()); 00194 } 00195 00196 SharedExecStream pAdaptedStream = 00197 pGraphEmbryo->addAdapterFor( 00198 confluenceStreamEmbryo.getStream()->getName(), 0, 00199 BUFPROV_PRODUCER); 00200 pGraph->addOutputDataflow( 00201 pAdaptedStream->getStreamId()); 00202 00203 pGraphEmbryo->prepareGraph(shared_from_this(), ""); 00204 00205 return pAdaptedStream; 00206 }
SharedExecStream ExecStreamUnitTestBase::prepareConfluenceTransformGraph | ( | ExecStreamEmbryo & | sourceStreamEmbryo1, | |
ExecStreamEmbryo & | sourceStreamEmbryo2, | |||
ExecStreamEmbryo & | confluenceStreamEmbryo, | |||
ExecStreamEmbryo & | transformStreamEmbryo | |||
) | [protected, inherited] |
Defines and prepares a graph consisting of two source streams, one confluence stream, and one transform stream.
sourceStreamEmbryo1 | embryonic source stream which produces tuples | |
sourceStreamEmbryo2 | embryonic source stream which produces tuples | |
confluenceStreamEmbryo | embryonic confluence stream which processes tuples produced by the sourceStreamEmbryos | |
transformStreamEmbryo | embryonic transform streams which process tuples produced by a child stream |
Definition at line 100 of file ExecStreamUnitTestBase.cpp.
References BUFPROV_PRODUCER, ExecStreamEmbryo::getStream(), ExecStreamUnitTestBase::pGraph, and ExecStreamUnitTestBase::pGraphEmbryo.
Referenced by LhxJoinExecStreamTest::testImpl(), and LbmMinusExecStreamTest::testRestartingMinus().
00105 { 00106 std::vector<ExecStreamEmbryo> sourceStreamEmbryos; 00107 sourceStreamEmbryos.push_back(sourceStreamEmbryo1); 00108 sourceStreamEmbryos.push_back(sourceStreamEmbryo2); 00109 00110 std::vector<ExecStreamEmbryo>::iterator it; 00111 00112 for (it = sourceStreamEmbryos.begin(); it != sourceStreamEmbryos.end(); 00113 ++it) 00114 { 00115 pGraphEmbryo->saveStreamEmbryo(*it); 00116 } 00117 pGraphEmbryo->saveStreamEmbryo(confluenceStreamEmbryo); 00118 00119 for (it = sourceStreamEmbryos.begin(); it != sourceStreamEmbryos.end(); 00120 ++it) 00121 { 00122 pGraphEmbryo->addDataflow( 00123 (*it).getStream()->getName(), 00124 confluenceStreamEmbryo.getStream()->getName()); 00125 } 00126 00127 std::vector<ExecStreamEmbryo> transforms; 00128 transforms.push_back(transformStreamEmbryo); 00129 ExecStreamEmbryo& previousStream = confluenceStreamEmbryo; 00130 00131 // save all transforms 00132 for (it = transforms.begin(); it != transforms.end(); ++it) { 00133 pGraphEmbryo->saveStreamEmbryo(*it); 00134 } 00135 00136 for (it = transforms.begin(); it != transforms.end(); ++it) { 00137 pGraphEmbryo->addDataflow( 00138 previousStream.getStream()->getName(), 00139 (*it).getStream()->getName()); 00140 previousStream = *it; 00141 } 00142 00143 00144 SharedExecStream pAdaptedStream = 00145 pGraphEmbryo->addAdapterFor( 00146 previousStream.getStream()->getName(), 00147 0, 00148 BUFPROV_PRODUCER); 00149 pGraph->addOutputDataflow(pAdaptedStream->getStreamId()); 00150 00151 pGraphEmbryo->prepareGraph(shared_from_this(), ""); 00152 return pAdaptedStream; 00153 }
SharedExecStream ExecStreamUnitTestBase::prepareDAG | ( | ExecStreamEmbryo & | srcStreamEmbryo, | |
ExecStreamEmbryo & | splitterStreamEmbryo, | |||
std::vector< ExecStreamEmbryo > & | interStreamEmbryos, | |||
ExecStreamEmbryo & | destStreamEmbryo, | |||
bool | createSink = true , |
|||
bool | saveSrc = true | |||
) | [protected, inherited] |
Defines and prepares a graph consisting of a source, a splitter, and one or more parallel transform streams which flow together into a confluence stream.
srcStreamEmbryo | embryonic source stream which produces tuples | |
splitterStreamEmbryo | embryonic SplitterExecStream which produces tuples for multiple consumers | |
interStreamEmbryos | embryonic intermediate streams which transform tuples; each stream consists of a single embryo | |
destStreamEmbryo | embryonic confluence stream which processes tuples produced by the interStreamEmbryos | |
createSink | if true (the default), creates a final output sink in the stream graph | |
saveSrc | if true (the default), save the source in the stream graph; if false, the save has already been done |
Definition at line 208 of file ExecStreamUnitTestBase.cpp.
Referenced by LcsMultiClusterAppendTest::loadClusters(), LbmSearchTest::loadTableAndIndex(), LbmLoadBitmapTest::testLoad(), ExecStreamTestSuite::testMergeImplicitPullInputs(), ExecStreamTestSuite::testSegBufferReaderWriterExecStream(), and ExecStreamTestSuite::testSplitterPlusBarrier().
00215 { 00216 std::vector<std::vector<ExecStreamEmbryo> > listOfList; 00217 00218 // Convert interStreamEmbryos to a vector of vectors. E.g., if 00219 // interStreamEmbryos contains (1, 2, 3), it will get converted to: 00220 // ((1)) ((2)) ((3)) 00221 for (uint i = 0; i < interStreamEmbryos.size(); i++) { 00222 std::vector<ExecStreamEmbryo> interStreamEmbryoList; 00223 00224 interStreamEmbryoList.push_back(interStreamEmbryos[i]); 00225 listOfList.push_back(interStreamEmbryoList); 00226 } 00227 return prepareDAG( 00228 srcStreamEmbryo, splitterStreamEmbryo, listOfList, destStreamEmbryo, 00229 createSink, saveSrc); 00230 }
SharedExecStream ExecStreamUnitTestBase::prepareDAG | ( | ExecStreamEmbryo & | srcStreamEmbryo, | |
ExecStreamEmbryo & | splitterStreamEmbryo, | |||
std::vector< std::vector< ExecStreamEmbryo > > & | interStreamEmbryosList, | |||
ExecStreamEmbryo & | destStreamEmbryo, | |||
bool | createSink = true , |
|||
bool | saveSrc = true | |||
) | [protected, inherited] |
Defines and prepares a graph consisting of a source, a splitter, and one or more parallel transform streams which flow together into a confluence stream.
srcStreamEmbryo | embryonic source stream which produces tuples | |
splitterStreamEmbryo | embryonic SplitterExecStream which produces tuples for multiple consumers | |
interStreamEmbryosList | one or more embryonic intermediate streams which transform tuples; each stream can have one more embryos | |
destStreamEmbryo | embryonic confluence stream which processes tuples produced by the interStreamEmbryos | |
createSink | if true (the default), creates a final output sink in the stream graph | |
saveSrc | if true (the default), save the source in the stream graph; if false, the save has already been done |
Definition at line 232 of file ExecStreamUnitTestBase.cpp.
References BUFPROV_PRODUCER, ExecStreamEmbryo::getStream(), ExecStreamUnitTestBase::pGraph, and ExecStreamUnitTestBase::pGraphEmbryo.
00239 { 00240 if (saveSrc) { 00241 pGraphEmbryo->saveStreamEmbryo(srcStreamEmbryo); 00242 } 00243 pGraphEmbryo->saveStreamEmbryo(splitterStreamEmbryo); 00244 00245 // save all intermediate stream embryos 00246 for (int i = 0; i < interStreamEmbryos.size(); i++) { 00247 for (int j = 0; j < interStreamEmbryos[i].size(); j++) { 00248 pGraphEmbryo->saveStreamEmbryo(interStreamEmbryos[i][j]); 00249 } 00250 00251 // connect streams in each interStreamEmbryos list in a cascade 00252 for (int j = 1; j < interStreamEmbryos[i].size(); j++) { 00253 pGraphEmbryo->addDataflow( 00254 interStreamEmbryos[i][j - 1].getStream()->getName(), 00255 interStreamEmbryos[i][j].getStream()->getName()); 00256 } 00257 } 00258 00259 pGraphEmbryo->saveStreamEmbryo(destStreamEmbryo); 00260 00261 pGraphEmbryo->addDataflow( 00262 srcStreamEmbryo.getStream()->getName(), 00263 splitterStreamEmbryo.getStream()->getName()); 00264 00265 // connect all inter streams to src and dest 00266 for (int i = 0; i < interStreamEmbryos.size(); i++) { 00267 pGraphEmbryo->addDataflow( 00268 splitterStreamEmbryo.getStream()->getName(), 00269 interStreamEmbryos[i][0].getStream()->getName()); 00270 pGraphEmbryo->addDataflow( 00271 interStreamEmbryos[i].back().getStream()->getName(), 00272 destStreamEmbryo.getStream()->getName()); 00273 } 00274 00275 SharedExecStream pAdaptedStream; 00276 00277 if (createSink) { 00278 pAdaptedStream = pGraphEmbryo->addAdapterFor( 00279 destStreamEmbryo.getStream()->getName(), 0, 00280 BUFPROV_PRODUCER); 00281 pGraph->addOutputDataflow(pAdaptedStream->getStreamId()); 00282 00283 pGraphEmbryo->prepareGraph(shared_from_this(), ""); 00284 } 00285 00286 return pAdaptedStream; 00287 }
void ExecStreamUnitTestBase::verifyOutput | ( | ExecStream & | stream, | |
uint | nRowsExpected, | |||
MockProducerExecStreamGenerator & | verifier, | |||
bool | stopEarly = false | |||
) | [protected, inherited] |
Executes the prepared stream graph and verifies that its output matches that produced by a value generator.
stream | output stream from which to read | |
nRowsExpected | number of rows expected | |
verifier | generator for expected values | |
stopEarly | if true, stop once nRowsExpected have been fetched, even if more rows are available; this can be used for simulating the cleanup effect of an error in the middle of execution |
Definition at line 325 of file ExecStreamUnitTestBase.cpp.
References TupleData::compute(), EXECBUF_EOS, MockProducerExecStreamGenerator::generateValue(), ExecStreamUnitTestBase::pGraph, ExecStreamTestBase::pResourceGovernor, and ExecStreamTestBase::pScheduler.
Referenced by LcsClusterReplaceExecStreamTest::loadCluster(), LcsMultiClusterAppendTest::loadClusters(), loadOneCluster(), LbmSearchTest::loadTableAndIndex(), LcsClusterReplaceExecStreamTest::replaceCluster(), LcsMultiClusterAppendTest::scanCols(), LbmSplicerExecStreamTest::spliceInput(), ExecStreamTestSuite::testBTreeInsertExecStream(), CollectExecStreamTestSuite::testCollectCollectUncollectUncollect(), CollectExecStreamTestSuite::testCollectUncollect(), CorrelationJoinExecStreamTestSuite::testCorrelationJoin(), ExecStreamTestSuite::testCountAggExecStream(), LhxAggExecStreamTest::testCountImpl(), ExecStreamTestSuite::testDoubleBufferExecStream(), testFilterCols(), ExecStreamTestSuite::testGroupAggExecStreamNrows(), LhxAggExecStreamTest::testGroupCountImpl(), LhxJoinExecStreamTest::testImpl(), ExternalSortExecStreamTest::testImpl(), LbmLoadBitmapTest::testLoad(), LcsClusterAppendExecStreamTest::testLoadMultiCol(), LcsClusterAppendExecStreamTest::testLoadSingleCol(), ExecStreamTestSuite::testMergeImplicitPullInputs(), ExecStreamTestSuite::testNestedLoopJoinExecStream(), LbmNormalizerExecStreamTest::testNormalizer(), ExecStreamTestSuite::testReshapeExecStream(), LbmMinusExecStreamTest::testRestartingMinus(), testSampleScanCols(), testScanCols(), LcsClusterAppendExecStreamTest::testScanMultiCol(), LcsClusterAppendExecStreamTest::testScanSingleCol(), ExecStreamTestSuite::testScratchBufferExecStream(), ExecStreamTestSuite::testSingleValueAggExecStream(), LhxAggExecStreamTest::testSingleValueImpl(), LbmSortedAggExecStreamTest::testSortedAgg(), ExecStreamTestSuite::testSplitterPlusBarrier(), ExecStreamTestSuite::testSumAggExecStream(), LhxAggExecStreamTest::testSumImpl(), and LcsClusterReplaceExecStreamTest::verifyCluster().
00330 { 00331 // TODO: assertions about output tuple 00332 00333 pResourceGovernor->requestResources(*pGraph); 00334 pGraph->open(); 00335 pScheduler->start(); 00336 uint nRows = 0; 00337 for (;;) { 00338 ExecStreamBufAccessor &bufAccessor = 00339 pScheduler->readStream(stream); 00340 if (bufAccessor.getState() == EXECBUF_EOS) { 00341 break; 00342 } 00343 BOOST_REQUIRE(bufAccessor.isConsumptionPossible()); 00344 const uint nCol = 00345 bufAccessor.getConsumptionTupleAccessor().size(); 00346 BOOST_REQUIRE(nCol == bufAccessor.getTupleDesc().size()); 00347 BOOST_REQUIRE(nCol >= 1); 00348 TupleData inputTuple; 00349 inputTuple.compute(bufAccessor.getTupleDesc()); 00350 for (;;) { 00351 if (!bufAccessor.demandData()) { 00352 break; 00353 } 00354 BOOST_REQUIRE(nRows < nRowsExpected); 00355 bufAccessor.unmarshalTuple(inputTuple); 00356 for (int col = 0; col < nCol; ++col) { 00357 int64_t actualValue = 00358 *reinterpret_cast<int64_t const *>(inputTuple[col].pData); 00359 int64_t expectedValue = generator.generateValue(nRows, col); 00360 if (actualValue != expectedValue) { 00361 std::cout << "(Row, Col) = (" << nRows << ", " << col <<")" 00362 << std::endl; 00363 BOOST_CHECK_EQUAL(expectedValue,actualValue); 00364 return; 00365 } 00366 } 00367 bufAccessor.consumeTuple(); 00368 ++nRows; 00369 if (stopEarly && nRows == nRowsExpected) { 00370 return; 00371 } 00372 } 00373 } 00374 BOOST_CHECK_EQUAL(nRowsExpected,nRows); 00375 }
void ExecStreamUnitTestBase::verifyConstantOutput | ( | ExecStream & | stream, | |
const TupleData & | expectedTuple, | |||
uint | nRowsExpected | |||
) | [protected, inherited] |
Executes the prepared stream graph and verifies that all output tuples matche an expected and given one.
stream | output stream from which to read | |
expectedTuple | ||
nRowsExpected |
Definition at line 377 of file ExecStreamUnitTestBase.cpp.
References TupleData::compute(), EXECBUF_EOS, ExecStreamUnitTestBase::pGraph, ExecStreamTestBase::pResourceGovernor, TuplePrinter::print(), and ExecStreamTestBase::pScheduler.
Referenced by ExecStreamTestSuite::testCartesianJoinExecStream(), CollectExecStreamTestSuite::testCollectInts(), CalcExecStreamTestSuite::testConstant(), ExecStreamTestSuite::testCopyExecStream(), ExecStreamGovernorTest::testGovernor(), ExecStreamTestSuite::testMergeExecStream(), ExecStreamTestSuite::testSegBufferExecStream(), and ExecStreamTestSuite::testSegBufferReaderWriterExecStream().
00381 { 00382 // TODO: assertions about output tuple 00383 00384 pResourceGovernor->requestResources(*pGraph); 00385 pGraph->open(); 00386 pScheduler->start(); 00387 uint nRows = 0; 00388 for (;;) { 00389 ExecStreamBufAccessor &bufAccessor = 00390 pScheduler->readStream(stream); 00391 if (bufAccessor.getState() == EXECBUF_EOS) { 00392 break; 00393 } 00394 BOOST_REQUIRE(bufAccessor.isConsumptionPossible()); 00395 00396 if (!bufAccessor.demandData()) { 00397 break; 00398 } 00399 BOOST_REQUIRE(nRows < nRowsExpected); 00400 00401 TupleData actualTuple; 00402 actualTuple.compute(bufAccessor.getTupleDesc()); 00403 bufAccessor.unmarshalTuple(actualTuple); 00404 00405 int c = bufAccessor.getTupleDesc().compareTuples( 00406 expectedTuple, actualTuple); 00407 bufAccessor.consumeTuple(); 00408 ++nRows; 00409 if (c) { 00410 #if 1 00411 TupleDescriptor statusDesc = bufAccessor.getTupleDesc(); 00412 TuplePrinter tuplePrinter; 00413 tuplePrinter.print(std::cout, statusDesc, actualTuple); 00414 tuplePrinter.print(std::cout, statusDesc, expectedTuple); 00415 std::cout << std::endl; 00416 #endif 00417 BOOST_CHECK_EQUAL(0,c); 00418 break; 00419 } 00420 } 00421 BOOST_CHECK_EQUAL(nRowsExpected, nRows); 00422 }
void ExecStreamUnitTestBase::verifyBufferedOutput | ( | ExecStream & | stream, | |
TupleDescriptor | outputTupleDesc, | |||
uint | nRowsExpected, | |||
PBuffer | expectedBuffer | |||
) | [protected, inherited] |
Executes the prepared stream graph and verifies the resultant tuples against a set of tuples supplied in an input buffer.
stream | output stream from which to read | |
outputTupleDesc | descriptor of expected output tuple | |
nRowsExpected | number of rows expected | |
expectedBuffer | buffer containing expected tuples |
Definition at line 424 of file ExecStreamUnitTestBase.cpp.
References TupleDescriptor::compareTuples(), TupleData::compute(), TupleAccessor::compute(), EXECBUF_EOS, TupleAccessor::getCurrentByteCount(), ExecStreamUnitTestBase::pGraph, ExecStreamTestBase::pResourceGovernor, ExecStreamTestBase::pScheduler, TupleAccessor::setCurrentTupleBuf(), and TupleAccessor::unmarshal().
Referenced by LbmIntersectExecStreamTest::testIntersect(), LbmMinusExecStreamTest::testMinus(), LbmSearchTest::testScanIdx(), and LbmUnionExecStreamTest::testUnion().
00429 { 00430 // TODO: assertions about output tuple 00431 00432 TupleAccessor expectedOutputAccessor; 00433 expectedOutputAccessor.compute(outputTupleDesc); 00434 TupleData expectedTuple(outputTupleDesc); 00435 uint bufOffset = 0; 00436 pResourceGovernor->requestResources(*pGraph); 00437 pGraph->open(); 00438 pScheduler->start(); 00439 uint nRows = 0; 00440 for (;;) { 00441 ExecStreamBufAccessor &bufAccessor = 00442 pScheduler->readStream(stream); 00443 if (bufAccessor.getState() == EXECBUF_EOS) { 00444 break; 00445 } 00446 BOOST_REQUIRE(bufAccessor.getTupleDesc() == outputTupleDesc); 00447 BOOST_REQUIRE(bufAccessor.isConsumptionPossible()); 00448 const uint nCol = 00449 bufAccessor.getConsumptionTupleAccessor().size(); 00450 BOOST_REQUIRE(nCol == bufAccessor.getTupleDesc().size()); 00451 BOOST_REQUIRE(nCol >= 1); 00452 TupleData inputTuple; 00453 inputTuple.compute(bufAccessor.getTupleDesc()); 00454 for (;;) { 00455 if (!bufAccessor.demandData()) { 00456 break; 00457 } 00458 BOOST_REQUIRE(nRows < nRowsExpected); 00459 bufAccessor.unmarshalTuple(inputTuple); 00460 expectedOutputAccessor.setCurrentTupleBuf( 00461 expectedBuffer + bufOffset); 00462 expectedOutputAccessor.unmarshal(expectedTuple); 00463 int c = outputTupleDesc.compareTuples(inputTuple, expectedTuple); 00464 if (c) { 00465 std::cout << "(Row) = (" << nRows << ")" 00466 << " -- Tuples don't match"<< std::endl; 00467 BOOST_CHECK_EQUAL(0,c); 00468 return; 00469 } 00470 bufAccessor.consumeTuple(); 00471 bufOffset += expectedOutputAccessor.getCurrentByteCount(); 00472 ++nRows; 00473 } 00474 } 00475 BOOST_CHECK_EQUAL(nRowsExpected,nRows); 00476 }
void ExecStreamUnitTestBase::resetExecStreamTest | ( | ) | [protected, inherited] |
Reset stream graph so multiple iterations of a method can be called within a single testcase.
Definition at line 305 of file ExecStreamUnitTestBase.cpp.
References ExecStreamTestBase::newScheduler(), ExecStreamTestBase::newStreamGraph(), ExecStreamTestBase::newStreamGraphEmbryo(), ExecStreamUnitTestBase::pGraph, ExecStreamUnitTestBase::pGraphEmbryo, ExecStreamTestBase::pResourceGovernor, ExecStreamTestBase::pScheduler, and ExecStreamUnitTestBase::tearDownExecStreamTest().
Referenced by loadClusters(), LbmLoadBitmapTest::testAppend(), testBernoulliSampling(), LcsClusterReplaceExecStreamTest::testClusterReplace(), testCompressedFiltering(), LbmSplicerExecStreamTest::testLER5968(), LbmSplicerExecStreamTest::testLER6473(), LcsMultiClusterAppendTest::testLoad(), LcsClusterAppendExecStreamTest::testMultiColConstNewRoot(), LcsClusterAppendExecStreamTest::testMultiColConstOldRoot(), LcsClusterAppendExecStreamTest::testMultiColNoDupNewRoot(), LcsClusterAppendExecStreamTest::testMultiColNoDupOldRoot(), LcsClusterAppendExecStreamTest::testMultiColStairNewRoot(), LcsClusterAppendExecStreamTest::testMultiColStairOldRoot(), LbmSearchTest::testMultipleRanges(), ExecStreamGovernorTest::testReturnResources(), LbmSearchTest::testScanIdx(), testScanPastEndOfCluster(), testScans(), LcsClusterAppendExecStreamTest::testSingleColConstNewRoot(), LcsClusterAppendExecStreamTest::testSingleColConstOldRoot(), LcsClusterAppendExecStreamTest::testSingleColNoDupNewRoot(), LcsClusterAppendExecStreamTest::testSingleColNoDupOldRoot(), LcsClusterAppendExecStreamTest::testSingleColStairNewRoot(), LcsClusterAppendExecStreamTest::testSingleColStairOldRoot(), LbmSplicerExecStreamTest::testSpliceRids(), LbmSplicerExecStreamTest::testSpliceWithKeys(), and testSystemSampling().
00306 { 00307 if (pScheduler) { 00308 pScheduler->stop(); 00309 } 00310 tearDownExecStreamTest(); 00311 00312 pScheduler.reset(newScheduler()); 00313 pGraph = newStreamGraph(); 00314 pGraphEmbryo = newStreamGraphEmbryo(pGraph); 00315 pGraph->setResourceGovernor(pResourceGovernor); 00316 }
void ExecStreamUnitTestBase::tearDownExecStreamTest | ( | ) | [protected, virtual, inherited] |
ExecStream-specific handler called from testCaseTearDown.
Reimplemented from ExecStreamTestBase.
Definition at line 319 of file ExecStreamUnitTestBase.cpp.
References ExecStreamUnitTestBase::pGraph, and ExecStreamUnitTestBase::pGraphEmbryo.
Referenced by ExecStreamUnitTestBase::resetExecStreamTest().
00320 { 00321 pGraph.reset(); 00322 pGraphEmbryo.reset(); 00323 }
SharedExecStreamGraph ExecStreamTestBase::newStreamGraph | ( | ) | [protected, virtual, inherited] |
Creates a stream graph.
Definition at line 37 of file ExecStreamTestBase.cpp.
References ExecStreamGraph::newExecStreamGraph().
Referenced by ExecStreamUnitTestBase::resetExecStreamTest(), and ExecStreamUnitTestBase::testCaseSetUp().
00038 { 00039 SharedExecStreamGraph pGraph = ExecStreamGraph::newExecStreamGraph(); 00040 pGraph->enableDummyTxnId(true); 00041 return pGraph; 00042 }
SharedExecStreamGraphEmbryo ExecStreamTestBase::newStreamGraphEmbryo | ( | SharedExecStreamGraph | ) | [protected, virtual, inherited] |
Creates an embryo for a stream graph.
Definition at line 45 of file ExecStreamTestBase.cpp.
References CacheTestBase::pCache, ExecStreamTestBase::pScheduler, and SegStorageTestBase::pSegmentFactory.
Referenced by ExecStreamUnitTestBase::resetExecStreamTest(), and ExecStreamUnitTestBase::testCaseSetUp().
00046 { 00047 return SharedExecStreamGraphEmbryo( 00048 new ExecStreamGraphEmbryo( 00049 g, pScheduler, pCache, pSegmentFactory)); 00050 }
ExecStreamScheduler * ExecStreamTestBase::newScheduler | ( | ) | [protected, virtual, inherited] |
Creates a scheduler.
Reimplemented in ParallelExecStreamSchedulerTest.
Definition at line 52 of file ExecStreamTestBase.cpp.
Referenced by ExecStreamUnitTestBase::resetExecStreamTest(), and ExecStreamTestBase::testCaseSetUp().
00053 { 00054 return new DfsTreeExecStreamScheduler( 00055 shared_from_this(), 00056 "DfsTreeExecStreamScheduler"); 00057 }
ExecStreamGovernor * ExecStreamTestBase::newResourceGovernor | ( | ExecStreamResourceKnobs const & | knobSettings, | |
ExecStreamResourceQuantity const & | resourcesAvailable | |||
) | [protected, virtual, inherited] |
Creates the resource governor.
Definition at line 59 of file ExecStreamTestBase.cpp.
Referenced by ExecStreamTestBase::testCaseSetUp().
00062 { 00063 return new SimpleExecStreamGovernor( 00064 knobSettings, resourcesAvailable, shared_from_this(), 00065 "SimpleExecStreamGovernor"); 00066 }
void SegStorageTestBase::openStorage | ( | DeviceMode | openMode | ) | [virtual, inherited] |
Reimplemented from CacheTestBase.
Reimplemented in SegmentTestBase.
Definition at line 31 of file SegStorageTestBase.cpp.
References SegStorageTestBase::openSegmentStorage(), and CacheTestBase::openStorage().
Referenced by SegStorageTestBase::openRandomSegment(), SegmentTestBase::openStorage(), LhxHashTableTest::testCaseSetUp(), ExecStreamTestBase::testCaseSetUp(), BTreeTest::testCaseSetUp(), BTreeReadersTest::testCaseSetUp(), LbmEntryTest::testCaseSetUp(), SegPageIterTest::testIter(), SegPageEntryIterTest::testIter(), SegStreamTest::testMarkReset(), SegStreamTest::testReadSeg(), LogicalTxnTest::testTxn(), SegStreamTest::testWriteSeg(), and SegStreamTest::testWriteSpillAndRead().
00032 { 00033 CacheTestBase::openStorage(openMode); 00034 openSegmentStorage(openMode); 00035 }
void SegStorageTestBase::openSegmentStorage | ( | DeviceMode | openMode | ) | [virtual, inherited] |
Reimplemented in LinearViewSegmentTest, SnapshotSegmentTestBase, and VersionedSegmentTest.
Definition at line 37 of file SegStorageTestBase.cpp.
References CacheTestBase::cbPageFull, DeviceMode::create, SegStorageTestBase::createLinearDeviceSegment(), CacheTestBase::dataDeviceId, SegStorageTestBase::pLinearSegment, and CacheTestBase::pRandomAccessDevice.
Referenced by VersionedSegmentTest::openSegmentStorage(), and SegStorageTestBase::openStorage().
00038 { 00039 pLinearSegment = createLinearDeviceSegment( 00040 dataDeviceId, 00041 openMode.create ? 0 00042 : pRandomAccessDevice->getSizeInBytes() / cbPageFull); 00043 }
void SegStorageTestBase::openRandomSegment | ( | ) | [virtual, inherited] |
Reimplemented in LcsClusterReplaceExecStreamTest.
Definition at line 45 of file SegStorageTestBase.cpp.
References SegStorageTestBase::closeStorage(), DeviceMode::load, SegStorageTestBase::openStorage(), SegStorageTestBase::pLinearSegment, SegStorageTestBase::pRandomSegment, and SegStorageTestBase::pSegmentFactory.
Referenced by RandomAllocationSegmentTest::testAllocateAndDeallocate(), LhxHashTableTest::testCaseSetUp(), ExecStreamUnitTestBase::testCaseSetUp(), BTreeTest::testCaseSetUp(), and BTreeReadersTest::testCaseSetUp().
00046 { 00047 // reopen will interpret pages as already allocated, which 00048 // is what RandomAllocationSegment expects 00049 closeStorage(); 00050 openStorage(DeviceMode::load); 00051 pRandomSegment = pSegmentFactory->newRandomAllocationSegment( 00052 pLinearSegment, true); 00053 pLinearSegment.reset(); 00054 }
SharedSegment SegStorageTestBase::createLinearDeviceSegment | ( | DeviceId | deviceId, | |
uint | nPages | |||
) | [inherited] |
Definition at line 56 of file SegStorageTestBase.cpp.
References LinearDeviceSegmentParams::firstBlockId, LinearDeviceSegmentParams::nPagesAllocated, LinearDeviceSegmentParams::nPagesMin, CacheTestBase::pCache, SegStorageTestBase::pSegmentFactory, CompoundId::setBlockNum(), and CompoundId::setDeviceId().
Referenced by VersionedSegmentTest::openSegmentStorage(), SnapshotSegmentTestBase::openSegmentStorage(), SegStorageTestBase::openSegmentStorage(), and LinearViewSegmentTest::openSegmentStorage().
00058 { 00059 BlockId blockId(0); 00060 CompoundId::setDeviceId(blockId,deviceId); 00061 CompoundId::setBlockNum(blockId,0); 00062 LinearDeviceSegmentParams deviceParams; 00063 deviceParams.firstBlockId = blockId; 00064 deviceParams.nPagesMin = nPages; 00065 deviceParams.nPagesAllocated = nPages; 00066 return pSegmentFactory->newLinearDeviceSegment( 00067 pCache,deviceParams); 00068 }
void SegStorageTestBase::closeLinearSegment | ( | ) | [inherited] |
Definition at line 70 of file SegStorageTestBase.cpp.
References SegStorageTestBase::pLinearSegment.
Referenced by VersionedSegmentTest::closeStorage(), SnapshotSegmentTestBase::closeStorage(), SegStorageTestBase::closeStorage(), and SnapshotSegmentTest::testUncommittedReads().
00071 { 00072 if (pLinearSegment) { 00073 assert(pLinearSegment.unique()); 00074 pLinearSegment.reset(); 00075 } 00076 }
void SegStorageTestBase::closeRandomSegment | ( | ) | [inherited] |
Definition at line 78 of file SegStorageTestBase.cpp.
References SegStorageTestBase::pRandomSegment.
Referenced by VersionedSegmentTest::closeStorage(), and SegStorageTestBase::closeStorage().
00079 { 00080 if (pRandomSegment) { 00081 assert(pRandomSegment.unique()); 00082 pRandomSegment.reset(); 00083 } 00084 }
void SegStorageTestBase::closeVersionedRandomSegment | ( | ) | [inherited] |
Definition at line 86 of file SegStorageTestBase.cpp.
References SegStorageTestBase::pVersionedRandomSegment.
Referenced by SnapshotSegmentTestBase::closeStorage(), and SegStorageTestBase::closeStorage().
00087 { 00088 if (pVersionedRandomSegment) { 00089 assert(pVersionedRandomSegment.unique()); 00090 pVersionedRandomSegment.reset(); 00091 } 00092 }
void SegStorageTestBase::closeSnapshotRandomSegment | ( | ) | [inherited] |
Definition at line 94 of file SegStorageTestBase.cpp.
References SegStorageTestBase::pSnapshotRandomSegment.
Referenced by SnapshotSegmentTestBase::closeStorage().
00095 { 00096 if (pSnapshotRandomSegment) { 00097 assert(pSnapshotRandomSegment.unique()); 00098 pSnapshotRandomSegment.reset(); 00099 } 00100 }
void SegStorageTestBase::closeStorage | ( | ) | [virtual, inherited] |
Reimplemented from CacheTestBase.
Reimplemented in SnapshotSegmentTestBase, and VersionedSegmentTest.
Definition at line 102 of file SegStorageTestBase.cpp.
References SegStorageTestBase::closeLinearSegment(), SegStorageTestBase::closeRandomSegment(), CacheTestBase::closeStorage(), and SegStorageTestBase::closeVersionedRandomSegment().
Referenced by VersionedSegmentTest::closeStorage(), SnapshotSegmentTestBase::closeStorage(), SegStorageTestBase::openRandomSegment(), SegPageIterTest::testIter(), SegPageEntryIterTest::testIter(), SegStreamTest::testMarkReset(), SegStreamTest::testReadSeg(), SegmentTestBase::testSingleThread(), SegStreamTest::testWriteSeg(), and SegStreamTest::testWriteSpillAndRead().
00103 { 00104 closeLinearSegment(); 00105 closeRandomSegment(); 00106 closeVersionedRandomSegment(); 00107 // TODO: assert pSegmentFactory.unique(), but not here 00108 CacheTestBase::closeStorage(); 00109 }
Cache & CacheTestBase::getCache | ( | ) | [inherited] |
Definition at line 42 of file CacheTestBase.cpp.
References CacheTestBase::pCache.
Referenced by CacheTest::lockPage(), CacheTest::prefetchBatch(), SegmentTestBase::prefetchPage(), CacheTest::prefetchPage(), PagingTestBase::testCacheResize(), PagingTestBase::testCheckpoint(), PagingTestBase::testOp(), PagingTestBase::testScratch(), SegmentTestBase::unlockPage(), and CacheTest::unlockPage().
00043 { 00044 return *pCache; 00045 }
SharedCache CacheTestBase::newCache | ( | ) | [virtual, inherited] |
Definition at line 66 of file CacheTestBase.cpp.
References CacheTestBase::cacheParams, Cache::newCache(), CacheTestBase::victimLRU, CacheTestBase::victimPolicy, CacheTestBase::victimRandom, and CacheTestBase::victimTwoQ.
Referenced by CacheTestBase::openStorage().
00067 { 00068 switch (victimPolicy) { 00069 case victimRandom: 00070 return SharedCache( 00071 new RandomCache(cacheParams), 00072 ClosableObjectDestructor()); 00073 case victimLRU: 00074 return SharedCache( 00075 new LRUCache(cacheParams), 00076 ClosableObjectDestructor()); 00077 case victimTwoQ: 00078 return Cache::newCache(cacheParams); 00079 default: 00080 permAssert(false); 00081 } 00082 }
SharedRandomAccessDevice CacheTestBase::openDevice | ( | std::string | devName, | |
DeviceMode | openMode, | |||
uint | nDevicePages, | |||
DeviceId | deviceId | |||
) | [inherited] |
Definition at line 84 of file CacheTestBase.cpp.
References CacheTestBase::cbPageFull, DeviceMode::create, CacheTestBase::pCache, and FileSystem::remove().
Referenced by VersionedSegmentTest::openSegmentStorage(), SnapshotSegmentTestBase::openSegmentStorage(), and CacheTestBase::openStorage().
00087 { 00088 if (openMode.create) { 00089 FileSystem::remove(devName.c_str()); 00090 } 00091 SharedRandomAccessDevice pDevice( 00092 new RandomAccessFileDevice(devName,openMode)); 00093 if (openMode.create) { 00094 pDevice->setSizeInBytes(nDevicePages*cbPageFull); 00095 } 00096 pCache->registerDevice(deviceId,pDevice); 00097 return pDevice; 00098 }
void CacheTestBase::closeDevice | ( | DeviceId | deviceId, | |
SharedRandomAccessDevice & | pDevice | |||
) | [inherited] |
Definition at line 130 of file CacheTestBase.cpp.
References CHECKPOINT_FLUSH_AND_UNMAP, and CacheTestBase::pCache.
Referenced by VersionedSegmentTest::closeStorage(), SnapshotSegmentTestBase::closeStorage(), and CacheTestBase::closeStorage().
00132 { 00133 if (!pDevice) { 00134 return; 00135 } 00136 DeviceIdPagePredicate pagePredicate(deviceId); 00137 pCache->checkpointPages(pagePredicate,CHECKPOINT_FLUSH_AND_UNMAP); 00138 pCache->unregisterDevice(deviceId); 00139 assert(pDevice.unique()); 00140 pDevice.reset(); 00141 }
void TestBase::snooze | ( | uint | nSeconds | ) | [protected, inherited] |
Definition at line 263 of file TestBase.cpp.
Referenced by DatabaseTest::executeForceTxn(), ThreadedTestBase::runThreadedTestCase(), PagingTestBase::testCacheResize(), BTreeTxnTest::testCheckpoint(), PagingTestBase::testCheckpointGuarded(), PagingTestBase::testPrefetch(), and PagingTestBase::testPrefetchBatch().
00264 { 00265 #ifdef __MSVC__ 00266 ::_sleep(nSeconds*1000); 00267 #else 00268 ::sleep(nSeconds); 00269 #endif 00270 }
void TestBase::readParams | ( | int | argc, | |
char ** | argv | |||
) | [static, inherited] |
Parses the command line.
format: [-v] [-t TEST | -all] {param=val}* [CONFIGFILE | -] Normally, the test program runs the default test cases. With the option "-all", runs the extra test cases as well. With the option "-t TEST", runs only the single test case named TEST. CONFIGFILE is read to load configuration parameters. Configuration parameters can also be set ad hoc, from the command line, as pairs name=val. These take precedence.
Definition at line 108 of file TestBase.cpp.
References TestBase::configMap, ConfigMap::dumpParams(), ConfigMap::isParamSet(), ConfigMap::mergeFrom(), TestBase::paramDictionaryFileName, ConfigMap::readParams(), TestBase::runAll, TestBase::runSingle, ConfigMap::setStringParam(), and verbose.
00109 { 00110 bool verbose = false; 00111 ConfigMap adhocMap; 00112 00113 for (int i = 1; i < argc; ++i) { 00114 std::string arg = argv[i]; 00115 if (argv[i][0] == '-') { 00116 if (arg == "-v") { 00117 verbose = true; 00118 } else if (arg == "-") { 00119 configMap.readParams(std::cin); 00120 } else if (arg == "-all") { 00121 runAll = true; 00122 } else if (arg == "-t") { // -t TEST 00123 permAssert(i + 1 < argc); 00124 runSingle = argv[++i]; 00125 } else if (arg[1] == 't') { // allow -tTEST 00126 runSingle = arg.substr(2); 00127 } 00128 } else { 00129 int i = arg.find("="); 00130 if ((0 < i) && (i < arg.size())) { 00131 // an ad hoc parameter 00132 std::string key = arg.substr(0,i); 00133 std::string val = arg.substr(i + 1); 00134 adhocMap.setStringParam(key,val); 00135 } else { 00136 // a config file name 00137 std::ifstream configFile(arg.c_str()); 00138 assert(configFile.good()); 00139 configMap.readParams(configFile); 00140 } 00141 } 00142 } 00143 configMap.mergeFrom(adhocMap); 00144 00145 // set a default dictionary file location for use by tests that need a 00146 // small non-random sorted data set 00147 if (!configMap.isParamSet(paramDictionaryFileName)) { 00148 std::string dictFileName = "dictWords"; 00149 configMap.setStringParam(paramDictionaryFileName,dictFileName); 00150 } 00151 00152 if (verbose) { 00153 configMap.dumpParams(std::cout); 00154 } 00155 }
TestSuite * TestBase::releaseTestSuite | ( | ) | [inherited] |
Definition at line 157 of file TestBase.cpp.
References TestBase::TestCaseGroup::addAllToTestSuite(), TestBase::defaultTests, TestBase::extraTests, TestBase::TestCaseGroup::findTest(), TestBase::pTestObj, TestBase::pTestSuite, TestBase::runAll, TestBase::runSingle, and TestBase::testName.
00158 { 00159 assert(pTestObj); 00160 assert(pTestObj.use_count() > 1); 00161 00162 // release self-reference now that all test cases have been registered 00163 pTestObj.reset(); 00164 00165 TestSuite* pTestSuite = BOOST_TEST_SUITE(testName.c_str()); 00166 00167 if (runSingle.size()) { 00168 test_unit *p = defaultTests.findTest(runSingle); 00169 if (!p) { 00170 p = extraTests.findTest(runSingle); 00171 } 00172 if (!p) { 00173 std::cerr << "test " << runSingle << " not found\n"; 00174 exit(2); 00175 } 00176 pTestSuite->add(p); 00177 } else { 00178 defaultTests.addAllToTestSuite(pTestSuite); 00179 if (runAll) { 00180 extraTests.addAllToTestSuite(pTestSuite); 00181 } 00182 } 00183 return pTestSuite; 00184 }
void TestBase::beforeTestCase | ( | std::string | testCaseName | ) | [inherited] |
Definition at line 214 of file TestBase.cpp.
References TestBase::configMap, TraceSource::initTraceSource(), AutoBacktrace::install(), TestBase::notifyTrace(), AutoBacktrace::setOutputStream(), AutoBacktrace::setTraceTarget(), TestBase::testName, and TRACE_INFO.
00215 { 00216 notifyTrace(testName,TRACE_INFO,"ENTER: " + testCaseName); 00217 00218 // Install the AutoBacktrace signal handler now, after 00219 // boost::execution_monitor::catch_signals() has installed its own, so that 00220 // on SIGABRT AutoBacktrace goes first, prints the backtrace, then chains 00221 // to boost, which handles the error. 00222 AutoBacktrace::setOutputStream(); 00223 AutoBacktrace::setTraceTarget(shared_from_this()); 00224 AutoBacktrace::install(); 00225 configMap.initTraceSource(shared_from_this(), "testConfig"); 00226 }
void TestBase::afterTestCase | ( | std::string | testCaseName | ) | [inherited] |
Definition at line 228 of file TestBase.cpp.
References TestBase::configMap, TraceSource::disableTracing(), TestBase::notifyTrace(), AutoBacktrace::setTraceTarget(), TestBase::testName, and TRACE_INFO.
00229 { 00230 AutoBacktrace::setTraceTarget(); 00231 configMap.disableTracing(); 00232 notifyTrace(testName,TRACE_INFO,"LEAVE: " + testCaseName); 00233 }
void TestBase::notifyTrace | ( | std::string | source, | |
TraceLevel | level, | |||
std::string | message | |||
) | [virtual, inherited] |
Receives notification when a trace event occurs.
source | the facility from which the message originated | |
level | the trace event severity level | |
message | the text of the message |
Implements TraceTarget.
Definition at line 243 of file TestBase.cpp.
References TestBase::traceFile, TestBase::traceMutex, TestBase::traceStdout, and TestBase::traceStream.
Referenced by TestBase::afterTestCase(), and TestBase::beforeTestCase().
00244 { 00245 if (traceFile || traceStdout) { 00246 StrictMutexGuard traceMutexGuard(traceMutex); 00247 if (traceFile) { 00248 traceStream << "[" << source << "] " << message << std::endl; 00249 traceStream.flush(); 00250 } 00251 if (traceStdout) { 00252 std::cout << "[" << source << "] " << message << std::endl; 00253 std::cout.flush(); 00254 } 00255 } 00256 }
TraceLevel TestBase::getSourceTraceLevel | ( | std::string | source | ) | [virtual, inherited] |
Gets the level at which a particular source should be traced.
source | name of source to be traced |
Implements TraceTarget.
Definition at line 258 of file TestBase.cpp.
References TestBase::traceLevel.
Referenced by LbmExecStreamTestBase::generateBitmaps().
00259 { 00260 return traceLevel; 00261 }
const uint LcsRowScanExecStreamTest::NDUPS = 20 [static, protected] |
Definition at line 54 of file LcsRowScanExecStreamTest.cpp.
Referenced by loadOneCluster(), testCompressedFiltering(), and testFilterCols().
Definition at line 55 of file LcsRowScanExecStreamTest.cpp.
Referenced by testCaseSetUp(), and testFilterCols().
Definition at line 56 of file LcsRowScanExecStreamTest.cpp.
Referenced by loadOneCluster(), testCaseSetUp(), testFilterCols(), testSampleScanCols(), testScanCols(), and testScanOnEmptyCluster().
Definition at line 57 of file LcsRowScanExecStreamTest.cpp.
Referenced by testCaseSetUp(), testFilterCols(), testSampleScanCols(), and testScanCols().
Definition at line 58 of file LcsRowScanExecStreamTest.cpp.
Referenced by testCaseSetUp(), and testFilterCols().
uint LcsRowScanExecStreamTest::bitmapColSize [protected] |
Definition at line 59 of file LcsRowScanExecStreamTest.cpp.
Referenced by generateBitmaps(), testCaseSetUp(), testFilterCols(), testSampleScanCols(), and testScanCols().
vector<boost::shared_ptr<BTreeDescriptor> > LcsRowScanExecStreamTest::bTreeClusters [protected] |
Definition at line 61 of file LcsRowScanExecStreamTest.cpp.
Referenced by loadClusters(), testCaseTearDown(), testFilterCols(), testSampleScanCols(), testScanCols(), testScanOnEmptyCluster(), and testScanPastEndOfCluster().
SharedExecStreamGraph ExecStreamUnitTestBase::pGraph [protected, inherited] |
Definition at line 46 of file ExecStreamUnitTestBase.h.
Referenced by ExecStreamUnitTestBase::prepareConfluenceGraph(), ExecStreamUnitTestBase::prepareConfluenceTransformGraph(), ExecStreamUnitTestBase::prepareDAG(), ExecStreamUnitTestBase::prepareTransformGraph(), ExecStreamUnitTestBase::resetExecStreamTest(), LbmSplicerExecStreamTest::spliceInput(), ExecStreamUnitTestBase::tearDownExecStreamTest(), ExecStreamTestSuite::testBTreeInsertExecStream(), ExecStreamUnitTestBase::testCaseSetUp(), CorrelationJoinExecStreamTestSuite::testCorrelationJoin(), LhxJoinExecStreamTest::testImpl(), ExternalSortExecStreamTest::testImpl(), LbmLoadBitmapTest::testLoad(), ExecStreamTestSuite::testReshapeExecStream(), LbmSearchTest::testScanIdx(), ExecStreamUnitTestBase::verifyBufferedOutput(), ExecStreamUnitTestBase::verifyConstantOutput(), FlatFileExecStreamTest::verifyOutput(), and ExecStreamUnitTestBase::verifyOutput().
SharedExecStreamGraphEmbryo ExecStreamUnitTestBase::pGraphEmbryo [protected, inherited] |
Definition at line 47 of file ExecStreamUnitTestBase.h.
Referenced by ExecStreamUnitTestBase::prepareConfluenceGraph(), ExecStreamUnitTestBase::prepareConfluenceTransformGraph(), ExecStreamUnitTestBase::prepareDAG(), ExecStreamUnitTestBase::prepareTransformGraph(), ExecStreamUnitTestBase::resetExecStreamTest(), ExecStreamUnitTestBase::tearDownExecStreamTest(), and ExecStreamUnitTestBase::testCaseSetUp().
const uint ExecStreamTestBase::DefaultCacheReservePercent = 5 [static, protected, inherited] |
Definition at line 45 of file ExecStreamTestBase.h.
Referenced by ExecStreamTestBase::testCaseSetUp().
const uint ExecStreamTestBase::DefaultConcurrentStatements = 4 [static, protected, inherited] |
Definition at line 47 of file ExecStreamTestBase.h.
Referenced by ExecStreamTestBase::testCaseSetUp().
SharedExecStreamScheduler ExecStreamTestBase::pScheduler [protected, inherited] |
Definition at line 49 of file ExecStreamTestBase.h.
Referenced by ExecStreamTestBase::newStreamGraphEmbryo(), ExecStreamUnitTestBase::resetExecStreamTest(), ExecStreamTestBase::testCaseSetUp(), ExecStreamTestBase::testCaseTearDown(), LhxJoinExecStreamTest::testImpl(), ExternalSortExecStreamTest::testImpl(), ExecStreamUnitTestBase::verifyBufferedOutput(), ExecStreamUnitTestBase::verifyConstantOutput(), FlatFileExecStreamTest::verifyOutput(), and ExecStreamUnitTestBase::verifyOutput().
SharedExecStreamGovernor ExecStreamTestBase::pResourceGovernor [protected, inherited] |
Definition at line 51 of file ExecStreamTestBase.h.
Referenced by ExecStreamUnitTestBase::resetExecStreamTest(), ExternalSortExecStreamTest::testCaseSetUp(), ExecStreamUnitTestBase::testCaseSetUp(), ExecStreamTestBase::testCaseSetUp(), ExecStreamGovernorTest::testCaseSetUp(), ExecStreamTestBase::testCaseTearDown(), ExecStreamGovernorTest::testMinGreaterAllocation(), ExecStreamUnitTestBase::verifyBufferedOutput(), ExecStreamUnitTestBase::verifyConstantOutput(), FlatFileExecStreamTest::verifyOutput(), and ExecStreamUnitTestBase::verifyOutput().
SharedCacheAccessor ExecStreamTestBase::pCacheAccessor [protected, inherited] |
Definition at line 53 of file ExecStreamTestBase.h.
Referenced by ExecStreamTestSuite::testBTreeInsertExecStream(), ExecStreamUnitTestBase::testCaseSetUp(), ExecStreamTestBase::testCaseTearDown(), ExecStreamTestSuite::testMergeImplicitPullInputs(), ExecStreamTestSuite::testSegBufferExecStream(), and ExecStreamTestSuite::testSegBufferReaderWriterExecStream().
SharedSegmentFactory SegStorageTestBase::pSegmentFactory [protected, inherited] |
Definition at line 40 of file SegStorageTestBase.h.
Referenced by BackupRestoreTest::backup(), SegStorageTestBase::createLinearDeviceSegment(), LogicalTxnTest::createRecoveryLog(), LbmSearchTest::initBTreeExecStreamParam(), LbmLoadBitmapTest::initBTreeExecStreamParam(), LcsClusterReplaceExecStreamTest::initClusterAppendParams(), LbmExecStreamTestBase::initSorterExecStream(), LcsMultiClusterAppendTest::loadClusters(), loadOneCluster(), LbmSearchTest::loadTableAndIndex(), LbmMinusExecStreamTest::newMinusStream(), ExecStreamTestBase::newStreamGraphEmbryo(), SegStorageTestBase::openRandomSegment(), VersionedSegmentTest::openSegmentStorage(), SnapshotSegmentTestBase::openSegmentStorage(), LinearViewSegmentTest::openSegmentStorage(), BackupRestoreTest::restore(), SegStorageTestBase::SegStorageTestBase(), LbmSplicerExecStreamTest::spliceInput(), ExecStreamTestSuite::testBTreeInsertExecStream(), LhxHashTableTest::testCaseSetUp(), LcsClusterReplaceExecStreamTest::testClusterReplace(), LhxAggExecStreamTest::testCountImpl(), ExecStreamTestSuite::testDoubleBufferExecStream(), ExecStreamGovernorTest::testGovernor(), LhxAggExecStreamTest::testGroupCountImpl(), LhxJoinExecStreamTest::testImpl(), ExternalSortExecStreamTest::testImpl(), BTreeTest::testInserts(), LbmIntersectExecStreamTest::testIntersect(), LbmEntryTest::testldb35(), LbmEntryTest::testler5920(), LbmLoadBitmapTest::testLoad(), LcsClusterAppendExecStreamTest::testLoadMultiCol(), LcsClusterAppendExecStreamTest::testLoadSingleCol(), LbmEntryTest::testMergeEntry(), BTreeTest::testMultiKeySearches(), BTreeTest::testScan(), ExecStreamTestSuite::testScratchBufferExecStream(), LhxAggExecStreamTest::testSingleValueImpl(), FlatFileExecStreamTest::testStream(), LhxAggExecStreamTest::testSumImpl(), LogicalTxnTest::testTxn(), SnapshotSegmentTest::testUncommittedReads(), LbmUnionExecStreamTest::testUnion(), SegStreamTest::testWriteSpillAndRead(), and LbmEntryTest::testZeroBytes().
SharedSegment SegStorageTestBase::pLinearSegment [protected, inherited] |
Segment supporting linear page allocation.
Definition at line 45 of file SegStorageTestBase.h.
Referenced by SegStorageTestBase::closeLinearSegment(), LogicalTxnTest::createRecoveryLog(), SegmentTestBase::lockPage(), SegStorageTestBase::openRandomSegment(), VersionedSegmentTest::openSegmentStorage(), SnapshotSegmentTestBase::openSegmentStorage(), SegStorageTestBase::openSegmentStorage(), LinearViewSegmentTest::openSegmentStorage(), SegmentTestBase::openStorage(), SegmentTestBase::prefetchPage(), SnapshotSegmentTestBase::testAllocateAll(), LinearViewSegmentTest::testAllocateAll(), VersionedSegmentTest::testCheckpoint(), SegmentTestBase::testCheckpoint(), SegPageIterTest::testIter(), SegPageEntryIterTest::testIter(), SegStreamTest::testMarkReset(), SegStreamTest::testReadSeg(), VersionedSegmentTest::testRecovery(), LogicalTxnTest::testTxn(), SnapshotSegmentTest::testUncommittedReads(), SegStreamTest::testWriteSeg(), and VersionedSegmentTest::verifyPage().
SharedSegment SegStorageTestBase::pRandomSegment [protected, inherited] |
(Optional) segment supporting random page allocation.
Definition at line 50 of file SegStorageTestBase.h.
Referenced by SegStorageTestBase::closeRandomSegment(), SnapshotSegmentTestBase::closeStorage(), LbmSplicerExecStreamTest::createBTree(), LbmSplicerExecStreamTest::initBTreeParam(), LbmSearchTest::initBTreeParam(), LbmLoadBitmapTest::initBTreeParam(), LbmLoadBitmapTest::initBTreeTupleDesc(), LcsClusterReplaceExecStreamTest::initClusterAppendParams(), LbmExecStreamTestBase::initSorterExecStream(), LcsClusterReplaceExecStreamTest::loadCluster(), LcsMultiClusterAppendTest::loadClusters(), loadOneCluster(), LbmSearchTest::loadTableAndIndex(), SegStorageTestBase::openRandomSegment(), SnapshotSegmentTestBase::openSegmentStorage(), LinearViewSegmentTest::openSegmentStorage(), SegmentTestBase::openStorage(), SegmentTestBase::testAllocate(), RandomAllocationSegmentTest::testAllocateAndDeallocate(), ExecStreamTestSuite::testBTreeInsertExecStream(), BTreeTest::testBulkLoad(), LhxHashTableTest::testCaseSetUp(), BTreeTest::testCaseSetUp(), BTreeReadersTest::testCaseSetUp(), testCaseSetUp(), LcsMultiClusterAppendTest::testCaseSetUp(), LcsClusterReplaceExecStreamTest::testCaseSetUp(), LcsClusterAppendExecStreamTest::testCaseSetUp(), LbmExecStreamTestBase::testCaseSetUp(), LcsClusterReplaceExecStreamTest::testClusterReplace(), LhxAggExecStreamTest::testCountImpl(), SegmentTestBase::testDeallocate(), LhxAggExecStreamTest::testGroupCountImpl(), LhxJoinExecStreamTest::testImpl(), ExternalSortExecStreamTest::testImpl(), BTreeTest::testInserts(), LbmLoadBitmapTest::testLoad(), LcsClusterAppendExecStreamTest::testLoadMultiCol(), LcsClusterAppendExecStreamTest::testLoadSingleCol(), ExecStreamTestSuite::testMergeImplicitPullInputs(), BTreeTest::testMultiKeySearches(), BTreeReadersTest::testReaders(), testScanOnEmptyCluster(), ExecStreamTestSuite::testSegBufferExecStream(), ExecStreamTestSuite::testSegBufferReaderWriterExecStream(), LhxAggExecStreamTest::testSingleValueImpl(), LhxAggExecStreamTest::testSumImpl(), and LbmUnionExecStreamTest::testUnion().
SharedSegment SegStorageTestBase::pVersionedRandomSegment [protected, inherited] |
(Optional) segment supporting versioned random page allocation.
Definition at line 55 of file SegStorageTestBase.h.
Referenced by BackupRestoreTest::backup(), SnapshotSegmentTestBase::closeStorage(), SegStorageTestBase::closeVersionedRandomSegment(), SnapshotSegmentTest::deallocateOldPages(), SnapshotSegmentTestBase::openSegmentStorage(), BackupRestoreTest::restore(), LcsClusterReplaceExecStreamTest::testClusterReplace(), SnapshotSegmentTest::testRollback(), and SnapshotSegmentTest::testUncommittedReads().
SharedSegment SegStorageTestBase::pSnapshotRandomSegment [protected, inherited] |
(Optional) segment supporting snapshot random page allocation.
Definition at line 60 of file SegStorageTestBase.h.
Referenced by SegStorageTestBase::closeSnapshotRandomSegment(), SnapshotSegmentTestBase::commitChanges(), SnapshotSegmentTestBase::openSegmentStorage(), LcsClusterReplaceExecStreamTest::testClusterReplace(), and SnapshotSegmentTest::testDeallocateOld().
VictimPolicy CacheTestBase::victimPolicy [protected, inherited] |
VictimPolicy to instantiate.
Definition at line 53 of file CacheTestBase.h.
Referenced by CacheTestBase::CacheTestBase(), and CacheTestBase::newCache().
CacheParams CacheTestBase::cacheParams [protected, inherited] |
Parameters for cache initialization.
Definition at line 58 of file CacheTestBase.h.
Referenced by CacheTestBase::CacheTestBase(), CacheTestBase::newCache(), BackupRestoreTest::testBackupCleanup(), BackupRestoreTest::testHeaderBackupRestore(), and SegPageEntryIterTest::testIter().
SharedCache CacheTestBase::pCache [protected, inherited] |
Cache instance being tested.
Definition at line 63 of file CacheTestBase.h.
Referenced by BackupRestoreTest::backup(), CacheTestBase::closeDevice(), CacheTestBase::closeStorage(), LbmSplicerExecStreamTest::createBTree(), SegStorageTestBase::createLinearDeviceSegment(), LogicalTxnTest::createRecoveryLog(), BackupRestoreTest::createSnapshotData(), BackupRestoreTest::executeSnapshotTxn(), CacheTestBase::getCache(), LbmSearchTest::initBTreeExecStreamParam(), LbmLoadBitmapTest::initBTreeExecStreamParam(), LbmSearchTest::initBTreeParam(), LbmLoadBitmapTest::initBTreeParam(), LcsClusterReplaceExecStreamTest::initClusterAppendParams(), LbmExecStreamTestBase::initSorterExecStream(), LcsClusterReplaceExecStreamTest::loadCluster(), LcsMultiClusterAppendTest::loadClusters(), loadOneCluster(), LbmSearchTest::loadTableAndIndex(), SegmentTestBase::lockPage(), LbmMinusExecStreamTest::newMinusStream(), ExecStreamTestBase::newStreamGraphEmbryo(), CacheTestBase::openDevice(), CacheTestBase::openStorage(), LcsClusterReplaceExecStreamTest::replaceCluster(), BackupRestoreTest::restore(), LbmSplicerExecStreamTest::spliceInput(), SegmentTestBase::testAllocate(), RandomAllocationSegmentTest::testAllocateAndDeallocate(), BackupRestoreTest::testBackupCleanup(), ExecStreamTestSuite::testBTreeInsertExecStream(), BTreeTest::testBulkLoad(), LhxHashTableTest::testCaseSetUp(), ExecStreamUnitTestBase::testCaseSetUp(), BTreeTest::testCaseSetUp(), BTreeReadersTest::testCaseSetUp(), LhxAggExecStreamTest::testCountImpl(), SegmentTestBase::testDeallocate(), SnapshotSegmentTest::testDeallocateOld(), ExecStreamTestSuite::testDoubleBufferExecStream(), ExecStreamGovernorTest::testGovernor(), LhxAggExecStreamTest::testGroupCountImpl(), BackupRestoreTest::testHeaderBackupRestore(), LhxJoinExecStreamTest::testImpl(), ExternalSortExecStreamTest::testImpl(), BTreeTest::testInserts(), LbmIntersectExecStreamTest::testIntersect(), SegPageIterTest::testIter(), SegPageEntryIterTest::testIter(), CacheTest::testLargeCacheInit(), CacheTest::testLargeCacheRequest(), LbmEntryTest::testldb35(), LbmEntryTest::testler5920(), LbmLoadBitmapTest::testLoad(), LcsClusterAppendExecStreamTest::testLoadMultiCol(), LcsClusterAppendExecStreamTest::testLoadSingleCol(), SegStreamTest::testMarkReset(), LbmEntryTest::testMergeEntry(), BTreeTest::testMultiKeySearches(), CacheTest::testQuotaCacheAccessor(), BTreeReadersTest::testReaders(), SegStreamTest::testReadSeg(), BTreeTest::testScan(), testScanOnEmptyCluster(), ExecStreamTestSuite::testScratchBufferExecStream(), LhxAggExecStreamTest::testSingleValueImpl(), FlatFileExecStreamTest::testStream(), LhxAggExecStreamTest::testSumImpl(), LogicalTxnTest::testTxn(), LogicalTxnTest::testTxnIdSequence(), LbmUnionExecStreamTest::testUnion(), SegStreamTest::testWriteSeg(), SegStreamTest::testWriteSpillAndRead(), LbmEntryTest::testZeroBytes(), and BackupRestoreTest::verifySnapshotData().
SharedRandomAccessDevice CacheTestBase::pRandomAccessDevice [protected, inherited] |
The default cached device.
Definition at line 68 of file CacheTestBase.h.
Referenced by BackupRestoreTest::backup(), CacheTestBase::closeStorage(), SegStorageTestBase::openSegmentStorage(), CacheTestBase::openStorage(), and BackupRestoreTest::restore().
uint CacheTestBase::nMemPages [protected, inherited] |
Size of cache in memory pages.
Definition at line 73 of file CacheTestBase.h.
Referenced by CacheTestBase::CacheTestBase(), PagingTestBase::testCacheResize(), and ExecStreamTestBase::testCaseSetUp().
uint CacheTestBase::nDiskPages [protected, inherited] |
Size of device in disk pages.
Definition at line 78 of file CacheTestBase.h.
Referenced by CacheTestBase::CacheTestBase(), LinearViewSegmentTest::LinearViewSegmentTest(), CacheTest::makeBlockId(), VersionedSegmentTest::openSegmentStorage(), SnapshotSegmentTestBase::openSegmentStorage(), LinearViewSegmentTest::openSegmentStorage(), CacheTestBase::openStorage(), SegStreamTest::SegStreamTest(), SnapshotSegmentTestBase::SnapshotSegmentTestBase(), SnapshotSegmentTest::testDeallocateOld(), PagingTestBase::testPrefetch(), PagingTestBase::testPrefetchBatch(), PagingTestBase::testRandomOp(), SnapshotSegmentTest::testRollback(), PagingTestBase::testSequentialOp(), and PagingTestBase::testSkipOp().
uint CacheTestBase::cbPageFull [protected, inherited] |
Disk page size.
Definition at line 83 of file CacheTestBase.h.
Referenced by CacheTest::CacheTest(), CacheTestBase::CacheTestBase(), CacheTestBase::openDevice(), and SegStorageTestBase::openSegmentStorage().
DeviceId CacheTestBase::dataDeviceId [protected, inherited] |
Fixed ID to assign to data device.
Definition at line 88 of file CacheTestBase.h.
Referenced by CacheTestBase::CacheTestBase(), CacheTestBase::closeStorage(), CacheTest::makeBlockId(), SnapshotSegmentTestBase::openSegmentStorage(), SegStorageTestBase::openSegmentStorage(), LinearViewSegmentTest::openSegmentStorage(), CacheTestBase::openStorage(), and PagingTestBase::testCheckpoint().
TestSuite* TestBase::pTestSuite [protected, inherited] |
Boost test suite.
Definition at line 59 of file TestBase.h.
Referenced by TestBase::releaseTestSuite().
boost::shared_ptr<TestBase> TestBase::pTestObj [protected, inherited] |
Definition at line 61 of file TestBase.h.
Referenced by TestBase::releaseTestSuite(), and TestBase::TestBase().
std::ofstream TestBase::traceStream [protected, inherited] |
Output file stream for tracing.
Definition at line 66 of file TestBase.h.
Referenced by TestBase::notifyTrace(), TestBase::TestBase(), and TestBase::~TestBase().
StrictMutex TestBase::traceMutex [protected, inherited] |
Protects traceStream.
Definition at line 71 of file TestBase.h.
Referenced by TestBase::notifyTrace().
std::string TestBase::testName [protected, inherited] |
Name of test.
Definition at line 76 of file TestBase.h.
Referenced by TestBase::afterTestCase(), TestBase::beforeTestCase(), TestBase::releaseTestSuite(), TestBase::TestBase(), LhxHashTableTest::testInsert1Ka(), and LhxHashTableTest::testInsert1Kb().
TraceLevel TestBase::traceLevel [protected, inherited] |
Level at which to trace test execution.
Definition at line 81 of file TestBase.h.
Referenced by TestBase::getSourceTraceLevel(), and TestBase::TestBase().
FileStatsTarget TestBase::statsTarget [protected, inherited] |
StatsTimer TestBase::statsTimer [protected, inherited] |
Timer for stats collection.
Definition at line 91 of file TestBase.h.
Referenced by CacheTestBase::closeStorage(), CacheTestBase::openStorage(), BTreeTxnTest::testCaseSetUp(), BTreeTxnTest::testCaseTearDown(), and BTreeTxnTest::testTxns().
bool TestBase::traceStdout [protected, inherited] |
Copy trace output to stdout.
Definition at line 99 of file TestBase.h.
Referenced by TestBase::notifyTrace(), and TestBase::TestBase().
bool TestBase::traceFile [protected, inherited] |
Copy trace output to file.
Definition at line 104 of file TestBase.h.
Referenced by TestBase::notifyTrace(), and TestBase::TestBase().
bool TestBase::runAll [static, protected, inherited] |
Run all test cases, including the extra tests.
(static, since set by readParams())
Definition at line 110 of file TestBase.h.
Referenced by TestBase::readParams(), and TestBase::releaseTestSuite().
std::string TestBase::runSingle [static, protected, inherited] |
Run only the test case of this name.
(static, since set by readParams())
Definition at line 116 of file TestBase.h.
Referenced by TestBase::readParams(), and TestBase::releaseTestSuite().
TestCaseGroup TestBase::defaultTests [protected, inherited] |
TestCaseGroup TestBase::extraTests [protected, inherited] |
ParamName TestBase::paramTestSuiteName [static, inherited] |
ParamName TestBase::paramTraceFileName [static, inherited] |
ParamName TestBase::paramDictionaryFileName [static, inherited] |
Definition at line 145 of file TestBase.h.
Referenced by TestBase::readParams(), SegStreamTest::testRead(), and SegStreamTest::testWrite().
ParamName TestBase::paramTraceLevel [static, inherited] |
ParamName TestBase::paramStatsFileName [static, inherited] |
Definition at line 147 of file TestBase.h.
ParamName TestBase::paramTraceStdout [static, inherited] |
ParamName TestBase::paramDegreeOfParallelism [static, inherited] |
Definition at line 149 of file TestBase.h.
Referenced by ParallelExecStreamSchedulerTest::ParallelExecStreamSchedulerTest().
ConfigMap TestBase::configMap [static, inherited] |
Configuration parameters.
The reason this is static is so that no constructor parameters (which burden virtual bases) are needed.
Definition at line 155 of file TestBase.h.
Referenced by TestBase::afterTestCase(), TestBase::beforeTestCase(), BTreeTxnTest::BTreeTxnTest(), CacheTestBase::CacheTestBase(), BackupRestoreTest::createSnapshotData(), DatabaseTest::DatabaseTest(), TestOptionsTest::extra(), DatabaseTest::loadDatabase(), SparseBitmapTest::openStorage(), PagingTestBase::PagingTestBase(), ParallelExecStreamSchedulerTest::ParallelExecStreamSchedulerTest(), RandomAccessFileDeviceTest::RandomAccessFileDeviceTest(), TestBase::readParams(), SegStorageTestBase::SegStorageTestBase(), TestOptionsTest::test1(), TestOptionsTest::test2(), BackupRestoreTest::testBackupCleanup(), TestBase::TestBase(), BTreeTxnTest::testCaseSetUp(), BTreeTxnTest::testCheckpoint(), DatabaseTest::testCreateEmpty(), DatabaseTest::testForceTxns(), BackupRestoreTest::testHeaderBackupRestore(), SegPageEntryIterTest::testIter(), SegStreamTest::testRead(), BTreeTxnTest::testTxns(), SegStreamTest::testWrite(), ThreadedTestBase::ThreadedTestBase(), and TestBase::~TestBase().