Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
simgrid.git
13 months agoActually, read()=0 is not an issue in the AppSide
Martin Quinson [Thu, 23 Mar 2023 20:58:46 +0000 (21:58 +0100)]
Actually, read()=0 is not an issue in the AppSide

it simply means that the checker closed the socket on its side, so we
should quit ASAP without complaining.

13 months agoFix some easy sonar smells
Martin Quinson [Wed, 22 Mar 2023 22:04:28 +0000 (23:04 +0100)]
Fix some easy sonar smells

const-ness, try_emplace, attribute noreturn, ...

The most important one is the TransitionObjectAccess one, where a
field in the subclass was hiding a field of the same name in the
superclass. Maybe the bug I was experiencing in that area was related.

13 months agoFix two sonar bugs
Martin Quinson [Wed, 22 Mar 2023 21:35:16 +0000 (22:35 +0100)]
Fix two sonar bugs

- don't throw from the destructor
- don't slice objects (downcast objects instead of downcasting
  references). I suspect that this one is a false positive but the
  tests still pass this way so let's go.

13 months agoChange an example to take its platform file from the command line if provided
Martin Quinson [Wed, 22 Mar 2023 20:57:01 +0000 (21:57 +0100)]
Change an example to take its platform file from the command line if provided

13 months agoMerge branch 'udpor-phase6' into 'master'
Martin Quinson [Wed, 22 Mar 2023 20:43:42 +0000 (20:43 +0000)]
Merge branch 'udpor-phase6' into 'master'

Phase 6 of UDPOR Integration: Add `K`-partial alternatives computation + clean up phase

See merge request simgrid/simgrid!139

13 months agojenkins::Flags if you run the tests, be verbose on errors [no-ci]
Martin Quinson [Wed, 22 Mar 2023 08:17:12 +0000 (09:17 +0100)]
jenkins::Flags if you run the tests, be verbose on errors [no-ci]

13 months agoMake sure that the dtor of CheckerSide actually kills the application and waits for it
Martin Quinson [Tue, 21 Mar 2023 20:48:55 +0000 (21:48 +0100)]
Make sure that the dtor of CheckerSide actually kills the application and waits for it

13 months agoFix the liveness tests when the reforks are compiled in but not activated
Martin Quinson [Tue, 21 Mar 2023 20:06:51 +0000 (21:06 +0100)]
Fix the liveness tests when the reforks are compiled in but not activated

13 months agoManually handle the memory associated to the libevent events
Martin Quinson [Mon, 20 Mar 2023 22:44:59 +0000 (23:44 +0100)]
Manually handle the memory associated to the libevent events

The previous version with std::unique_ptr resulted in segfaults errors
reported by valgrind, and I fail to get it right.

13 months agoDo not initialize the App's memory introspection if it's not needed
Martin Quinson [Mon, 20 Mar 2023 22:27:39 +0000 (23:27 +0100)]
Do not initialize the App's memory introspection if it's not needed

Reforks are still not activated in this code, as the DFS constructor
pretends that it needs memory introspection when it does not. The
version activating reforks is currently commented here, if you want to
play with it.

Things seem more or less working with this change. Known issues:
 - liveness checking is killed by a out-of-bounds access to a vector
   while handling the property automaton. This is the case even when
   reforks are not activated, making this change improper for the
   master branch.
 - The checker is not very good at killing the application in refork
   mode, and many processes remain around until after they are
   abandoned by their checker.
   I'm not sure of whether they only consume memory or whether they
   also burn the CPU in an active loop. In both cases, this is ...
   suboptimal.
   This point is OK when not activating reforks.
 - valgrind reports some sort of double free on the libevent's events.
   I fail to get the std::unique_ptr thing right. See next commit.

13 months agoPut everything in position to re-fork the verified App
Martin Quinson [Mon, 20 Mar 2023 16:09:17 +0000 (17:09 +0100)]
Put everything in position to re-fork the verified App

If you pass "need_memory_introspection = false" to the Exploration
constructor, then the application is re-forked systematically instead
of taking snapshot that are then restored.

But it's still in progress, in the sense that the memory is still
introspected even if we don't need it. The network protocol still
needs to be changed so that the memory info are asked only if
"need_memory_introspection = true" and not otherwise.

