Browse Source

Add support for case ids

Alois Mahdal 6 years ago
parent
commit
c1df289eff

+ 39
- 10
src/jat.sh.skel View File

18
 #     included within the log, see BEHAVIOR EVIDENCE ID section for more
18
 #     included within the log, see BEHAVIOR EVIDENCE ID section for more
19
 #     details.
19
 #     details.
20
 #
20
 #
21
+#  *  `-c CASEID`   Case ID; together with $JAT__TESTID can be used to
22
+#     uniquely identify a particular test case, with granularity up to
23
+#     single assert.  CASEID set here is joined with any CASEIDs set
24
+#     by active phase.
25
+#
21
 #  *  `-h HINT`   Human-readable description used to describe meaning of
26
 #  *  `-h HINT`   Human-readable description used to describe meaning of
22
 #     the assertion to reader.  Note that HINT should be worded in such
27
 #     the assertion to reader.  Note that HINT should be worded in such
23
 #     way that it makes claim about the reality that matches expectation.
28
 #     way that it makes claim about the reality that matches expectation.
28
 #
33
 #
29
 #  *  `-C DIR`  Change to directory DIR for duration of the phase.
34
 #  *  `-C DIR`  Change to directory DIR for duration of the phase.
30
 #
35
 #
36
+#  *  `-c CASEID`  Inherit CASEID as Case ID to all asserts in this
37
+#     phase.  Individual asserts can extend the final case id for
38
+#     extra granularity and profit.
39
+#
31
 #
40
 #
32
 # STRINGS
41
 # STRINGS
33
 # =======
42
 # =======
149
     local __jat__o_es=0
158
     local __jat__o_es=0
150
     local __jat__hint
159
     local __jat__hint
151
     local __jat__beids=()
160
     local __jat__beids=()
161
+    local __jat__caseid
152
     local __jat__etype=TEST_ERROR
162
     local __jat__etype=TEST_ERROR
153
     local __jat__r_out
163
     local __jat__r_out
154
     local __jat__r_err
164
     local __jat__r_err
159
     #
169
     #
160
     while true; do case $1 in
170
     while true; do case $1 in
161
         -b) __jat__beids+=("$2"); shift 2 || { __jat__usage "missing BEID"; return 2; } ;;
171
         -b) __jat__beids+=("$2"); shift 2 || { __jat__usage "missing BEID"; return 2; } ;;
172
+        -c) __jat__caseid="$2"; shift 2 || { __jat__usage "missing CASEID"; return 2; } ;;
162
         -h) __jat__hint=$2; shift 2 || { __jat__usage "missing HINT"; return 2; } ;;
173
         -h) __jat__hint=$2; shift 2 || { __jat__usage "missing HINT"; return 2; } ;;
163
         -e) __jat__r_err=$2; shift 2 || { __jat__usage "missing R_ERR"; return 2; } ;;
174
         -e) __jat__r_err=$2; shift 2 || { __jat__usage "missing R_ERR"; return 2; } ;;
164
         -o) __jat__r_out=$2; shift 2 || { __jat__usage "missing R_OUT"; return 2; } ;;
175
         -o) __jat__r_out=$2; shift 2 || { __jat__usage "missing R_OUT"; return 2; } ;;
188
     else
199
     else
189
         __jat__etype=FAIL
200
         __jat__etype=FAIL
190
     fi
201
     fi
191
-    __jat__assert $__jat__etype "$__jat__hint" "${__jat__beids[@]}" \
202
+    __jat__assert $__jat__etype "$__jat__hint" "$__jat__caseid" "${__jat__beids[@]}" \
192
         -- "t.cmd=${__jat__cmd[*]}" "o.es_expr=$__jat__o_es" "r.es=$__jat__r_es"
203
         -- "t.cmd=${__jat__cmd[*]}" "o.es_expr=$__jat__o_es" "r.es=$__jat__r_es"
193
     return "$__jat__r_es"
204
     return "$__jat__r_es"
194
 }
205
 }
218
     local Op        # operator
229
     local Op        # operator
219
     local OVal      # "oracle" value
230
     local OVal      # "oracle" value
220
     local hint      # log hint
231
     local hint      # log hint
232
+    local caseid    # case id
221
     local beids=()  # Behavior Evidence IDs
233
     local beids=()  # Behavior Evidence IDs
222
     local cmpes     # comparison exit status
234
     local cmpes     # comparison exit status
223
     while true; do case $1 in
235
     while true; do case $1 in
224
         -b) beids+=("$2"); shift 2 || { __jat__usage "missing BEID"; return 2; } ;;
236
         -b) beids+=("$2"); shift 2 || { __jat__usage "missing BEID"; return 2; } ;;
237
+        -c) caseid="$2"; shift 2 || { __jat__usage "missing CASEID"; return 2; } ;;
225
         -h) hint=$2; shift 2 || { __jat__usage "missing HINT"; return 2; } ;;
238
         -h) hint=$2; shift 2 || { __jat__usage "missing HINT"; return 2; } ;;
226
         *) break ;;
239
         *) break ;;
227
     esac done
240
     esac done
234
     __jat__cmp_match; cmpes=$?
247
     __jat__cmp_match; cmpes=$?
235
     case $cmpes in
248
     case $cmpes in
236
         0)
249
         0)
237
-            __jat__assert PASS "$hint" "${beids[@]}" \
250
+            __jat__assert PASS "$hint" "$caseid" "${beids[@]}" \
238
                 -- "r.val=$RVal" "t.op=$Op" "o.val=$OVal"
251
                 -- "r.val=$RVal" "t.op=$Op" "o.val=$OVal"
239
             ;;
252
             ;;
240
         1)
253
         1)
241
-            __jat__assert FAIL "$hint" "${beids[@]}" \
254
+            __jat__assert FAIL "$hint" "$caseid" "${beids[@]}" \
242
                 -- "r.val=$RVal" "t.op=$Op" "o.val=$OVal"
255
                 -- "r.val=$RVal" "t.op=$Op" "o.val=$OVal"
243
             ;;
256
             ;;
244
         *)
257
         *)
278
     # call is incomplete, the exit status will be 2.  If there is syntax error
291
     # call is incomplete, the exit status will be 2.  If there is syntax error
279
     # in CODE, the exit status will be 3.
292
     # in CODE, the exit status will be 3.
280
     #
293
     #
294
+    local __jat__caseid
281
     local __jat__code=""
295
     local __jat__code=""
282
     local __jat__r_es
296
     local __jat__r_es
283
     local __jat__r_esf
297
     local __jat__r_esf
291
     #
305
     #
292
     while true; do case $1 in
306
     while true; do case $1 in
293
         -b) __jat__beids+=("$2"); shift 2 || { __jat__usage "missing BEID"; return 2; } ;;
307
         -b) __jat__beids+=("$2"); shift 2 || { __jat__usage "missing BEID"; return 2; } ;;
308
+        -c) __jat__caseid="$2"; shift 2 || { __jat__usage "missing CASEID"; return 2; } ;;
294
         -h) __jat__hint=$2; shift 2 || { __jat__usage "missing HINT"; return 2; } ;;
309
         -h) __jat__hint=$2; shift 2 || { __jat__usage "missing HINT"; return 2; } ;;
295
         -s) __jat__r_esf=$2; shift 2 || { __jat__usage "missing R_ESF"; return 2; } ;;
310
         -s) __jat__r_esf=$2; shift 2 || { __jat__usage "missing R_ESF"; return 2; } ;;
296
         -S) __jat__o_es=$2; shift 2 || { __jat__usage "missing ES_EXPR"; return 2; } ;;
311
         -S) __jat__o_es=$2; shift 2 || { __jat__usage "missing ES_EXPR"; return 2; } ;;
318
     else
333
     else
319
         __jat__etype=FAIL
334
         __jat__etype=FAIL
320
     fi
335
     fi
321
-    __jat__assert $__jat__etype "$__jat__hint" "${__jat__beids[@]}" \
336
+    __jat__assert $__jat__etype "$__jat__hint" "$__jat__caseid" "${__jat__beids[@]}" \
322
         -- "t.code=$__jat__code" "o.es_expr=$__jat__o_es" "r.es=$__jat__r_es"
337
         -- "t.code=$__jat__code" "o.es_expr=$__jat__o_es" "r.es=$__jat__r_es"
323
     return "$__jat__r_es"
338
     return "$__jat__r_es"
324
 }
339
 }
338
     # See COMMON ARGUMENTS section for common assert options.
353
     # See COMMON ARGUMENTS section for common assert options.
339
     #
354
     #
