Activity-Lang: notification to Gate now working

...also diagnostics helper now able to trace notifications
...and additionally the Gate now triggers as planned
This commit is contained in:
Fischlurch 2023-08-21 18:23:57 +02:00
parent 108a5e7ca5
commit 4e6ee0ec9c
3 changed files with 56 additions and 28 deletions

View file

@ -182,6 +182,7 @@ namespace test {
.beforeInvocation ("mockJob").timeArg(nominal + Time{FSecs{5}}) // matching first invocation and then second...
.afterSeqIncrement(1) // note: searching backwards from the 2nd invocation
);
// cout << detector.showLog()<<endl; // HINT: use this for investigation...
}
@ -325,13 +326,36 @@ namespace test {
/** @test TODO diagnostic setup to detect Activity activation and propagation
* @todo WIP 8/23 🔁 define implement
/** @test diagnostic setup to detect passing a notification
* - setup a chain-Activity (here: a `TICK`) protected by a `GATE`
* - configure the `GATE` to require one notification
* - connect a `NOTIFY`-Activity to trigger the `GATE`
* - inject a diagnostics Tap into the notification-connection
* - dispatch of the notification can be verified
* - notification has been passed through the Tap to the `GATE`
* - `GATE` has been decremented to zero and triggers chain
* - finally the chained `TICK`-Activity calls into the `executionCtx`
* @todo WIP 8/23 define 🔁 implement
*/
void
watch_notification()
{
ActivityDetector detector;
Activity chain;
Activity gate{1};
gate.next = &chain;
Activity notification{&gate};
CHECK (gate.data_.condition.rest == 1);
detector.insertActivationTap (notification.data_.notification.target);
Time tt{11,11};
notification.dispatch (tt, detector.executionCtx);
CHECK (detector.verifyInvocation("tap-GATE").arg("11.011 --notify-↯> Act(GATE")
.beforeInvocation("CTX-post").arg("11.011", "Act(TICK", "≺test::CTX≻"));
CHECK (gate.data_.condition.rest == 0);
}

View file

@ -397,7 +397,7 @@ namespace test {
Activity& target = *reinterpret_cast<Activity*> (data_.callback.arg);
auto ctx = *static_cast<FakeExecutionCtx*> (executionCtx);
log_(util::toString(now) + " --notify-↯> " + util::toString (target));
return target.activate (now, ctx);/////////////////////////////////////////////////////OOO
return target.notify (now, ctx);
}
}

View file

