LbmSplicerExecStreamTest Class Reference

Testcase for splicer exec stream. More...

Inheritance diagram for LbmSplicerExecStreamTest:

ExecStreamUnitTestBase ExecStreamTestBase SegStorageTestBase CacheTestBase TestBase TraceTarget List of all members.

Public Member Functions

 LbmSplicerExecStreamTest ()
void testCaseSetUp ()
 Equivalent to JUnit TestCase.setUp; this is called before each test case method is invoked.
void testSpliceRids50 ()
void testSpliceRidsLargeSets ()
void testSpliceRidsSmallSets ()
void testSpliceWithKeys50 ()
void testSpliceWithKeysSmallSpread ()
void testSpliceWithKeysLargeSpread ()
void testMultipleSpliceWithKeysSmallSpread ()
void testMultipleSpliceWithKeysLargeSpread ()
void testLER5968 ()
void testLER6473 ()
virtual void testCaseTearDown ()
 Equivalent to JUnit TestCase.tearDown; this is called after each test case method is invoked.
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 ()
CachegetCache ()
virtual SharedCache newCache ()
SharedRandomAccessDevice openDevice (std::string devName, DeviceMode openMode, uint nDevicePages, DeviceId deviceId)
void closeDevice (DeviceId deviceId, SharedRandomAccessDevice &pDevice)
TestSuitereleaseTestSuite ()
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 testSpliceRids (uint numSets, uint numRidsPerSet)
 Splice multiple sets of random rids into an empty btree.
void generateSeqRidSets (std::vector< std::vector< uint64_t > > &ridSets, uint numSets, uint numRidsPerSet)
 Generates multiple sets of rids, each with an equal number of sorted rids.
void generateRidInput (std::vector< uint64_t > const &rids, PBuffer ridBuffer, uint &bufferSize)
 Generates a buffer containing the input rids to be passed into the splicer.
void testSpliceWithKeys (uint numRows, uint factor, uint nKeys, bool multipleSplices)
 Splice tuples into an empty btree.
void generateRandomRids (std::vector< uint64_t > &rids, uint nRids, uint factor)
 Generate N unique, sorted, random rids between 0 and nRids*factor.
void generateTupleInput (std::vector< uint64_t > const &rids, uint &currRidIdx, PBuffer buffer, uint &bufferSize, uint nKeys, bool oneTuple)
 Generates a buffer containing one or more tuples to be passed into the splicer.
void spliceInput (boost::shared_array< FixedBuffer > &inputBuffer, uint inputBufSize, uint numRows, BTreeDescriptor const &bTreeDesc)
 Splices a buffer of input into a btree, which may already have bitmap entries in it.
void initBTreeParam (BTreeParams &param, BTreeDescriptor const &bTreeDesc)
 Initializes BTreeParams structure.
void createBTree (BTreeDescriptor &bTreeDesc, uint nKeys)
 Initializes a BTreeDescriptor corresponding to a bitmap index, and creates the btree.
void initBTreeTupleDesc (TupleDescriptor &tupleDesc, uint nKeys)
 Initializes a tuple descriptor corresponding to a bitmap index.
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 ExecStreamSchedulernewScheduler ()
 Creates a scheduler.
virtual ExecStreamGovernornewResourceGovernor (ExecStreamResourceKnobs const &knobSettings, ExecStreamResourceQuantity const &resourcesAvailable)
 Creates the resource governor.
void snooze (uint nSeconds)

Protected Attributes

StandardTypeDescriptorFactory stdTypeFactory
TupleAttributeDescriptor attrDesc_int64
TupleAttributeDescriptor attrDesc_bitmap
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.
TestSuitepTestSuite
 Boost test suite.
boost::shared_ptr< TestBasepTestObj
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 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.

Detailed Description

Testcase for splicer exec stream.

Definition at line 42 of file LbmSplicerExecStreamTest.cpp.


Member Enumeration Documentation

enum CacheTestBase::VictimPolicy [protected, inherited]

The available victim policy implementations.

Enumerator:
victimTwoQ 
victimLRU 
victimRandom 

Definition at line 44 of file CacheTestBase.h.

00044                       {
00045         victimTwoQ,
00046         victimLRU,
00047         victimRandom
00048     };


Constructor & Destructor Documentation

LbmSplicerExecStreamTest::LbmSplicerExecStreamTest (  )  [inline, explicit]

Definition at line 179 of file LbmSplicerExecStreamTest.cpp.

References testLER5968(), testLER6473(), testMultipleSpliceWithKeysLargeSpread(), testMultipleSpliceWithKeysSmallSpread(), testSpliceRids50(), testSpliceRidsLargeSets(), testSpliceRidsSmallSets(), testSpliceWithKeys50(), testSpliceWithKeysLargeSpread(), and testSpliceWithKeysSmallSpread().

00180     {
00181         FENNEL_UNIT_TEST_CASE(LbmSplicerExecStreamTest, testSpliceRids50);
00182         FENNEL_UNIT_TEST_CASE(
00183             LbmSplicerExecStreamTest, testSpliceRidsLargeSets);
00184         FENNEL_UNIT_TEST_CASE(
00185             LbmSplicerExecStreamTest, testSpliceRidsSmallSets);
00186         FENNEL_UNIT_TEST_CASE(
00187             LbmSplicerExecStreamTest, testSpliceWithKeys50);
00188         FENNEL_UNIT_TEST_CASE(
00189             LbmSplicerExecStreamTest, testSpliceWithKeysSmallSpread);
00190         FENNEL_UNIT_TEST_CASE(
00191             LbmSplicerExecStreamTest, testSpliceWithKeysLargeSpread);
00192         FENNEL_UNIT_TEST_CASE(
00193             LbmSplicerExecStreamTest, testMultipleSpliceWithKeysSmallSpread);
00194         FENNEL_UNIT_TEST_CASE(
00195             LbmSplicerExecStreamTest, testMultipleSpliceWithKeysLargeSpread);
00196         FENNEL_UNIT_TEST_CASE(LbmSplicerExecStreamTest, testLER5968);
00197         FENNEL_UNIT_TEST_CASE(LbmSplicerExecStreamTest, testLER6473);
00198     }


Member Function Documentation

void LbmSplicerExecStreamTest::testSpliceRids ( uint  numSets,
uint  numRidsPerSet 
) [protected]

Splice multiple sets of random rids into an empty btree.

Each rid is unique, and the rids within each set are in sort order.

Parameters:
numSets number of sets
numRidsPerSet number of rids per set

Definition at line 254 of file LbmSplicerExecStreamTest.cpp.

References TupleData::compute(), createBTree(), FixedBuffer, generateRidInput(), LbmEntry::generateRIDs(), generateSeqRidSets(), BTreeReader::getTupleAccessorForRead(), opaqueToInt(), ExecStreamUnitTestBase::resetExecStreamTest(), BTreeReader::searchFirst(), BTreeReader::searchNext(), spliceInput(), BTreeDescriptor::tupleDescriptor, and TupleAccessor::unmarshal().

Referenced by testSpliceRids50(), testSpliceRidsLargeSets(), and testSpliceRidsSmallSets().

