Block-Flow: define next steps to construct

...continue to proceed test-driven
...scheduler internals turn out to be intricate and cohesive,
   and thus the only hope is to adhere to strict testing discipline
This commit is contained in:
Fischlurch 2023-07-13 01:51:21 +02:00
parent 18904e5b58
commit 180c6b8d84
7 changed files with 625 additions and 18 deletions

View file

@ -225,9 +225,45 @@ namespace gear {
{
UNIMPLEMENTED ("traverse oldest Epochs and discard obsoleted");
}
private:
///////////////////
/// „backdoor“ to watch internals from tests
friend class FlowDiagnostic;
};
/* ===== Test / Diagnostic ===== */
class FlowDiagnostic
{
BlockFlow& flow_;
public:
FlowDiagnostic(BlockFlow& theFlow)
: flow_{theFlow}
{ }
// size_t first() { return exFam_.start_; }
// size_t last() { return exFam_.after_; }
size_t cntEpochs() { return watch(flow_.alloc_).active(); }
size_t poolSize() { return watch(flow_.alloc_).size(); }
};
inline FlowDiagnostic
watch (BlockFlow& theFlow)
{
return FlowDiagnostic{theFlow};
}
}} // namespace vault::gear
#endif /*SRC_VAULT_GEAR_BLOCK_FLOW_H_*/

View file

@ -2,6 +2,12 @@ TESTING "Component Test Suite: Scheduler" ./test-suite --group=engine
PLANNED "Activity observation framework" ActivityDetector_test <<END
return: 0
END
PLANNED "BlockFlow memory management scheme" BlockFlow_test <<END
return: 0
END

View file

@ -0,0 +1,120 @@
/*
ActivityDetector(Test) - verify diagnostic setup to watch scheduler activities
Copyright (C) Lumiera.org
2023, Hermann Vosseler <Ichthyostega@web.de>
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License as
published by the Free Software Foundation; either version 2 of
the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
* *****************************************************/
/** @file activity-detector-test.cpp
** unit test \ref ActivityDetector_test
*/
#include "lib/test/run.hpp"
#include "activity-detector.hpp"
//#include "lib/time/timevalue.hpp"
//#include "lib/format-cout.hpp"
//#include "lib/util.hpp"
//#include <utility>
//using test::Test;
//using lib::time::Time;
//using lib::time::FSecs;
//using std::move;
//using util::isSameObject;
namespace vault{
namespace gear {
namespace test {
// using lib::time::FrameRate;
// using lib::time::Offset;
// using lib::time::Time;
/*****************************************************************//**
* @test verify instrumentation setup to watch scheduler Activities.
* @see SchedulerActivity_test
* @see SchedulerUsage_test
*/
class ActivityDetector_test : public Test
{
virtual void
run (Arg)
{
simpleUsage();
verifyDummyFuncttor();
detect_activation();
detect_gate();
}
/** @test TODO demonstrate a simple usage scenario
* @todo WIP 7/23 define implement
*/
void
simpleUsage()
{
ActivityDetector spectre;
}
/** @test TODO diagnostic setup to detect a JobFunctor activation
* @todo WIP 7/23 define implement
*/
void
verifyDummyFuncttor()
{
}
/** @test TODO diagnostic setup to detect Activity activation and propagation
* @todo WIP 7/23 define implement
*/
void
detect_activation()
{
}
/** @test TODO diagnostic setup to watch Activity::GATE activation
* @todo WIP 7/23 define implement
*/
void
detect_gate()
{
}
};
/** Register this test class... */
LAUNCHER (ActivityDetector_test, "unit engine");
}}} // namespace vault::gear::test

View file