For the time being, using reforks is very memory intensive for some
reason, and my computers gets to its knees when running the tests.
Until after the OOM killer saves me by cleaning stuff.

13 months agoAddress minor comments in MR review
Maxwell Pirtle [Mon, 20 Mar 2023 08:41:58 +0000 (09:41 +0100)]
Address minor comments in MR review

13 months agoRemove empty Comb.cpp
Maxwell Pirtle [Mon, 20 Mar 2023 08:38:12 +0000 (09:38 +0100)]
Remove empty Comb.cpp

13 months agoAdd documentation for Comb data structure
Maxwell Pirtle [Mon, 20 Mar 2023 08:33:34 +0000 (09:33 +0100)]
Add documentation for Comb data structure

The Comb data structure lacked documentation
prior to this commit. Since it plays a pretty
important role in the computation of `K`-partial
alternatives, it was given a more extensive
explanation to ensure that it was used properly.

13 months agocosmetics
Martin Quinson [Sun, 19 Mar 2023 20:15:10 +0000 (21:15 +0100)]
cosmetics

13 months agoMove more of the CheckerSide creation logic to the object constructor
Martin Quinson [Sun, 19 Mar 2023 20:07:00 +0000 (21:07 +0100)]
Move more of the CheckerSide creation logic to the object constructor

13 months agoMC: disable Address Space Layout Randomization in the application
Martin Quinson [Sun, 19 Mar 2023 18:45:39 +0000 (19:45 +0100)]
MC: disable Address Space Layout Randomization in the application

This will allow to re-fork the application on restore without
invalidating all the metadata we accumulated in the previous
exploration traces.

13 months agoDiffer the creation of the RemoteProcessMemory to when we have enough information
Martin Quinson [Sun, 19 Mar 2023 15:18:05 +0000 (16:18 +0100)]
Differ the creation of the RemoteProcessMemory to when we have enough information

13 months agoBetter responsabilities splitup between CheckerSide and RemoteProcessMemory
Martin Quinson [Sun, 19 Mar 2023 14:57:19 +0000 (15:57 +0100)]
Better responsabilities splitup between CheckerSide and RemoteProcessMemory

13 months agoMove methods not related to Memory out of RemoteProcessMemory
Martin Quinson [Sun, 19 Mar 2023 14:20:23 +0000 (15:20 +0100)]
Move methods not related to Memory out of RemoteProcessMemory

Now that ModelChecker is gone, it's time to move to the next step of cleanup.

The goal is that CheckerSide is in charge of the interaction with the
application process and RemoteProcessMemory is in charge of its memory.

Right now, RemoteProcessMemory does a bit more, as it stores the pid
and whether or not the application process is running.

This is bad because we want to make RemoteProcessMemory optional, only
used when we need to introspect the application memory (liveness
checking, non-progression checking, etc), so that we can run the app
in valgrind when we don't need to introspect its memory (safety
checking without non-progression checking).

I know I just moved this chunks of code from ModelChecker to
RemoteProcessMemory to now move it further, and I'm sorry for the
noise, but this code drives me nuts and I need to clean it step by step.

13 months agoFinally kill the now empty ModelChecker class
Martin Quinson [Sun, 19 Mar 2023 14:01:44 +0000 (15:01 +0100)]
Finally kill the now empty ModelChecker class

13 months agoMove the memory handling of RemoteProcessMemory singleton from ModelChecker to Checke...
Martin Quinson [Sun, 19 Mar 2023 13:50:37 +0000 (14:50 +0100)]
Move the memory handling of RemoteProcessMemory singleton from ModelChecker to CheckerSide

13 months agoMove handle_message from ModelChecker to RemoteProcessMemory
Martin Quinson [Sun, 19 Mar 2023 13:29:05 +0000 (14:29 +0100)]
Move handle_message from ModelChecker to RemoteProcessMemory

13 months agoMove handle_waitpid from ModelChecker to RemoteProcessMemory
Martin Quinson [Sun, 19 Mar 2023 12:54:23 +0000 (13:54 +0100)]
Move handle_waitpid from ModelChecker to RemoteProcessMemory