00257 {
00258     // Create the btree that the splicer will write into
00259     BTreeDescriptor bTreeDesc;
00260     createBTree(bTreeDesc, 0);
00261 
00262     // Generate the rid sets
00263     uint totalRids = numSets * numRidsPerSet;
00264     std::vector<std::vector<uint64_t> > ridSets;
00265     generateSeqRidSets(ridSets, numSets, numRidsPerSet);
00266 
00267     // Splice each set of rids, one per stream graph execution
00268     for (uint i = 0; i < numSets; i++) {
00269         // Generate the sequence of specified rids.  Splicer handles
00270         // individual rid values as input.
00271         boost::shared_array<FixedBuffer> ridBuffer;
00272         ridBuffer.reset(new FixedBuffer[numRidsPerSet * 8]);
00273         uint bufferSize = 0;
00274         generateRidInput(
00275             ridSets[i],
00276             ridBuffer.get(),
00277             bufferSize);
00278 
00279         spliceInput(
00280             ridBuffer,
00281             bufferSize,
00282             numRidsPerSet,
00283             bTreeDesc);
00284 
00285         resetExecStreamTest();
00286     }
00287 
00288     // Read the btree bitmap entries and confirm that they contain all
00289     // of the rids that were inserted.  The rids should be in a sequence
00290     // from 0 to totalRids - 1.
00291     BTreeReader reader(bTreeDesc);
00292     bool rc = reader.searchFirst();
00293     BOOST_REQUIRE(rc);
00294     TupleData tupleData;
00295     tupleData.compute(bTreeDesc.tupleDescriptor);
00296     LcsRid startRid = LcsRid(0);
00297     while (rc) {
00298         reader.getTupleAccessorForRead().unmarshal(tupleData);
00299         std::vector<LcsRid> ridsRead;
00300         LbmEntry::generateRIDs(tupleData, ridsRead);
00301         for (uint i = 0; i < ridsRead.size(); i++) {
00302             BOOST_CHECK_EQUAL(
00303                 opaqueToInt(ridsRead[i]),
00304                 opaqueToInt(startRid) + i);
00305         }
00306         startRid += ridsRead.size();
00307         rc = reader.searchNext();
00308     }
00309     BOOST_CHECK_EQUAL(opaqueToInt(startRid), totalRids);
00310 }

void LbmSplicerExecStreamTest::generateSeqRidSets ( std::vector< std::vector< uint64_t > > &  ridSets,
uint  numSets,
uint  numRidsPerSet 
) [protected]

Generates multiple sets of rids, each with an equal number of sorted rids.

The range of rids generated sequences from 0 to N.

Parameters:
ridSets the sets of rids generated
numSets number of sets to generate
numRidsPerSet number of rids per set

Definition at line 312 of file LbmSplicerExecStreamTest.cpp.

Referenced by testSpliceRids().

00316 {
00317     // Generate a sequence of rids from 0 to N.  Random shuffle the sequence.
00318     // Divide them into equal portions.  Then sort within each portion,
00319     // since splicer expects its rid input in sort order.
00320     uint totalRids = numSets * numRidsPerSet;
00321     std::vector<int> rids;
00322     rids.resize(totalRids);
00323     for (uint i = 0; i < totalRids; i++) {
00324         rids[i] = i;
00325     }
00326 
00327     std::random_shuffle(rids.begin(), rids.end());
00328 
00329     for (uint i = 0; i < numSets; i++) {
00330         std::vector<uint64_t> ridSet;
00331         ridSet.resize(numRidsPerSet);
00332         std::copy(
00333             rids.begin() + i * numRidsPerSet,
00334             rids.begin() + (i + 1) * numRidsPerSet,
00335             ridSet.begin());
00336         std::sort(ridSet.begin(), ridSet.end());
00337         ridSets.push_back(ridSet);
00338     }
00339 }

void LbmSplicerExecStreamTest::generateRidInput ( std::vector< uint64_t > const &  rids,
PBuffer  ridBuffer,
uint bufferSize 
) [protected]

Generates a buffer containing the input rids to be passed into the splicer.

Parameters:
rids rids that will populate the buffer
ridBuffer the buffer to be populated
bufferSize size of the buffer after it has been populated

Definition at line 341 of file LbmSplicerExecStreamTest.cpp.

References attrDesc_int64, TupleAccessor::compute(), TupleData::compute(), TupleAccessor::getCurrentByteCount(), and TupleAccessor::marshal().

Referenced by testSpliceRids().

00345 {
00346     TupleData ridTupleData;
00347     TupleDescriptor ridTupleDesc;
00348     ridTupleDesc.push_back(attrDesc_int64);
00349     ridTupleData.compute(ridTupleDesc);
00350 
00351     TupleAccessor ridTupleAccessor;
00352     ridTupleAccessor.compute(ridTupleDesc);
00353 
00354     for (uint i = 0; i < rids.size(); i++) {
00355         ridTupleData[0].pData = (PConstBuffer) &rids[i];
00356         ridTupleAccessor.marshal(ridTupleData, ridBuffer + bufferSize);
00357         bufferSize += ridTupleAccessor.getCurrentByteCount();
00358     }
00359 }

void LbmSplicerExecStreamTest::testSpliceWithKeys ( uint  numRows,
uint  factor,
uint  nKeys,
bool  multipleSplices 
) [protected]

Splice tuples into an empty btree.

The rids represented in the tuples are unique, random rid between 0 and "numRows" * "factor". The tuples are randomly represented as either singletons or bitmaps with three rids set. Each key value within the tuple is the same.

Parameters:
numRows number of rows to be inserted
factor factor that determines the spread of random rid values generated
nKeys number of keys in the index, excluding the startRid
multipleSplices if true, splice one tuple at a time rather than passing multiple tuples into a single invocation of the splicer exec stream

Definition at line 361 of file LbmSplicerExecStreamTest.cpp.

References TupleData::compute(), createBTree(), FixedBuffer, generateRandomRids(), LbmEntry::generateRIDs(), generateTupleInput(), BTreeReader::getTupleAccessorForRead(), opaqueToInt(), ExecStreamUnitTestBase::resetExecStreamTest(), BTreeReader::searchFirst(), BTreeReader::searchNext(), spliceInput(), BTreeDescriptor::tupleDescriptor, and TupleAccessor::unmarshal().

Referenced by testMultipleSpliceWithKeysLargeSpread(), testMultipleSpliceWithKeysSmallSpread(), testSpliceWithKeys50(), testSpliceWithKeysLargeSpread(), and testSpliceWithKeysSmallSpread().