340
     local hint      # log hint
355
     local hint      # log hint
356
+    local caseid    # case ID
341
     local beids=()  # Behavior Evidence IDs
357
     local beids=()  # Behavior Evidence IDs
342
     while true; do case $1 in
358
     while true; do case $1 in
343
         -b) beids+=("$2"); shift 2 || { __jat__usage "missing BEID"; return 2; } ;;
359
         -b) beids+=("$2"); shift 2 || { __jat__usage "missing BEID"; return 2; } ;;
360
+        -c) caseid="$2"; shift 2 || { __jat__usage "missing CASEID"; return 2; } ;;
344
         -h) hint=$2; shift 2 || { __jat__usage "missing HINT"; return 2; } ;;
361
         -h) hint=$2; shift 2 || { __jat__usage "missing HINT"; return 2; } ;;
345
         *) break ;;
362
         *) break ;;
346
     esac done
363
     esac done
347
     test -n "$1" && { __jat__usage "extra arguments: $*"; return 2; }
364
     test -n "$1" && { __jat__usage "extra arguments: $*"; return 2; }
348
     debug -v hint beids
365
     debug -v hint beids
349
-    __jat__assert FAIL "$hint" "${beids[@]}"
366
+    __jat__assert FAIL "$hint" "$caseid" "${beids[@]}"
350
 }
367
 }
351
 
368
 
352
 jat__filebackup() {
369
 jat__filebackup() {
536
     #
553
     #
537
     local hint      # log hint
554
     local hint      # log hint
538
     local beids=()  # Behavior Evidence IDs
555
     local beids=()  # Behavior Evidence IDs
556
+    local caseid    # case ID
539
     while true; do case $1 in
557
     while true; do case $1 in
540
         -b) beids+=("$2"); shift 2 || { __jat__usage "missing BEID"; return 2; } ;;
558
         -b) beids+=("$2"); shift 2 || { __jat__usage "missing BEID"; return 2; } ;;
559
+        -c) caseid="$2"; shift 2 || { __jat__usage "missing CASEID"; return 2; } ;;
541
         -h) hint=$2; shift 2 || { __jat__usage "missing HINT"; return 2; } ;;
560
         -h) hint=$2; shift 2 || { __jat__usage "missing HINT"; return 2; } ;;
542
         *) break ;;
561
         *) break ;;
543
     esac done
562
     esac done
544
     test -n "$1" && { __jat__usage "extra arguments: $*"; return 2; }
563
     test -n "$1" && { __jat__usage "extra arguments: $*"; return 2; }
545
     debug -v hint beids
564
     debug -v hint beids
546
-    __jat__assert PASS "$hint" "${beids[@]}"
565
+    __jat__assert PASS "$hint" "$caseid" "${beids[@]}"
547
 }
566
 }
548
 
567
 
549
 jat__promise_asserts() {
568
 jat__promise_asserts() {
555
         __jat__usage "no NUM?"
574
         __jat__usage "no NUM?"
556
         return 2
575
         return 2
557
     }
576
     }
558
-    __jat__log_event PROMISE "assert number: $num" \
577
+    __jat__log_event PROMISE "assert number: $num" "" \
559
         -- "num=$num"
578
         -- "num=$num"
560
 }
579
 }
561
 
580
 
576
     export JAT__YLOG
595
     export JAT__YLOG
577
     debug -v reload __JAT__SDIR
596
     debug -v reload __JAT__SDIR
578
     if $reload; then
597
     if $reload; then
579
-        __jat__log_event SINFO "reloaded session" \
598
+        __jat__log_event SINFO "reloaded session" "" \
580
             -- \
599
             -- \
581
             "JAT__LOG_FMT=$__JAT__LOG_FMT" \
600
             "JAT__LOG_FMT=$__JAT__LOG_FMT" \
582
             "JAT__VERSION=$__JAT__SELF_VERSION"
601
             "JAT__VERSION=$__JAT__SELF_VERSION"
790
     #
809
     #
791
     # Usage:
810
     # Usage:
792
     #
811
     #
793
-    #     __jat__log_event ETYPE HINT [BEID].. -- [KEY=VALUE]..
812
+    #     __jat__log_event ETYPE HINT CASEID [BEID].. -- [KEY=VALUE]..
794
     #
813
     #
795
     # ETYPE can be FAIL, PASS, TEST_ERROR or SINFO (the latter two