@ -0,0 +1,109 @@
/*
ACTIVITY-DETECTOR.hpp - test scaffolding to observe activities within the scheduler
Copyright (C) Lumiera.org
2023, Hermann Vosseler <Ichthyostega@web.de>
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License as
published by the Free Software Foundation; either version 2 of
the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
/** @file activity-detector.hpp
** Diagnostic setup to instrument and observe \ref Activity activations.
** The [Scheduler](\ref scheduler.hpp) powering the Lumiera render engine
** is implemented in terms of Activities, which can be time-bound and depend
** on each other. For performance reasons, these _operational atoms_ must be
** implemented as a tightly knit network of lightweight POD records without
** much indirection. This setup poses a challenge for unit tests and similar
** white box testing, due to the lack of a managed platform and any further
** means of indirection and extension. As a remedy, a set of preconfigured
** _detector Activity records_ is provided, which drop off event log messages
** by side effect. These detector probes can be wired in as decorators into
** a otherwise valid Activity-Term, allowing to watch and verify patterns
** of invocation -- which might even happen concurrently.
**
** @todo WIP-WIP-WIP 7/2023 right now this is a rather immature attempt
** towards a scaffolding to propel the build-up of the scheduler.
** @see SchedulerActivity_test
*/
#ifndef VAULT_GEAR_TEST_ACTIVITY_DETECTOR_H
#define VAULT_GEAR_TEST_ACTIVITY_DETECTOR_H
#include "vault/common.hpp"
//#include "lib/test/test-helper.hpp"
//#include "steam/play/dummy-play-connection.hpp"
//#include "steam/fixture/node-graph-attachment.hpp"
//#include "steam/fixture/segmentation.hpp"
//#include "steam/mobject/model-port.hpp"
//#include "steam/engine/dispatcher.hpp"
//#include "steam/engine/job-ticket.hpp"
//#include "vault/gear/job.h"
//#include "vault/real-clock.hpp"
//#include "lib/allocator-handle.hpp"
//#include "lib/time/timevalue.hpp"
//#include "lib/diff/gen-node.hpp"
//#include "lib/linked-elements.hpp"
//#include "lib/itertools.hpp"
//#include "lib/depend.hpp"
//#include "lib/util.hpp"
//#include <tuple>
//#include <map>
namespace vault{
namespace gear {
namespace test {
// using std::make_tuple;
// using lib::diff::GenNode;
// using lib::diff::MakeRec;
// using lib::time::TimeValue;
// using lib::time::Time;
// using lib::HashVal;
// using util::isnil;
// using util::isSameObject;
// using fixture::Segmentation;
// using vault::RealClock;
// using vault::gear::Job;
// using vault::gear::JobClosure;
/**
* Diagnostic context to record and evaluate activations within the Scheduler.
* @todo WIP-WIP-WIP 7/23 a new loopy hope
*/
class ActivityDetector
: util::NonCopyable
{
void* zombiePoolFactor_;
public:
/* == walking deadline implementation == */
ActivityDetector()
: zombiePoolFactor_{}
{ }
private:
};
}}} // namespace vault::gear::test
#endif /*VAULT_GEAR_TEST_ACTIVITY_DETECTOR_H*/

View file