13 months agoMake a global singleton of Exploration, to kill ModelChecker
Martin Quinson [Sun, 19 Mar 2023 11:46:57 +0000 (12:46 +0100)]
Make a global singleton of Exploration, to kill ModelChecker

Having global singletons is far from optimal, but it's a bit like the
EngineImpl singleton in the model-checker process.

This will allow to kill the ModelChecker class which responsabilities
were split between RemoteApp and Exploration.

13 months agoGosh, how many calls to that global were there?
Martin Quinson [Sun, 19 Mar 2023 11:15:58 +0000 (12:15 +0100)]
Gosh, how many calls to that global were there?

13 months agoKill a now unused class in mc
Martin Quinson [Sun, 19 Mar 2023 11:09:07 +0000 (12:09 +0100)]
Kill a now unused class in mc

13 months agoRemove some more usage of mc_model_checker in Region and snapshoting logic
Martin Quinson [Sun, 19 Mar 2023 09:58:20 +0000 (10:58 +0100)]
Remove some more usage of mc_model_checker in Region and snapshoting logic

13 months agoAnother use of mc_model_checker disapears. In Snapshot.equals.
Martin Quinson [Sun, 19 Mar 2023 09:10:34 +0000 (10:10 +0100)]
Another use of mc_model_checker disapears. In Snapshot.equals.

I guess that this could be done in a better way, as noted in the
comment.

13 months agoanother mc_model_checker call location disappears
Martin Quinson [Sun, 19 Mar 2023 08:52:48 +0000 (09:52 +0100)]
another mc_model_checker call location disappears

I postponned this one a lot because it's impacting non-MC code, but at
the end it went smoothly

13 months agoFix make distcheck
Martin Quinson [Sun, 19 Mar 2023 08:13:06 +0000 (09:13 +0100)]
Fix make distcheck

13 months agoFix MC+clang builds
Martin Quinson [Sat, 18 Mar 2023 21:49:00 +0000 (22:49 +0100)]
Fix MC+clang builds

13 months agoReduce a bit the adherance of handle_waitpid to ModelChecker
Martin Quinson [Sat, 18 Mar 2023 20:49:57 +0000 (21:49 +0100)]
Reduce a bit the adherance of handle_waitpid to ModelChecker

13 months agoMerge branch 'master' into 'master'
Martin Quinson [Sat, 18 Mar 2023 21:21:14 +0000 (21:21 +0000)]
Merge branch 'master' into 'master'

First step for guided state

See merge request simgrid/simgrid!141

13 months agoMove DPOR and sleep set algorithm from backtrack to run procedure
mlaurent [Sat, 18 Mar 2023 14:58:43 +0000 (15:58 +0100)]
Move DPOR and sleep set algorithm from backtrack to run procedure

13 months agoMerge branch 'master' of https://framagit.org/simgrid/simgrid
mlaurent [Sat, 18 Mar 2023 13:48:00 +0000 (14:48 +0100)]
Merge branch 'master' of https://framagit.org/simgrid/simgrid

13 months agoReplace todo direct access with consider methods; guided or not
mlaurent [Sat, 18 Mar 2023 13:46:53 +0000 (14:46 +0100)]
Replace todo direct access with consider methods; guided or not

13 months agoBasicGuide handle next_transition if asked to
mlaurent [Sat, 18 Mar 2023 13:05:13 +0000 (14:05 +0100)]
BasicGuide handle next_transition if asked to

13 months agoMerge CheckerSide::start() intp the constructor
Martin Quinson [Sat, 18 Mar 2023 11:21:30 +0000 (12:21 +0100)]
Merge CheckerSide::start() intp the constructor

13 months agoBetter split of responsabilities between CheckerSide and RemoteApp
Martin Quinson [Sat, 18 Mar 2023 11:05:09 +0000 (12:05 +0100)]
Better split of responsabilities between CheckerSide and RemoteApp

Define in CheckerSide the callbacks that are used in there, instead of
defining it in the RemoteApp and passing it along to the CheckerSide.

Let's be optimistic: this code is every day a bit less messy.