00366 {
00367     // Create the btree that the splicer will write into
00368     BTreeDescriptor bTreeDesc;
00369     createBTree(bTreeDesc, nKeys);
00370 
00371     // Generate the random rids
00372     std::vector<uint64_t> rids;
00373     generateRandomRids(rids, numRows, factor);
00374 
00375     // Generate tuples containing the rids generated
00376     boost::shared_array<FixedBuffer> buffer;
00377     buffer.reset(new FixedBuffer[(nKeys + 2) * numRows * 8]);
00378     uint currRidIdx = 0;
00379     do {
00380         uint bufferSize = 0;
00381         generateTupleInput(
00382             rids,
00383             currRidIdx,
00384             buffer.get(),
00385             bufferSize,
00386             nKeys,
00387             multipleSplices);
00388         assert(bufferSize <= (nKeys + 2) * numRows * 8);
00389 
00390         spliceInput(
00391             buffer,
00392             bufferSize,
00393             numRows,
00394             bTreeDesc);
00395 
00396         resetExecStreamTest();
00397     } while (currRidIdx < rids.size());
00398 
00399     // Read the btree bitmap entries and confirm that they contain all
00400     // of the rids that were inserted.
00401     BTreeReader reader(bTreeDesc);
00402     bool rc = reader.searchFirst();
00403     BOOST_REQUIRE(rc);
00404     TupleData tupleData;
00405     tupleData.compute(bTreeDesc.tupleDescriptor);
00406     uint currIdx = 0;
00407     while (rc) {
00408         reader.getTupleAccessorForRead().unmarshal(tupleData);
00409         std::vector<LcsRid> ridsRead;
00410         LbmEntry::generateRIDs(tupleData, ridsRead);
00411         for (uint i = 0; i < ridsRead.size(); i++) {
00412             BOOST_CHECK_EQUAL(
00413                 opaqueToInt(ridsRead[i]),
00414                 opaqueToInt(rids[currIdx]));
00415             currIdx++;
00416         }
00417         rc = reader.searchNext();
00418     }
00419     BOOST_CHECK_EQUAL(currIdx, numRows);
00420 }

void LbmSplicerExecStreamTest::generateRandomRids ( std::vector< uint64_t > &  rids,
uint  nRids,
uint  factor 
) [protected]

Generate N unique, sorted, random rids between 0 and nRids*factor.

Parameters:
rids rids generated
nRids number of rids to be generated
factor factor that determines the spread of random rid values generated

Definition at line 693 of file LbmSplicerExecStreamTest.cpp.

Referenced by testSpliceWithKeys().

00697 {
00698     // Generate "nRids" unique, random rids between 0 and nRids * factor
00699     std::hash_set<uint64_t> ridsGenerated;
00700     uint numGenerated = 0;
00701     while (numGenerated < nRids) {
00702         uint64_t rid = uint64_t(((double) rand() / RAND_MAX) * nRids * factor);
00703         if (ridsGenerated.find(rid) == ridsGenerated.end()) {
00704             rids.push_back(rid);
00705             ridsGenerated.insert(rid);
00706             numGenerated++;
00707         }
00708     }
00709     std::sort(rids.begin(), rids.end());
00710 }

void LbmSplicerExecStreamTest::generateTupleInput ( std::vector< uint64_t > const &  rids,
uint currRidIdx,
PBuffer  buffer,
uint bufferSize,
uint  nKeys,
bool  oneTuple 
) [protected]

Generates a buffer containing one or more tuples to be passed into the splicer.

Each tuple is either a singleton or a bitmap with 3 rids. The method randomly picks between the two.

Parameters:
rids rids that will be represented in the tuples generated
currRidIdx index into the the rids vector corresponding to the next rid to be inserted into the tuple
buffer the buffer to be populated
bufferSize size of the buffer after it has been populated
nKeys number of keys in the index to be spliced
oneTuple if true, generate only a single tuple

Definition at line 712 of file LbmSplicerExecStreamTest.cpp.

References TupleData::compute(), TupleAccessor::compute(), FixedBuffer, TupleAccessor::getCurrentByteCount(), LbmEntry::init(), initBTreeTupleDesc(), TupleAccessor::marshal(), LbmEntry::produceEntryTuple(), LbmEntry::setEntryTuple(), and LbmEntry::setRID().

Referenced by testSpliceWithKeys().

00719 {
00720     TupleDescriptor tupleDesc;
00721     initBTreeTupleDesc(tupleDesc, nKeys);
00722 
00723     TupleAccessor tupleAccessor;
00724     tupleAccessor.compute(tupleDesc);
00725 
00726     TupleData tupleData;
00727     tupleData.compute(tupleDesc);
00728 
00729     // Key values are fixed
00730     for (uint i = 0; i < nKeys; i++) {
00731         uint64_t keyVal = i;
00732         tupleData[i].pData = (PConstBuffer) &keyVal;
00733     }
00734 
00735     LbmEntry lbmEntry;
00736     boost::scoped_array<FixedBuffer> entryBuf;
00737     uint entryBufSize = (nKeys + 1) * 8 + 4 * 3;
00738     entryBuf.reset(new FixedBuffer[entryBufSize]);
00739     lbmEntry.init(entryBuf.get(), NULL, entryBufSize, tupleDesc);
00740 
00741     uint numRids = rids.size();
00742     while (currRidIdx < numRids) {
00743         tupleData[nKeys].pData = (PConstBuffer) &rids[currRidIdx];
00744         tupleData[nKeys + 1].pData = NULL;
00745         tupleData[nKeys + 1].cbData = 0;
00746         tupleData[nKeys + 2].pData = NULL;
00747         tupleData[nKeys + 2].cbData = 0;
00748 
00749         // Randomly generate either singletons or bitmaps with 3 rids, except
00750         // when we're at the end of our rid list
00751         uint bitmapType;
00752         if (currRidIdx >= numRids - 3) {
00753             bitmapType = 0;
00754         } else {
00755             bitmapType = rand() % 2;
00756         }
00757         if (bitmapType == 0) {
00758             currRidIdx++;
00759         } else {
00760             lbmEntry.setEntryTuple(tupleData);
00761             bool rc = lbmEntry.setRID(LcsRid(rids[currRidIdx + 1]));
00762             BOOST_REQUIRE(rc);
00763             rc = lbmEntry.setRID(LcsRid(rids[currRidIdx + 2]));
00764             BOOST_REQUIRE(rc);
00765             tupleData = lbmEntry.produceEntryTuple();
00766             currRidIdx += 3;
00767         }
00768 
00769         tupleAccessor.marshal(tupleData, buffer + bufferSize);
00770         bufferSize += tupleAccessor.getCurrentByteCount();
00771         if (oneTuple) {
00772             break;
00773         }
00774     }
00775 }

void LbmSplicerExecStreamTest::spliceInput ( boost::shared_array< FixedBuffer > &  inputBuffer,
uint  inputBufSize,
uint  numRows,
BTreeDescriptor const &  bTreeDesc 
) [protected]

Splices a buffer of input into a btree, which may already have bitmap entries in it.

Parameters:
inputBuffer buffer containing input into splicer
inputBufSize size of the input buffer
numRows number of rows to be spliced
bTreeDesc descriptor of the btree being spliced into

Definition at line 777 of file LbmSplicerExecStreamTest.cpp.

