Lumiera 0.pre.04
»edit your freedom«
Loading...
Searching...
No Matches
JobPlanningPipeline_test Class Reference

Description

Test:
demonstrate interface, structure and setup of the job-planning pipeline.
  • using a frame step as base tick
  • invoke the dispatcher to retrieve the top-level JobTicket
  • expander function to explore prerequisite JobTickets
  • integration: generate a complete sequence of (dummy)Jobs
  • scaffolding and mocking used for this test
Remarks
the »pipeline« is implemented as »Lumiera Forward Iterator« and thus forms a chain of on-demand processing. At the output side, fully defined render Jobs can be retrieved, ready for scheduling.
See also
DispatcherInterface_test
MockSupport_test
Dispatcher
CalcStream
RenderDriveS

Definition at line 80 of file job-planning-pipeline-test.cpp.

Private Member Functions

virtual void run (Arg)
 
void demonstrateScaffolding ()
 
void buildBaseTickGenerator ()
 
void accessTopLevelJobTicket ()
 
void exploreJobTickets ()
 
void integration ()
 

Additional Inherited Members

- Static Public Member Functions inherited from Test
static string firstTok (Arg)
 conveniently pick the first token from the argument line
 
static uint firstVal (Arg, uint=1)
 conveniently use some number given as argument, with optional default
 
- Public Member Functions inherited from Test
virtual ~Test ()=default
 this is an interface
 
virtual void run (Arg arg)=0
 
void seedRand ()
 draw a new random seed from a common nucleus, and re-seed the default-Gen.
 
lib::Random makeRandGen ()
 build a dedicated new RandomGen, seeded from the default-Gen
 

Member Function Documentation

◆ run()

virtual void run ( Arg  )
inlineprivatevirtual

Definition at line 84 of file job-planning-pipeline-test.cpp.

References JobPlanningPipeline_test::accessTopLevelJobTicket(), JobPlanningPipeline_test::buildBaseTickGenerator(), JobPlanningPipeline_test::demonstrateScaffolding(), JobPlanningPipeline_test::exploreJobTickets(), JobPlanningPipeline_test::integration(), and Test::seedRand().

+ Here is the call graph for this function:

◆ demonstrateScaffolding()

void demonstrateScaffolding ( )
inlineprivate
Test:
document and verify the mock setup used for this test

Definition at line 97 of file job-planning-pipeline-test.cpp.

References Record< VAL >::Mutator::attrib(), Dispatcher::createJobFor(), JobTicket::createJobFor(), MockDispatcher::getDummyConnection(), JobTicket::getPrerequisites(), MockJob::invocationAdditionalKey(), MockJob::invocationNominalTime(), MockJob::invocationTime(), MockJobTicket::isAssociated(), Segment::jobTicket(), Job::triggerJob(), MockDispatcher::verify(), MockJob::was_invoked(), and RealClock::wasRecently().

Referenced by JobPlanningPipeline_test::run().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ buildBaseTickGenerator()

void buildBaseTickGenerator ( )
inlineprivate
Test:
use the Dispatcher interface (mocked) to generate a frame »beat«
  • demonstrate explicitly the mapping of a (frame) number sequence onto a sequence of time points with the help of time quantisation
  • use the Dispatcher API to produce the same frame time sequence
Remarks
this is the foundation to generate top-level frame render jobs

Definition at line 152 of file job-planning-pipeline-test.cpp.

References Dispatcher::forCalcStream(), and FrameRate::PAL.

Referenced by JobPlanningPipeline_test::run().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ accessTopLevelJobTicket()

void accessTopLevelJobTicket ( )
inlineprivate
Test:
use the base tick to access the corresponding JobTicket through the Dispatcher interface (mocked here).

Definition at line 181 of file job-planning-pipeline-test.cpp.

References JobTicket::createJobFor(), Dispatcher::forCalcStream(), MockDispatcher::getDummyConnection(), FrameRate::PAL, MockDispatcher::verify(), and Time::ZERO.

Referenced by JobPlanningPipeline_test::run().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ exploreJobTickets()

void exploreJobTickets ( )
inlineprivate
Test:
build and verify the exploration function to discover job prerequisites
  • use a setup where the master ExitNode requires a prerequisite ExitNode to be pulled
  • mark the pipeline-IDs, so that both nodes can be distinguished in the resulting Jobs
  • the expandPrerequisites() builder function uses JobTicket::getPrerequisites()
  • and this »expander« function is unfolded recursively such that first the source appears in the iterator, and as next step the child prerequisites, possibly to be unfolded further recursively
  • by design of the iterator pipeline, it is always possible to access the PipeFrameTick
  • this corresponds to the top-level JobTicket, which will produce the final frame
  • putting all these information together, proper working can be visualised.

Definition at line 212 of file job-planning-pipeline-test.cpp.

References Record< VAL >::Mutator::attrib(), Record< VAL >::Mutator::genNode(), FrameRate::PAL, Record< VAL >::Mutator::scope(), and Time::ZERO.

Referenced by JobPlanningPipeline_test::run().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ integration()

void integration ( )
inlineprivate
Test:
Job-planning pipeline integration test
  • use the MockDispatcher to define a fake model setup
  • define three levels of prerequisites
  • also define a second segment with different structure
  • build a complete Job-Planning pipeline
  • define a visualisation to expose generated job parameters
  • iterate the Job-Planning pipeline and apply the visualisation

Definition at line 259 of file job-planning-pipeline-test.cpp.

References Record< VAL >::Mutator::attrib(), and FrameRate::PAL.

Referenced by JobPlanningPipeline_test::run().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:
+ Inheritance diagram for JobPlanningPipeline_test:
+ Collaboration diagram for JobPlanningPipeline_test:

The documentation for this class was generated from the following file: