Inheritance diagram for ExecStreamGovernorTest:
Public Member Functions | |
ExecStreamGovernorTest () | |
void | testOptLessAccurate () |
2 streams; total optimum of streams < perGraphAllocation; both streams have EXEC_RESOURCE_ACCURATE optimum settings so the optimum amount will be allocated | |
void | testOptLessEstimate () |
4 streams -- total optimum < perGraphAllocation; but one stream has an EXEC_RESOURCE_ESTIMATE optimum setting | |
void | testOptEqualEstimate () |
4 streams -- total opt = perGraphAllocation; 2 streams with estimate optimum settings | |
void | testInBetween () |
4 streams -- total min < perGraphAllocation < total opt; streams have a mix of different optimum settings | |
void | testMinGreaterAllocation () |
2 streams; total min of streams > perGraphAllocation but less than the amount available; so it should be possible to allocate the minimum | |
void | testMinEqualAllocation () |
2 streams; total min of streams = perGraphAllocation; so min is assigned | |
void | testMinGreaterAvailable () |
2 streams; total min of streams > perGraphAllocation and also greater than the amount available; so an exception should be returned | |
void | testReturnResources () |
Execute two stream graphs in sequence. | |
virtual void | testCaseSetUp () |
Equivalent to JUnit TestCase.setUp; this is called before each test case method is invoked. | |
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 () |
Cache & | getCache () |
virtual SharedCache | newCache () |
SharedRandomAccessDevice | openDevice (std::string devName, DeviceMode openMode, uint nDevicePages, DeviceId deviceId) |
void | closeDevice (DeviceId deviceId, SharedRandomAccessDevice &pDevice) |
TestSuite * | releaseTestSuite () |
void | beforeTestCase (std::string testCaseName) |
void | afterTestCase (std::string testCaseName) |
virtual void | notifyTrace (std::string source, TraceLevel level, std::string message) |
Receives notification when a trace event occurs. | |
virtual TraceLevel | getSourceTraceLevel (std::string source) |
Gets the level at which a particular source should be traced. | |
Static Public Member Functions | |
static void | readParams (int argc, char **argv) |
Parses the command line. | |
Static Public Attributes | |
static ParamName | paramTestSuiteName |
static ParamName | paramTraceFileName |
static ParamName | paramDictionaryFileName |
static ParamName | paramTraceLevel |
static ParamName | paramStatsFileName |
static ParamName | paramTraceStdout |
static ParamName | paramDegreeOfParallelism |
static ConfigMap | configMap |
Configuration parameters. | |
Protected Types | |
enum | VictimPolicy { victimTwoQ, victimLRU, victimRandom } |
The available victim policy implementations. More... | |
Protected Member Functions | |
SharedExecStream | prepareSourceGraph (ExecStreamEmbryo &sourceStreamEmbryo) |
Defines and prepares a graph consisting of one source stream. | |
SharedExecStream | prepareTransformGraph (ExecStreamEmbryo &sourceStreamEmbryo, ExecStreamEmbryo &transformStreamEmbryo) |
Defines and prepares a graph consisting of one source stream and one transform stream. | |
SharedExecStream | prepareTransformGraph (ExecStreamEmbryo &sourceStreamEmbryo, std::vector< ExecStreamEmbryo > &transforms) |
Defines and prepares a graph consisting of one source stream and one or multiple transform streams. | |
SharedExecStream | prepareConfluenceGraph (ExecStreamEmbryo &sourceStreamEmbryo1, ExecStreamEmbryo &sourceStreamEmbryo2, ExecStreamEmbryo &confluenceStreamEmbryo) |
Defines and prepares a graph consisting of two source streams and one confluence stream. | |
SharedExecStream | prepareConfluenceGraph (std::vector< ExecStreamEmbryo > &sourceStreamEmbryos, ExecStreamEmbryo &confluenceStreamEmbryo) |
Defines and prepares a graph consisting of a list of source streams and one confluence stream. | |
SharedExecStream | prepareConfluenceGraph (std::vector< std::vector< ExecStreamEmbryo > > &sourceStreamEmbryosList, ExecStreamEmbryo &confluenceStreamEmbryo) |
Defines and prepares a graph consisting of one or more source streams and one confluence stream. | |
SharedExecStream | prepareConfluenceTransformGraph (ExecStreamEmbryo &sourceStreamEmbryo1, ExecStreamEmbryo &sourceStreamEmbryo2, ExecStreamEmbryo &confluenceStreamEmbryo, ExecStreamEmbryo &transformStreamEmbryo) |
Defines and prepares a graph consisting of two source streams, one confluence stream, and one transform stream. | |
SharedExecStream | prepareDAG (ExecStreamEmbryo &srcStreamEmbryo, ExecStreamEmbryo &splitterStreamEmbryo, std::vector< ExecStreamEmbryo > &interStreamEmbryos, ExecStreamEmbryo &destStreamEmbryo, bool createSink=true, bool saveSrc=true) |
Defines and prepares a graph consisting of a source, a splitter, and one or more parallel transform streams which flow together into a confluence stream. | |
SharedExecStream | prepareDAG (ExecStreamEmbryo &srcStreamEmbryo, ExecStreamEmbryo &splitterStreamEmbryo, std::vector< std::vector< ExecStreamEmbryo > > &interStreamEmbryosList, ExecStreamEmbryo &destStreamEmbryo, bool createSink=true, bool saveSrc=true) |
Defines and prepares a graph consisting of a source, a splitter, and one or more parallel transform streams which flow together into a confluence stream. | |
void | verifyOutput (ExecStream &stream, uint nRowsExpected, MockProducerExecStreamGenerator &verifier, bool stopEarly=false) |
Executes the prepared stream graph and verifies that its output matches that produced by a value generator. | |
void | verifyConstantOutput (ExecStream &stream, const TupleData &expectedTuple, uint nRowsExpected) |
Executes the prepared stream graph and verifies that all output tuples matche an expected and given one. | |
void | verifyBufferedOutput (ExecStream &stream, TupleDescriptor outputTupleDesc, uint nRowsExpected, PBuffer expectedBuffer) |
Executes the prepared stream graph and verifies the resultant tuples against a set of tuples supplied in an input buffer. | |
void | resetExecStreamTest () |
Reset stream graph so multiple iterations of a method can be called within a single testcase. | |
virtual void | tearDownExecStreamTest () |
ExecStream-specific handler called from testCaseTearDown. | |
virtual SharedExecStreamGraph | newStreamGraph () |
Creates a stream graph. | |
virtual SharedExecStreamGraphEmbryo | newStreamGraphEmbryo (SharedExecStreamGraph) |
Creates an embryo for a stream graph. | |
virtual ExecStreamScheduler * | newScheduler () |
Creates a scheduler. | |
virtual ExecStreamGovernor * | newResourceGovernor (ExecStreamResourceKnobs const &knobSettings, ExecStreamResourceQuantity const &resourcesAvailable) |
Creates the resource governor. | |
void | snooze (uint nSeconds) |
Protected Attributes | |
SharedExecStreamGraph | pGraph |
SharedExecStreamGraphEmbryo | pGraphEmbryo |
SharedExecStreamScheduler | pScheduler |
SharedExecStreamGovernor | pResourceGovernor |
SharedCacheAccessor | pCacheAccessor |
SharedSegmentFactory | pSegmentFactory |
SharedSegment | pLinearSegment |
Segment supporting linear page allocation. | |
SharedSegment | pRandomSegment |
(Optional) segment supporting random page allocation. | |
SharedSegment | pVersionedRandomSegment |
(Optional) segment supporting versioned random page allocation. | |
SharedSegment | pSnapshotRandomSegment |
(Optional) segment supporting snapshot random page allocation. | |
VictimPolicy | victimPolicy |
VictimPolicy to instantiate. | |
CacheParams | cacheParams |
Parameters for cache initialization. | |
SharedCache | pCache |
Cache instance being tested. | |
SharedRandomAccessDevice | pRandomAccessDevice |
The default cached device. | |
uint | nMemPages |
Size of cache in memory pages. | |
uint | nDiskPages |
Size of device in disk pages. | |
uint | cbPageFull |
Disk page size. | |
DeviceId | dataDeviceId |
Fixed ID to assign to data device. | |
TestSuite * | pTestSuite |
Boost test suite. | |
boost::shared_ptr< TestBase > | pTestObj |
std::ofstream | traceStream |
Output file stream for tracing. | |
StrictMutex | traceMutex |
Protects traceStream. | |
std::string | testName |
Name of test. | |
TraceLevel | traceLevel |
Level at which to trace test execution. | |
FileStatsTarget | statsTarget |
Output for stats. | |
StatsTimer | statsTimer |
Timer for stats collection. | |
bool | traceStdout |
Copy trace output to stdout. | |
bool | traceFile |
Copy trace output to file. | |
TestCaseGroup | defaultTests |
TestCaseGroup | extraTests |
Static Protected Attributes | |
static const uint | 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. | |
Private Member Functions | |
void | testGovernor (uint nProducers, std::vector< ExecStreamResourceQuantity > const &minReqts, std::vector< ExecStreamResourceQuantity > const &optReqts, std::vector< ExecStreamResourceSettingType > optTypes, std::vector< ExecStreamResourceQuantity > expected, bool exception=false) |
Creates a confluence stream consisting of nProducer producers that feed into a barrier stream. |
Definition at line 44 of file ExecStreamGovernorTest.cpp.
enum CacheTestBase::VictimPolicy [protected, inherited] |
The available victim policy implementations.
Definition at line 44 of file CacheTestBase.h.
00044 { 00045 victimTwoQ, 00046 victimLRU, 00047 victimRandom 00048 };
ExecStreamGovernorTest::ExecStreamGovernorTest | ( | ) | [inline, explicit] |
Definition at line 70 of file ExecStreamGovernorTest.cpp.
References testInBetween(), testMinEqualAllocation(), testMinGreaterAllocation(), testMinGreaterAvailable(), testOptEqualEstimate(), testOptLessAccurate(), testOptLessEstimate(), and testReturnResources().
00071 { 00072 FENNEL_UNIT_TEST_CASE(ExecStreamGovernorTest, testOptLessAccurate); 00073 FENNEL_UNIT_TEST_CASE(ExecStreamGovernorTest, testOptLessEstimate); 00074 FENNEL_UNIT_TEST_CASE(ExecStreamGovernorTest, testOptEqualEstimate); 00075 FENNEL_UNIT_TEST_CASE(ExecStreamGovernorTest, testInBetween); 00076 FENNEL_UNIT_TEST_CASE( 00077 ExecStreamGovernorTest, testMinEqualAllocation); 00078 FENNEL_UNIT_TEST_CASE( 00079 ExecStreamGovernorTest, testMinGreaterAllocation); 00080 FENNEL_UNIT_TEST_CASE( 00081 ExecStreamGovernorTest, testMinGreaterAvailable); 00082 FENNEL_UNIT_TEST_CASE(ExecStreamGovernorTest, testReturnResources); 00083 }
void ExecStreamGovernorTest::testGovernor | ( | uint | nProducers, | |
std::vector< ExecStreamResourceQuantity > const & | minReqts, | |||
std::vector< ExecStreamResourceQuantity > const & | optReqts, | |||
std::vector< ExecStreamResourceSettingType > | optTypes, | |||
std::vector< ExecStreamResourceQuantity > | expected, | |||
bool | exception = false | |||
) | [private] |
Creates a confluence stream consisting of nProducer producers that feed into a barrier stream.
Each producer takes as input min and opt resource requirements, the setting type of the opt resource requirement, and the expected resources to be allocated to each.
nProducers | number of producers | |
minReqts | min resource requirements for each producer | |
optReqts | opt resource requirements for each producer | |
optTypes | opt resource setting type for each producer | |
expected | expected resources that the resource governor will allocate to each producer | |
exception | true if the test is expected to return an exception indicating that scratch pages have been exhausted; default is false |
Definition at line 503 of file ExecStreamGovernorTest.cpp.
References BARRIER_RET_ANY_INPUT, TupleData::compute(), FennelExcn::getMessage(), ExecStreamEmbryo::getStream(), ExecStreamEmbryo::init(), StandardTypeDescriptorFactory::newDataType(), CacheTestBase::pCache, ExecStreamUnitTestBase::prepareConfluenceGraph(), SegStorageTestBase::pSegmentFactory, BarrierExecStreamParams::returnMode, STANDARD_TYPE_INT_8, and ExecStreamUnitTestBase::verifyConstantOutput().
Referenced by testInBetween(), testMinEqualAllocation(), testMinGreaterAllocation(), testMinGreaterAvailable(), testOptEqualEstimate(), testOptLessAccurate(), testOptLessEstimate(), and testReturnResources().
00510 { 00511 StandardTypeDescriptorFactory stdTypeFactory; 00512 TupleAttributeDescriptor int8AttrDesc( 00513 stdTypeFactory.newDataType(STANDARD_TYPE_INT_8)); 00514 00515 std::vector<ExecStreamEmbryo> producerStreamEmbryos; 00516 for (uint i = 0; i < nProducers; i++) { 00517 MockResourceExecStreamParams producerParams; 00518 producerParams.minReqt = minReqts[i]; 00519 producerParams.optReqt = optReqts[i]; 00520 producerParams.optTypeInput = optTypes[i]; 00521 producerParams.expected = expected[i]; 00522 00523 // limit the number of pages that scratchAccessor can allocate to 00524 // the number of pages that this stream is expected to allocate 00525 producerParams.scratchAccessor = 00526 pSegmentFactory->newScratchSegment(pCache, expected[i].nCachePages); 00527 producerParams.pCacheAccessor = pCache; 00528 producerParams.outputTupleDesc.push_back(int8AttrDesc); 00529 00530 ExecStreamEmbryo producerStreamEmbryo; 00531 producerStreamEmbryo.init( 00532 new MockResourceExecStream(), producerParams); 00533 std::ostringstream oss; 00534 oss << "MockResourceExecStream" << "#" << i; 00535 producerStreamEmbryo.getStream()->setName(oss.str()); 00536 producerStreamEmbryos.push_back(producerStreamEmbryo); 00537 } 00538 00539 BarrierExecStreamParams barrierParams; 00540 barrierParams.outputTupleDesc.push_back(int8AttrDesc); 00541 barrierParams.returnMode = BARRIER_RET_ANY_INPUT; 00542 00543 ExecStreamEmbryo barrierStreamEmbryo; 00544 barrierStreamEmbryo.init(new BarrierExecStream(), barrierParams); 00545 barrierStreamEmbryo.getStream()->setName("BarrierExecStream"); 00546 00547 SharedExecStream pOutputStream = prepareConfluenceGraph( 00548 producerStreamEmbryos, barrierStreamEmbryo); 00549 00550 int8_t expectedOutput = 1; 00551 TupleData expectedTuple; 00552 expectedTuple.compute(barrierParams.outputTupleDesc); 00553 expectedTuple[0].pData = (PConstBuffer) &expectedOutput; 00554 00555 // if the testcase expects an exception to be returned, then test for it 00556 try { 00557 verifyConstantOutput(*pOutputStream, expectedTuple, 1); 00558 if (exception) { 00559 BOOST_FAIL("Cache memory not exhausted"); 00560 } 00561 } catch (FennelExcn &ex) { 00562 std::string errMsg = ex.getMessage(); 00563 if (errMsg.compare(ScratchMemExcn().getMessage()) != 0) { 00564 BOOST_FAIL("Wrong exception returned"); 00565 } 00566 } 00567 }
void ExecStreamGovernorTest::testOptLessAccurate | ( | ) |
2 streams; total optimum of streams < perGraphAllocation; both streams have EXEC_RESOURCE_ACCURATE optimum settings so the optimum amount will be allocated
Definition at line 118 of file ExecStreamGovernorTest.cpp.
References EXEC_RESOURCE_ACCURATE, ExecStreamResourceQuantity::nCachePages, and testGovernor().
Referenced by ExecStreamGovernorTest().
00119 { 00120 uint nProducers = 2; 00121 std::vector<ExecStreamResourceQuantity> minReqts; 00122 std::vector<ExecStreamResourceQuantity> optReqts; 00123 std::vector<ExecStreamResourceQuantity> expected; 00124 std::vector<ExecStreamResourceSettingType> optTypes; 00125 00126 ExecStreamResourceQuantity quantity; 00127 ExecStreamResourceSettingType optType; 00128 00129 // producer 1 - min=10, opt=15, optType=EXEC_RESOURCE_ACCURATE, expected=15 00130 quantity.nCachePages = 10; 00131 minReqts.push_back(quantity); 00132 quantity.nCachePages = 15; 00133 optReqts.push_back(quantity); 00134 expected.push_back(quantity); 00135 optType = EXEC_RESOURCE_ACCURATE; 00136 optTypes.push_back(optType); 00137 00138 // producer 2 - min=20, opt=40, optType=EXEC_RESOURCE_ACCURATE, expected=40 00139 quantity.nCachePages = 20; 00140 minReqts.push_back(quantity); 00141 quantity.nCachePages = 40; 00142 optReqts.push_back(quantity); 00143 expected.push_back(quantity); 00144 optType = EXEC_RESOURCE_ACCURATE; 00145 optTypes.push_back(optType); 00146 00147 testGovernor(nProducers, minReqts, optReqts, optTypes, expected); 00148 }
void ExecStreamGovernorTest::testOptLessEstimate | ( | ) |
4 streams -- total optimum < perGraphAllocation; but one stream has an EXEC_RESOURCE_ESTIMATE optimum setting
Definition at line 154 of file ExecStreamGovernorTest.cpp.
References EXEC_RESOURCE_ACCURATE, EXEC_RESOURCE_ESTIMATE, ExecStreamResourceQuantity::nCachePages, and testGovernor().
Referenced by ExecStreamGovernorTest().
00155 { 00156 uint nProducers = 4; 00157 std::vector<ExecStreamResourceQuantity> minReqts; 00158 std::vector<ExecStreamResourceQuantity> optReqts; 00159 std::vector<ExecStreamResourceQuantity> expected; 00160 std::vector<ExecStreamResourceSettingType> optTypes; 00161 00162 ExecStreamResourceQuantity quantity; 00163 ExecStreamResourceSettingType optType; 00164 00165 // total opt is 80, but since one stream has an estimate setting, we 00166 // can allocate up to an excess of 15 to that stream 00167 00168 // producer 1 - min=10, opt=11, optType=EXEC_RESOURCE_ACCURATE, expected=11 00169 quantity.nCachePages = 10; 00170 minReqts.push_back(quantity); 00171 quantity.nCachePages = 11; 00172 optReqts.push_back(quantity); 00173 expected.push_back(quantity); 00174 optType = EXEC_RESOURCE_ACCURATE; 00175 optTypes.push_back(optType); 00176 00177 // producer 2 - min=15, opt=17, optType=EXEC_RESOURCE_ACCURATE, expected=17 00178 quantity.nCachePages = 15; 00179 minReqts.push_back(quantity); 00180 quantity.nCachePages = 17; 00181 optReqts.push_back(quantity); 00182 expected.push_back(quantity); 00183 optType = EXEC_RESOURCE_ACCURATE; 00184 optTypes.push_back(optType); 00185 00186 // producer 3 - min=20, opt=23, optType=EXEC_RESOURCE_ESTIMATE, expected=38 00187 quantity.nCachePages = 20; 00188 minReqts.push_back(quantity); 00189 quantity.nCachePages = 23; 00190 optReqts.push_back(quantity); 00191 quantity.nCachePages = 38; 00192 expected.push_back(quantity); 00193 optType = EXEC_RESOURCE_ESTIMATE; 00194 optTypes.push_back(optType); 00195 00196 // producer 4 - min=25, opt=29, optType=EXEC_RESOURCE_ACCURATE, expected=29 00197 quantity.nCachePages = 25; 00198 minReqts.push_back(quantity); 00199 quantity.nCachePages = 29; 00200 optReqts.push_back(quantity); 00201 expected.push_back(quantity); 00202 optType = EXEC_RESOURCE_ACCURATE; 00203 optTypes.push_back(optType); 00204 00205 testGovernor(nProducers, minReqts, optReqts, optTypes, expected); 00206 }
void ExecStreamGovernorTest::testOptEqualEstimate | ( | ) |
4 streams -- total opt = perGraphAllocation; 2 streams with estimate optimum settings
Definition at line 212 of file ExecStreamGovernorTest.cpp.
References EXEC_RESOURCE_ACCURATE, EXEC_RESOURCE_ESTIMATE, ExecStreamResourceQuantity::nCachePages, and testGovernor().
Referenced by ExecStreamGovernorTest().
00213 { 00214 uint nProducers = 4; 00215 std::vector<ExecStreamResourceQuantity> minReqts; 00216 std::vector<ExecStreamResourceQuantity> optReqts; 00217 std::vector<ExecStreamResourceQuantity> expected; 00218 std::vector<ExecStreamResourceSettingType> optTypes; 00219 00220 ExecStreamResourceQuantity quantity; 00221 ExecStreamResourceSettingType optType; 00222 00223 // total opt is 95 with two streams with estimate settings; all 00224 // streams will be allocated their optimum 00225 00226 // producer 1 - min=10, opt=20, optType=EXEC_RESOURCE_ESTIMATE, expected=20 00227 quantity.nCachePages = 10; 00228 minReqts.push_back(quantity); 00229 quantity.nCachePages = 20; 00230 optReqts.push_back(quantity); 00231 expected.push_back(quantity); 00232 optType = EXEC_RESOURCE_ESTIMATE; 00233 optTypes.push_back(optType); 00234 00235 // producer 2 - min=15, opt=17, optType=EXEC_RESOURCE_ACCURATE, expected=17 00236 quantity.nCachePages = 15; 00237 minReqts.push_back(quantity); 00238 quantity.nCachePages = 17; 00239 optReqts.push_back(quantity); 00240 expected.push_back(quantity); 00241 optType = EXEC_RESOURCE_ACCURATE; 00242 optTypes.push_back(optType); 00243 00244 // producer 3 - min=20, opt=23, optType=EXEC_RESOURCE_ACCURATE, expected=23 00245 quantity.nCachePages = 20; 00246 minReqts.push_back(quantity); 00247 quantity.nCachePages = 23; 00248 optReqts.push_back(quantity); 00249 expected.push_back(quantity); 00250 optType = EXEC_RESOURCE_ACCURATE; 00251 optTypes.push_back(optType); 00252 00253 // producer 4 - min=25, opt=35, optType=EXEC_RESOURCE_ESTIMATE, expected=35 00254 quantity.nCachePages = 25; 00255 minReqts.push_back(quantity); 00256 quantity.nCachePages = 35; 00257 optReqts.push_back(quantity); 00258 expected.push_back(quantity); 00259 optType = EXEC_RESOURCE_ESTIMATE; 00260 optTypes.push_back(optType); 00261 00262 testGovernor(nProducers, minReqts, optReqts, optTypes, expected); 00263 }
void ExecStreamGovernorTest::testInBetween | ( | ) |
4 streams -- total min < perGraphAllocation < total opt; streams have a mix of different optimum settings
Definition at line 269 of file ExecStreamGovernorTest.cpp.
References EXEC_RESOURCE_ACCURATE, EXEC_RESOURCE_ESTIMATE, EXEC_RESOURCE_UNBOUNDED, ExecStreamResourceQuantity::nCachePages, and testGovernor().
Referenced by ExecStreamGovernorTest().
00270 { 00271 uint nProducers = 4; 00272 std::vector<ExecStreamResourceQuantity> minReqts; 00273 std::vector<ExecStreamResourceQuantity> optReqts; 00274 std::vector<ExecStreamResourceQuantity> expected; 00275 std::vector<ExecStreamResourceSettingType> optTypes; 00276 00277 ExecStreamResourceQuantity quantity; 00278 ExecStreamResourceSettingType optType; 00279 00280 // total min is 70; each stream will be assigned their min and an 00281 // excess of 25 will be divided across the streams 00282 00283 // producer 1 - min=10, opt=25, optType=EXEC_RESOURCE_ACCURATE, expected=14 00284 quantity.nCachePages = 10; 00285 minReqts.push_back(quantity); 00286 quantity.nCachePages = 25; 00287 optReqts.push_back(quantity); 00288 quantity.nCachePages = 14; 00289 expected.push_back(quantity); 00290 optType = EXEC_RESOURCE_ACCURATE; 00291 optTypes.push_back(optType); 00292 00293 // producer 2 - min=15, opt=31, optType=EXEC_RESOURCE_ESTIMATE, expected=19 00294 quantity.nCachePages = 15; 00295 minReqts.push_back(quantity); 00296 quantity.nCachePages = 31; 00297 optReqts.push_back(quantity); 00298 quantity.nCachePages = 19; 00299 expected.push_back(quantity); 00300 optType = EXEC_RESOURCE_ESTIMATE; 00301 optTypes.push_back(optType); 00302 00303 // producer 3 - min=20, opt=0, optType=EXEC_RESOURCE_UNBOUNDED, expected=31 00304 quantity.nCachePages = 20; 00305 minReqts.push_back(quantity); 00306 quantity.nCachePages = 0; 00307 optReqts.push_back(quantity); 00308 quantity.nCachePages = 31; 00309 expected.push_back(quantity); 00310 optType = EXEC_RESOURCE_UNBOUNDED; 00311 optTypes.push_back(optType); 00312 00313 // producer 4 - min=25, opt=42, optType=EXEC_RESOURCE_ESTIMATE, expected=29 00314 quantity.nCachePages = 25; 00315 minReqts.push_back(quantity); 00316 quantity.nCachePages = 42; 00317 optReqts.push_back(quantity); 00318 quantity.nCachePages = 29; 00319 expected.push_back(quantity); 00320 optType = EXEC_RESOURCE_ESTIMATE; 00321 optTypes.push_back(optType); 00322 00323 testGovernor(nProducers, minReqts, optReqts, optTypes, expected); 00324 }
void ExecStreamGovernorTest::testMinGreaterAllocation | ( | ) |
2 streams; total min of streams > perGraphAllocation but less than the amount available; so it should be possible to allocate the minimum
Definition at line 330 of file ExecStreamGovernorTest.cpp.
References EXEC_KNOB_EXPECTED_CONCURRENT_STATEMENTS, EXEC_RESOURCE_ACCURATE, EXEC_RESOURCE_CACHE_PAGES, ExecStreamResourceKnobs::expectedConcurrentStatements, ExecStreamResourceQuantity::nCachePages, ExecStreamTestBase::pResourceGovernor, and testGovernor().
Referenced by ExecStreamGovernorTest().
00331 { 00332 // since this stream will be asking for more than the perGraphAllocation, 00333 // we need to allow for at least 2 stream graphs 00334 ExecStreamResourceQuantity quantity; 00335 quantity.nCachePages = 200; 00336 pResourceGovernor->setResourceAvailability( 00337 quantity, EXEC_RESOURCE_CACHE_PAGES); 00338 ExecStreamResourceKnobs knob; 00339 knob.expectedConcurrentStatements = 2; 00340 pResourceGovernor->setResourceKnob( 00341 knob, EXEC_KNOB_EXPECTED_CONCURRENT_STATEMENTS); 00342 00343 uint nProducers = 2; 00344 std::vector<ExecStreamResourceQuantity> minReqts; 00345 std::vector<ExecStreamResourceQuantity> optReqts; 00346 std::vector<ExecStreamResourceQuantity> expected; 00347 std::vector<ExecStreamResourceSettingType> optTypes; 00348 00349 ExecStreamResourceSettingType optType; 00350 00351 // producer 1 - min=50, opt=50, optType=EXEC_RESOURCE_ACCURATE, expected=50 00352 quantity.nCachePages = 50; 00353 minReqts.push_back(quantity); 00354 optReqts.push_back(quantity); 00355 expected.push_back(quantity); 00356 optType = EXEC_RESOURCE_ACCURATE; 00357 optTypes.push_back(optType); 00358 00359 // producer 2 - min=55, opt=55, optType=EXEC_RESOURCE_ACCURATE, expected=55 00360 quantity.nCachePages = 55; 00361 minReqts.push_back(quantity); 00362 optReqts.push_back(quantity); 00363 expected.push_back(quantity); 00364 optType = EXEC_RESOURCE_ACCURATE; 00365 optTypes.push_back(optType); 00366 00367 testGovernor(nProducers, minReqts, optReqts, optTypes, expected); 00368 }
void ExecStreamGovernorTest::testMinEqualAllocation | ( | ) |
2 streams; total min of streams = perGraphAllocation; so min is assigned
Definition at line 374 of file ExecStreamGovernorTest.cpp.
References EXEC_RESOURCE_ACCURATE, ExecStreamResourceQuantity::nCachePages, and testGovernor().
Referenced by ExecStreamGovernorTest().
00375 { 00376 uint nProducers = 2; 00377 std::vector<ExecStreamResourceQuantity> minReqts; 00378 std::vector<ExecStreamResourceQuantity> optReqts; 00379 std::vector<ExecStreamResourceQuantity> expected; 00380 std::vector<ExecStreamResourceSettingType> optTypes; 00381 00382 ExecStreamResourceQuantity quantity; 00383 ExecStreamResourceSettingType optType; 00384 00385 // producer 1 - min=50, opt=60, optType=EXEC_RESOURCE_ACCURATE, 00386 // expected=50 00387 quantity.nCachePages = 50; 00388 minReqts.push_back(quantity); 00389 quantity.nCachePages = 60; 00390 optReqts.push_back(quantity); 00391 quantity.nCachePages = 50; 00392 expected.push_back(quantity); 00393 optType = EXEC_RESOURCE_ACCURATE; 00394 optTypes.push_back(optType); 00395 00396 // producer 2 - min=45, opt=50, optType=EXEC_RESOURCE_ACCURATE, expected=45 00397 quantity.nCachePages = 45; 00398 minReqts.push_back(quantity); 00399 quantity.nCachePages = 50; 00400 optReqts.push_back(quantity); 00401 quantity.nCachePages = 45; 00402 expected.push_back(quantity); 00403 optType = EXEC_RESOURCE_ACCURATE; 00404 optTypes.push_back(optType); 00405 00406 testGovernor(nProducers, minReqts, optReqts, optTypes, expected); 00407 }
void ExecStreamGovernorTest::testMinGreaterAvailable | ( | ) |
2 streams; total min of streams > perGraphAllocation and also greater than the amount available; so an exception should be returned
Definition at line 413 of file ExecStreamGovernorTest.cpp.
References EXEC_RESOURCE_ACCURATE, ExecStreamResourceQuantity::nCachePages, and testGovernor().
Referenced by ExecStreamGovernorTest().
00414 { 00415 uint nProducers = 2; 00416 std::vector<ExecStreamResourceQuantity> minReqts; 00417 std::vector<ExecStreamResourceQuantity> optReqts; 00418 std::vector<ExecStreamResourceQuantity> expected; 00419 std::vector<ExecStreamResourceSettingType> optTypes; 00420 00421 ExecStreamResourceQuantity quantity; 00422 ExecStreamResourceSettingType optType; 00423 00424 // producer 1 - min=50, opt=50, optType=EXEC_RESOURCE_ACCURATE, 00425 // expected=50 00426 quantity.nCachePages = 50; 00427 minReqts.push_back(quantity); 00428 optReqts.push_back(quantity); 00429 expected.push_back(quantity); 00430 optType = EXEC_RESOURCE_ACCURATE; 00431 optTypes.push_back(optType); 00432 00433 // producer 2 - min=46, opt=46, optType=EXEC_RESOURCE_ACCURATE, expected=46 00434 quantity.nCachePages = 46; 00435 minReqts.push_back(quantity); 00436 optReqts.push_back(quantity); 00437 expected.push_back(quantity); 00438 optType = EXEC_RESOURCE_ACCURATE; 00439 optTypes.push_back(optType); 00440 00441 testGovernor(nProducers, minReqts, optReqts, optTypes, expected, true); 00442 }
void ExecStreamGovernorTest::testReturnResources | ( | ) |
Execute two stream graphs in sequence.
The total min of the first is 90 and the second is 95. Both should succeed, provided the resources used by the first are successfully returned.
Definition at line 449 of file ExecStreamGovernorTest.cpp.
References EXEC_RESOURCE_ACCURATE, ExecStreamResourceQuantity::nCachePages, ExecStreamUnitTestBase::resetExecStreamTest(), and testGovernor().
Referenced by ExecStreamGovernorTest().
00450 { 00451 uint nProducers = 2; 00452 std::vector<ExecStreamResourceQuantity> minReqts; 00453 std::vector<ExecStreamResourceQuantity> optReqts; 00454 std::vector<ExecStreamResourceQuantity> expected; 00455 std::vector<ExecStreamResourceSettingType> optTypes; 00456 00457 ExecStreamResourceQuantity quantity; 00458 ExecStreamResourceSettingType optType; 00459 00460 // producer 1 - min=45, opt=45, optType=EXEC_RESOURCE_ACCURATE, expected=45 00461 quantity.nCachePages = 45; 00462 minReqts.push_back(quantity); 00463 optReqts.push_back(quantity); 00464 expected.push_back(quantity); 00465 optType = EXEC_RESOURCE_ACCURATE; 00466 optTypes.push_back(optType); 00467 00468 // producer 2 - min=45, opt=45, optType=EXEC_RESOURCE_ACCURATE, expected=45 00469 quantity.nCachePages = 45; 00470 minReqts.push_back(quantity); 00471 optReqts.push_back(quantity); 00472 expected.push_back(quantity); 00473 optType = EXEC_RESOURCE_ACCURATE; 00474 optTypes.push_back(optType); 00475 00476 testGovernor(nProducers, minReqts, optReqts, optTypes, expected); 00477 00478 resetExecStreamTest(); 00479 minReqts.clear(); 00480 optReqts.clear(); 00481 expected.clear(); 00482 optTypes.clear(); 00483 00484 // producer 1 - min=45, opt=45, optType=EXEC_RESOURCE_ACCURATE, expected=45 00485 quantity.nCachePages = 45; 00486 minReqts.push_back(quantity); 00487 optReqts.push_back(quantity); 00488 expected.push_back(quantity); 00489 optType = EXEC_RESOURCE_ACCURATE; 00490 optTypes.push_back(optType); 00491 00492 // producer 2 - min=50, opt=50, optType=EXEC_RESOURCE_ACCURATE, expected=50 00493 quantity.nCachePages = 50; 00494 minReqts.push_back(quantity); 00495 optReqts.push_back(quantity); 00496 expected.push_back(quantity); 00497 optType = EXEC_RESOURCE_ACCURATE; 00498 optTypes.push_back(optType); 00499 00500 testGovernor(nProducers, minReqts, optReqts, optTypes, expected); 00501 }
void ExecStreamGovernorTest::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 97 of file ExecStreamGovernorTest.cpp.
References EXEC_KNOB_EXPECTED_CONCURRENT_STATEMENTS, EXEC_RESOURCE_CACHE_PAGES, ExecStreamResourceKnobs::expectedConcurrentStatements, ExecStreamResourceQuantity::nCachePages, ExecStreamTestBase::pResourceGovernor, and ExecStreamUnitTestBase::testCaseSetUp().
00098 { 00099 ExecStreamUnitTestBase::testCaseSetUp(); 00100 00101 // lower the total cache availability so the perGraphAllocation is 95 00102 ExecStreamResourceQuantity quantity; 00103 quantity.nCachePages = 100; 00104 pResourceGovernor->setResourceAvailability( 00105 quantity, EXEC_RESOURCE_CACHE_PAGES); 00106 00107 ExecStreamResourceKnobs knob; 00108 knob.expectedConcurrentStatements = 1; 00109 pResourceGovernor->setResourceKnob( 00110 knob, EXEC_KNOB_EXPECTED_CONCURRENT_STATEMENTS); 00111 }
SharedExecStream ExecStreamUnitTestBase::prepareSourceGraph | ( | ExecStreamEmbryo & | sourceStreamEmbryo | ) | [protected, inherited] |
Defines and prepares a graph consisting of one source stream.
sourceStreamEmbryo | embryonic source stream which produces tuples |
Definition at line 41 of file ExecStreamUnitTestBase.cpp.
References ExecStreamUnitTestBase::prepareTransformGraph().
Referenced by FlatFileExecStreamTest::testStream().
00043 { 00044 std::vector<ExecStreamEmbryo> transforms; 00045 return prepareTransformGraph(sourceStreamEmbryo, transforms); 00046 }
SharedExecStream ExecStreamUnitTestBase::prepareTransformGraph | ( | ExecStreamEmbryo & | sourceStreamEmbryo, | |
ExecStreamEmbryo & | transformStreamEmbryo | |||
) | [protected, inherited] |
Defines and prepares a graph consisting of one source stream and one transform stream.
sourceStreamEmbryo | embryonic source stream which produces tuples | |
transformStreamEmbryo | embryonic transform stream which processes tuples produced by sourceStreamEmbryo |
Definition at line 48 of file ExecStreamUnitTestBase.cpp.
Referenced by LcsClusterReplaceExecStreamTest::loadCluster(), LcsRowScanExecStreamTest::loadOneCluster(), ExecStreamUnitTestBase::prepareSourceGraph(), LcsClusterReplaceExecStreamTest::replaceCluster(), LcsMultiClusterAppendTest::scanCols(), LbmSplicerExecStreamTest::spliceInput(), ExecStreamTestSuite::testBTreeInsertExecStream(), CollectExecStreamTestSuite::testCollectCollectUncollectUncollect(), CollectExecStreamTestSuite::testCollectInts(), CollectExecStreamTestSuite::testCollectUncollect(), CalcExecStreamTestSuite::testConstant(), ExecStreamTestSuite::testCopyExecStream(), ExecStreamTestSuite::testCountAggExecStream(), LhxAggExecStreamTest::testCountImpl(), ExecStreamTestSuite::testDoubleBufferExecStream(), ExecStreamTestSuite::testGroupAggExecStreamNrows(), LhxAggExecStreamTest::testGroupCountImpl(), ExternalSortExecStreamTest::testImpl(), LcsClusterAppendExecStreamTest::testLoadMultiCol(), LcsClusterAppendExecStreamTest::testLoadSingleCol(), LbmNormalizerExecStreamTest::testNormalizer(), ExecStreamTestSuite::testReshapeExecStream(), 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.
sourceStreamEmbryo | embryonic source stream which produces tuples | |
transforms | embryonic transform streams which process tuples produced by sourceStreamEmbryo or a child stream |
Definition at line 57 of file ExecStreamUnitTestBase.cpp.
References BUFPROV_PRODUCER, ExecStreamEmbryo::getStream(), ExecStreamUnitTestBase::pGraph, and ExecStreamUnitTestBase::pGraphEmbryo.
00060 { 00061 pGraphEmbryo->saveStreamEmbryo(sourceStreamEmbryo); 00062 std::vector<ExecStreamEmbryo>::iterator it; 00063 00064 // save all transforms 00065 for (it = transforms.begin(); it != transforms.end(); ++it) { 00066 pGraphEmbryo->saveStreamEmbryo(*it); 00067 } 00068 00069 // connect streams in a cascade 00070 ExecStreamEmbryo& previousStream = sourceStreamEmbryo; 00071 for (it = transforms.begin(); it != transforms.end(); ++it) { 00072 pGraphEmbryo->addDataflow( 00073 previousStream.getStream()->getName(), 00074 (*it).getStream()->getName()); 00075 previousStream = *it; 00076 } 00077 00078 SharedExecStream pAdaptedStream = 00079 pGraphEmbryo->addAdapterFor( 00080 previousStream.getStream()->getName(), 00081 0, 00082 BUFPROV_PRODUCER); 00083 pGraph->addOutputDataflow(pAdaptedStream->getStreamId()); 00084 00085 pGraphEmbryo->prepareGraph(shared_from_this(), ""); 00086 return pAdaptedStream; 00087 }
SharedExecStream ExecStreamUnitTestBase::prepareConfluenceGraph | ( | ExecStreamEmbryo & | sourceStreamEmbryo1, | |
ExecStreamEmbryo & | sourceStreamEmbryo2, | |||
ExecStreamEmbryo & | confluenceStreamEmbryo | |||
) | [protected, inherited] |
Defines and prepares a graph consisting of two source streams and one confluence stream.
sourceStreamEmbryo1 | embryonic source stream which produces tuples | |
sourceStreamEmbryo2 | embryonic source stream which produces tuples | |
confluenceStreamEmbryo | embryonic confluence stream which processes tuples produced by the sourceStreamEmbryos |
Definition at line 89 of file ExecStreamUnitTestBase.cpp.
Referenced by ExecStreamUnitTestBase::prepareConfluenceGraph(), ExecStreamTestSuite::testCartesianJoinExecStream(), CorrelationJoinExecStreamTestSuite::testCorrelationJoin(), LcsRowScanExecStreamTest::testFilterCols(), testGovernor(), LhxJoinExecStreamTest::testImpl(), LbmIntersectExecStreamTest::testIntersect(), ExecStreamTestSuite::testMergeExecStream(), LbmMinusExecStreamTest::testMinus(), and ExecStreamTestSuite::testNestedLoopJoinExecStream().
00093 { 00094 std::vector<ExecStreamEmbryo> sourceStreamEmbryos; 00095 sourceStreamEmbryos.push_back(sourceStreamEmbryo1); 00096 sourceStreamEmbryos.push_back(sourceStreamEmbryo2); 00097 return prepareConfluenceGraph(sourceStreamEmbryos, confluenceStreamEmbryo); 00098 }
SharedExecStream ExecStreamUnitTestBase::prepareConfluenceGraph | ( | std::vector< ExecStreamEmbryo > & | sourceStreamEmbryos, | |
ExecStreamEmbryo & | confluenceStreamEmbryo | |||
) | [protected, inherited] |
Defines and prepares a graph consisting of a list of source streams and one confluence stream.
sourceStreamEmbryos | list of embryonic source streams that produce tuples | |
confluenceStreamEmbryo | embryonic confluence stream which processes tuples produced by the sourceStreamEmbryos |
Definition at line 155 of file ExecStreamUnitTestBase.cpp.
References ExecStreamUnitTestBase::prepareConfluenceGraph().
00158 { 00159 std::vector<std::vector<ExecStreamEmbryo> > sourceStreamEmbryosList; 00160 std::vector<ExecStreamEmbryo>::iterator it; 00161 std::vector<ExecStreamEmbryo> sourceStreamList; 00162 for (it = sourceStreamEmbryos.begin(); it != sourceStreamEmbryos.end(); 00163 it++) 00164 { 00165 sourceStreamList.clear(); 00166 sourceStreamList.push_back(*it); 00167 sourceStreamEmbryosList.push_back(sourceStreamList); 00168 } 00169 00170 return 00171 prepareConfluenceGraph(sourceStreamEmbryosList, confluenceStreamEmbryo); 00172 }
SharedExecStream ExecStreamUnitTestBase::prepareConfluenceGraph | ( | std::vector< std::vector< ExecStreamEmbryo > > & | sourceStreamEmbryosList, | |
ExecStreamEmbryo & | confluenceStreamEmbryo | |||
) | [protected, inherited] |
Defines and prepares a graph consisting of one or more source streams and one confluence stream.
Each source stream can be a list of streams.
sourceStreamEmbryosList | list of embryonic source streams which produce tuples | |
confluenceStreamEmbryo | embryonic confluence stream which processes tuples produced by the source streams |
Definition at line 174 of file ExecStreamUnitTestBase.cpp.
References BUFPROV_PRODUCER, ExecStreamEmbryo::getStream(), ExecStreamUnitTestBase::pGraph, and ExecStreamUnitTestBase::pGraphEmbryo.
00177 { 00178 pGraphEmbryo->saveStreamEmbryo(confluenceStreamEmbryo); 00179 00180 for (int i = 0; i < sourceStreamEmbryosList.size(); i++) { 00181 for (int j = 0; j < sourceStreamEmbryosList[i].size(); j++) { 00182 pGraphEmbryo->saveStreamEmbryo(sourceStreamEmbryosList[i][j]); 00183 } 00184 00185 // connect streams in each sourceStreamEmbryos list in a cascade 00186 for (int j = 1; j < sourceStreamEmbryosList[i].size(); j++) { 00187 pGraphEmbryo->addDataflow( 00188 sourceStreamEmbryosList[i][j - 1].getStream()->getName(), 00189 sourceStreamEmbryosList[i][j].getStream()->getName()); 00190 } 00191 pGraphEmbryo->addDataflow( 00192 sourceStreamEmbryosList[i].back().getStream()->getName(), 00193 confluenceStreamEmbryo.getStream()->getName()); 00194 } 00195 00196 SharedExecStream pAdaptedStream = 00197 pGraphEmbryo->addAdapterFor( 00198 confluenceStreamEmbryo.getStream()->getName(), 0, 00199 BUFPROV_PRODUCER); 00200 pGraph->addOutputDataflow( 00201 pAdaptedStream->getStreamId()); 00202 00203 pGraphEmbryo->prepareGraph(shared_from_this(), ""); 00204 00205 return pAdaptedStream; 00206 }
SharedExecStream ExecStreamUnitTestBase::prepareConfluenceTransformGraph | ( | ExecStreamEmbryo & | sourceStreamEmbryo1, | |
ExecStreamEmbryo & | sourceStreamEmbryo2, | |||
ExecStreamEmbryo & | confluenceStreamEmbryo, | |||
ExecStreamEmbryo & | transformStreamEmbryo | |||
) | [protected, inherited] |
Defines and prepares a graph consisting of two source streams, one confluence stream, and one transform stream.
sourceStreamEmbryo1 | embryonic source stream which produces tuples | |
sourceStreamEmbryo2 | embryonic source stream which produces tuples | |
confluenceStreamEmbryo | embryonic confluence stream which processes tuples produced by the sourceStreamEmbryos | |
transformStreamEmbryo | embryonic transform streams which process tuples produced by a child stream |
Definition at line 100 of file ExecStreamUnitTestBase.cpp.
References BUFPROV_PRODUCER, ExecStreamEmbryo::getStream(), ExecStreamUnitTestBase::pGraph, and ExecStreamUnitTestBase::pGraphEmbryo.
Referenced by LhxJoinExecStreamTest::testImpl(), and LbmMinusExecStreamTest::testRestartingMinus().
00105 { 00106 std::vector<ExecStreamEmbryo> sourceStreamEmbryos; 00107 sourceStreamEmbryos.push_back(sourceStreamEmbryo1); 00108 sourceStreamEmbryos.push_back(sourceStreamEmbryo2); 00109 00110 std::vector<ExecStreamEmbryo>::iterator it; 00111 00112 for (it = sourceStreamEmbryos.begin(); it != sourceStreamEmbryos.end(); 00113 ++it) 00114 { 00115 pGraphEmbryo->saveStreamEmbryo(*it); 00116 } 00117 pGraphEmbryo->saveStreamEmbryo(confluenceStreamEmbryo); 00118 00119 for (it = sourceStreamEmbryos.begin(); it != sourceStreamEmbryos.end(); 00120 ++it) 00121 { 00122 pGraphEmbryo->addDataflow( 00123 (*it).getStream()->getName(), 00124 confluenceStreamEmbryo.getStream()->getName()); 00125 } 00126 00127 std::vector<ExecStreamEmbryo> transforms; 00128 transforms.push_back(transformStreamEmbryo); 00129 ExecStreamEmbryo& previousStream = confluenceStreamEmbryo; 00130 00131 // save all transforms 00132 for (it = transforms.begin(); it != transforms.end(); ++it) { 00133 pGraphEmbryo->saveStreamEmbryo(*it); 00134 } 00135 00136 for (it = transforms.begin(); it != transforms.end(); ++it) { 00137 pGraphEmbryo->addDataflow( 00138 previousStream.getStream()->getName(), 00139 (*it).getStream()->getName()); 00140 previousStream = *it; 00141 } 00142 00143 00144 SharedExecStream pAdaptedStream = 00145 pGraphEmbryo->addAdapterFor( 00146 previousStream.getStream()->getName(), 00147 0, 00148 BUFPROV_PRODUCER); 00149 pGraph->addOutputDataflow(pAdaptedStream->getStreamId()); 00150 00151 pGraphEmbryo->prepareGraph(shared_from_this(), ""); 00152 return pAdaptedStream; 00153 }
SharedExecStream ExecStreamUnitTestBase::prepareDAG | ( | ExecStreamEmbryo & | srcStreamEmbryo, | |
ExecStreamEmbryo & | splitterStreamEmbryo, | |||
std::vector< ExecStreamEmbryo > & | interStreamEmbryos, | |||
ExecStreamEmbryo & | destStreamEmbryo, | |||
bool | createSink = true , |
|||
bool | saveSrc = true | |||
) | [protected, inherited] |
Defines and prepares a graph consisting of a source, a splitter, and one or more parallel transform streams which flow together into a confluence stream.
srcStreamEmbryo | embryonic source stream which produces tuples | |
splitterStreamEmbryo | embryonic SplitterExecStream which produces tuples for multiple consumers | |
interStreamEmbryos | embryonic intermediate streams which transform tuples; each stream consists of a single embryo | |
destStreamEmbryo | embryonic confluence stream which processes tuples produced by the interStreamEmbryos | |
createSink | if true (the default), creates a final output sink in the stream graph | |
saveSrc | if true (the default), save the source in the stream graph; if false, the save has already been done |
Definition at line 208 of file ExecStreamUnitTestBase.cpp.
Referenced by LcsMultiClusterAppendTest::loadClusters(), LbmSearchTest::loadTableAndIndex(), LbmLoadBitmapTest::testLoad(), ExecStreamTestSuite::testMergeImplicitPullInputs(), ExecStreamTestSuite::testSegBufferReaderWriterExecStream(), and ExecStreamTestSuite::testSplitterPlusBarrier().
00215 { 00216 std::vector<std::vector<ExecStreamEmbryo> > listOfList; 00217 00218 // Convert interStreamEmbryos to a vector of vectors. E.g., if 00219 // interStreamEmbryos contains (1, 2, 3), it will get converted to: 00220 // ((1)) ((2)) ((3)) 00221 for (uint i = 0; i < interStreamEmbryos.size(); i++) { 00222 std::vector<ExecStreamEmbryo> interStreamEmbryoList; 00223 00224 interStreamEmbryoList.push_back(interStreamEmbryos[i]); 00225 listOfList.push_back(interStreamEmbryoList); 00226 } 00227 return prepareDAG( 00228 srcStreamEmbryo, splitterStreamEmbryo, listOfList, destStreamEmbryo, 00229 createSink, saveSrc); 00230 }
SharedExecStream ExecStreamUnitTestBase::prepareDAG | ( | ExecStreamEmbryo & | srcStreamEmbryo, | |
ExecStreamEmbryo & | splitterStreamEmbryo, | |||
std::vector< std::vector< ExecStreamEmbryo > > & | interStreamEmbryosList, | |||
ExecStreamEmbryo & | destStreamEmbryo, | |||
bool | createSink = true , |
|||
bool | saveSrc = true | |||
) | [protected, inherited] |
Defines and prepares a graph consisting of a source, a splitter, and one or more parallel transform streams which flow together into a confluence stream.
srcStreamEmbryo | embryonic source stream which produces tuples | |
splitterStreamEmbryo | embryonic SplitterExecStream which produces tuples for multiple consumers | |
interStreamEmbryosList | one or more embryonic intermediate streams which transform tuples; each stream can have one more embryos | |
destStreamEmbryo | embryonic confluence stream which processes tuples produced by the interStreamEmbryos | |
createSink | if true (the default), creates a final output sink in the stream graph | |
saveSrc | if true (the default), save the source in the stream graph; if false, the save has already been done |
Definition at line 232 of file ExecStreamUnitTestBase.cpp.
References BUFPROV_PRODUCER, ExecStreamEmbryo::getStream(), ExecStreamUnitTestBase::pGraph, and ExecStreamUnitTestBase::pGraphEmbryo.
00239 { 00240 if (saveSrc) { 00241 pGraphEmbryo->saveStreamEmbryo(srcStreamEmbryo); 00242 } 00243 pGraphEmbryo->saveStreamEmbryo(splitterStreamEmbryo); 00244 00245 // save all intermediate stream embryos 00246 for (int i = 0; i < interStreamEmbryos.size(); i++) { 00247 for (int j = 0; j < interStreamEmbryos[i].size(); j++) { 00248 pGraphEmbryo->saveStreamEmbryo(interStreamEmbryos[i][j]); 00249 } 00250 00251 // connect streams in each interStreamEmbryos list in a cascade 00252 for (int j = 1; j < interStreamEmbryos[i].size(); j++) { 00253 pGraphEmbryo->addDataflow( 00254 interStreamEmbryos[i][j - 1].getStream()->getName(), 00255 interStreamEmbryos[i][j].getStream()->getName()); 00256 } 00257 } 00258 00259 pGraphEmbryo->saveStreamEmbryo(destStreamEmbryo); 00260 00261 pGraphEmbryo->addDataflow( 00262 srcStreamEmbryo.getStream()->getName(), 00263 splitterStreamEmbryo.getStream()->getName()); 00264 00265 // connect all inter streams to src and dest 00266 for (int i = 0; i < interStreamEmbryos.size(); i++) { 00267 pGraphEmbryo->addDataflow( 00268 splitterStreamEmbryo.getStream()->getName(), 00269 interStreamEmbryos[i][0].getStream()->getName()); 00270 pGraphEmbryo->addDataflow( 00271 interStreamEmbryos[i].back().getStream()->getName(), 00272 destStreamEmbryo.getStream()->getName()); 00273 } 00274 00275 SharedExecStream pAdaptedStream; 00276 00277 if (createSink) { 00278 pAdaptedStream = pGraphEmbryo->addAdapterFor( 00279 destStreamEmbryo.getStream()->getName(), 0, 00280 BUFPROV_PRODUCER); 00281 pGraph->addOutputDataflow(pAdaptedStream->getStreamId()); 00282 00283 pGraphEmbryo->prepareGraph(shared_from_this(), ""); 00284 } 00285 00286 return pAdaptedStream; 00287 }
void ExecStreamUnitTestBase::verifyOutput | ( | ExecStream & | stream, | |
uint | nRowsExpected, | |||
MockProducerExecStreamGenerator & | verifier, | |||
bool | stopEarly = false | |||
) | [protected, inherited] |
Executes the prepared stream graph and verifies that its output matches that produced by a value generator.
stream | output stream from which to read | |
nRowsExpected | number of rows expected | |
verifier | generator for expected values | |
stopEarly | if true, stop once nRowsExpected have been fetched, even if more rows are available; this can be used for simulating the cleanup effect of an error in the middle of execution |
Definition at line 325 of file ExecStreamUnitTestBase.cpp.
References TupleData::compute(), EXECBUF_EOS, MockProducerExecStreamGenerator::generateValue(), ExecStreamUnitTestBase::pGraph, ExecStreamTestBase::pResourceGovernor, and ExecStreamTestBase::pScheduler.
Referenced by LcsClusterReplaceExecStreamTest::loadCluster(), LcsMultiClusterAppendTest::loadClusters(), LcsRowScanExecStreamTest::loadOneCluster(), LbmSearchTest::loadTableAndIndex(), LcsClusterReplaceExecStreamTest::replaceCluster(), LcsMultiClusterAppendTest::scanCols(), LbmSplicerExecStreamTest::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.
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(), testGovernor(), ExecStreamTestSuite::testMergeExecStream(), ExecStreamTestSuite::testSegBufferExecStream(), and ExecStreamTestSuite::testSegBufferReaderWriterExecStream().
00381 { 00382 // TODO: assertions about output tuple 00383 00384 pResourceGovernor->requestResources(*pGraph); 00385 pGraph->open(); 00386 pScheduler->start(); 00387 uint nRows = 0; 00388 for (;;) { 00389 ExecStreamBufAccessor &bufAccessor = 00390 pScheduler->readStream(stream); 00391 if (bufAccessor.getState() == EXECBUF_EOS) { 00392 break; 00393 } 00394 BOOST_REQUIRE(bufAccessor.isConsumptionPossible()); 00395 00396 if (!bufAccessor.demandData()) { 00397 break; 00398 } 00399 BOOST_REQUIRE(nRows < nRowsExpected); 00400 00401 TupleData actualTuple; 00402 actualTuple.compute(bufAccessor.getTupleDesc()); 00403 bufAccessor.unmarshalTuple(actualTuple); 00404 00405 int c = bufAccessor.getTupleDesc().compareTuples( 00406 expectedTuple, actualTuple); 00407 bufAccessor.consumeTuple(); 00408 ++nRows; 00409 if (c) { 00410 #if 1 00411 TupleDescriptor statusDesc = bufAccessor.getTupleDesc(); 00412 TuplePrinter tuplePrinter; 00413 tuplePrinter.print(std::cout, statusDesc, actualTuple); 00414 tuplePrinter.print(std::cout, statusDesc, expectedTuple); 00415 std::cout << std::endl; 00416 #endif 00417 BOOST_CHECK_EQUAL(0,c); 00418 break; 00419 } 00420 } 00421 BOOST_CHECK_EQUAL(nRowsExpected, nRows); 00422 }
void ExecStreamUnitTestBase::verifyBufferedOutput | ( | ExecStream & | stream, | |
TupleDescriptor | outputTupleDesc, | |||
uint | nRowsExpected, | |||
PBuffer | expectedBuffer | |||
) | [protected, inherited] |
Executes the prepared stream graph and verifies the resultant tuples against a set of tuples supplied in an input buffer.
stream | output stream from which to read | |
outputTupleDesc | descriptor of expected output tuple | |
nRowsExpected | number of rows expected | |
expectedBuffer | buffer containing expected tuples |
Definition at line 424 of file ExecStreamUnitTestBase.cpp.
References TupleDescriptor::compareTuples(), TupleData::compute(), TupleAccessor::compute(), EXECBUF_EOS, TupleAccessor::getCurrentByteCount(), ExecStreamUnitTestBase::pGraph, ExecStreamTestBase::pResourceGovernor, ExecStreamTestBase::pScheduler, TupleAccessor::setCurrentTupleBuf(), and TupleAccessor::unmarshal().
Referenced by LbmIntersectExecStreamTest::testIntersect(), LbmMinusExecStreamTest::testMinus(), LbmSearchTest::testScanIdx(), and LbmUnionExecStreamTest::testUnion().
00429 { 00430 // TODO: assertions about output tuple 00431 00432 TupleAccessor expectedOutputAccessor; 00433 expectedOutputAccessor.compute(outputTupleDesc); 00434 TupleData expectedTuple(outputTupleDesc); 00435 uint bufOffset = 0; 00436 pResourceGovernor->requestResources(*pGraph); 00437 pGraph->open(); 00438 pScheduler->start(); 00439 uint nRows = 0; 00440 for (;;) { 00441 ExecStreamBufAccessor &bufAccessor = 00442 pScheduler->readStream(stream); 00443 if (bufAccessor.getState() == EXECBUF_EOS) { 00444 break; 00445 } 00446 BOOST_REQUIRE(bufAccessor.getTupleDesc() == outputTupleDesc); 00447 BOOST_REQUIRE(bufAccessor.isConsumptionPossible()); 00448 const uint nCol = 00449 bufAccessor.getConsumptionTupleAccessor().size(); 00450 BOOST_REQUIRE(nCol == bufAccessor.getTupleDesc().size()); 00451 BOOST_REQUIRE(nCol >= 1); 00452 TupleData inputTuple; 00453 inputTuple.compute(bufAccessor.getTupleDesc()); 00454 for (;;) { 00455 if (!bufAccessor.demandData()) { 00456 break; 00457 } 00458 BOOST_REQUIRE(nRows < nRowsExpected); 00459 bufAccessor.unmarshalTuple(inputTuple); 00460 expectedOutputAccessor.setCurrentTupleBuf( 00461 expectedBuffer + bufOffset); 00462 expectedOutputAccessor.unmarshal(expectedTuple); 00463 int c = outputTupleDesc.compareTuples(inputTuple, expectedTuple); 00464 if (c) { 00465 std::cout << "(Row) = (" << nRows << ")" 00466 << " -- Tuples don't match"<< std::endl; 00467 BOOST_CHECK_EQUAL(0,c); 00468 return; 00469 } 00470 bufAccessor.consumeTuple(); 00471 bufOffset += expectedOutputAccessor.getCurrentByteCount(); 00472 ++nRows; 00473 } 00474 } 00475 BOOST_CHECK_EQUAL(nRowsExpected,nRows); 00476 }
void ExecStreamUnitTestBase::resetExecStreamTest | ( | ) | [protected, inherited] |
Reset stream graph so multiple iterations of a method can be called within a single testcase.
Definition at line 305 of file ExecStreamUnitTestBase.cpp.
References ExecStreamTestBase::newScheduler(), ExecStreamTestBase::newStreamGraph(), ExecStreamTestBase::newStreamGraphEmbryo(), ExecStreamUnitTestBase::pGraph, ExecStreamUnitTestBase::pGraphEmbryo, ExecStreamTestBase::pResourceGovernor, ExecStreamTestBase::pScheduler, and ExecStreamUnitTestBase::tearDownExecStreamTest().
Referenced by LcsRowScanExecStreamTest::loadClusters(), LbmLoadBitmapTest::testAppend(), LcsRowScanExecStreamTest::testBernoulliSampling(), LcsClusterReplaceExecStreamTest::testClusterReplace(), LcsRowScanExecStreamTest::testCompressedFiltering(), LbmSplicerExecStreamTest::testLER5968(), LbmSplicerExecStreamTest::testLER6473(), LcsMultiClusterAppendTest::testLoad(), LcsClusterAppendExecStreamTest::testMultiColConstNewRoot(), LcsClusterAppendExecStreamTest::testMultiColConstOldRoot(), LcsClusterAppendExecStreamTest::testMultiColNoDupNewRoot(), LcsClusterAppendExecStreamTest::testMultiColNoDupOldRoot(), LcsClusterAppendExecStreamTest::testMultiColStairNewRoot(), LcsClusterAppendExecStreamTest::testMultiColStairOldRoot(), LbmSearchTest::testMultipleRanges(), testReturnResources(), LbmSearchTest::testScanIdx(), LcsRowScanExecStreamTest::testScanPastEndOfCluster(), LcsRowScanExecStreamTest::testScans(), LcsClusterAppendExecStreamTest::testSingleColConstNewRoot(), LcsClusterAppendExecStreamTest::testSingleColConstOldRoot(), LcsClusterAppendExecStreamTest::testSingleColNoDupNewRoot(), LcsClusterAppendExecStreamTest::testSingleColNoDupOldRoot(), LcsClusterAppendExecStreamTest::testSingleColStairNewRoot(), LcsClusterAppendExecStreamTest::testSingleColStairOldRoot(), LbmSplicerExecStreamTest::testSpliceRids(), LbmSplicerExecStreamTest::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.
source | the facility from which the message originated | |
level | the trace event severity level | |
message | the text of the message |
Implements TraceTarget.
Definition at line 243 of file TestBase.cpp.
References TestBase::traceFile, TestBase::traceMutex, TestBase::traceStdout, and TestBase::traceStream.
Referenced by TestBase::afterTestCase(), and TestBase::beforeTestCase().
00244 { 00245 if (traceFile || traceStdout) { 00246 StrictMutexGuard traceMutexGuard(traceMutex); 00247 if (traceFile) { 00248 traceStream << "[" << source << "] " << message << std::endl; 00249 traceStream.flush(); 00250 } 00251 if (traceStdout) { 00252 std::cout << "[" << source << "] " << message << std::endl; 00253 std::cout.flush(); 00254 } 00255 } 00256 }
TraceLevel TestBase::getSourceTraceLevel | ( | std::string | source | ) | [virtual, inherited] |
Gets the level at which a particular source should be traced.
source | name of source to be traced |
Implements TraceTarget.
Definition at line 258 of file TestBase.cpp.
References TestBase::traceLevel.
Referenced by LbmExecStreamTestBase::generateBitmaps().
00259 { 00260 return traceLevel; 00261 }
SharedExecStreamGraph ExecStreamUnitTestBase::pGraph [protected, inherited] |
Definition at line 46 of file ExecStreamUnitTestBase.h.
Referenced by ExecStreamUnitTestBase::prepareConfluenceGraph(), ExecStreamUnitTestBase::prepareConfluenceTransformGraph(), ExecStreamUnitTestBase::prepareDAG(), ExecStreamUnitTestBase::prepareTransformGraph(), ExecStreamUnitTestBase::resetExecStreamTest(), LbmSplicerExecStreamTest::spliceInput(), ExecStreamUnitTestBase::tearDownExecStreamTest(), ExecStreamTestSuite::testBTreeInsertExecStream(), ExecStreamUnitTestBase::testCaseSetUp(), CorrelationJoinExecStreamTestSuite::testCorrelationJoin(), LhxJoinExecStreamTest::testImpl(), ExternalSortExecStreamTest::testImpl(), LbmLoadBitmapTest::testLoad(), ExecStreamTestSuite::testReshapeExecStream(), LbmSearchTest::testScanIdx(), ExecStreamUnitTestBase::verifyBufferedOutput(), ExecStreamUnitTestBase::verifyConstantOutput(), FlatFileExecStreamTest::verifyOutput(), and ExecStreamUnitTestBase::verifyOutput().
SharedExecStreamGraphEmbryo ExecStreamUnitTestBase::pGraphEmbryo [protected, inherited] |
Definition at line 47 of file ExecStreamUnitTestBase.h.
Referenced by ExecStreamUnitTestBase::prepareConfluenceGraph(), ExecStreamUnitTestBase::prepareConfluenceTransformGraph(), ExecStreamUnitTestBase::prepareDAG(), ExecStreamUnitTestBase::prepareTransformGraph(), ExecStreamUnitTestBase::resetExecStreamTest(), ExecStreamUnitTestBase::tearDownExecStreamTest(), and ExecStreamUnitTestBase::testCaseSetUp().
const uint ExecStreamTestBase::DefaultCacheReservePercent = 5 [static, protected, inherited] |
Definition at line 45 of file ExecStreamTestBase.h.
Referenced by ExecStreamTestBase::testCaseSetUp().
const uint ExecStreamTestBase::DefaultConcurrentStatements = 4 [static, protected, inherited] |
Definition at line 47 of file ExecStreamTestBase.h.
Referenced by ExecStreamTestBase::testCaseSetUp().
SharedExecStreamScheduler ExecStreamTestBase::pScheduler [protected, inherited] |
Definition at line 49 of file ExecStreamTestBase.h.
Referenced by ExecStreamTestBase::newStreamGraphEmbryo(), ExecStreamUnitTestBase::resetExecStreamTest(), ExecStreamTestBase::testCaseSetUp(), ExecStreamTestBase::testCaseTearDown(), LhxJoinExecStreamTest::testImpl(), ExternalSortExecStreamTest::testImpl(), ExecStreamUnitTestBase::verifyBufferedOutput(), ExecStreamUnitTestBase::verifyConstantOutput(), FlatFileExecStreamTest::verifyOutput(), and ExecStreamUnitTestBase::verifyOutput().
SharedExecStreamGovernor ExecStreamTestBase::pResourceGovernor [protected, inherited] |
Definition at line 51 of file ExecStreamTestBase.h.
Referenced by ExecStreamUnitTestBase::resetExecStreamTest(), ExternalSortExecStreamTest::testCaseSetUp(), ExecStreamUnitTestBase::testCaseSetUp(), ExecStreamTestBase::testCaseSetUp(), testCaseSetUp(), ExecStreamTestBase::testCaseTearDown(), 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(), LbmSplicerExecStreamTest::spliceInput(), ExecStreamTestSuite::testBTreeInsertExecStream(), LhxHashTableTest::testCaseSetUp(), LcsClusterReplaceExecStreamTest::testClusterReplace(), LhxAggExecStreamTest::testCountImpl(), ExecStreamTestSuite::testDoubleBufferExecStream(), testGovernor(), LhxAggExecStreamTest::testGroupCountImpl(), LhxJoinExecStreamTest::testImpl(), ExternalSortExecStreamTest::testImpl(), BTreeTest::testInserts(), LbmIntersectExecStreamTest::testIntersect(), LbmEntryTest::testldb35(), LbmEntryTest::testler5920(), LbmLoadBitmapTest::testLoad(), LcsClusterAppendExecStreamTest::testLoadMultiCol(), LcsClusterAppendExecStreamTest::testLoadSingleCol(), LbmEntryTest::testMergeEntry(), BTreeTest::testMultiKeySearches(), BTreeTest::testScan(), ExecStreamTestSuite::testScratchBufferExecStream(), LhxAggExecStreamTest::testSingleValueImpl(), FlatFileExecStreamTest::testStream(), LhxAggExecStreamTest::testSumImpl(), LogicalTxnTest::testTxn(), SnapshotSegmentTest::testUncommittedReads(), LbmUnionExecStreamTest::testUnion(), SegStreamTest::testWriteSpillAndRead(), and LbmEntryTest::testZeroBytes().
SharedSegment SegStorageTestBase::pLinearSegment [protected, inherited] |
Segment supporting linear page allocation.
Definition at line 45 of file SegStorageTestBase.h.
Referenced by SegStorageTestBase::closeLinearSegment(), LogicalTxnTest::createRecoveryLog(), SegmentTestBase::lockPage(), SegStorageTestBase::openRandomSegment(), VersionedSegmentTest::openSegmentStorage(), SnapshotSegmentTestBase::openSegmentStorage(), SegStorageTestBase::openSegmentStorage(), LinearViewSegmentTest::openSegmentStorage(), SegmentTestBase::openStorage(), SegmentTestBase::prefetchPage(), SnapshotSegmentTestBase::testAllocateAll(), LinearViewSegmentTest::testAllocateAll(), VersionedSegmentTest::testCheckpoint(), SegmentTestBase::testCheckpoint(), SegPageIterTest::testIter(), SegPageEntryIterTest::testIter(), SegStreamTest::testMarkReset(), SegStreamTest::testReadSeg(), VersionedSegmentTest::testRecovery(), LogicalTxnTest::testTxn(), SnapshotSegmentTest::testUncommittedReads(), SegStreamTest::testWriteSeg(), and VersionedSegmentTest::verifyPage().
SharedSegment SegStorageTestBase::pRandomSegment [protected, inherited] |
(Optional) segment supporting random page allocation.
Definition at line 50 of file SegStorageTestBase.h.
Referenced by SegStorageTestBase::closeRandomSegment(), SnapshotSegmentTestBase::closeStorage(), LbmSplicerExecStreamTest::createBTree(), LbmSplicerExecStreamTest::initBTreeParam(), LbmSearchTest::initBTreeParam(), LbmLoadBitmapTest::initBTreeParam(), LbmLoadBitmapTest::initBTreeTupleDesc(), LcsClusterReplaceExecStreamTest::initClusterAppendParams(), LbmExecStreamTestBase::initSorterExecStream(), LcsClusterReplaceExecStreamTest::loadCluster(), LcsMultiClusterAppendTest::loadClusters(), 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(), LbmSplicerExecStreamTest::createBTree(), SegStorageTestBase::createLinearDeviceSegment(), LogicalTxnTest::createRecoveryLog(), BackupRestoreTest::createSnapshotData(), BackupRestoreTest::executeSnapshotTxn(), CacheTestBase::getCache(), LbmSearchTest::initBTreeExecStreamParam(), LbmLoadBitmapTest::initBTreeExecStreamParam(), LbmSearchTest::initBTreeParam(), LbmLoadBitmapTest::initBTreeParam(), LcsClusterReplaceExecStreamTest::initClusterAppendParams(), LbmExecStreamTestBase::initSorterExecStream(), LcsClusterReplaceExecStreamTest::loadCluster(), LcsMultiClusterAppendTest::loadClusters(), LcsRowScanExecStreamTest::loadOneCluster(), LbmSearchTest::loadTableAndIndex(), SegmentTestBase::lockPage(), LbmMinusExecStreamTest::newMinusStream(), ExecStreamTestBase::newStreamGraphEmbryo(), CacheTestBase::openDevice(), CacheTestBase::openStorage(), LcsClusterReplaceExecStreamTest::replaceCluster(), BackupRestoreTest::restore(), LbmSplicerExecStreamTest::spliceInput(), SegmentTestBase::testAllocate(), RandomAllocationSegmentTest::testAllocateAndDeallocate(), BackupRestoreTest::testBackupCleanup(), ExecStreamTestSuite::testBTreeInsertExecStream(), BTreeTest::testBulkLoad(), LhxHashTableTest::testCaseSetUp(), ExecStreamUnitTestBase::testCaseSetUp(), BTreeTest::testCaseSetUp(), BTreeReadersTest::testCaseSetUp(), LhxAggExecStreamTest::testCountImpl(), SegmentTestBase::testDeallocate(), SnapshotSegmentTest::testDeallocateOld(), ExecStreamTestSuite::testDoubleBufferExecStream(), 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] |
StatsTimer TestBase::statsTimer [protected, inherited] |
Timer for stats collection.
Definition at line 91 of file TestBase.h.
Referenced by CacheTestBase::closeStorage(), CacheTestBase::openStorage(), BTreeTxnTest::testCaseSetUp(), BTreeTxnTest::testCaseTearDown(), and BTreeTxnTest::testTxns().
bool TestBase::traceStdout [protected, inherited] |
Copy trace output to stdout.
Definition at line 99 of file TestBase.h.
Referenced by TestBase::notifyTrace(), and TestBase::TestBase().
bool TestBase::traceFile [protected, inherited] |
Copy trace output to file.
Definition at line 104 of file TestBase.h.
Referenced by TestBase::notifyTrace(), and TestBase::TestBase().
bool TestBase::runAll [static, protected, inherited] |
Run all test cases, including the extra tests.
(static, since set by readParams())
Definition at line 110 of file TestBase.h.
Referenced by TestBase::readParams(), and TestBase::releaseTestSuite().
std::string TestBase::runSingle [static, protected, inherited] |
Run only the test case of this name.
(static, since set by readParams())
Definition at line 116 of file TestBase.h.
Referenced by TestBase::readParams(), and TestBase::releaseTestSuite().
TestCaseGroup TestBase::defaultTests [protected, inherited] |
TestCaseGroup TestBase::extraTests [protected, inherited] |
ParamName TestBase::paramTestSuiteName [static, inherited] |
ParamName TestBase::paramTraceFileName [static, inherited] |
ParamName TestBase::paramDictionaryFileName [static, inherited] |
Definition at line 145 of file TestBase.h.
Referenced by TestBase::readParams(), SegStreamTest::testRead(), and SegStreamTest::testWrite().
ParamName TestBase::paramTraceLevel [static, inherited] |
ParamName TestBase::paramStatsFileName [static, inherited] |
Definition at line 147 of file TestBase.h.
ParamName TestBase::paramTraceStdout [static, inherited] |
ParamName TestBase::paramDegreeOfParallelism [static, inherited] |
Definition at line 149 of file TestBase.h.
Referenced by ParallelExecStreamSchedulerTest::ParallelExecStreamSchedulerTest().
ConfigMap TestBase::configMap [static, inherited] |
Configuration parameters.
The reason this is static is so that no constructor parameters (which burden virtual bases) are needed.
Definition at line 155 of file TestBase.h.
Referenced by TestBase::afterTestCase(), TestBase::beforeTestCase(), BTreeTxnTest::BTreeTxnTest(), CacheTestBase::CacheTestBase(), BackupRestoreTest::createSnapshotData(), DatabaseTest::DatabaseTest(), TestOptionsTest::extra(), DatabaseTest::loadDatabase(), SparseBitmapTest::openStorage(), PagingTestBase::PagingTestBase(), ParallelExecStreamSchedulerTest::ParallelExecStreamSchedulerTest(), RandomAccessFileDeviceTest::RandomAccessFileDeviceTest(), TestBase::readParams(), SegStorageTestBase::SegStorageTestBase(), TestOptionsTest::test1(), TestOptionsTest::test2(), BackupRestoreTest::testBackupCleanup(), TestBase::TestBase(), BTreeTxnTest::testCaseSetUp(), BTreeTxnTest::testCheckpoint(), DatabaseTest::testCreateEmpty(), DatabaseTest::testForceTxns(), BackupRestoreTest::testHeaderBackupRestore(), SegPageEntryIterTest::testIter(), SegStreamTest::testRead(), BTreeTxnTest::testTxns(), SegStreamTest::testWrite(), ThreadedTestBase::ThreadedTestBase(), and TestBase::~TestBase().