diff --git a/tests/vault/gear/scheduler-commutator-test.cpp b/tests/vault/gear/scheduler-commutator-test.cpp
index 55e0d7d05..c7e055dd0 100644
--- a/tests/vault/gear/scheduler-commutator-test.cpp
+++ b/tests/vault/gear/scheduler-commutator-test.cpp
@@ -98,6 +98,7 @@ namespace test {
torture_GroomingToken();
verify_DispatchDecision();
verify_findWork();
+ verify_Significance();
verify_postDispatch();
integratedWorkCycle();
}
@@ -347,6 +348,85 @@ namespace test {
+ /** @test verify that obsoleted or rejected entries are dropped transparently
+ * - add entries providing extra information regarding significance
+ * - verify that missing the deadline is detected
+ * - entries past deadline will be dropped when pulling for work
+ * - entries tagged with an ManifestationID can be disabled and
+ * will be automatically disposed.
+ * - an entry marked as _compulsory_ will block that process
+ * when missing it's deadline
+ */
+ void
+ verify_Significance()
+ {
+ SchedulerInvocation queue;
+ SchedulerCommutator sched;
+
+ Time t1{10,0}; Activity a1{1u,1u};
+ Time t2{20,0}; Activity a2{2u,2u};
+ Time t3{30,0}; Activity a3{3u,3u};
+ Time t4{40,0}; Activity a4{4u,4u};
+
+ queue.instruct (a1, t1, t4, ManifestationID{5});
+ queue.instruct (a2, t2, t3);
+ queue.instruct (a3, t3, t3, ManifestationID{23}, true);
+ queue.instruct (a4, t4, t4);
+ queue.activate(ManifestationID{5});
+ queue.activate(ManifestationID{23});
+
+ queue.feedPrioritisation();
+ CHECK (t1 == queue.headTime());
+ CHECK (isSameObject (a1, *queue.peekHead()));
+ CHECK (not queue.isMissed(t1));
+ CHECK (not queue.isOutdated(t1));
+
+ queue.drop(ManifestationID{5});
+ CHECK (t1 == queue.headTime());
+ CHECK (not queue.isMissed(t1));
+ CHECK ( queue.isOutdated(t1));
+
+ CHECK (not sched.findWork(queue, t1));
+ CHECK (t2 == queue.headTime());
+ CHECK (not queue.isMissed (t2));
+ CHECK (not queue.isOutdated(t2));
+ CHECK ( queue.isMissed (t3));
+ CHECK ( queue.isOutdated(t3));
+
+ CHECK (not sched.findWork(queue, t2));
+ CHECK (t3 == queue.headTime());
+ CHECK (not queue.isMissed (t3));
+ CHECK (not queue.isOutdated (t3));
+ CHECK (not queue.isOutOfTime(t3));
+ CHECK ( queue.isMissed (t4));
+ CHECK ( queue.isOutdated (t4));
+ CHECK ( queue.isOutOfTime(t4));
+
+ CHECK (not sched.findWork(queue, t4));
+ CHECK (t3 == queue.headTime());
+ CHECK (not queue.isMissed (t3));
+ CHECK (not queue.isOutdated (t3));
+ CHECK (not queue.isOutOfTime(t3));
+ CHECK ( queue.isMissed (t4));
+ CHECK ( queue.isOutdated (t4));
+ CHECK ( queue.isOutOfTime(t4));
+
+ queue.drop(ManifestationID{5});
+ CHECK (t3 == queue.headTime());
+ CHECK (not queue.isMissed (t3));
+ CHECK ( queue.isOutdated (t3));
+ CHECK (not queue.isOutOfTime(t3));
+ CHECK ( queue.isMissed (t4));
+ CHECK ( queue.isOutdated (t4));
+ CHECK (not queue.isOutOfTime(t4));
+
+ CHECK (isSameObject (a3, *queue.peekHead()));
+ CHECK (isSameObject (a4, *sched.findWork(queue, t4)));
+ CHECK (queue.empty());
+ }
+
+
+
/** @test verify entrance point for performing an Activity chain.
*/
void
diff --git a/tests/vault/gear/scheduler-invocation-test.cpp b/tests/vault/gear/scheduler-invocation-test.cpp
index e8e0b579c..55dd05483 100644
--- a/tests/vault/gear/scheduler-invocation-test.cpp
+++ b/tests/vault/gear/scheduler-invocation-test.cpp
@@ -192,7 +192,7 @@ namespace test {
- /** @test verify that obsoleted or rejected entries are dropped transparently
+ /** @test verify extended classification data and information functions at scheduler head
* - add entries providing extra information regarding significance
* - verify that missing the deadline is detected
* - entries past deadline are marked _outdated_ (will be dropped by Layer-2)
@@ -233,6 +233,9 @@ namespace test {
CHECK ( sched.isMissed (Time{4,0}));
CHECK ( sched.isDue (Time{4,0}));
+ sched.activate (ManifestationID{23});
+ CHECK (not sched.isOutdated (Time{1,0}));
+
sched.drop (ManifestationID{5});
CHECK (Time(1,0) == sched.headTime());
CHECK ( sched.isOutdated (Time{1,0}));
@@ -241,12 +244,9 @@ namespace test {
CHECK (not sched.isMissed (Time{1,0}));
CHECK ( sched.isDue (Time{1,0}));
- sched.feedPrioritisation (act, Time{0,0}, Time{2,0}, ManifestationID{5}, true);
- CHECK (Time(0,0) == sched.headTime()); // ^^^^ marked as compulsory
+ sched.feedPrioritisation (act, Time{0,0}, Time{2,0}, ManifestationID{23}, true);
+ CHECK (Time(0,0) == sched.headTime()); // ^^^^ marked as compulsory
CHECK (not sched.isMissed (Time{1,0}));
- CHECK ( sched.isOutdated (Time{1,0})); // marked as outdated since manifestation 5 is not activated
-
- sched.activate (ManifestationID{5});
CHECK (not sched.isOutdated (Time{1,0}));
CHECK (not sched.isOutOfTime(Time{2,0})); // still OK /at/ deadline
CHECK ( sched.isOutOfTime(Time{3,0})); // ↯ past deadline yet marked as compulsory
@@ -254,10 +254,13 @@ namespace test {
CHECK ( sched.isMissed (Time{3,0}));
sched.drop (ManifestationID{5});
+ CHECK ( sched.isOutOfTime(Time{3,0})); // Manifestation-5 is altogether irrelevant for this case
+
+ sched.drop (ManifestationID{23});
CHECK (Time(0,0) == sched.headTime());
CHECK ( sched.isOutdated (Time{1,0}));
CHECK (not sched.isOutOfTime(Time{2,0}));
- CHECK (not sched.isOutOfTime(Time{3,0})); // the disabled manifestation masks the fatal out-of-time state
+ CHECK (not sched.isOutOfTime(Time{3,0})); // the disabled manifestation-23 masks the fatal out-of-time state
CHECK ( sched.isOutdated (Time{3,0}));
CHECK ( sched.isMissed (Time{3,0}));
diff --git a/wiki/thinkPad.ichthyo.mm b/wiki/thinkPad.ichthyo.mm
index 3d18b9646..8a7cd7e28 100644
--- a/wiki/thinkPad.ichthyo.mm
+++ b/wiki/thinkPad.ichthyo.mm
@@ -82186,8 +82186,8 @@ Date: Thu Apr 20 18:53:17 2023 +0200
-
+
@@ -84219,6 +84219,22 @@ Date: Thu Apr 20 18:53:17 2023 +0200