@ -78525,9 +78525,9 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#eef0c5" COLOR="#990000" CREATED="1690068914674" ID="ID_229335349" MODIFIED="1690754699265" TEXT="switch-on-type-selector">
<node COLOR="#338800" CREATED="1690068914674" ID="ID_229335349" MODIFIED="1692634842339" TEXT="switch-on-type-selector">
<linktarget COLOR="#e3fddf" DESTINATION="ID_229335349" ENDARROW="Default" ENDINCLINATION="46;-190;" ID="Arrow_ID_382638651" SOURCE="ID_1532008023" STARTARROW="None" STARTINCLINATION="-301;39;"/>
<icon BUILTIN="pencil"/>
<icon BUILTIN="button_ok"/>
<node CREATED="1688998699273" ID="ID_276240629" MODIFIED="1688998702452" TEXT="POST">
<node CREATED="1690069222750" ID="ID_817512371" MODIFIED="1690495286268" TEXT="&#x3bb;-post">
<linktarget COLOR="#a9b4c1" DESTINATION="ID_817512371" ENDARROW="Default" ENDINCLINATION="-55;19;" ID="Arrow_ID_1228234954" SOURCE="ID_1000629107" STARTARROW="None" STARTINCLINATION="-170;11;"/>
@ -78638,9 +78638,9 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1690068951061" ID="ID_1729670913" MODIFIED="1692569150684" TEXT="Dispatch">
<node COLOR="#338800" CREATED="1690068951061" ID="ID_1729670913" MODIFIED="1692634844170" TEXT="Dispatch">
<linktarget COLOR="#46429b" DESTINATION="ID_1729670913" ENDARROW="Default" ENDINCLINATION="100;-277;" ID="Arrow_ID_1325928186" SOURCE="ID_1960608539" STARTARROW="None" STARTINCLINATION="-484;32;"/>
<icon BUILTIN="flag-yellow"/>
<icon BUILTIN="button_ok"/>
<node CREATED="1692567620559" ID="ID_560161359" MODIFIED="1692567640105" TEXT="Notification indirekt &#xfc;ber den Scheduler">
<icon BUILTIN="info"/>
<node CREATED="1692567646787" ID="ID_1679080727" MODIFIED="1692567660965" TEXT="je nach Grooming-Token direkt(synchron) oder asynchron"/>
@ -78680,15 +78680,16 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
<node CREATED="1690069612171" ID="ID_546472363" MODIFIED="1692569272220" TEXT="sonst: Activation"/>
</node>
</node>
<node CREATED="1692627465184" ID="ID_1777234139" MODIFIED="1692627474498" TEXT="Ausf&#xfc;hrungs-Sequenz">
<node COLOR="#338800" CREATED="1692627465184" ID="ID_1777234139" MODIFIED="1692634855358" TEXT="Ausf&#xfc;hrungs-Sequenz">
<icon BUILTIN="button_ok"/>
<node CREATED="1692627475398" ID="ID_635246138" MODIFIED="1692627523707" TEXT="normalerweise Weitergabe an die next-Activity "/>
<node CREATED="1692627524719" ID="ID_1757918789" MODIFIED="1692627590963" TEXT="bei Spr&#xfc;ngen und Verzweigungen wird daf&#xfc;r POST verwendet">
<linktarget COLOR="#9a7574" DESTINATION="ID_1757918789" ENDARROW="Default" ENDINCLINATION="197;-7;" ID="Arrow_ID_1929671741" SOURCE="ID_750903644" STARTARROW="None" STARTINCLINATION="116;9;"/>
</node>
</node>
<node BACKGROUND_COLOR="#eef0c5" COLOR="#990000" CREATED="1690069961163" HGAP="-57" ID="ID_1647246120" MODIFIED="1692491427946" TEXT="brauche Diagnose-Hilfsmittel" VSHIFT="4">
<node COLOR="#338800" CREATED="1690069961163" HGAP="-57" ID="ID_1647246120" MODIFIED="1692634828819" TEXT="brauche Diagnose-Hilfsmittel" VSHIFT="4">
<arrowlink COLOR="#794f4b" DESTINATION="ID_284088835" ENDARROW="Default" ENDINCLINATION="-685;-107;" ID="Arrow_ID_1213725911" STARTARROW="None" STARTINCLINATION="518;48;"/>
<icon BUILTIN="pencil"/>
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1690070237908" HGAP="43" ID="ID_875825086" MODIFIED="1692491405654" TEXT="Test-Setup mit &#x3bb;-Stubs" VSHIFT="-3">
<arrowlink COLOR="#7ba8d3" DESTINATION="ID_596906210" ENDARROW="Default" ENDINCLINATION="76;284;" ID="Arrow_ID_1248869383" STARTARROW="None" STARTINCLINATION="990;-88;"/>
<icon BUILTIN="button_ok"/>
@ -79505,7 +79506,7 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
<linktarget COLOR="#433d62" DESTINATION="ID_902152915" ENDARROW="Default" ENDINCLINATION="656;-38;" ID="Arrow_ID_644734597" SOURCE="ID_596906210" STARTARROW="None" STARTINCLINATION="1154;77;"/>
</node>
</node>
<node BACKGROUND_COLOR="#fdfdcf" COLOR="#ff0000" CREATED="1689202062345" ID="ID_373470992" MODIFIED="1692057818268" TEXT="implementiert als eigenst&#xe4;ndiges Test-Hilfsmittel">
<node COLOR="#435e98" CREATED="1689202062345" ID="ID_373470992" MODIFIED="1692634808312" TEXT="implementiert als eigenst&#xe4;ndiges Test-Hilfsmittel">
<richcontent TYPE="NOTE"><html>
<head/>
<body>
@ -81725,8 +81726,8 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
<linktarget COLOR="#794f4b" DESTINATION="ID_284088835" ENDARROW="Default" ENDINCLINATION="-685;-107;" ID="Arrow_ID_1213725911" SOURCE="ID_1647246120" STARTARROW="None" STARTINCLINATION="518;48;"/>
<linktarget COLOR="#5f8998" DESTINATION="ID_284088835" ENDARROW="Default" ENDINCLINATION="347;-1232;" ID="Arrow_ID_1573724609" SOURCE="ID_373470992" STARTARROW="None" STARTINCLINATION="634;35;"/>
<icon BUILTIN="pencil"/>
<node BACKGROUND_COLOR="#eef0c5" COLOR="#990000" CREATED="1689204985122" ID="ID_1020676746" MODIFIED="1690832427037" TEXT="Rahmen schaffen">
<icon BUILTIN="pencil"/>
<node COLOR="#338800" CREATED="1689204985122" ID="ID_1020676746" MODIFIED="1692634792327" TEXT="Rahmen schaffen">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1689205014901" ID="ID_221497246" MODIFIED="1690832378644" TEXT="Instantiierung und Lebenszyklus">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1690817530037" ID="ID_497096743" MODIFIED="1690832373134" TEXT="kopierbares Objekt auf dem Stack">
@ -81792,8 +81793,8 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1690891585410" ID="ID_1976653650" MODIFIED="1690891593537" TEXT="Action-Hook">
<icon BUILTIN="flag-yellow"/>
<node COLOR="#338800" CREATED="1690891585410" ID="ID_1976653650" MODIFIED="1692634770438" TEXT="Action-Hook">
<icon BUILTIN="button_ok"/>
<node COLOR="#435e98" CREATED="1690891602401" ID="ID_1359624247" MODIFIED="1690899606451" TEXT="als Primitive einf&#xfc;hren">
<richcontent TYPE="NOTE"><html>
<head/>
@ -81818,12 +81819,12 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
</html></richcontent>
<icon BUILTIN="messagebox_warning"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1692489058101" ID="ID_1423312805" MODIFIED="1692489067676" TEXT="auch f&#xfc;r Notifications geeignet ber&#xfc;cksichtigen">
<icon BUILTIN="flag-yellow"/>
<node COLOR="#338800" CREATED="1692489058101" ID="ID_1423312805" MODIFIED="1692634771598" TEXT="auch f&#xfc;r Notifications geeignet ber&#xfc;cksichtigen">
<icon BUILTIN="button_ok"/>
</node>
</node>
<node BACKGROUND_COLOR="#eef0c5" COLOR="#990000" CREATED="1689205029658" ID="ID_1144318045" MODIFIED="1690918967997" TEXT="Verifikationen">
<icon BUILTIN="pencil"/>
<node COLOR="#338800" CREATED="1689205029658" ID="ID_1144318045" MODIFIED="1692634790926" TEXT="Verifikationen">
<icon BUILTIN="button_ok"/>
<node COLOR="#435e98" CREATED="1690899802680" ID="ID_383665548" MODIFIED="1692053471680" TEXT="Problem: zweifelsfreie Verifikation im Log">
<icon BUILTIN="messagebox_warning"/>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1690899845778" ID="ID_527585169" MODIFIED="1690899886750" TEXT="mu&#xdf; fehl-Matches vermeiden">
@ -81870,7 +81871,7 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
<node CREATED="1691876688987" ID="ID_1053525826" MODIFIED="1691876722777" TEXT="f&#xfc;r einen dedizierten Verifikator m&#xfc;&#xdf;te eine Struktur analog zum EventLog aufgebaut werden"/>
<node CREATED="1691876724045" ID="ID_599766465" MODIFIED="1691876757873" TEXT="insofern ist es eine &#x201e;Abk&#xfc;rzung&#x201c;, das EventLog hierf&#xfc;r einzusetzen"/>
</node>
<node BACKGROUND_COLOR="#eef0c5" COLOR="#990000" CREATED="1691876355275" ID="ID_165347645" MODIFIED="1692121937862" TEXT="brauche komplexere verkn&#xfc;pfte Matches">
<node COLOR="#435e98" CREATED="1691876355275" ID="ID_165347645" MODIFIED="1692634764970" TEXT="brauche komplexere verkn&#xfc;pfte Matches">
<richcontent TYPE="NOTE"><html>
<head/>
<body>
@ -82180,13 +82181,16 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
</node>
<node CREATED="1692484977802" ID="ID_1632816684" MODIFIED="1692485020188" TEXT="zeichnet Zeitpunkt und ggfs Subject auf"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1692485180411" ID="ID_1178843988" MODIFIED="1692485203735" TEXT="auch &#xdc;berwachung von Notifications erm&#xf6;glichen">
<icon BUILTIN="flag-yellow"/>
<node COLOR="#338800" CREATED="1692485180411" ID="ID_1178843988" MODIFIED="1692634691707" TEXT="&#xdc;berwachung von Notifications erm&#xf6;glichen">
<icon BUILTIN="button_ok"/>
<node CREATED="1692634693956" ID="ID_952722348" MODIFIED="1692634705286" TEXT="als Erg&#xe4;nzung in den HOOK-Callback eingebaut"/>
<node CREATED="1692634705802" ID="ID_1440095266" MODIFIED="1692634720901" TEXT="reagiert speziell wenn die notify()-Funktion aufgerufen wird"/>
<node CREATED="1692634721608" ID="ID_1461472121" MODIFIED="1692634732442" TEXT="auch hier wird die Notification dann an das Target weitergereicht"/>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1689205081622" ID="ID_1440811513" MODIFIED="1689205086027" TEXT="Me&#xdf;punkte">
<icon BUILTIN="flag-yellow"/>
<node COLOR="#338800" CREATED="1689205081622" ID="ID_1440811513" MODIFIED="1692634756484" TEXT="Me&#xdf;punkte">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1689205105640" ID="ID_1975472338" MODIFIED="1692120794297" TEXT="Dummy-Funktor">
<icon BUILTIN="button_ok"/>
<node COLOR="#435e98" CREATED="1692114609799" ID="ID_742671204" MODIFIED="1692114749800" TEXT="was wird erzeugt?">
@ -82344,8 +82348,8 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
<icon BUILTIN="button_ok"/>
</node>
</node>
<node BACKGROUND_COLOR="#eef0c5" COLOR="#990000" CREATED="1689205423173" ID="ID_935068564" MODIFIED="1692487675023" TEXT="watchGate">
<icon BUILTIN="pencil"/>
<node COLOR="#338800" CREATED="1689205423173" ID="ID_935068564" MODIFIED="1692634749567" TEXT="watchGate">
<icon BUILTIN="button_ok"/>
<node COLOR="#435e98" CREATED="1692485210898" ID="ID_1284233307" MODIFIED="1692491324320" TEXT="komplexe Aufgabe">
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1692485226036" ID="ID_1556332540" MODIFIED="1692485237497" TEXT="das Gate bietet eigentlich keine Erweiterungspunkte"/>
@ -82362,8 +82366,8 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
<node CREATED="1692485311859" ID="ID_1216045769" MODIFIED="1692485364424" TEXT="diese kann Aktivierung aufzeichnen">
<icon BUILTIN="idea"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1692485320231" ID="ID_1801884487" MODIFIED="1692485360568" TEXT="zudem M&#xf6;glichkeit schaffen, auch Notification aufzuzeichnen">
<icon BUILTIN="flag-yellow"/>
<node COLOR="#338800" CREATED="1692485320231" ID="ID_1801884487" MODIFIED="1692634747940" TEXT="zudem M&#xf6;glichkeit schaffen, auch Notification aufzuzeichnen">
<icon BUILTIN="button_ok"/>
</node>
</node>
<node COLOR="#338800" CREATED="1692485417998" ID="ID_856616436" MODIFIED="1692487971912" TEXT="zudem Probe auf den next-Ptr legen">