References attrDesc_bitmap, attrDesc_int64, LbmSplicerExecStreamParams::bTreeParams, ValuesExecStreamParams::bufSize, TupleDatum::cbData, LbmSplicerExecStreamParams::createNewIndex, ExecStreamEmbryo::getStream(), ExecStreamEmbryo::init(), initBTreeParam(), LbmSplicerExecStreamParams::insertRowCountParamId, BTreeDescriptor::keyProjection, DiffluenceExecStreamParams::outputTupleDesc, SingleOutputExecStreamParams::outputTupleDesc, CacheTestBase::pCache, TupleDatum::pData, ExecStreamUnitTestBase::pGraph, ExecStreamUnitTestBase::prepareTransformGraph(), SegStorageTestBase::pSegmentFactory, ValuesExecStreamParams::pTupleBuffer, ExecStreamUnitTestBase::verifyOutput(), and LbmSplicerExecStreamParams::writeRowCountParamId.

Referenced by testLER5968(), testLER6473(), testSpliceRids(), and testSpliceWithKeys().

00782 {
00783     // Create a ValuesExecStream that provides input rows to the splicer.
00784     // In the case of splicing only rids, i.e., no keys, the rids don't need
00785     // to be passed in as bitmap tuples
00786     uint nKeys = bTreeDesc.keyProjection.size();
00787     ValuesExecStreamParams valuesParams;
00788     for (uint i = 0; i < nKeys; i++) {
00789         valuesParams.outputTupleDesc.push_back(attrDesc_int64);
00790     }
00791     if (nKeys > 1) {
00792         valuesParams.outputTupleDesc.push_back(attrDesc_bitmap);
00793         valuesParams.outputTupleDesc.push_back(attrDesc_bitmap);
00794     }
00795     valuesParams.pTupleBuffer = inputBuffer,
00796     valuesParams.bufSize = inputBufSize;
00797 
00798     ExecStreamEmbryo valuesStreamEmbryo;
00799     valuesStreamEmbryo.init(new ValuesExecStream(), valuesParams);
00800     valuesStreamEmbryo.getStream()->setName("ValuesExecStream");
00801 
00802     // Create the splicer stream
00803     LbmSplicerExecStreamParams splicerParams;
00804     splicerParams.createNewIndex = false;
00805     splicerParams.scratchAccessor =
00806         pSegmentFactory->newScratchSegment(pCache, 15);
00807     splicerParams.pCacheAccessor = pCache;
00808     BTreeParams bTreeParams;
00809     initBTreeParam(bTreeParams, bTreeDesc);
00810     splicerParams.bTreeParams.push_back(bTreeParams);
00811     splicerParams.outputTupleDesc.push_back(attrDesc_int64);
00812     splicerParams.writeRowCountParamId = DynamicParamId(0);
00813 
00814     // In the case where there are index keys, we need to create a dynamic
00815     // parameter that passes in the rowcount of the number of tuples to
00816     // be spliced
00817     if (nKeys == 1) {
00818         splicerParams.insertRowCountParamId = DynamicParamId(0);
00819     } else {
00820         splicerParams.insertRowCountParamId = DynamicParamId(1);
00821         SharedDynamicParamManager pDynamicParamManager =
00822             pGraph->getDynamicParamManager();
00823         pDynamicParamManager->createParam(DynamicParamId(1), attrDesc_int64);
00824         TupleDatum paramValDatum;
00825         uint64_t rowCount = numRows;
00826         paramValDatum.pData = (PConstBuffer) &rowCount;
00827         paramValDatum.cbData = 8;
00828         pDynamicParamManager->writeParam(DynamicParamId(1), paramValDatum);
00829     }
00830 
00831     ExecStreamEmbryo splicerStreamEmbryo;
00832     splicerStreamEmbryo.init(new LbmSplicerExecStream(), splicerParams);
00833     splicerStreamEmbryo.getStream()->setName("LbmSplicerExecStream");
00834 
00835     SharedExecStream pOutputStream =
00836         prepareTransformGraph(valuesStreamEmbryo, splicerStreamEmbryo);
00837 
00838     // Setup a generator which expects the number of rows spliced
00839     RampExecStreamGenerator expectedResultGenerator(numRows);
00840 
00841     verifyOutput(*pOutputStream, 1, expectedResultGenerator);
00842 }

void LbmSplicerExecStreamTest::initBTreeParam ( BTreeParams param,
BTreeDescriptor const &  bTreeDesc 
) [protected]

Initializes BTreeParams structure.

Parameters:
param BTreeParams structure being initialized
bTreeDesc BTreeDescriptor used to initialize the structure

Definition at line 844 of file LbmSplicerExecStreamTest.cpp.

References BTreeParams::keyProj, BTreeDescriptor::keyProjection, BTreeDescriptor::pageOwnerId, BTreeParams::pageOwnerId, SegStorageTestBase::pRandomSegment, BTreeParams::pRootMap, BTreeParams::pSegment, BTreeDescriptor::rootPageId, BTreeParams::rootPageId, BTreeDescriptor::segmentId, BTreeParams::segmentId, BTreeParams::tupleDesc, and BTreeDescriptor::tupleDescriptor.

Referenced by spliceInput().

00847 {
00848     param.pSegment = pRandomSegment;
00849     param.pRootMap = 0;
00850     param.tupleDesc = bTreeDesc.tupleDescriptor;
00851     param.keyProj = bTreeDesc.keyProjection;
00852     param.pageOwnerId = bTreeDesc.pageOwnerId;
00853     param.segmentId = bTreeDesc.segmentId;
00854     param.rootPageId = bTreeDesc.rootPageId;
00855 }

void LbmSplicerExecStreamTest::createBTree ( BTreeDescriptor bTreeDesc,
uint  nKeys 
) [protected]

Initializes a BTreeDescriptor corresponding to a bitmap index, and creates the btree.

Parameters:
bTreeDesc BTreeDescriptor to be initialized
nKeys number of keys in the bitmap index; excludes the startRid

Definition at line 857 of file LbmSplicerExecStreamTest.cpp.

References BTreeBuilder::createEmptyRoot(), BTreeAccessBase::getRootPageId(), initBTreeTupleDesc(), BTreeDescriptor::keyProjection, NULL_PAGE_ID, CacheTestBase::pCache, SegmentAccessor::pCacheAccessor, SegStorageTestBase::pRandomSegment, SegmentAccessor::pSegment, BTreeDescriptor::rootPageId, BTreeDescriptor::segmentAccessor, and BTreeDescriptor::tupleDescriptor.

Referenced by testLER5968(), testLER6473(), testSpliceRids(), and testSpliceWithKeys().

00860 {
00861     initBTreeTupleDesc(bTreeDesc.tupleDescriptor, nKeys);
00862 
00863     for (uint j = 0; j < nKeys + 1; j++) {
00864         bTreeDesc.keyProjection.push_back(j);
00865     }
00866     bTreeDesc.rootPageId = NULL_PAGE_ID;
00867     bTreeDesc.segmentAccessor.pSegment = pRandomSegment;
00868     bTreeDesc.segmentAccessor.pCacheAccessor = pCache;
00869     BTreeBuilder builder(bTreeDesc, pRandomSegment);
00870     builder.createEmptyRoot();
00871     bTreeDesc.rootPageId = builder.getRootPageId();
00872 }

void LbmSplicerExecStreamTest::initBTreeTupleDesc ( TupleDescriptor tupleDesc,
uint  nKeys 
) [protected]