@ -64,19 +64,23 @@ namespace test {
run (Arg)
{
simpleUsage();
calculateDeadline();
setupLalup();
verifyAPI();
handleEpoch();
placeActivity();
adjustEpochs();
storageFlow();
}
/** @test TODO demonstrate a simple usage scenario
* @todo WIP 7/23 define implement
*/
void
simpleUsage()
{
BlockFlow bFlow;
Time deadline = randTime();
Activity tick = bFlow.until(deadline).create();
Activity& tick = bFlow.until(deadline).create();
///////////////////////////////////////////////////////////////////////////////OOO diagnostic function to check allocation
bFlow.discardBefore (deadline + Time{0,5});
@ -85,19 +89,51 @@ namespace test {
/** @test TODO
/** @test verify the primary BlockFlow API functions in isolation
* @todo WIP 7/23 define implement
*/
void
calculateDeadline()
verifyAPI()
{
}
/** @test TODO
/** @test TODO cover the handling of Epochs
* @todo WIP 7/23 define implement
*/
void
setupLalup()
handleEpoch()
{
}
/** @test TODO place Activity record into storage
* @todo WIP 7/23 define implement
*/
void
placeActivity()
{
}
/** @test TODO load based regulation of Epoch spacing
* @todo WIP 7/23 define implement
*/
void
adjustEpochs()
{
}
/** @test TODO maintain progression of epochs.
* @todo WIP 7/23 define implement
*/
void
storageFlow()
{
}
};

View file

@ -41,7 +41,7 @@ using lib::time::FSecs;
namespace vault{
namespace gear {
namespace gear {
namespace test {
// using lib::time::FrameRate;
@ -63,13 +63,22 @@ namespace test {
virtual void
run (Arg)
{
simpleUsage();
walkingDeadline();
setupLalup();
simpleUsage();
verifyActivity_Invoke();
verifyActivity_Notify();
verifyActivity_Gate();
termBuilder();
scenario_RenderJob();
scenario_IOJob();
scenario_MetaJob();
}
/** @test TODO demonstrate a simple usage scenario
* @todo WIP 7/23 define implement
*/
void
simpleUsage()
@ -84,19 +93,71 @@ namespace test {
/** @test TODO
/** @test TODO behaviour of Activity::INVOKE
* @todo WIP 7/23 define implement
*/
void
walkingDeadline()
verifyActivity_Invoke()
{
}
/** @test TODO
/** @test TODO behaviour of Activity::NOTIFY
* @todo WIP 7/23 define implement
*/
void
setupLalup()
verifyActivity_Notify()
{
}
/** @test TODO behaviour of Activity::GATE
* @todo WIP 7/23 define implement
*/
void
verifyActivity_Gate()
{
}
/** @test TODO verify the Activity term builder
* @todo WIP 7/23 define implement
*/
void
termBuilder()
{
}
/** @test TODO usage scenario: Activity graph for a render job
* @todo WIP 7/23 define implement
*/
void
scenario_RenderJob()
{
}
/** @test TODO usage scenario: Activity graph for an async Job
* @todo WIP 7/23 define implement
*/
void
scenario_IOJob()
{
}
/** @test TODO usage scenario: Activity graph for administrative job
* @todo WIP 7/23 define implement
*/
void
scenario_MetaJob()
{
}
};

View file

@ -78787,9 +78787,84 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
<icon BUILTIN="flag-yellow"/>
<node CREATED="1688515094346" ID="ID_1027706144" MODIFIED="1688515110180" TEXT="Epoche finden oder erstellen"/>
<node CREATED="1688515126831" ID="ID_1528998679" MODIFIED="1688515184828" TEXT="Epoche aktiv oder obsolet"/>
<node CREATED="1689199348011" ID="ID_946314952" MODIFIED="1689199354365" TEXT="F&#xfc;llstand der Epoche"/>
<node CREATED="1689199360284" ID="ID_1490677402" MODIFIED="1689199371202" TEXT="Deadline abfragen"/>
<node CREATED="1689199372430" ID="ID_1393603020" MODIFIED="1689199377650" TEXT="EpochGate"/>
</node>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1689199381509" HGAP="-9" ID="ID_1151653123" MODIFIED="1689200619525" TEXT="Testf&#xe4;lle" VSHIFT="4">
<icon BUILTIN="list"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1689199958807" ID="ID_1109817733" MODIFIED="1689199964871" TEXT="verifyAPI">
<icon BUILTIN="flag-yellow"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1689199390484" ID="ID_679990341" MODIFIED="1689199615217" TEXT="handleEpoch">
<icon BUILTIN="flag-yellow"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1689202254231" ID="ID_322073846" MODIFIED="1689202266310" TEXT="Eigenschaften einer neu erstellten Epoche">
<icon BUILTIN="flag-yellow"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1689202440952" ID="ID_1233864251" MODIFIED="1689202450565" TEXT="EpochGate-Verhalten">
<icon BUILTIN="flag-yellow"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1689202329260" ID="ID_1491199644" MODIFIED="1689202334829" TEXT="Belegen eines Slot">
<icon BUILTIN="flag-yellow"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1689202342763" ID="ID_1522127566" MODIFIED="1689202365416" TEXT="volle Epoche erkennen">
<icon BUILTIN="flag-yellow"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1689202395764" ID="ID_1382459579" MODIFIED="1689202409602" TEXT="Entscheidung aktiv/obsolet">
<icon BUILTIN="flag-yellow"/>
</node>
</node>
<node COLOR="#338800" CREATED="1688394889309" ID="ID_1132827905" MODIFIED="1689188274739" TEXT="ExtentFamily_test">
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1689199616791" ID="ID_752152349" MODIFIED="1689200031345" TEXT="placeActivity">
<icon BUILTIN="flag-yellow"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1689202512708" ID="ID_101278669" MODIFIED="1689202518059" TEXT="in leeren BlockFlow">
<icon BUILTIN="flag-yellow"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1689202522354" ID="ID_523714574" MODIFIED="1689202553439" TEXT="f&#xfc;r Vergangenheit">
<icon BUILTIN="flag-yellow"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1689202560123" ID="ID_827332375" MODIFIED="1689202571882" TEXT="zu bestehenden Epochen">
<icon BUILTIN="flag-yellow"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1689202576227" ID="ID_1382030737" MODIFIED="1689202581299" TEXT="in die Zukunft">
<icon BUILTIN="flag-yellow"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1689202597977" ID="ID_1853102157" MODIFIED="1689202608256" TEXT="Overflow zu n&#xe4;chster Epoche">
<icon BUILTIN="flag-yellow"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1689202609159" ID="ID_985814955" MODIFIED="1689202622069" TEXT="Overflow zuk&#xfc;nftige Epoche">
<icon BUILTIN="flag-yellow"/>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1689203745600" ID="ID_838958031" MODIFIED="1689203950019" TEXT="adjustEpochs">
<icon BUILTIN="flag-yellow"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1689203960637" ID="ID_1138375951" MODIFIED="1689203988840" TEXT="time averaging mechanism">
<icon BUILTIN="flag-yellow"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1689203990663" ID="ID_1418143690" MODIFIED="1689204013293" TEXT="Overflow reduziert Spacing">
<icon BUILTIN="flag-yellow"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1689204050903" ID="ID_1034064454" MODIFIED="1689204057137" TEXT="Freigabe bewertet F&#xfc;llstand">
<icon BUILTIN="flag-yellow"/>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1689199850230" ID="ID_500959752" MODIFIED="1689199853830" TEXT="storageFlow">
<icon BUILTIN="flag-yellow"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1689202692911" ID="ID_906364025" MODIFIED="1689202721745" TEXT="Epoche weit in die Zukunft">
<icon BUILTIN="flag-yellow"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1689202785580" ID="ID_892217093" MODIFIED="1689202806524" TEXT="diese Epoche &#xfc;berf&#xfc;llen">
<icon BUILTIN="flag-yellow"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1689203363491" ID="ID_1023375133" MODIFIED="1689203368347" TEXT="freigeben nach Deadline">
<icon BUILTIN="flag-yellow"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1689203371623" ID="ID_191469419" MODIFIED="1689203381892" TEXT="Epoche blockt Freigabe">
<icon BUILTIN="flag-yellow"/>
</node>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1688394889309" FOLDED="true" ID="ID_1132827905" MODIFIED="1689188274739" TEXT="ExtentFamily_test">
<linktarget COLOR="#40c5eb" DESTINATION="ID_1132827905" ENDARROW="Default" ENDINCLINATION="-593;73;" ID="Arrow_ID_709934622" SOURCE="ID_504623704" STARTARROW="None" STARTINCLINATION="-214;-18;"/>
<icon BUILTIN="button_ok"/>
<node CREATED="1688394900403" ID="ID_1380392473" MODIFIED="1688394919878" TEXT="underlying sequence-of-extents">
@ -78890,6 +78965,69 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
<node CREATED="1688337038457" ID="ID_1859527374" MODIFIED="1688337060790" TEXT="&#xbb;Activity Language&#xab; Functionality test">
<icon BUILTIN="info"/>
</node>
<node CREATED="1689200347787" ID="ID_927706508" MODIFIED="1689200349854" TEXT="Themen">
<node CREATED="1689200351602" ID="ID_1759162519" MODIFIED="1689200367907" TEXT="Activity-Verhalten"/>
<node CREATED="1689200370367" ID="ID_1671898028" MODIFIED="1689200383536" TEXT="Term-Builder"/>
<node CREATED="1689200449333" ID="ID_386403564" MODIFIED="1689200453433" TEXT="usage scenarios"/>
</node>
<node CREATED="1689201354393" HGAP="24" ID="ID_1250518280" MODIFIED="1689201365333" TEXT="Hilfsmittel" VSHIFT="2">
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1689201660559" ID="ID_747497995" MODIFIED="1689201666007" TEXT="ActivityDetector">
<icon BUILTIN="flag-yellow"/>
<node CREATED="1689201667734" ID="ID_901153159" MODIFIED="1689201676495" TEXT="speziell verdrahtete Activity">
<icon BUILTIN="info"/>
<node CREATED="1689201677836" ID="ID_166879509" MODIFIED="1689201693231" TEXT="kann ihre Aktivierung dokumentieren"/>
<node CREATED="1689201999161" ID="ID_554259263" MODIFIED="1689202008524" TEXT="kann Gate-Verhalten aufzeichnen"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1689202062345" ID="ID_373470992" MODIFIED="1689202169154" TEXT="implementiert als eigenst&#xe4;ndiges Test-Hilfsmittel">
<richcontent TYPE="NOTE"><html>
<head/>
<body>
<p>
...weil ich damit auch die erweiterten Scheduler-Tests mit abdecken k&#246;nnte (concurrency)...
</p>
</body>
</html></richcontent>
<icon BUILTIN="yes"/>
</node>
<node BACKGROUND_COLOR="#f0d5c5" COLOR="#990033" CREATED="1689202013167" ID="ID_1086517923" MODIFIED="1689202038445" TEXT="Idee: EventLog verwenden?">
<icon BUILTIN="idea"/>
<icon BUILTIN="help"/>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1689199381509" HGAP="-9" ID="ID_1023579954" MODIFIED="1689200613367" TEXT="Testf&#xe4;lle" VSHIFT="4">
<icon BUILTIN="list"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1689199958807" ID="ID_1659400931" MODIFIED="1689200471838" TEXT="simpleUsage">
<icon BUILTIN="flag-yellow"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1689201241256" ID="ID_1940651320" MODIFIED="1689201264958" TEXT="Activity platzieren">
<icon BUILTIN="flag-yellow"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1689201251263" ID="ID_629522642" MODIFIED="1689201264958" TEXT="Epoche terminieren">
<icon BUILTIN="flag-yellow"/>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1689199390484" ID="ID_176395611" MODIFIED="1689201554423" TEXT="verifyActivity_Invoke">
<icon BUILTIN="flag-yellow"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1689199390484" ID="ID_1274424925" MODIFIED="1689200512352" TEXT="verifyActivity_Notify">
<icon BUILTIN="flag-yellow"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1689199390484" ID="ID_212018049" MODIFIED="1689201557502" TEXT="verifyActivity_Gate">
<icon BUILTIN="flag-yellow"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1689200547247" ID="ID_1506436785" MODIFIED="1689200552551" TEXT="termBuilder">
<icon BUILTIN="flag-yellow"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1689200553782" ID="ID_472609287" MODIFIED="1689200578260" TEXT="scenario_RenderJob">
<icon BUILTIN="flag-yellow"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1689200553782" ID="ID_1346681233" MODIFIED="1689200586861" TEXT="scenario_IOJob">
<icon BUILTIN="flag-yellow"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1689200553782" ID="ID_722630098" MODIFIED="1689200595611" TEXT="scenario_MetaJob">
<icon BUILTIN="flag-yellow"/>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1688336761542" ID="ID_145928010" MODIFIED="1688337246571" TEXT="SchedulerInvocation_test">
<icon BUILTIN="flag-yellow"/>
@ -79193,7 +79331,7 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
</node>
<node CREATED="1688556449759" ID="ID_389613064" MODIFIED="1688556458098" TEXT="rein virtuell (per cast erzeugt)"/>
</node>
<node COLOR="#338800" CREATED="1688432504244" ID="ID_1241185228" MODIFIED="1688556470257" TEXT="Storage (privat)">
<node COLOR="#338800" CREATED="1688432504244" FOLDED="true" ID="ID_1241185228" MODIFIED="1688556470257" TEXT="Storage (privat)">
<icon BUILTIN="button_ok"/>
<node COLOR="#435e98" CREATED="1688432516234" ID="ID_615463720" MODIFIED="1688867994355" TEXT="Anfroderung: keine Initialisierung">
<icon BUILTIN="messagebox_warning"/>
@ -79665,7 +79803,7 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
<icon BUILTIN="yes"/>
<node CREATED="1688555021190" ID="ID_1624305559" MODIFIED="1688555026714" TEXT="keine logarithmische Suche"/>
<node CREATED="1688555027213" ID="ID_1516151909" MODIFIED="1688555031529" TEXT="kein separater Index"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1688555032021" ID="ID_1157610750" MODIFIED="1688555050479" TEXT="die EpochGate als LInked-List verwenden">
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1688555032021" ID="ID_1157610750" MODIFIED="1688555050479" TEXT="die EpochGate als Linked-List verwenden">
<icon BUILTIN="flag-yellow"/>
<node CREATED="1688778164204" ID="ID_1590074187" MODIFIED="1688778220458" TEXT="geht nicht mehr">
<linktarget COLOR="#fe0d3a" DESTINATION="ID_1590074187" ENDARROW="Default" ENDINCLINATION="23;-55;" ID="Arrow_ID_708564411" SOURCE="ID_717553610" STARTARROW="None" STARTINCLINATION="-39;2;"/>
@ -79675,6 +79813,37 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
<icon BUILTIN="yes"/>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1689204144537" ID="ID_462737656" MODIFIED="1689204198471" TEXT="Epochen-Navigation per ExtentFamily">
<icon BUILTIN="flag-yellow"/>
</node>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1689204220486" ID="ID_277319829" MODIFIED="1689204231111" TEXT="Flow-Zyklus">
<icon BUILTIN="flag-yellow"/>
<node BACKGROUND_COLOR="#f0d5c5" COLOR="#990033" CREATED="1689204233030" ID="ID_649398296" MODIFIED="1689204243981" TEXT="Frage: Parametrisierung?">
<icon BUILTIN="help"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1689204252820" ID="ID_1727328732" MODIFIED="1689204287072" TEXT="Epoch-Spacing-Mechanismus">
<icon BUILTIN="flag-yellow"/>
<node BACKGROUND_COLOR="#ccb59b" COLOR="#6e2a38" CREATED="1689204292687" ID="ID_1711692712" MODIFIED="1689204301552" TEXT="vorl&#xe4;ufig einfach halten">
<font ITALIC="true" NAME="SansSerif" SIZE="14"/>
<icon BUILTIN="yes"/>
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1689204305717" ID="ID_123055064" MODIFIED="1689204325821" TEXT="sp&#xe4;ter wird auch dieses Thema auf TimingObservable aufsetzen">
<icon BUILTIN="yes"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1689204331764" ID="ID_578018270" MODIFIED="1689204425304" TEXT="vorerst einfache ged&#xe4;mpfte MIttelung">
<icon BUILTIN="yes"/>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1689204430524" ID="ID_1525654861" MODIFIED="1689204437235" TEXT="Signale">
<icon BUILTIN="flag-yellow"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1689204438866" ID="ID_586190414" MODIFIED="1689204458016" TEXT="Epochen-Overflow">
<icon BUILTIN="flag-yellow"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1689204448250" ID="ID_688039501" MODIFIED="1689204458017" TEXT="F&#xfc;llstand beim Aufr&#xe4;umen">
<icon BUILTIN="flag-yellow"/>
</node>
</node>
</node>
</node>
@ -79768,6 +79937,76 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1689204512737" HGAP="-89" ID="ID_783591358" MODIFIED="1689204530748" TEXT="Diagnostik-Hilfsmittel" VSHIFT="17">
<icon BUILTIN="flag-yellow"/>
<node CREATED="1689204533558" ID="ID_377070637" MODIFIED="1689204547921" TEXT="sollen Unit- und Integrationstests unterst&#xfc;tzen">
<icon BUILTIN="yes"/>
</node>
<node CREATED="1689204554739" ID="ID_1440899868" MODIFIED="1689204570206" TEXT="Beobachtungs-Ziele">
<icon BUILTIN="info"/>
<node COLOR="#338800" CREATED="1689204572129" ID="ID_658361919" MODIFIED="1689204583104" TEXT="F&#xfc;llstand des Basis-Allokators">
<icon BUILTIN="button_ok"/>
<node COLOR="#435e98" CREATED="1689204672083" ID="ID_414229642" MODIFIED="1689204694352" STYLE="fork" TEXT="aktiv"/>
<node COLOR="#435e98" CREATED="1689204675211" ID="ID_428260433" MODIFIED="1689204694353" STYLE="fork" TEXT="Kapazit&#xe4;t"/>
<node COLOR="#435e98" CREATED="1689204681138" ID="ID_719751542" MODIFIED="1689204694353" STYLE="fork" TEXT="Index-Positionen"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1689204604589" ID="ID_1478405779" MODIFIED="1689204610300" TEXT="Deadlines">
<icon BUILTIN="flag-yellow"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1689204644343" ID="ID_1848987574" MODIFIED="1689204801974" TEXT="oldest"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1689204650526" ID="ID_624484958" MODIFIED="1689204801974" TEXT="newest"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1689204731722" ID="ID_1494295782" MODIFIED="1689204801974" TEXT="Allokations-Zuordnung"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1689204805041" ID="ID_1427200190" MODIFIED="1689204809545" TEXT="Ereignisse">
<icon BUILTIN="flag-yellow"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1689204818615" ID="ID_1296035133" MODIFIED="1689204891288" TEXT="Funktor-Aufruf"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1689204823334" ID="ID_1131519387" MODIFIED="1689204891288" TEXT="Activity-Aktivierung"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1689204840484" ID="ID_750822384" MODIFIED="1689204891288" TEXT="Signal-Wire-Tap"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1689204883742" ID="ID_1433267374" MODIFIED="1689204891288" TEXT="Gate-Verhalten"/>
</node>
</node>
<node BACKGROUND_COLOR="#fdfdcf" COLOR="#ff0000" CREATED="1689204905242" ID="ID_924464779" MODIFIED="1689204946332" TEXT="Diagnose-Kontext">
<icon BUILTIN="forward"/>
<node COLOR="#338800" CREATED="1689204913954" ID="ID_256874849" MODIFIED="1689204922646" TEXT="f&#xfc;r ExtentFamily">
<icon BUILTIN="button_ok"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1689204923473" ID="ID_756310466" MODIFIED="1689204950523" TEXT="f&#xfc;r BlockFlow">
<icon BUILTIN="flag-yellow"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1689204967974" ID="ID_284088835" MODIFIED="1689204977426" TEXT="ActivityDetector">
<icon BUILTIN="flag-yellow"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1689204985122" ID="ID_1020676746" MODIFIED="1689204995475" TEXT="Rahmen schaffen">
<icon BUILTIN="flag-yellow"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1689205014901" ID="ID_221497246" MODIFIED="1689205024996" TEXT="Instantiierung und Lebenszyklus">
<icon BUILTIN="flag-yellow"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1689205007909" ID="ID_403603899" MODIFIED="1689205011845" TEXT="EventLog einbinden">
<icon BUILTIN="flag-yellow"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1689205029658" ID="ID_1144318045" MODIFIED="1689205033146" TEXT="Verifikationen">
<icon BUILTIN="flag-yellow"/>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1689205081622" ID="ID_1440811513" MODIFIED="1689205086027" TEXT="Me&#xdf;punkte">
<icon BUILTIN="flag-yellow"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1689205105640" ID="ID_1975472338" MODIFIED="1689205112281" TEXT="Dummy-Funktor">
<icon BUILTIN="flag-yellow"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1689205129709" ID="ID_355308944" MODIFIED="1689205163520" TEXT="Invocation-Activity">
<icon BUILTIN="flag-yellow"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1689205263970" ID="ID_43321196" MODIFIED="1689205277049" TEXT="activationProbe">
<icon BUILTIN="flag-yellow"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1689205295574" ID="ID_1666280196" MODIFIED="1689205299838" TEXT="activationTap">
<icon BUILTIN="flag-yellow"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1689205423173" ID="ID_935068564" MODIFIED="1689205426133" TEXT="watchGate">
<icon BUILTIN="flag-yellow"/>
</node>
</node>
</node>
</node>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1681347244544" ID="ID_444443795" MODIFIED="1681347486789" TEXT="Basis: Operational Control">