Scheduler: draft scenario for Layer-2 integration test

Idea: re-use the scenario and instrumentation from
SchedulerActivity_test::scenario_RenderJob()
This commit is contained in:
Fischlurch 2023-10-18 18:10:10 +02:00
parent ee09a2eff2
commit c2ddaed28e
2 changed files with 130 additions and 17 deletions

View file

@ -91,12 +91,12 @@ namespace test {
virtual void
run (Arg)
{
demonstrateSimpleUsage();
verify_GroomingToken();
torture_GroomingToken();
verify_DispatchDecision();
verify_findWork();
verify_postDispatch();
// demonstrateSimpleUsage();
// verify_GroomingToken();
// torture_GroomingToken();
// verify_DispatchDecision();
// verify_findWork();
// verify_postDispatch();
integratedWorkCycle();
}
@ -412,13 +412,51 @@ namespace test {
/** @test TODO build the integrated sequence of worker activation
* - use the Render-Job scenario from SchedulerActivity_test::scenario_RenderJob()
* - use similar instrumentation to trace Activities
* @todo WIP 10/23 🔁 define ⟶ implement
*/
void
integratedWorkCycle()
{
UNIMPLEMENTED ("integratedWorkCycle");
// cout << detector.showLog()<<endl; // HINT: use this for investigation...
Time nominal{7,7};
Time start{0,1};
Time dead{0,10};
ActivityDetector detector;
Job testJob{detector.buildMockJob("testJob", nominal, 12345)};
BlockFlowAlloc bFlow;
ActivityLang activityLang{bFlow};
// Build the Activity-Term for a simple calculation job...
Activity& anchor = activityLang.buildCalculationJob (testJob, start,dead)
.post(); // retrieve the entrance point to the chain
// insert instrumentation to trace activation
detector.watchGate (anchor.next, "theGate");
SchedulerInvocation queue;
SchedulerCommutator sched;
Time now = detector.executionCtx.getSchedTime();
Time past {Time::ZERO};
// CHECK (activity::PASS == ActivityLang::dispatchChain (anchor, detector.executionCtx));
sched.postDispatch (&anchor, now, detector.executionCtx, queue);
//////////////////////////////////////////////////////////////////////TODO advance "now" time
Activity* act = sched.findWork(queue,now);
sched.postDispatch (act, now, detector.executionCtx, queue);
// CHECK (detector.verifyInvocation("theGate").arg("5.105 ⧐ Act(GATE")
// .beforeInvocation("after-theGate").arg("⧐ Act(WORKSTART")
// .beforeInvocation("CTX-work").arg("5.155","")
// .beforeInvocation("testJob") .arg("7.007",12345)
// .beforeInvocation("CTX-done").arg("5.355",""));
cout << detector.showLog()<<endl; // HINT: use this for investigation...
}
};

View file

@ -86187,15 +86187,23 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1697473097086" ID="ID_236233579" MODIFIED="1697493162215" TEXT="Aufgaben">
<icon BUILTIN="yes"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1697483439491" ID="ID_20743819" MODIFIED="1697483452170" TEXT="die Bestandteile des API abdecken">
<icon BUILTIN="flag-yellow"/>
<node CREATED="1697483458376" ID="ID_1335346824" MODIFIED="1697483469019" TEXT="das GroomingToken"/>
<node CREATED="1697483469919" ID="ID_1121885008" MODIFIED="1697571744407" TEXT="Logik f&#xfc;r Queue-Zugriff"/>
<node CREATED="1697571773963" ID="ID_1386234233" MODIFIED="1697571786371" TEXT="Ausf&#xfc;hren eine Activity-Kette"/>
<node CREATED="1697571745624" ID="ID_599597531" MODIFIED="1697571773200" TEXT="Entscheidung ob direkt ausgef&#xfc;hrt wird"/>
<node COLOR="#338800" CREATED="1697483439491" ID="ID_20743819" MODIFIED="1697643526449" TEXT="die Bestandteile des API abdecken">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1697483458376" ID="ID_1335346824" MODIFIED="1697643531581" TEXT="das GroomingToken">
<icon BUILTIN="button_ok"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1697473111557" ID="ID_750298563" MODIFIED="1697484608763" TEXT="Bestandteile des Work-Funktors direkt verbinden">
<icon BUILTIN="flag-yellow"/>
<node COLOR="#338800" CREATED="1697483469919" ID="ID_1121885008" MODIFIED="1697643531582" TEXT="Logik f&#xfc;r Queue-Zugriff">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1697571773963" ID="ID_1386234233" MODIFIED="1697643531582" TEXT="Ausf&#xfc;hren eine Activity-Kette">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1697571745624" ID="ID_599597531" MODIFIED="1697643531582" TEXT="Entscheidung ob direkt ausgef&#xfc;hrt wird">
<icon BUILTIN="button_ok"/>
</node>
</node>
<node BACKGROUND_COLOR="#eef0c5" COLOR="#990000" CREATED="1697473111557" ID="ID_750298563" MODIFIED="1697643535869" TEXT="Bestandteile des Work-Funktors direkt verbinden">
<icon BUILTIN="pencil"/>
<node CREATED="1697484212735" ID="ID_853921255" MODIFIED="1697484238920" TEXT="Ma&#xdf;gabe: korrekte Verschaltung der ExecCtx-&#x3bb;">
<icon BUILTIN="yes"/>
</node>
@ -86377,9 +86385,76 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1697560591659" ID="ID_1581648425" MODIFIED="1697560620823" TEXT="integratedWorkCycle">
<node BACKGROUND_COLOR="#eef0c5" COLOR="#990000" CREATED="1697560591659" ID="ID_1581648425" MODIFIED="1697645317998" TEXT="integratedWorkCycle">
<icon BUILTIN="pencil"/>
<node CREATED="1697643554969" ID="ID_136268123" MODIFIED="1697643896607" TEXT="Ma&#xdf;gabe">
<icon BUILTIN="yes"/>
<node CREATED="1697643566840" ID="ID_1881707348" MODIFIED="1697643573858" TEXT="Perspektive ist Layer-2"/>
<node CREATED="1697643574446" ID="ID_876825377" MODIFIED="1697643596396">
<richcontent TYPE="NODE"><html>
<head>
</head>
<body>
<p>
aber <i>das ganze Geschehen </i>einmal durchspielen
</p>
</body>
</html>
</richcontent>
</node>
<node CREATED="1697643597068" ID="ID_336540433" MODIFIED="1697643621773" TEXT="...vom Planen eines Jobs bis zur Ausf&#xfc;hrung"/>
</node>
<node CREATED="1697643626311" ID="ID_1649121610" MODIFIED="1697643898765" TEXT="Instrumentierung">
<icon BUILTIN="info"/>
<node CREATED="1697643634391" ID="ID_1274469319" MODIFIED="1697643648088" TEXT="BlockFlow-Allokator direkt verwenden"/>
<node CREATED="1697643658251" ID="ID_1960837678" MODIFIED="1697643676141" TEXT="das Thema &#xbb;Zeit&#xab; wird hier ausgeblendet">
<icon BUILTIN="yes"/>
</node>
<node CREATED="1697643680641" ID="ID_158566307" MODIFIED="1697643705314" TEXT="ActivityDetektor zur Verfolgung der Abl&#xe4;ufe"/>
<node CREATED="1697643707245" ID="ID_33409746" MODIFIED="1697643729333" TEXT="aber: bereits funktionale Vertrahtung wie im Scheduler">
<node CREATED="1697643768189" ID="ID_544635778" MODIFIED="1697643841143" TEXT="&#x3bb;-post &#x27f6; postDispatch()"/>
<node CREATED="1697643768189" ID="ID_1175399919" MODIFIED="1697643850309" TEXT="&#x3bb;-work &#x27f6; dropGroomingToken()"/>
</node>
<node CREATED="1697643873588" ID="ID_1914496998" MODIFIED="1697644383309">
<richcontent TYPE="NODE"><html>
<head>
</head>
<body>
<p>
Activity-Term pr&#228;parieren wie im <font face="Monospaced" color="#333333">SchedulerActivity_test::</font><font face="Monospaced" color="#020080"><b>scenario_RenderJob</b></font><font face="Monospaced" color="#333333">()</font>
</p>
</body>
</html>
</richcontent>
</node>
</node>
<node BACKGROUND_COLOR="#eef0c5" COLOR="#990000" CREATED="1697645187303" ID="ID_225836126" MODIFIED="1697645351457" TEXT="Verifikation">
<icon BUILTIN="pencil"/>
<node COLOR="#338800" CREATED="1697645198038" ID="ID_684515169" MODIFIED="1697645209458" TEXT="Szenario in Ursprungs-Form l&#xe4;uft durch wie erwartet">
<icon BUILTIN="button_ok"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1697645210335" ID="ID_1557850384" MODIFIED="1697645242464" TEXT="aktuelle Scheduler-Zeit manipulierbar machen">
<icon BUILTIN="flag-yellow"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1697645222818" ID="ID_1215667724" MODIFIED="1697645242464" TEXT="innere Verdrahtungen im ExecutionCtx einbauen">
<icon BUILTIN="flag-yellow"/>
</node>
<node BACKGROUND_COLOR="#fdfdcf" COLOR="#ff0000" CREATED="1697645245663" ID="ID_685915287" MODIFIED="1697645308480" TEXT="pr&#xfc;fen: geht erst mal in die Queue">
<icon BUILTIN="flag-pink"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1697645256903" ID="ID_230126414" MODIFIED="1697645263922" TEXT="Zeit auf sp&#xe4;ter weiterschalten">
<icon BUILTIN="flag-yellow"/>
</node>
<node BACKGROUND_COLOR="#fdfdcf" COLOR="#ff0000" CREATED="1697645265733" ID="ID_1757939624" MODIFIED="1697645308480" TEXT="pr&#xfc;fen: bekomme den gebauten Term wieder zur&#xfc;ck">
<icon BUILTIN="flag-pink"/>
</node>
<node BACKGROUND_COLOR="#fdfdcf" COLOR="#ff0000" CREATED="1697645289665" ID="ID_1827770478" MODIFIED="1697645308481" TEXT="pr&#xfc;fen: Ausf&#xfc;hrung l&#xe4;uft komplett durch">
<icon BUILTIN="flag-pink"/>
</node>
</node>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1688336835085" ID="ID_1753236898" MODIFIED="1688337246573" TEXT="SchedulerUsage_test">