Initializes a tuple descriptor corresponding to a bitmap index.

Parameters:
tupleDesc tupleDescriptor to be initialized
nKeys number ofkeys in the index; excludes the startRid

Definition at line 874 of file LbmSplicerExecStreamTest.cpp.

References attrDesc_bitmap, and attrDesc_int64.

Referenced by createBTree(), generateTupleInput(), testLER5968(), and testLER6473().

00877 {
00878     for (uint i = 0; i < nKeys + 1; i++) {
00879         tupleDesc.push_back(attrDesc_int64);
00880     }
00881     tupleDesc.push_back(attrDesc_bitmap);
00882     tupleDesc.push_back(attrDesc_bitmap);
00883 }

void LbmSplicerExecStreamTest::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 885 of file LbmSplicerExecStreamTest.cpp.

References attrDesc_bitmap, attrDesc_int64, StandardTypeDescriptorFactory::newDataType(), STANDARD_TYPE_INT_64, STANDARD_TYPE_VARBINARY, stdTypeFactory, and ExecStreamUnitTestBase::testCaseSetUp().

00886 {
00887     ExecStreamUnitTestBase::testCaseSetUp();
00888 
00889     attrDesc_int64 = TupleAttributeDescriptor(
00890         stdTypeFactory.newDataType(STANDARD_TYPE_INT_64));
00891 
00892     // Set the bitmap lengths to a smaller value to force more bitmap splits
00893     uint varColSize = 64;
00894     attrDesc_bitmap =
00895         TupleAttributeDescriptor(
00896             stdTypeFactory.newDataType(STANDARD_TYPE_VARBINARY), true,
00897             varColSize);
00898 }

void LbmSplicerExecStreamTest::testSpliceRids50 (  ) 

Definition at line 214 of file LbmSplicerExecStreamTest.cpp.

References testSpliceRids().

Referenced by LbmSplicerExecStreamTest().

00215 {
00216     testSpliceRids(5, 10);
00217 }

void LbmSplicerExecStreamTest::testSpliceRidsLargeSets (  ) 

Definition at line 219 of file LbmSplicerExecStreamTest.cpp.

References testSpliceRids().

Referenced by LbmSplicerExecStreamTest().

00220 {
00221     testSpliceRids(100, 1000);
00222 }

void LbmSplicerExecStreamTest::testSpliceRidsSmallSets (  ) 

Definition at line 224 of file LbmSplicerExecStreamTest.cpp.

References testSpliceRids().

Referenced by LbmSplicerExecStreamTest().

00225 {
00226     testSpliceRids(1000, 100);
00227 }

void LbmSplicerExecStreamTest::testSpliceWithKeys50 (  ) 

Definition at line 229 of file LbmSplicerExecStreamTest.cpp.

References testSpliceWithKeys().

Referenced by LbmSplicerExecStreamTest().

00230 {
00231     testSpliceWithKeys(50, 16, 1, false);
00232 }

void LbmSplicerExecStreamTest::testSpliceWithKeysSmallSpread (  ) 

Definition at line 234 of file LbmSplicerExecStreamTest.cpp.

References testSpliceWithKeys().

Referenced by LbmSplicerExecStreamTest().

00235 {
00236     testSpliceWithKeys(50000, 8, 1, false);
00237 }

void LbmSplicerExecStreamTest::testSpliceWithKeysLargeSpread (  ) 

Definition at line 239 of file LbmSplicerExecStreamTest.cpp.

References testSpliceWithKeys().

Referenced by LbmSplicerExecStreamTest().

00240 {
00241     testSpliceWithKeys(50000, 24, 1, false);
00242 }

void LbmSplicerExecStreamTest::testMultipleSpliceWithKeysSmallSpread (  ) 

Definition at line 244 of file LbmSplicerExecStreamTest.cpp.

References testSpliceWithKeys().

Referenced by LbmSplicerExecStreamTest().

00245 {
00246     testSpliceWithKeys(5000, 8, 1, true);
00247 }

void LbmSplicerExecStreamTest::testMultipleSpliceWithKeysLargeSpread (  ) 

Definition at line 249 of file LbmSplicerExecStreamTest.cpp.

References testSpliceWithKeys().

Referenced by LbmSplicerExecStreamTest().

00250 {
00251     testSpliceWithKeys(10000, 24, 1, true);
00252 }

void LbmSplicerExecStreamTest::testLER5968 (  ) 

Definition at line 422 of file LbmSplicerExecStreamTest.cpp.

References TupleData::compute(), TupleAccessor::compute(), createBTree(), FixedBuffer, LbmEntry::generateRIDs(), TupleAccessor::getCurrentByteCount(), BTreeReader::getTupleAccessorForRead(), LbmEntry::init(), initBTreeTupleDesc(), TupleAccessor::marshal(), opaqueToInt(), LbmEntry::produceEntryTuple(), ExecStreamUnitTestBase::resetExecStreamTest(), BTreeReader::searchFirst(), BTreeReader::searchNext(), LbmEntry::setEntryTuple(), LbmEntry::setRID(), spliceInput(), BTreeDescriptor::tupleDescriptor, and TupleAccessor::unmarshal().

Referenced by LbmSplicerExecStreamTest().