13 months agoMove the checker_side_ from the ModelChecker to the RemoteApp
Martin Quinson [Sat, 18 Mar 2023 10:58:55 +0000 (11:58 +0100)]
Move the checker_side_ from the ModelChecker to the RemoteApp

with an axe.

13 months agoOne usage of mc_model_checker less
Martin Quinson [Sat, 18 Mar 2023 10:25:53 +0000 (11:25 +0100)]
One usage of mc_model_checker less

I had to reduce the const-ness of the RemoteProcessMemory variable in
Snapshot::operator==() because getting the heap modifies the
RemoteMemory object. Sorry sonar.

13 months agoAdd GuidedState abstract class; move ActorState management
mlaurent [Sat, 18 Mar 2023 10:14:35 +0000 (11:14 +0100)]
Add GuidedState abstract class; move ActorState management

13 months agoSimplify Channel::receive by handling non-blocking recv separately
Martin Quinson [Fri, 17 Mar 2023 22:02:27 +0000 (23:02 +0100)]
Simplify Channel::receive by handling non-blocking recv separately

13 months agoA few calls to mc_model_checker less by passing more parameters
Martin Quinson [Fri, 17 Mar 2023 21:23:09 +0000 (22:23 +0100)]
A few calls to mc_model_checker less by passing more parameters

13 months agoMove handle_simcall from ModelChecker to RemoteApp
Martin Quinson [Fri, 17 Mar 2023 21:13:40 +0000 (22:13 +0100)]
Move handle_simcall from ModelChecker to RemoteApp

13 months agoMerge branch 'master' into 'master'
Martin Quinson [Fri, 17 Mar 2023 21:42:38 +0000 (21:42 +0000)]
Merge branch 'master' into 'master'

Add reference to parent state

See merge request simgrid/simgrid!140

13 months agoAdd reference to parent state: only use this creation in DFSexplorer
mlaurent [Fri, 17 Mar 2023 15:55:22 +0000 (16:55 +0100)]
Add reference to parent state: only use this creation in DFSexplorer

13 months agoFix test in k-partial alternatives step five
Maxwell Pirtle [Fri, 17 Mar 2023 13:03:35 +0000 (14:03 +0100)]
Fix test in k-partial alternatives step five

The fifth step in the K-partial alternatives
actually has three possible alternatives that
can be selected instead of only one. UDPOR
would still pick e7 next regardless, but more
than one outcome is possible.

13 months agoMissing include.
Arnaud Giersch [Thu, 16 Mar 2023 10:58:11 +0000 (11:58 +0100)]
Missing include.

13 months agoDecrease required version for nlohmann_json; add to jenkins/project_description.sh.
Arnaud Giersch [Thu, 16 Mar 2023 10:46:41 +0000 (11:46 +0100)]
Decrease required version for nlohmann_json; add to jenkins/project_description.sh.

Version 3.7.0 is available in debian/buster-backports.

13 months agoRemove unused code in Comb.cpp + fix MANIFEST.in
Maxwell Pirtle [Thu, 16 Mar 2023 10:36:57 +0000 (11:36 +0100)]
Remove unused code in Comb.cpp + fix MANIFEST.in

13 months agoAdd full example for K-partial alternatives
Maxwell Pirtle [Thu, 16 Mar 2023 09:56:36 +0000 (10:56 +0100)]
Add full example for K-partial alternatives

13 months agoUseless guards.
Arnaud Giersch [Wed, 15 Mar 2023 14:25:52 +0000 (15:25 +0100)]
Useless guards.

13 months agoApply "smpi/buffering" when MC_record_replay_is_active too.
Arnaud Giersch [Wed, 15 Mar 2023 14:17:52 +0000 (15:17 +0100)]
Apply "smpi/buffering" when MC_record_replay_is_active too.

13 months agoSanitize how we know the current MC mode
Martin Quinson [Wed, 15 Mar 2023 22:54:52 +0000 (23:54 +0100)]
Sanitize how we know the current MC mode

This can be either NONE, AppSide, CheckerSide or Replay.

Also, further reduce how often we use the mc_model_checker singleton

13 months agoMake it compile with all warnings enabled
Martin Quinson [Wed, 15 Mar 2023 22:23:03 +0000 (23:23 +0100)]
Make it compile with all warnings enabled