814
     # ETYPE can be FAIL, PASS, TEST_ERROR or SINFO (the latter two
796
     # are for events unrelated to SUT, like internal errors or
815
     # are for events unrelated to SUT, like internal errors or
807
     # is relevant to test method, result or oracle, respectively.
826
     # is relevant to test method, result or oracle, respectively.
808
     local etype=$1; shift
827
     local etype=$1; shift
809
     local hint=$1;    shift
828
     local hint=$1;    shift
829
+    local acaseid=$1; shift
810
     local arg
830
     local arg
811
     local beids=()
831
     local beids=()
812
     local pairs=()
832
     local pairs=()
813
     local real_beids=()
833
     local real_beids=()
834
+    local caseid="$JAT__TESTID"
835
+    local pcaseid
814
     local reading=beids
836
     local reading=beids
815
     local pair
837
     local pair
816
     local origin=${FUNCNAME[1]}
838
     local origin=${FUNCNAME[1]}
839
+    pcaseid=$(__jat__sd_keyR P.caseid)
840
+    test -n "$pcaseid" && caseid+=":$pcaseid"
841
+    test -n "$acaseid" && caseid+=":$acaseid"
817
     case $etype in
842
     case $etype in
818
         PASS|FAIL|SINFO|TEST_ERROR|TEST_WARNING|PROMISE) : ;;
843
         PASS|FAIL|SINFO|TEST_ERROR|TEST_WARNING|PROMISE) : ;;
819
         *)  __jat__show_error "bad ETYPE, changing to TEST_ERROR: $etype"
844
         *)  __jat__show_error "bad ETYPE, changing to TEST_ERROR: $etype"
882
         echo "    origin: $origin"
907
         echo "    origin: $origin"
883
         echo "    etype: $etype"
908
         echo "    etype: $etype"
884
         echo "    stamp: $(__jat__newstamp)"
909
         echo "    stamp: $(__jat__newstamp)"
910
+        echo "    caseid: $caseid"
885
         __jat__yamls hint "$hint"
911
         __jat__yamls hint "$hint"
886
         __jat__yamla beids "${real_beids[@]}"
912
         __jat__yamla beids "${real_beids[@]}"
887
         __jat__yamld data "${pairs[@]}"
913
         __jat__yamld data "${pairs[@]}"
919
     local type      # phase name
945
     local type      # phase name
920
     local name      # ^^ name
946
     local name      # ^^ name
921
     local pdir      # ^^ directory
947
     local pdir      # ^^ directory
948
+    local pcaseid   # ^^ case id, if assigned
922
     local oldphase  # current phase id
949
     local oldphase  # current phase id
923
     while true; do case $1 in
950
     while true; do case $1 in
924
         -t) type="$2"; shift 2 || return 2 ;;
951
         -t) type="$2"; shift 2 || return 2 ;;
952
+        -c) pcaseid="$2"; shift 2 || return 2 ;;
925
         -C) pdir="$2"; shift 2 || return 2 ;;
953
         -C) pdir="$2"; shift 2 || return 2 ;;
926
         *)  break ;;
954
         *)  break ;;
927
     esac done
955
     esac done
935
     __jat__sd_keyw phase "$(__jat__bumpid phasid)"
963
     __jat__sd_keyw phase "$(__jat__bumpid phasid)"
936
     __jat__sd_keyw P.type "$type"
964
     __jat__sd_keyw P.type "$type"
937
     __jat__sd_keyw P.name "$name"
965
     __jat__sd_keyw P.name "$name"
966
+    __jat__sd_keyw P.caseid "$pcaseid"
938
     __jat__show_pstart "$name"
967
     __jat__show_pstart "$name"
939
     __jat__log_event SINFO
968
     __jat__log_event SINFO
940
     test -n "$pdir" && {
969
     test -n "$pdir" && {
1168
     for patt in "${patts[@]}"; do
1197
     for patt in "${patts[@]}"; do
1169
         __jat__show_error "usage: $parent $patt"
1198
         __jat__show_error "usage: $parent $patt"
1170
     done
1199
     done
1171
-    __jat__log_event TEST_ERROR "bad usage: $parent()" \
1200
+    __jat__log_event TEST_ERROR "bad usage: $parent()" "" \
1172
         -- "PATTERNS=${patts[*]}"
1201
         -- "PATTERNS=${patts[*]}"
1173
 }
1202
 }