00423 {
00424     TupleDescriptor tupleDesc;
00425     initBTreeTupleDesc(tupleDesc, 1);
00426 
00427     // Create the btree that the splicer will write into
00428     BTreeDescriptor bTreeDesc;
00429     createBTree(bTreeDesc, 1);
00430 
00431     TupleAccessor tupleAccessor;
00432     tupleAccessor.compute(tupleDesc);
00433 
00434     // Key values are fixed
00435     uint64_t keyVal = 1;
00436     TupleData tupleData;
00437     tupleData.compute(bTreeDesc.tupleDescriptor);
00438     tupleData[0].pData = (PConstBuffer) &keyVal;
00439 
00440     LbmEntry lbmEntry;
00441     boost::scoped_array<FixedBuffer> entryBuf;
00442     uint entryBufSize = tupleDesc[2].cbStorage + 8 + 8;
00443     entryBuf.reset(new FixedBuffer[entryBufSize]);
00444     lbmEntry.init(entryBuf.get(), NULL, entryBufSize, tupleDesc);
00445 
00446     std::vector<uint64_t> rids;
00447 
00448     // First create a singleton entry
00449     uint64_t rid = 0;
00450     rids.push_back(rid);
00451     tupleData[1].pData = (PConstBuffer) &rid;
00452     tupleData[2].pData = NULL;
00453     tupleData[2].cbData = 0;
00454     tupleData[3].pData = NULL;
00455     tupleData[3].cbData = 0;
00456     lbmEntry.setEntryTuple(tupleData);
00457     tupleData = lbmEntry.produceEntryTuple();
00458     boost::shared_array<FixedBuffer> buffer;
00459     buffer.reset(new FixedBuffer[1024]);
00460     uint bufferSize = 0;
00461     tupleAccessor.marshal(tupleData, buffer.get() + bufferSize);
00462     bufferSize += tupleAccessor.getCurrentByteCount();
00463 
00464     // Next figure out how many rids are needed to create a full entry
00465     rid = 5984;
00466     rids.push_back(rid);
00467     tupleData[1].pData = (PConstBuffer) &rid;
00468     tupleData[2].pData = NULL;
00469     tupleData[2].cbData = 0;
00470     tupleData[3].pData = NULL;
00471     tupleData[3].cbData = 0;
00472     lbmEntry.setEntryTuple(tupleData);
00473     uint numRids = 1;
00474     do {
00475         bool rc = lbmEntry.setRID(LcsRid(rid + numRids * 16));
00476         if (!rc) {
00477             break;
00478         }
00479         numRids++;
00480     } while (true);
00481 
00482     // Now, create the actual second entry with a rid count based the count
00483     // determined above, but with two fewer, so this entry can be spliced with
00484     // the first.  Note that its startRID is 2 zero-length bytes away from the
00485     // initial singleton.
00486     tupleData[1].pData = (PConstBuffer) &rid;
00487     tupleData[2].pData = NULL;
00488     tupleData[2].cbData = 0;
00489     tupleData[3].pData = NULL;
00490     tupleData[3].cbData = 0;
00491     lbmEntry.setEntryTuple(tupleData);
00492     for (int i = 0; i < numRids - 2; i++) {
00493         rid += 16;
00494         bool rc = lbmEntry.setRID(LcsRid(rid));
00495         BOOST_REQUIRE(rc);
00496         rids.push_back(rid);
00497     }
00498     tupleData = lbmEntry.produceEntryTuple();
00499     tupleAccessor.marshal(tupleData, buffer.get() + bufferSize);
00500     bufferSize += tupleAccessor.getCurrentByteCount();
00501 
00502     // Create the third entry, again a singleton.
00503     rid = 10000;
00504     rids.push_back(rid);
00505     tupleData[1].pData = (PConstBuffer) &rid;
00506     tupleData[2].pData = NULL;
00507     tupleData[2].cbData = 0;
00508     tupleData[3].pData = NULL;
00509     tupleData[3].cbData = 0;
00510     lbmEntry.setEntryTuple(tupleData);
00511     tupleData = lbmEntry.produceEntryTuple();
00512     tupleAccessor.marshal(tupleData, buffer.get() + bufferSize);
00513     bufferSize += tupleAccessor.getCurrentByteCount();
00514 
00515     // Create the fourth entry with a rid count based the count determined
00516     // above, but with the last rid in a contiguous segment.  This entry,
00517     // when spliced with the singleton, should result in, an overflow.
00518     rid = 16984;
00519     rids.push_back(rid);
00520     tupleData[1].pData = (PConstBuffer) &rid;
00521     tupleData[2].pData = NULL;
00522     tupleData[2].cbData = 0;
00523     tupleData[3].pData = NULL;
00524     tupleData[3].cbData = 0;
00525     lbmEntry.setEntryTuple(tupleData);
00526     for (int i = 0; i < numRids - 1; i++) {
00527         rid += 16;
00528         bool rc = lbmEntry.setRID(LcsRid(rid));
00529         BOOST_REQUIRE(rc);
00530         rids.push_back(rid);
00531     }
00532     rid += 8;
00533     bool rc = lbmEntry.setRID(LcsRid(rid));
00534     rids.push_back(rid);
00535     tupleData = lbmEntry.produceEntryTuple();
00536     tupleAccessor.marshal(tupleData, buffer.get() + bufferSize);
00537     bufferSize += tupleAccessor.getCurrentByteCount();
00538 
00539     // Splice the four entries.  The splice of the first two entries should
00540     // fit, creating a combined entry.  Then, a singleton should be created.
00541     // An attempt to splice the fourth entry into the singleton will overflow
00542     // and therefore create a third entry.
00543     spliceInput(
00544         buffer,
00545         bufferSize,
00546         rids.size(),
00547         bTreeDesc);
00548     resetExecStreamTest();
00549 
00550     // Read the btree bitmap entries and confirm that they contain all
00551     // of the rids that were inserted.  Explicitly make sure there are
00552     // three btree entries.
00553     BTreeReader reader(bTreeDesc);
00554     rc = reader.searchFirst();
00555     BOOST_REQUIRE(rc);
00556     uint currIdx = 0;
00557     uint numEntries = 0;
00558     while (rc) {
00559         numEntries++;
00560         reader.getTupleAccessorForRead().unmarshal(tupleData);
00561         std::vector<LcsRid> ridsRead;
00562         LbmEntry::generateRIDs(tupleData, ridsRead);
00563         for (uint i = 0; i < ridsRead.size(); i++) {
00564             BOOST_CHECK_EQUAL(
00565                 opaqueToInt(ridsRead[i]),
00566                 opaqueToInt(rids[currIdx]));
00567             currIdx++;
00568         }
00569         rc = reader.searchNext();
00570     }
00571     BOOST_CHECK_EQUAL(currIdx, rids.size());
00572     BOOST_REQUIRE(numEntries == 3);
00573 }

void LbmSplicerExecStreamTest::testLER6473 (  ) 

Definition at line 575 of file LbmSplicerExecStreamTest.cpp.

References TupleData::compute(), TupleAccessor::compute(), createBTree(), FixedBuffer, LbmEntry::generateRIDs(), TupleAccessor::getCurrentByteCount(), BTreeReader::getTupleAccessorForRead(), LbmEntry::init(), initBTreeTupleDesc(), TupleAccessor::marshal(), opaqueToInt(), LbmEntry::produceEntryTuple(), ExecStreamUnitTestBase::resetExecStreamTest(), BTreeReader::searchFirst(), BTreeReader::searchNext(), LbmEntry::setEntryTuple(), LbmEntry::setRID(), spliceInput(), BTreeDescriptor::tupleDescriptor, and TupleAccessor::unmarshal().

Referenced by LbmSplicerExecStreamTest().