13 months agoDocument a future cleanup to do when we bump cmake version
Martin Quinson [Wed, 15 Mar 2023 21:55:45 +0000 (22:55 +0100)]
Document a future cleanup to do when we bump cmake version

13 months agoMove alternative computation to Configuration for testing
Maxwell Pirtle [Wed, 15 Mar 2023 14:56:53 +0000 (15:56 +0100)]
Move alternative computation to Configuration for testing

13 months agoAdd semantic equivalence to UnfoldingEvent
Maxwell Pirtle [Wed, 15 Mar 2023 08:33:31 +0000 (09:33 +0100)]
Add semantic equivalence to UnfoldingEvent

Two UnfoldingEvents are considered to be equivalent
if they have the same associated action (same actor,
type, and times_considered) and the same immediate history.
Semantic equivalence is required since any given
event may appear in the extension set of several configurations
that UDPOR decides to explore, and thus we must be able
to determine if a newly-computed event has already been
seen before

13 months agoAdd comments in K-partial alternatives computation
Maxwell Pirtle [Wed, 15 Mar 2023 08:05:11 +0000 (09:05 +0100)]
Add comments in K-partial alternatives computation

The computation of k-partial alternatives was added in
a prior commit. This commit implements the function
`Configuration::is_compatible_with(const History&)`
which is used during the computation of K-partial alternatives
to determine which events go with which spikes.

Note: The implementation that currently exists for
K-partial alternatives is a first go at an implementation
of the algorithm. There are clear spots within the computation
where performance may be improved with some more clever ideas.
For now, we're working towards a proof-of-concept: we can
optimize more heavily later

13 months agoRemove comments about non-existent support for smpi/privatization in MC.
Arnaud Giersch [Tue, 14 Mar 2023 15:51:08 +0000 (16:51 +0100)]
Remove comments about non-existent support for smpi/privatization in MC.

[ci-skip]

13 months agoReally check the privatization option in the MCed SMPI app.
Arnaud Giersch [Tue, 14 Mar 2023 15:34:28 +0000 (16:34 +0100)]
Really check the privatization option in the MCed SMPI app.

13 months agoAdd first go at implementation of K-partial alternatives
Maxwell Pirtle [Tue, 14 Mar 2023 09:37:13 +0000 (10:37 +0100)]
Add first go at implementation of K-partial alternatives

The algorithm for computing K-partial alternatives was
added in this commit. It doesn't look super clean
at this point, nor is the code as efficient as it
could be, but it certainly is a first go at an
implementation for K-partial alternatives. Subsequent
commits will attempt to clean up the code and will
implement a version of `Configuration::is_compatible_with()`
which currently remains unimplemented

13 months agoInform if JSON lib is found.
Arnaud Giersch [Tue, 14 Mar 2023 08:24:44 +0000 (09:24 +0100)]
Inform if JSON lib is found.

13 months agoTest for JSON before using it
Martin Quinson [Mon, 13 Mar 2023 23:43:27 +0000 (00:43 +0100)]
Test for JSON before using it

13 months agoCosmetics
Martin Quinson [Mon, 13 Mar 2023 23:43:04 +0000 (00:43 +0100)]
Cosmetics

13 months agofix make distcheck
Martin Quinson [Mon, 13 Mar 2023 21:47:12 +0000 (22:47 +0100)]
fix make distcheck

13 months agoMerge branch 'master' into 'master'
Fred Suter [Mon, 13 Mar 2023 21:12:47 +0000 (21:12 +0000)]
Merge branch 'master' into 'master'

Add wfformat json DAG loader and DAG doc

See merge request simgrid/simgrid!137

13 months agoAdd wfformat json DAG loader and DAG doc
Adrien [Mon, 13 Mar 2023 21:12:47 +0000 (21:12 +0000)]
Add wfformat json DAG loader and DAG doc

13 months agoAdd Comb data structure for K-partial alternatives
Maxwell Pirtle [Mon, 13 Mar 2023 13:03:12 +0000 (14:03 +0100)]
Add Comb data structure for K-partial alternatives