1174
 
1203
 

+ 8
- 0
tests/basic/oracle/ylog_both.stdout View File

9
         origin: jat__sinit
9
         origin: jat__sinit
10
         etype: SINFO
10
         etype: SINFO
11
         stamp: time-2
11
         stamp: time-2
12
+        caseid: _jat_anon_test_
12
         hint: |-
13
         hint: |-
13
             started new session
14
             started new session
14
         beids: []
15
         beids: []
21
         origin: __jat__pstart
22
         origin: __jat__pstart
22
         etype: SINFO
23
         etype: SINFO
23
         stamp: time-3
24
         stamp: time-3
25
+        caseid: _jat_anon_test_
24
         hint: ~
26
         hint: ~
25
         beids: []
27
         beids: []
26
         data: {}
28
         data: {}
32
         origin: jat__log_info
34
         origin: jat__log_info
33
         etype: SINFO
35
         etype: SINFO
34
         stamp: time-4
36
         stamp: time-4
37
+        caseid: _jat_anon_test_
35
         hint: |-
38
         hint: |-
36
             CMD: true
39
             CMD: true
37
         beids: []
40
         beids: []
44
         origin: __jat__assert
47
         origin: __jat__assert
45
         etype: PASS
48
         etype: PASS
46
         stamp: time-5
49
         stamp: time-5
50
+        caseid: _jat_anon_test_
47
         hint: |-
51
         hint: |-
48
             true is true
52
             true is true
49
         beids: []
53
         beids: []
62
         origin: jat__log_info
66
         origin: jat__log_info
63
         etype: SINFO
67
         etype: SINFO
64
         stamp: time-6
68
         stamp: time-6
69
+        caseid: _jat_anon_test_
65
         hint: |-
70
         hint: |-
66
             CMD: false
71
             CMD: false
67
         beids: []
72
         beids: []
74
         origin: __jat__assert
79
         origin: __jat__assert
75
         etype: FAIL
80
         etype: FAIL
76
         stamp: time-7
81
         stamp: time-7
82
+        caseid: _jat_anon_test_
77
         hint: |-
83
         hint: |-
78
             false is true
84
             false is true
79
         beids: []
85
         beids: []
92
         origin: jat__pend
98
         origin: jat__pend
93
         etype: SINFO
99
         etype: SINFO
94
         stamp: time-8
100
         stamp: time-8
101
+        caseid: _jat_anon_test_
95
         hint: ~
102
         hint: ~
96
         beids: []
103
         beids: []
97
         data: {}
104
         data: {}
103
         origin: jat__sfinish
110
         origin: jat__sfinish
104
         etype: SINFO
111
         etype: SINFO
105
         stamp: time-9
112
         stamp: time-9
113
+        caseid: _jat_anon_test_
106
         hint: |-
114
         hint: |-
107
             finishing session
115
             finishing session
108
         beids: []
116
         beids: []

+ 8
- 0
tests/basic/oracle/ylog_fail.stdout View File

9
         origin: jat__sinit
9
         origin: jat__sinit
10
         etype: SINFO
10
         etype: SINFO
11
         stamp: time-2
11
         stamp: time-2
12
+        caseid: _jat_anon_test_
12
         hint: |-
13
         hint: |-
13
             started new session
14
             started new session
14
         beids: []
15
         beids: []
21
         origin: __jat__pstart
22
         origin: __jat__pstart
22
         etype: SINFO
23
         etype: SINFO
23
         stamp: time-3
24
         stamp: time-3
25
+        caseid: _jat_anon_test_
24
         hint: ~
26
         hint: ~
25
         beids: []
27
         beids: []
26
         data: {}
28
         data: {}
32
         origin: jat__log_info
34
         origin: jat__log_info
33
         etype: SINFO
35
         etype: SINFO
34
         stamp: time-4
36
         stamp: time-4
37
+        caseid: _jat_anon_test_
35
         hint: |-
38
         hint: |-
36
             CMD: true
39
             CMD: true
37
         beids: []
40
         beids: []
44
         origin: __jat__assert
47
         origin: __jat__assert
45
         etype: FAIL
48
         etype: FAIL
46
         stamp: time-5
49
         stamp: time-5
50
+        caseid: _jat_anon_test_
47
         hint: |-