00576 {
00577     TupleDescriptor tupleDesc;
00578     initBTreeTupleDesc(tupleDesc, 1);
00579 
00580     // Create the btree that the splicer will write into
00581     BTreeDescriptor bTreeDesc;
00582     createBTree(bTreeDesc, 1);
00583 
00584     TupleAccessor tupleAccessor;
00585     tupleAccessor.compute(tupleDesc);
00586 
00587     // Key values are fixed
00588     uint64_t keyVal = 1;
00589     TupleData tupleData;
00590     tupleData.compute(bTreeDesc.tupleDescriptor);
00591     tupleData[0].pData = (PConstBuffer) &keyVal;
00592 
00593     LbmEntry lbmEntry;
00594     boost::scoped_array<FixedBuffer> entryBuf;
00595     uint entryBufSize = tupleDesc[2].cbStorage + 8 + 8;
00596     entryBuf.reset(new FixedBuffer[entryBufSize]);
00597     lbmEntry.init(entryBuf.get(), NULL, entryBufSize, tupleDesc);
00598 
00599     std::vector<uint64_t> rids;
00600 
00601     // First create a bitmap entry at max capacity
00602     uint64_t rid = 0;
00603     tupleData[1].pData = (PConstBuffer) &rid;
00604     tupleData[2].pData = NULL;
00605     tupleData[2].cbData = 0;
00606     tupleData[3].pData = NULL;
00607     tupleData[3].cbData = 0;
00608     lbmEntry.setEntryTuple(tupleData);
00609     for (;; rid += 16) {
00610         bool rc = lbmEntry.setRID(LcsRid(rid));
00611         if (!rc) {
00612             break;
00613         }
00614         rids.push_back(rid);
00615     }
00616     tupleData = lbmEntry.produceEntryTuple();
00617 
00618     boost::shared_array<FixedBuffer> buffer;
00619     buffer.reset(new FixedBuffer[1024]);
00620     uint bufferSize = 0;
00621     tupleAccessor.marshal(tupleData, buffer.get() + bufferSize);
00622     bufferSize += tupleAccessor.getCurrentByteCount();
00623 
00624     // Then create a singleton that's further away
00625     rid += 64 + 1;
00626     rids.push_back(rid);
00627     tupleData[1].pData = (PConstBuffer) &rid;
00628     tupleData[2].pData = NULL;
00629     tupleData[2].cbData = 0;
00630     tupleData[3].pData = NULL;
00631     tupleData[3].cbData = 0;
00632     lbmEntry.setEntryTuple(tupleData);
00633     tupleData = lbmEntry.produceEntryTuple();
00634     tupleAccessor.marshal(tupleData, buffer.get() + bufferSize);
00635     bufferSize += tupleAccessor.getCurrentByteCount();
00636 
00637     // Insert the two bitmap entries we've just created into the btree
00638     spliceInput(
00639         buffer,
00640         bufferSize,
00641         rids.size(),
00642         bTreeDesc);
00643     resetExecStreamTest();
00644 
00645     // Now create a bitmap entry that overlaps with the singleton
00646     rid += 1;
00647     rids.push_back(rid);
00648     tupleData[1].pData = (PConstBuffer) &rid;
00649     tupleData[2].pData = NULL;
00650     tupleData[2].cbData = 0;
00651     tupleData[3].pData = NULL;
00652     tupleData[3].cbData = 0;
00653     lbmEntry.setEntryTuple(tupleData);
00654     for (uint i = 0; i < 5; i++) {
00655         rid += 8;
00656         rids.push_back(rid);
00657         bool rc = lbmEntry.setRID(LcsRid(rid));
00658         BOOST_REQUIRE(rc);
00659     }
00660     tupleData = lbmEntry.produceEntryTuple();
00661     bufferSize = 0;
00662     tupleAccessor.marshal(tupleData, buffer.get() + bufferSize);
00663     bufferSize += tupleAccessor.getCurrentByteCount();
00664 
00665     // Splice that into the existing btree
00666     spliceInput(
00667         buffer,
00668         bufferSize,
00669         5,
00670         bTreeDesc);
00671 
00672     // Read the btree bitmap entries and confirm that they contain all
00673     // of the rids that were inserted.
00674     BTreeReader reader(bTreeDesc);
00675     bool rc = reader.searchFirst();
00676     BOOST_REQUIRE(rc);
00677     uint currIdx = 0;
00678     while (rc) {
00679         reader.getTupleAccessorForRead().unmarshal(tupleData);
00680         std::vector<LcsRid> ridsRead;
00681         LbmEntry::generateRIDs(tupleData, ridsRead);
00682         for (uint i = 0; i < ridsRead.size(); i++) {
00683             BOOST_CHECK_EQUAL(
00684                 opaqueToInt(ridsRead[i]),
00685                 opaqueToInt(rids[currIdx]));
00686             currIdx++;
00687         }
00688         rc = reader.searchNext();
00689     }
00690     BOOST_CHECK_EQUAL(currIdx, rids.size());
00691 }

SharedExecStream ExecStreamUnitTestBase::prepareSourceGraph ( ExecStreamEmbryo sourceStreamEmbryo  )  [protected, inherited]

Defines and prepares a graph consisting of one source stream.

Parameters:
sourceStreamEmbryo embryonic source stream which produces tuples
Returns:
output buffer stream

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.

Parameters:
sourceStreamEmbryo embryonic source stream which produces tuples
transformStreamEmbryo embryonic transform stream which processes tuples produced by sourceStreamEmbryo
Returns:
output buffer stream

Definition at line 48 of file ExecStreamUnitTestBase.cpp.

Referenced by LcsClusterReplaceExecStreamTest::loadCluster(), LcsRowScanExecStreamTest::loadOneCluster(), ExecStreamUnitTestBase::prepareSourceGraph(), LcsClusterReplaceExecStreamTest::replaceCluster(), LcsMultiClusterAppendTest::scanCols(), 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(), LcsRowScanExecStreamTest::testSampleScanCols(), LcsRowScanExecStreamTest::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.

Parameters:
sourceStreamEmbryo embryonic source stream which produces tuples
transforms embryonic transform streams which process tuples produced by sourceStreamEmbryo or a child stream
Returns:
output buffer 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.

Parameters:
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
Returns:
output buffer stream

Definition at line 89 of file ExecStreamUnitTestBase.cpp.

Referenced by ExecStreamUnitTestBase::prepareConfluenceGraph(), ExecStreamTestSuite::testCartesianJoinExecStream(), CorrelationJoinExecStreamTestSuite::testCorrelationJoin(), LcsRowScanExecStreamTest::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.

Parameters:
sourceStreamEmbryos list of embryonic source streams that produce tuples
confluenceStreamEmbryo embryonic confluence stream which processes tuples produced by the sourceStreamEmbryos
Returns:
output buffer stream

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.

Parameters:
sourceStreamEmbryosList list of embryonic source streams which produce tuples
confluenceStreamEmbryo embryonic confluence stream which processes tuples produced by the source streams
Returns:
output buffer stream

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.

Parameters:
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
Returns:
output buffer 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.

Parameters:
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
Returns:
output buffer stream or null stream if createSink is false

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.

Parameters:
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
Returns:
output buffer stream or null stream if createSink is false

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.

Parameters:
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(), LcsRowScanExecStreamTest::loadOneCluster(), LbmSearchTest::loadTableAndIndex(), LcsClusterReplaceExecStreamTest::replaceCluster(), LcsMultiClusterAppendTest::scanCols(), spliceInput(), ExecStreamTestSuite::testBTreeInsertExecStream(), CollectExecStreamTestSuite::testCollectCollectUncollectUncollect(), CollectExecStreamTestSuite::testCollectUncollect(), CorrelationJoinExecStreamTestSuite::testCorrelationJoin(), ExecStreamTestSuite::testCountAggExecStream(), LhxAggExecStreamTest::testCountImpl(), ExecStreamTestSuite::testDoubleBufferExecStream(), LcsRowScanExecStreamTest::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(), LcsRowScanExecStreamTest::testSampleScanCols(), LcsRowScanExecStreamTest::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.

Parameters:
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.

