Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Add a test for Semaphores + DPOR
authorMartin Quinson <martin.quinson@ens-rennes.fr>
Thu, 3 Mar 2022 13:40:26 +0000 (14:40 +0100)
committerMartin Quinson <martin.quinson@ens-rennes.fr>
Thu, 3 Mar 2022 13:40:26 +0000 (14:40 +0100)
examples/cpp/CMakeLists.txt
examples/cpp/synchro-semaphore/s4u-mc-synchro-semaphore.tesh [new file with mode: 0644]

index 5ff7e04..86ea660 100644 (file)
@@ -50,7 +50,7 @@ if(SIMGRID_HAVE_MC)
   endif()
 
   # Hijack some regular tests to run them on top of the MC
-  foreach (example synchro-mutex)
+  foreach (example synchro-mutex synchro-semaphore)
     ADD_TESH(s4u-mc-${example} 
                        --setenv bindir=${CMAKE_CURRENT_BINARY_DIR}/${example}
                        --setenv libdir=${CMAKE_BINARY_DIR}/lib
diff --git a/examples/cpp/synchro-semaphore/s4u-mc-synchro-semaphore.tesh b/examples/cpp/synchro-semaphore/s4u-mc-synchro-semaphore.tesh
new file mode 100644 (file)
index 0000000..cd5e685
--- /dev/null
@@ -0,0 +1,78 @@
+#!/usr/bin/env tesh
+
+$ ${bindir:=.}/../../../bin/simgrid-mc --log=mc_safety.thres:verbose --log=root.fmt="[Checker]%e%m%n" -- ${bindir:=.}/s4u-synchro-semaphore --log=sem_test.thres:critical --log=root.fmt="[App%e%e%e%e]%e%m%n"
+> [Checker] Start a DFS exploration. Reduction is: dpor.
+> [Checker] Execute 1: SEM_LOCK(semaphore: 0) (stack depth: 1, state: 1, 0 interleaves)
+> [Checker] Execute 1: SEM_WAIT(semaphore: 0, granted: yes) (stack depth: 2, state: 2, 0 interleaves)
+> [Checker] Execute 1: SEM_UNLOCK(semaphore: 1) (stack depth: 3, state: 3, 0 interleaves)
+> [Checker] Execute 1: SEM_LOCK(semaphore: 0) (stack depth: 4, state: 4, 0 interleaves)
+> [Checker] Execute 2: SEM_LOCK(semaphore: 1) (stack depth: 5, state: 5, 0 interleaves)
+> [Checker] Execute 2: SEM_WAIT(semaphore: 1, granted: yes) (stack depth: 6, state: 6, 0 interleaves)
+> [Checker] Execute 2: SEM_UNLOCK(semaphore: 0) (stack depth: 7, state: 7, 0 interleaves)
+> [Checker] Execute 1: SEM_WAIT(semaphore: 0, granted: yes) (stack depth: 8, state: 8, 0 interleaves)
+> [Checker] Execute 1: SEM_UNLOCK(semaphore: 1) (stack depth: 9, state: 9, 0 interleaves)
+> [Checker] Execute 1: SEM_LOCK(semaphore: 0) (stack depth: 10, state: 10, 0 interleaves)
+> [Checker] Execute 2: SEM_LOCK(semaphore: 1) (stack depth: 11, state: 11, 0 interleaves)
+> [Checker] Execute 2: SEM_WAIT(semaphore: 1, granted: yes) (stack depth: 12, state: 12, 0 interleaves)
+> [Checker] Execute 2: SEM_UNLOCK(semaphore: 0) (stack depth: 13, state: 13, 0 interleaves)
+> [Checker] Execute 1: SEM_WAIT(semaphore: 0, granted: yes) (stack depth: 14, state: 14, 0 interleaves)
+> [Checker] Execute 1: SEM_UNLOCK(semaphore: 1) (stack depth: 15, state: 15, 0 interleaves)
+> [Checker] Execute 1: SEM_LOCK(semaphore: 0) (stack depth: 16, state: 16, 0 interleaves)
+> [Checker] Execute 2: SEM_LOCK(semaphore: 1) (stack depth: 17, state: 17, 0 interleaves)
+> [Checker] Execute 2: SEM_WAIT(semaphore: 1, granted: yes) (stack depth: 18, state: 18, 0 interleaves)
+> [Checker] Execute 2: SEM_UNLOCK(semaphore: 0) (stack depth: 19, state: 19, 0 interleaves)
+> [Checker] Execute 1: SEM_WAIT(semaphore: 0, granted: yes) (stack depth: 20, state: 20, 0 interleaves)
+> [Checker] Execute 1: SEM_UNLOCK(semaphore: 1) (stack depth: 21, state: 21, 0 interleaves)
+> [Checker] Execute 2: SEM_LOCK(semaphore: 1) (stack depth: 22, state: 22, 0 interleaves)
+> [Checker] Execute 2: SEM_WAIT(semaphore: 1, granted: yes) (stack depth: 23, state: 23, 0 interleaves)
+> [Checker] Execute 2: SEM_UNLOCK(semaphore: 0) (stack depth: 24, state: 24, 0 interleaves)
+> [Checker] Backtracking from 1;1;1;1;2;2;2;1;1;1;2;2;2;1;1;1;2;2;2;1;1;2;2;2;0
+> [Checker] INDEPENDENT Transitions:
+> [Checker]   SEM_UNLOCK(semaphore: 1) (state=21)
+> [Checker]   SEM_LOCK(semaphore: 1) (state=22)
+> [Checker] INDEPENDENT Transitions:
+> [Checker]   SEM_WAIT(semaphore: 0, granted: yes) (state=20)
+> [Checker]   SEM_LOCK(semaphore: 1) (state=22)
+> [Checker] Dependent Transitions:
+> [Checker]   SEM_UNLOCK(semaphore: 0) (state=19)
+> [Checker]   SEM_WAIT(semaphore: 0, granted: yes) (state=20)
+> [Checker] Backtracking from 1;1;1;1;2;2;2;1;1;1;2;2;2;1;1;1;2;2;2
+> [Checker] INDEPENDENT Transitions:
+> [Checker]   SEM_LOCK(semaphore: 0) (state=16)
+> [Checker]   SEM_LOCK(semaphore: 1) (state=17)
+> [Checker] INDEPENDENT Transitions:
+> [Checker]   SEM_UNLOCK(semaphore: 1) (state=15)
+> [Checker]   SEM_LOCK(semaphore: 1) (state=17)
+> [Checker] INDEPENDENT Transitions:
+> [Checker]   SEM_WAIT(semaphore: 0, granted: yes) (state=14)
+> [Checker]   SEM_LOCK(semaphore: 1) (state=17)
+> [Checker] Dependent Transitions:
+> [Checker]   SEM_UNLOCK(semaphore: 0) (state=13)
+> [Checker]   SEM_WAIT(semaphore: 0, granted: yes) (state=14)
+> [Checker] Backtracking from 1;1;1;1;2;2;2;1;1;1;2;2;2
+> [Checker] INDEPENDENT Transitions:
+> [Checker]   SEM_LOCK(semaphore: 0) (state=10)
+> [Checker]   SEM_LOCK(semaphore: 1) (state=11)
+> [Checker] INDEPENDENT Transitions:
+> [Checker]   SEM_UNLOCK(semaphore: 1) (state=9)
+> [Checker]   SEM_LOCK(semaphore: 1) (state=11)
+> [Checker] INDEPENDENT Transitions:
+> [Checker]   SEM_WAIT(semaphore: 0, granted: yes) (state=8)
+> [Checker]   SEM_LOCK(semaphore: 1) (state=11)
+> [Checker] Dependent Transitions:
+> [Checker]   SEM_UNLOCK(semaphore: 0) (state=7)
+> [Checker]   SEM_WAIT(semaphore: 0, granted: yes) (state=8)
+> [Checker] Backtracking from 1;1;1;1;2;2;2
+> [Checker] INDEPENDENT Transitions:
+> [Checker]   SEM_LOCK(semaphore: 0) (state=4)
+> [Checker]   SEM_LOCK(semaphore: 1) (state=5)
+> [Checker] INDEPENDENT Transitions:
+> [Checker]   SEM_UNLOCK(semaphore: 1) (state=3)
+> [Checker]   SEM_LOCK(semaphore: 1) (state=5)
+> [Checker] INDEPENDENT Transitions:
+> [Checker]   SEM_WAIT(semaphore: 0, granted: yes) (state=2)
+> [Checker]   SEM_LOCK(semaphore: 1) (state=5)
+> [Checker] INDEPENDENT Transitions:
+> [Checker]   SEM_LOCK(semaphore: 0) (state=1)
+> [Checker]   SEM_LOCK(semaphore: 1) (state=5)
+> [Checker] DFS exploration ended. 25 unique states visited; 4 backtracks (64 transition replays, 36 states visited overall)