13 months agoAdd clean up phase to UDPOR
Maxwell Pirtle [Mon, 13 Mar 2023 10:18:54 +0000 (11:18 +0100)]
Add clean up phase to UDPOR

The last part of processing during UDPOR
involves removing events from the unfolding
which are no longer needed. The events in
the unfolding which must be preserved are outlined
in the UDPOR paper and are labeled Q_CDU.

13 months agoCorrectly protect tests property settings, bummer
Martin Quinson [Mon, 13 Mar 2023 09:34:06 +0000 (10:34 +0100)]
Correctly protect tests property settings, bummer

13 months agoGive the remote_process_memory to the mc::State constructor
Martin Quinson [Mon, 13 Mar 2023 09:07:07 +0000 (10:07 +0100)]
Give the remote_process_memory to the mc::State constructor

This way, we rely a bit less on the ugly mc_model_checker singleton.

13 months agoMove another function of ModelChecker to RemoteProcessMemory
Martin Quinson [Sun, 12 Mar 2023 23:05:42 +0000 (00:05 +0100)]
Move another function of ModelChecker to RemoteProcessMemory

13 months agoMove another function out of ModelChecker
Martin Quinson [Sun, 12 Mar 2023 22:59:42 +0000 (23:59 +0100)]
Move another function out of ModelChecker

13 months agoMove a function from ModelChecker to Exploration
Martin Quinson [Sun, 12 Mar 2023 22:52:33 +0000 (23:52 +0100)]
Move a function from ModelChecker to Exploration

13 months agomove wait_for_requests() from ModelChecker to RemoteApp
Martin Quinson [Sun, 12 Mar 2023 22:31:40 +0000 (23:31 +0100)]
move wait_for_requests() from ModelChecker to RemoteApp

13 months agoInline a function in ModelChecker
Martin Quinson [Sun, 12 Mar 2023 22:10:10 +0000 (23:10 +0100)]
Inline a function in ModelChecker

13 months agoMove one method from ModelChecker to Exploration
Martin Quinson [Sun, 12 Mar 2023 22:05:06 +0000 (23:05 +0100)]
Move one method from ModelChecker to Exploration

13 months agoMove 2 functions from mc::ModelChecker to mc::RemoteApp
Martin Quinson [Sun, 12 Mar 2023 21:57:25 +0000 (22:57 +0100)]
Move 2 functions from mc::ModelChecker to mc::RemoteApp

13 months agoMake the sendsend tests at least fail fast to not hinder my workflow
Martin Quinson [Sun, 12 Mar 2023 21:35:53 +0000 (22:35 +0100)]
Make the sendsend tests at least fail fast to not hinder my workflow

13 months agoMC: rename remote/RemoteProcess to sosp/RemoteProcessMemory
Martin Quinson [Sun, 12 Mar 2023 21:16:16 +0000 (22:16 +0100)]
MC: rename remote/RemoteProcess to sosp/RemoteProcessMemory

13 months agoClean leftovers
Martin Quinson [Sun, 12 Mar 2023 20:50:18 +0000 (21:50 +0100)]
Clean leftovers

13 months agoMC: stop reading maxpid in memory, but ask it over the network instead
Martin Quinson [Sat, 11 Mar 2023 00:05:31 +0000 (01:05 +0100)]
MC: stop reading maxpid in memory, but ask it over the network instead

13 months agoOne use less of the global mc_model_checker
Martin Quinson [Fri, 10 Mar 2023 22:44:05 +0000 (23:44 +0100)]
One use less of the global mc_model_checker

13 months agoThis seems to reduce the amount of failure, but I don't know why :(
Martin Quinson [Fri, 10 Mar 2023 22:34:07 +0000 (23:34 +0100)]
This seems to reduce the amount of failure, but I don't know why :(

Not sure I know what I'm doing here :(

13 months agoFix build with -D_GLIBCXX_DEBUG [-Werror=range-loop-construct].
Arnaud Giersch [Sun, 12 Mar 2023 15:16:23 +0000 (16:16 +0100)]
Fix build with -D_GLIBCXX_DEBUG [-Werror=range-loop-construct].

