log: fsm: allow logging the timeout on state change
Add a flag that adds timeout info to osmo_fsm_inst state change logging.
To not affect unit testing, make this an opt-in feature that is disabled by
default -- mostly because osmo_fsm_inst_state_chg_keep_timer() will produce
non-deterministic logging depending on timing (logs remaining time).
Unit tests that don't verify log output and those that use fake time may also
enable this feature. Do so in fsm_test.c.
The idea is that in due course we will add osmo_fsm_log_timeouts(true) calls to
all of our production applications' main() initialization.
Change-Id: I089b81021a1a4ada1205261470da032b82d57872
diff --git a/tests/fsm/fsm_test.err b/tests/fsm/fsm_test.err
index bf474ab..13cbacd 100644
--- a/tests/fsm/fsm_test.err
+++ b/tests/fsm/fsm_test.err
@@ -3,9 +3,9 @@
[0;mTest_FSM(my_id){NULL}: Received Event EV_B
[0;mTest_FSM(my_id){NULL}: Event EV_B not permitted
[0;mTest_FSM(my_id){NULL}: Received Event EV_A
-[0;mTest_FSM(my_id){NULL}: state_chg to ONE
+[0;mTest_FSM(my_id){NULL}: State change to ONE (no timeout)
[0;mTest_FSM(my_id){ONE}: Received Event EV_B
-[0;mTest_FSM(my_id){ONE}: state_chg to TWO
+[0;mTest_FSM(my_id){ONE}: State change to TWO (T2342, 1s)
[0;mTest_FSM(my_id){TWO}: Timeout of T2342
[0;mTimer
[0;mTest_FSM(my_id){TWO}: Deallocated
@@ -83,16 +83,16 @@
[0;m
--- test_state_chg_keep_timer()
Test_FSM{NULL}: Allocated
-[0;mTest_FSM{NULL}: state_chg to ONE
-[0;mTest_FSM{ONE}: state_chg to TWO
+[0;mTest_FSM{NULL}: State change to ONE (no timeout)
+[0;mTest_FSM{ONE}: State change to TWO (no timeout)
[0;mTest_FSM{TWO}: Terminating (cause = OSMO_FSM_TERM_REQUEST)
[0;mTest_FSM{TWO}: Freeing instance
[0;mTest_FSM{TWO}: Deallocated
[0;mTotal time passed: 0.000000 s
Test_FSM{NULL}: Allocated
-[0;mTest_FSM{NULL}: state_chg to ONE
+[0;mTest_FSM{NULL}: State change to ONE (T10, 10s)
[0;mTotal time passed: 2.000342 s
-Test_FSM{ONE}: state_chg to TWO
+Test_FSM{ONE}: State change to TWO (keeping T10, 7.999s remaining)
[0;mTotal time passed: 2.000342 s
Total time passed: 9.999999 s
Total time passed: 10.000000 s
@@ -104,14 +104,14 @@
--- test_state_chg_T()
Test_FSM{NULL}: Allocated
-[0;mTest_FSM{NULL}: state_chg to ONE
-[0;mTest_FSM{ONE}: state_chg to TWO
+[0;mTest_FSM{NULL}: State change to ONE (T42, 23s)
+[0;mTest_FSM{ONE}: State change to TWO (no timeout)
[0;mTest_FSM{TWO}: Terminating (cause = OSMO_FSM_TERM_REQUEST)
[0;mTest_FSM{TWO}: Freeing instance
[0;mTest_FSM{TWO}: Deallocated
[0;mTest_FSM{NULL}: Allocated
-[0;mTest_FSM{NULL}: state_chg to ONE
-[0;mTest_FSM{ONE}: state_chg to TWO
+[0;mTest_FSM{NULL}: State change to ONE (T42, 23s)
+[0;mTest_FSM{ONE}: State change to TWO (no timeout)
[0;mTest_FSM{TWO}: Terminating (cause = OSMO_FSM_TERM_REQUEST)
[0;mTest_FSM{TWO}: Freeing instance
[0;mTest_FSM{TWO}: Deallocated