Chain-Load: implement invocation through JobFunctor
- use a ''special encoding'' to marshal the specific coordinates for this test setup - use a fixed Frame-Grid to represent the ''time level'' - invoke hash calculation through a specialised JobFunctor subclass
This commit is contained in:
parent
7d5242f604
commit
2e6712e816
3 changed files with 89 additions and 12 deletions
|
|
@ -930,8 +930,7 @@ namespace test {
|
|||
/** @test TODO setup for running a chain-load as scheduled task
|
||||
* - running an isolated Node recalculation
|
||||
* - dispatch of this recalculation packaged as render job
|
||||
*
|
||||
* @todo WIP 12/23 🔁 define ⟶ implement
|
||||
* @todo WIP 12/23 🔁 define ⟶ 🔁 implement
|
||||
*/
|
||||
void
|
||||
verify_scheduling_setup()
|
||||
|
|
@ -975,10 +974,18 @@ namespace test {
|
|||
|
||||
CHECK (e.hash == 0);
|
||||
job0.triggerJob();
|
||||
// ◁───────────────────────────────────────────── Note: fail to invoke some predecessor....
|
||||
job2.triggerJob();
|
||||
job1.triggerJob();
|
||||
job3.triggerJob();
|
||||
CHECK (e.hash != 0x6A5924BA3389D7C);
|
||||
|
||||
e.hash = 0;
|
||||
job1.triggerJob(); // recalculate missing part of the graph...
|
||||
job3.triggerJob();
|
||||
CHECK (e.hash == 0x6A5924BA3389D7C);
|
||||
|
||||
job3.triggerJob(); // Hash calculations are *not* idempotent
|
||||
CHECK (e.hash != 0x6A5924BA3389D7C);
|
||||
}
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -117,6 +117,7 @@ namespace test {
|
|||
// using std::function;
|
||||
// using lib::time::TimeValue;
|
||||
using lib::time::Time;
|
||||
using lib::time::FrameRate;
|
||||
// using lib::time::FSecs;
|
||||
// using lib::time::Offset;
|
||||
// using lib::meta::RebindVariadic;
|
||||
|
|
@ -1014,8 +1015,18 @@ namespace test {
|
|||
{
|
||||
using Node = typename TestChainLoad<maxFan>::Node;
|
||||
|
||||
Node* startNode_;
|
||||
|
||||
static lib::time::Grid&
|
||||
testGrid() ///< Meyer's Singleton : a fixed 1fps quantiser
|
||||
{
|
||||
static lib::time::FixedFrameQuantiser gridOne{FrameRate::STEP};
|
||||
return gridOne;
|
||||
}
|
||||
|
||||
public:
|
||||
RandomChainCalcFunctor(Node& startNode)
|
||||
: startNode_{&startNode}
|
||||
{ }
|
||||
|
||||
|
||||
|
|
@ -1024,19 +1035,26 @@ namespace test {
|
|||
void
|
||||
invokeJobOperation (JobParameter param) override
|
||||
{
|
||||
UNIMPLEMENTED ("unpack parameters and dispatch into TestChainLoad-Node");
|
||||
size_t nodeIdx = decodeNodeID (param.invoKey);
|
||||
size_t level = decodeLevel (TimeValue{param.nominalTime});
|
||||
Node& target = startNode_[nodeIdx];
|
||||
ASSERT (target.level == level);
|
||||
// invoke the »media calculation«
|
||||
target.calculate();
|
||||
}
|
||||
|
||||
string diagnostic() const override
|
||||
{
|
||||
return "ChainCalc-TODoh";
|
||||
return _Fmt{"ChainCalc(w:%d)▶%s"}
|
||||
% maxFan
|
||||
% util::showAddr(startNode_);
|
||||
}
|
||||
|
||||
/** package the node-index to invoke.
|
||||
* @note per convention for this test, this info will be
|
||||
* packaged into the lower word of the InvocationInstanceID
|
||||
*/
|
||||
static auto
|
||||
static InvocationInstanceID
|
||||
encodeNodeID (size_t idx)
|
||||
{
|
||||
InvocationInstanceID invoKey;
|
||||
|
|
@ -1044,10 +1062,22 @@ namespace test {
|
|||
return invoKey;
|
||||
};
|
||||
|
||||
static size_t
|
||||
decodeNodeID (InvocationInstanceID invoKey)
|
||||
{
|
||||
return size_t(invoKey.code.w1);
|
||||
};
|
||||
|
||||
static Time
|
||||
encodeLevel (size_t level)
|
||||
{
|
||||
UNIMPLEMENTED ("setup a FixedFrameQuantiser with 1FPS");
|
||||
return Time{testGrid().timeOf (FrameCnt(level))};
|
||||
}
|
||||
|
||||
static size_t
|
||||
decodeLevel (TimeValue nominalTime)
|
||||
{
|
||||
return testGrid().gridPoint (nominalTime);
|
||||
}
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -96465,6 +96465,18 @@ Date:   Thu Apr 20 18:53:17 2023 +0200<br/>
|
|||
<icon BUILTIN="button_ok"/>
|
||||
</node>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#eef0c5" COLOR="#990000" CREATED="1701661921354" ID="ID_1422491771" MODIFIED="1701662010544" TEXT="verify_scheduling_setup">
|
||||
<icon BUILTIN="pencil"/>
|
||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1701661961030" ID="ID_1398320014" MODIFIED="1701661985334" TEXT="Zweck: die Bauelemente verifzieren (nicht das Scheduling)">
|
||||
<icon BUILTIN="yes"/>
|
||||
</node>
|
||||
<node COLOR="#338800" CREATED="1701661987502" ID="ID_1253231042" MODIFIED="1701662008665" TEXT="einige Nodes direkt definieren und aufrufen; hash prüfen">
|
||||
<icon BUILTIN="button_ok"/>
|
||||
</node>
|
||||
<node COLOR="#338800" CREATED="1701661924827" ID="ID_483928960" MODIFIED="1701662007131" TEXT="Aufruf der gleichen Nodes durch den RandomChainCalcFunctor">
|
||||
<icon BUILTIN="button_ok"/>
|
||||
</node>
|
||||
</node>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#ccb59b" COLOR="#6e2a38" CREATED="1701017861080" ID="ID_797249846" MODIFIED="1701017874112" TEXT="nur begrenzte Verifikation">
|
||||
<font ITALIC="true" NAME="SansSerif" SIZE="14"/>
|
||||
|
|
@ -100440,7 +100452,9 @@ Date:   Thu Apr 20 18:53:17 2023 +0200<br/>
|
|||
<node CREATED="1701491105567" ID="ID_2955492" MODIFIED="1701491137114" TEXT="man übergibt direkt einen Pointer darauf"/>
|
||||
<node CREATED="1701491172165" ID="ID_1453790989" MODIFIED="1701491203414" TEXT="die Level-Nummer wird direkt in die nominelle Zeit codiert">
|
||||
<node CREATED="1701491207249" ID="ID_227520102" MODIFIED="1701491214620" TEXT="wie ist im Grunde egal">
|
||||
<node CREATED="1701644765955" ID="ID_207437696" MODIFIED="1701644774457" TEXT="verwende eine FixedFrameQuantiser"/>
|
||||
<node CREATED="1701644765955" ID="ID_207437696" MODIFIED="1701661834624" TEXT="verwende eine FixedFrameQuantiser">
|
||||
<arrowlink COLOR="#74bda6" DESTINATION="ID_561235182" ENDARROW="Default" ENDINCLINATION="1286;0;" ID="Arrow_ID_794806390" STARTARROW="None" STARTINCLINATION="403;33;"/>
|
||||
</node>
|
||||
<node CREATED="1701644775597" ID="ID_1517631819" MODIFIED="1701644789319" TEXT="mit einer Frame-Rate ≔ 1"/>
|
||||
<node CREATED="1701644790211" ID="ID_859085781" MODIFIED="1701644813586" TEXT="komplett per Helper-Funktionen verbergen"/>
|
||||
</node>
|
||||
|
|
@ -100597,7 +100611,8 @@ Date:   Thu Apr 20 18:53:17 2023 +0200<br/>
|
|||
<node CREATED="1701630922141" ID="ID_887329209" MODIFIED="1701630929224" TEXT="explizitie Vorbereitung möglich"/>
|
||||
<node CREATED="1701634155541" ID="ID_237095519" MODIFIED="1701634175327" TEXT="dafür möglichst generisch und klar"/>
|
||||
</node>
|
||||
<node CREATED="1701653204166" ID="ID_1263178085" MODIFIED="1701653207746" TEXT="Typen einrichten">
|
||||
<node BACKGROUND_COLOR="#eef0c5" COLOR="#990000" CREATED="1701653204166" ID="ID_1263178085" MODIFIED="1701661760657" TEXT="Typen einrichten">
|
||||
<icon BUILTIN="pencil"/>
|
||||
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1701653208718" FOLDED="true" ID="ID_1927337889" MODIFIED="1701659244968" TEXT="Problem: TestChainLoad hat zu viele Template-Parameter">
|
||||
<icon BUILTIN="messagebox_warning"/>
|
||||
<node CREATED="1701653222644" ID="ID_1426060278" MODIFIED="1701653291333">
|
||||
|
|
@ -100808,12 +100823,37 @@ Date:   Thu Apr 20 18:53:17 2023 +0200<br/>
|
|||
</node>
|
||||
</node>
|
||||
</node>
|
||||
<node COLOR="#338800" CREATED="1701661755565" ID="ID_91855144" MODIFIED="1701661758314" TEXT="RandomChainCalcFunctor">
|
||||
<icon BUILTIN="button_ok"/>
|
||||
</node>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1701493082582" ID="ID_1894179968" MODIFIED="1701493117170" TEXT="Dispatcher-Job implementieren">
|
||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1701662028749" ID="ID_1982023018" MODIFIED="1701662069143" TEXT="RandomChainPlanFunctor">
|
||||
<arrowlink COLOR="#546bbc" DESTINATION="ID_114421309" ENDARROW="Default" ENDINCLINATION="-34;-130;" ID="Arrow_ID_234763232" STARTARROW="None" STARTINCLINATION="-98;10;"/>
|
||||
<icon BUILTIN="flag-yellow"/>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1701493075903" ID="ID_114421309" MODIFIED="1701493117170" TEXT="Meta-Job implementieren">
|
||||
</node>
|
||||
</node>
|
||||
<node COLOR="#338800" CREATED="1701493082582" ID="ID_1894179968" MODIFIED="1701661794782" TEXT="Dispatcher-Job implementieren">
|
||||
<icon BUILTIN="button_ok"/>
|
||||
<node COLOR="#338800" CREATED="1701661796628" ID="ID_561235182" MODIFIED="1701661828350" TEXT="verwendet einen FixedFrameQuantiser (Meyer's Singleton)">
|
||||
<linktarget COLOR="#74bda6" DESTINATION="ID_561235182" ENDARROW="Default" ENDINCLINATION="1286;0;" ID="Arrow_ID_794806390" SOURCE="ID_207437696" STARTARROW="None" STARTINCLINATION="403;33;"/>
|
||||
<icon BUILTIN="button_ok"/>
|
||||
</node>
|
||||
<node COLOR="#338800" CREATED="1701661843606" ID="ID_1165776090" MODIFIED="1701661867438" TEXT="encode/decode der Parameter">
|
||||
<icon BUILTIN="button_ok"/>
|
||||
</node>
|
||||
<node COLOR="#338800" CREATED="1701661851117" ID="ID_1957261792" MODIFIED="1701661868488" TEXT="Node per brachialer Pointer-Arrithmetik finden">
|
||||
<icon BUILTIN="button_ok"/>
|
||||
</node>
|
||||
<node COLOR="#338800" CREATED="1701661869122" ID="ID_1870540819" MODIFIED="1701661888529" TEXT="Verifikation: Level-Nummer muß matchen">
|
||||
<icon BUILTIN="button_ok"/>
|
||||
<icon BUILTIN="messagebox_warning"/>
|
||||
</node>
|
||||
<node COLOR="#338800" CREATED="1701661893229" ID="ID_1152296001" LINK="#ID_483928960" MODIFIED="1701661942707" TEXT="Aufruf funktioniert im Test">
|
||||
<icon BUILTIN="button_ok"/>
|
||||
</node>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1701493075903" ID="ID_114421309" MODIFIED="1701662062918" TEXT="Meta-Job implementieren">
|
||||
<linktarget COLOR="#546bbc" DESTINATION="ID_114421309" ENDARROW="Default" ENDINCLINATION="-34;-130;" ID="Arrow_ID_234763232" SOURCE="ID_1982023018" STARTARROW="None" STARTINCLINATION="-98;10;"/>
|
||||
<icon BUILTIN="flag-yellow"/>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1701493107387" ID="ID_1826192324" MODIFIED="1701493117170" TEXT="Aufruf-front-End">
|
||||
|
|
|
|||
Loading…
Reference in a new issue