13 months agoFix assert: min and max are both included in interval for MC_random.
Arnaud Giersch [Fri, 10 Mar 2023 16:08:07 +0000 (17:08 +0100)]
Fix assert: min and max are both included in interval for MC_random.

[ci-skip]

13 months agoMerge branch 'udpor-phase5' into 'master'
Martin Quinson [Fri, 10 Mar 2023 21:25:15 +0000 (21:25 +0000)]
Merge branch 'udpor-phase5' into 'master'

Phase 5 of UDPOR Integration: Implementing Conflict Checks

See merge request simgrid/simgrid!138

13 months agoTry to avoid a segfault on assert message
Martin Quinson [Fri, 10 Mar 2023 18:48:33 +0000 (19:48 +0100)]
Try to avoid a segfault on assert message

This is an attempt to fix https://framagit.org/simgrid/simgrid/-/issues/118

13 months agoAdd first test for immediate conflicts edge case
Maxwell Pirtle [Fri, 10 Mar 2023 10:15:36 +0000 (11:15 +0100)]
Add first test for immediate conflicts edge case

Detecting immediate conflicts is much more subtle
than detecting conflicts in general. The subtlety
lies in the fact that the collection of events
in the shared history of the two events under
consideration must itself be a valid configuration:
in other words, the events would not be considered
to be in immediate conflict if somewhere in their
history lies a conflict.

13 months agoAdd first batch of tests for conflict detection among events
Maxwell Pirtle [Fri, 10 Mar 2023 09:06:33 +0000 (10:06 +0100)]
Add first batch of tests for conflict detection among events

Detecting conflicts among a collection of events
is super critical to the proper functioning of
UDPOR (it is primarily used to compute en(C) for
a given configuration). Testing conflicts among
events in an event structure is very important.
Subsequent commits and MRs will continue to add
tests for detecting conflicts among collections
of events.

Detecting immediate conflicts is also critical
when it comes to determining which events UDPOR
decides to keep around after continuing its search.
Immediate conflicts are more subtle and should be
tested with great care.

13 months agore-fixed assert message with up-to-date configuration option name
Henri Casanova [Thu, 9 Mar 2023 19:08:18 +0000 (09:08 -1000)]
re-fixed assert message with up-to-date configuration option name

13 months agoAssert message fix
Henri Casanova [Thu, 9 Mar 2023 18:45:19 +0000 (08:45 -1000)]
Assert message fix

13 months agoAdd implementation for immediate conflicts
Maxwell Pirtle [Thu, 9 Mar 2023 14:34:25 +0000 (15:34 +0100)]
Add implementation for immediate conflicts

Two events are said to be in immediate conflict
if they are conflicting but if the removal of
either event from their shared history would
result in a conflict-free set. That is, if
the only conflict among the set of events in
the history of the two events `e` and `e'`
is between `e` and `e'`, then `e` and `e'`
are in immediate conflict

13 months agoRequire conflict-freedom in is_valid_configuration
Maxwell Pirtle [Thu, 9 Mar 2023 14:19:07 +0000 (15:19 +0100)]
Require conflict-freedom in is_valid_configuration

The method `EventSet::is_valid_configuration()`
was missing the condition that the set of events
need also be free of conflicts (in addition to
being causally closed)

13 months agoAdd src/.../udpor/udpor_tests_private.hpp to CMake
Maxwell Pirtle [Thu, 9 Mar 2023 13:18:56 +0000 (14:18 +0100)]
Add src/.../udpor/udpor_tests_private.hpp to CMake

13 months agoEager mode is for the first case only (thx adegomme).
Arnaud Giersch [Thu, 9 Mar 2023 13:18:32 +0000 (14:18 +0100)]
Eager mode is for the first case only (thx adegomme).

[ci-skip]

13 months agoAdd test to verify topological ordering of EventSet
Maxwell Pirtle [Thu, 9 Mar 2023 13:08:27 +0000 (14:08 +0100)]
Add test to verify topological ordering of EventSet

The topological ordering was moved into EventSet
in a prior commit since it is useful to order
events in an EventSet that reside outside of a
Configuration. This commit adds a stress test
that verifies that the topological orderings
of all possible subsets of a collection of
events obey the topological ordering invariant
after being ordered (in both directions)