51
         hint: |-
48
             true is false
52
             true is false
49
         beids: []
53
         beids: []
62
         origin: jat__log_info
66
         origin: jat__log_info
63
         etype: SINFO
67
         etype: SINFO
64
         stamp: time-6
68
         stamp: time-6
69
+        caseid: _jat_anon_test_
65
         hint: |-
70
         hint: |-
66
             CMD: false
71
             CMD: false
67
         beids: []
72
         beids: []
74
         origin: __jat__assert
79
         origin: __jat__assert
75
         etype: FAIL
80
         etype: FAIL
76
         stamp: time-7
81
         stamp: time-7
82
+        caseid: _jat_anon_test_
77
         hint: |-
83
         hint: |-
78
             false is true
84
             false is true
79
         beids: []
85
         beids: []
92
         origin: jat__pend
98
         origin: jat__pend
93
         etype: SINFO
99
         etype: SINFO
94
         stamp: time-8
100
         stamp: time-8
101
+        caseid: _jat_anon_test_
95
         hint: ~
102
         hint: ~
96
         beids: []
103
         beids: []
97
         data: {}
104
         data: {}
103
         origin: jat__sfinish
110
         origin: jat__sfinish
104
         etype: SINFO
111
         etype: SINFO
105
         stamp: time-9
112
         stamp: time-9
113
+        caseid: _jat_anon_test_
106
         hint: |-
114
         hint: |-
107
             finishing session
115
             finishing session
108
         beids: []
116
         beids: []

+ 8
- 0
tests/basic/oracle/ylog_pass.stdout View File

9
         origin: jat__sinit
9
         origin: jat__sinit
10
         etype: SINFO
10
         etype: SINFO
11
         stamp: time-2
11
         stamp: time-2
12
+        caseid: _jat_anon_test_
12
         hint: |-
13
         hint: |-
13
             started new session
14
             started new session
14
         beids: []
15
         beids: []
21
         origin: __jat__pstart
22
         origin: __jat__pstart
22
         etype: SINFO
23
         etype: SINFO
23
         stamp: time-3
24
         stamp: time-3
25
+        caseid: _jat_anon_test_
24
         hint: ~
26
         hint: ~
25
         beids: []
27
         beids: []
26
         data: {}
28
         data: {}
32
         origin: jat__log_info
34
         origin: jat__log_info
33
         etype: SINFO
35
         etype: SINFO
34
         stamp: time-4
36
         stamp: time-4
37
+        caseid: _jat_anon_test_
35
         hint: |-
38
         hint: |-
36
             CMD: true
39
             CMD: true
37
         beids: []
40
         beids: []
44
         origin: __jat__assert
47
         origin: __jat__assert
45
         etype: PASS
48
         etype: PASS
46
         stamp: time-5
49
         stamp: time-5
50
+        caseid: _jat_anon_test_
47
         hint: |-
51
         hint: |-
48
             true is true
52
             true is true
49
         beids: []
53
         beids: []
62
         origin: jat__log_info
66
         origin: jat__log_info
63
         etype: SINFO
67
         etype: SINFO
64
         stamp: time-6
68
         stamp: time-6
69
+        caseid: _jat_anon_test_
65
         hint: |-
70
         hint: |-
66
             CMD: false
71
             CMD: false
67
         beids: []
72
         beids: []
74
         origin: __jat__assert
79
         origin: __jat__assert
75
         etype: PASS
80
         etype: PASS
76
         stamp: time-7
81
         stamp: time-7
82
+        caseid: _jat_anon_test_
77
         hint: |-
83
         hint: |-
78
             false is false
84
             false is false
79
         beids: []
85
         beids: []
92
         origin: jat__pend
98
         origin: jat__pend
93
         etype: SINFO
99
         etype: SINFO
94
         stamp: time-8
100
         stamp: time-8
101
+        caseid: _jat_anon_test_
95
         hint: ~
102
         hint: ~
96
         beids: []
103
         beids: []
97
         data: {}
104
         data: {}
103
         origin: jat__sfinish
110
         origin: jat__sfinish
104
         etype: SINFO
111
         etype: SINFO
105
         stamp: time-9
112
         stamp: time-9
113
+        caseid: _jat_anon_test_
106
         hint: |-
114
         hint: |-
107
             finishing session
115
             finishing session
108
         beids: []
116
         beids: []