Parameters:
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 LcsRowScanExecStreamTest::loadClusters(), LbmLoadBitmapTest::testAppend(), LcsRowScanExecStreamTest::testBernoulliSampling(), LcsClusterReplaceExecStreamTest::testClusterReplace(), LcsRowScanExecStreamTest::testCompressedFiltering(), testLER5968(), testLER6473(), LcsMultiClusterAppendTest::testLoad(), LcsClusterAppendExecStreamTest::testMultiColConstNewRoot(), LcsClusterAppendExecStreamTest::testMultiColConstOldRoot(), LcsClusterAppendExecStreamTest::testMultiColNoDupNewRoot(), LcsClusterAppendExecStreamTest::testMultiColNoDupOldRoot(), LcsClusterAppendExecStreamTest::testMultiColStairNewRoot(), LcsClusterAppendExecStreamTest::testMultiColStairOldRoot(), LbmSearchTest::testMultipleRanges(), ExecStreamGovernorTest::testReturnResources(), LbmSearchTest::testScanIdx(), LcsRowScanExecStreamTest::testScanPastEndOfCluster(), LcsRowScanExecStreamTest::testScans(), LcsClusterAppendExecStreamTest::testSingleColConstNewRoot(), LcsClusterAppendExecStreamTest::testSingleColConstOldRoot(), LcsClusterAppendExecStreamTest::testSingleColNoDupNewRoot(), LcsClusterAppendExecStreamTest::testSingleColNoDupOldRoot(), LcsClusterAppendExecStreamTest::testSingleColStairNewRoot(), LcsClusterAppendExecStreamTest::testSingleColStairOldRoot(), testSpliceRids(), testSpliceWithKeys(), and LcsRowScanExecStreamTest::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 ExecStreamTestBase::testCaseTearDown (  )  [virtual, inherited]

Equivalent to JUnit TestCase.tearDown; this is called after each test case method is invoked.

Default is no-op.

Reimplemented from CacheTestBase.

Reimplemented in LbmLoadBitmapTest, LbmSearchTest, LcsClusterAppendExecStreamTest, LcsClusterReplaceExecStreamTest, LcsMultiClusterAppendTest, and LcsRowScanExecStreamTest.

Definition at line 82 of file ExecStreamTestBase.cpp.

References ExecStreamTestBase::pCacheAccessor, ExecStreamTestBase::pResourceGovernor, ExecStreamTestBase::pScheduler, ExecStreamTestBase::tearDownExecStreamTest(), and CacheTestBase::testCaseTearDown().

Referenced by LcsRowScanExecStreamTest::testCaseTearDown(), LcsMultiClusterAppendTest::testCaseTearDown(), LcsClusterReplaceExecStreamTest::testCaseTearDown(), LcsClusterAppendExecStreamTest::testCaseTearDown(), LbmSearchTest::testCaseTearDown(), and LbmLoadBitmapTest::testCaseTearDown().

00083 {
00084     // first stop the scheduler
00085     if (pScheduler) {
00086         pScheduler->stop();
00087     }
00088     pCacheAccessor.reset();
00089     // destroy the graph
00090     tearDownExecStreamTest();
00091     // free the scheduler last, since an ExecStreamGraph holds a raw Scheduler
00092     // ptr
00093     pScheduler.reset();
00094     assert(pResourceGovernor.unique());
00095     pResourceGovernor.reset();
00096     SegStorageTestBase::testCaseTearDown();
00097 }

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.

Parameters:
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.

Parameters:
source name of source to be traced
Returns:
minimum severity level which should be traced

Implements TraceTarget.

Definition at line 258 of file TestBase.cpp.

References TestBase::traceLevel.

Referenced by LbmExecStreamTestBase::generateBitmaps().

00259 {
00260     return traceLevel;
00261 }


Member Data Documentation

StandardTypeDescriptorFactory LbmSplicerExecStreamTest::stdTypeFactory [protected]

Definition at line 45 of file LbmSplicerExecStreamTest.cpp.

Referenced by testCaseSetUp().

TupleAttributeDescriptor LbmSplicerExecStreamTest::attrDesc_int64 [protected]

Definition at line 46 of file LbmSplicerExecStreamTest.cpp.

Referenced by generateRidInput(), initBTreeTupleDesc(), spliceInput(), and testCaseSetUp().

TupleAttributeDescriptor LbmSplicerExecStreamTest::attrDesc_bitmap [protected]

Definition at line 47 of file LbmSplicerExecStreamTest.cpp.

Referenced by initBTreeTupleDesc(), spliceInput(), and testCaseSetUp().

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(), 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(), LcsRowScanExecStreamTest::loadOneCluster(), LbmSearchTest::loadTableAndIndex(), LbmMinusExecStreamTest::newMinusStream(), ExecStreamTestBase::newStreamGraphEmbryo(), SegStorageTestBase::openRandomSegment(), VersionedSegmentTest::openSegmentStorage(), SnapshotSegmentTestBase::openSegmentStorage(), LinearViewSegmentTest::openSegmentStorage(), BackupRestoreTest::restore(), SegStorageTestBase::SegStorageTestBase(), 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(), createBTree(), initBTreeParam(), LbmSearchTest::initBTreeParam(), LbmLoadBitmapTest::initBTreeParam(), LbmLoadBitmapTest::initBTreeTupleDesc(), LcsClusterReplaceExecStreamTest::initClusterAppendParams(), LbmExecStreamTestBase::initSorterExecStream(), LcsClusterReplaceExecStreamTest::loadCluster(), LcsMultiClusterAppendTest::loadClusters(), LcsRowScanExecStreamTest::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(), LcsRowScanExecStreamTest::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(), LcsRowScanExecStreamTest::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(), 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(), LcsRowScanExecStreamTest::loadOneCluster(), LbmSearchTest::loadTableAndIndex(), SegmentTestBase::lockPage(), LbmMinusExecStreamTest::newMinusStream(), ExecStreamTestBase::newStreamGraphEmbryo(), CacheTestBase::openDevice(), CacheTestBase::openStorage(), LcsClusterReplaceExecStreamTest::replaceCluster(), BackupRestoreTest::restore(), 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(), LcsRowScanExecStreamTest::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]

Output for stats.

Definition at line 86 of file TestBase.h.

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]

Definition at line 139 of file TestBase.h.

Referenced by TestBase::releaseTestSuite().

TestCaseGroup TestBase::extraTests [protected, inherited]

Definition at line 140 of file TestBase.h.

Referenced by TestBase::releaseTestSuite().

ParamName TestBase::paramTestSuiteName [static, inherited]

Definition at line 143 of file TestBase.h.

Referenced by TestBase::TestBase().

ParamName TestBase::paramTraceFileName [static, inherited]

Definition at line 144 of file TestBase.h.

Referenced by TestBase::TestBase().

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]

Definition at line 146 of file TestBase.h.

Referenced by TestBase::TestBase().

ParamName TestBase::paramStatsFileName [static, inherited]

Definition at line 147 of file TestBase.h.

ParamName TestBase::paramTraceStdout [static, inherited]

Definition at line 148 of file TestBase.h.

Referenced by TestBase::TestBase().

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().


The documentation for this class was generated from the following file:
Generated on Mon Jun 22 04:00:36 2009 for Fennel by  doxygen 1.5.1