<p>Neels Hofmeyr has uploaded this change for <strong>review</strong>.</p><p><a href="https://gerrit.osmocom.org/13141">View Change</a></p><pre style="font-family: monospace,monospace; white-space: pre-wrap;">tdef_test: tweak output to prepare for a fix<br><br>- Always print the state after a state transition.<br>  This shows that actually state transitions are missing for states that have<br>  no timer defined. This is a bug in tdef_test.c, to be fixed subsequently.<br><br>- Instead of total time passed since start, print the individual fake time<br>  intervals. Omit initial useless zero fake time advance.<br><br>Change-Id: Icb31af96d37741e256ff07868f3d4f5c48cdda74<br>---<br>M tests/tdef/tdef_test.c<br>M tests/tdef/tdef_test.ok<br>M tests/tdef/tdef_test_range_64bit.ok<br>3 files changed, 24 insertions(+), 21 deletions(-)<br><br></pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;">git pull ssh://gerrit.osmocom.org:29418/libosmocore refs/changes/41/13141/1</pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;"><span>diff --git a/tests/tdef/tdef_test.c b/tests/tdef/tdef_test.c</span><br><span>index f5b6413..fe2accf 100644</span><br><span>--- a/tests/tdef/tdef_test.c</span><br><span>+++ b/tests/tdef/tdef_test.c</span><br><span>@@ -287,7 +287,7 @@</span><br><span>       osmo_gettimeofday_override_add(secs, usecs); \</span><br><span>       osmo_clock_override_add(CLOCK_MONOTONIC, secs, usecs * 1000); \</span><br><span>      timersub(&osmo_gettimeofday_override_time, &fake_time_start_time, &diff); \</span><br><span style="color: hsl(0, 100%, 40%);">- printf("Total time passed: %ld.%06ld s\n", diff.tv_sec, diff.tv_usec); \</span><br><span style="color: hsl(120, 100%, 40%);">+    printf("Time passes: %ld.%06ld s\n", (long)secs, (long)usecs); \</span><br><span>   osmo_timers_prepare(); \</span><br><span>     osmo_timers_update(); \</span><br><span> } while (0)</span><br><span>@@ -303,7 +303,6 @@</span><br><span>         clock_override->tv_sec = fake_time_start_time.tv_sec;</span><br><span>     clock_override->tv_nsec = fake_time_start_time.tv_usec * 1000;</span><br><span>    osmo_clock_override_enable(CLOCK_MONOTONIC, true);</span><br><span style="color: hsl(0, 100%, 40%);">-      fake_time_passes(0, 0);</span><br><span> }</span><br><span> </span><br><span> static void print_fsm_state(struct osmo_fsm_inst *fi)</span><br><span>@@ -325,18 +324,18 @@</span><br><span>            const struct osmo_tdef_state_timeout *st = osmo_tdef_get_state_timeout(NEXT_STATE, \</span><br><span>                                                                                        test_tdef_state_timeouts); \</span><br><span>          if (!st) { \</span><br><span style="color: hsl(0, 100%, 40%);">-                    printf(" --> %s (no timer configured for this state)\n", \</span><br><span style="color: hsl(120, 100%, 40%);">+                       printf(" --> %s (no timer configured for this state)\t", \</span><br><span>                             osmo_fsm_state_name(&test_tdef_fsm, NEXT_STATE)); \</span><br><span>               } else { \</span><br><span>                   struct osmo_tdef *t = osmo_tdef_get_entry(tdefs, st->T); \</span><br><span>                        int rc = osmo_tdef_fsm_inst_state_chg(fi, NEXT_STATE, test_tdef_state_timeouts, tdefs, 999); \</span><br><span style="color: hsl(0, 100%, 40%);">-                  printf(" --> %s (configured as T%d%s %lu %s) rc=%d;\t", osmo_fsm_state_name(&test_tdef_fsm, \</span><br><span style="color: hsl(0, 100%, 40%);">-                                                                                              NEXT_STATE), \</span><br><span style="color: hsl(120, 100%, 40%);">+                    printf(" --> %s (configured as T%d%s %lu %s) rc=%d;\t", \</span><br><span style="color: hsl(120, 100%, 40%);">+                               osmo_fsm_state_name(&test_tdef_fsm, NEXT_STATE), \</span><br><span>                               st->T, st->keep_timer ? "(keep_timer)" : "", \</span><br><span>                             t? t->val : 0, t? osmo_tdef_unit_name(t->unit) : "-", \</span><br><span>                              rc); \</span><br><span style="color: hsl(0, 100%, 40%);">-                   print_fsm_state(fi); \</span><br><span>               } \</span><br><span style="color: hsl(120, 100%, 40%);">+           print_fsm_state(fi); \</span><br><span>       } while(0)</span><br><span> </span><br><span> </span><br><span>@@ -378,6 +377,8 @@</span><br><span>     fake_time_passes(23, 45678);</span><br><span>         print_fsm_state(fi);</span><br><span>         test_tdef_fsm_state_chg(tdefs, S_L);</span><br><span style="color: hsl(120, 100%, 40%);">+  test_tdef_fsm_state_chg(tdefs, S_O);</span><br><span style="color: hsl(120, 100%, 40%);">+  test_tdef_fsm_state_chg(tdefs, S_L);</span><br><span> </span><br><span>     printf("- test T=0:\n");</span><br><span>   test_tdef_fsm_state_chg(tdefs, S_O);</span><br><span>diff --git a/tests/tdef/tdef_test.ok b/tests/tdef/tdef_test.ok</span><br><span>index 6e6ba00..1acf0e6 100644</span><br><span>--- a/tests/tdef/tdef_test.ok</span><br><span>+++ b/tests/tdef/tdef_test.ok</span><br><span>@@ -110,7 +110,6 @@</span><br><span> osmo_tdef_get(7, s)      = 50</span><br><span> </span><br><span> test_tdef_state_timeout()</span><br><span style="color: hsl(0, 100%, 40%);">-Total time passed: 0.000000 s</span><br><span> state=A T=0, no timeout</span><br><span>  --> A (configured as T1 100 s) rc=0;       state=A T=1, 100.000000 s remaining</span><br><span>  --> B (configured as T2 100 ms) rc=0;        state=B T=2, 1.000000 s remaining</span><br><span>@@ -121,25 +120,27 @@</span><br><span>  --> I (configured as T9 5 m) rc=0;     state=I T=9, 300.000000 s remaining</span><br><span>  --> J (configured as T10 20 m) rc=0; state=J T=10, 1200.000000 s remaining</span><br><span> - test keep_timer:</span><br><span style="color: hsl(0, 100%, 40%);">-Total time passed: 123.045678 s</span><br><span style="color: hsl(120, 100%, 40%);">+Time passes: 123.045678 s</span><br><span> state=J T=10, 1076.954322 s remaining</span><br><span>  --> K (configured as T0(keep_timer) 1 custom-unit) rc=0;  state=K T=10, 1076.954322 s remaining</span><br><span>  --> A (configured as T1 100 s) rc=0;       state=A T=1, 100.000000 s remaining</span><br><span style="color: hsl(0, 100%, 40%);">-Total time passed: 146.091356 s</span><br><span style="color: hsl(120, 100%, 40%);">+Time passes: 23.045678 s</span><br><span> state=A T=1, 76.954322 s remaining</span><br><span>  --> K (configured as T0(keep_timer) 1 custom-unit) rc=0;      state=K T=1, 76.954322 s remaining</span><br><span>  --> A (configured as T1 100 s) rc=0;  state=A T=1, 100.000000 s remaining</span><br><span style="color: hsl(0, 100%, 40%);">-Total time passed: 169.137034 s</span><br><span style="color: hsl(120, 100%, 40%);">+Time passes: 23.045678 s</span><br><span> state=A T=1, 76.954322 s remaining</span><br><span>  --> L (configured as T123(keep_timer) 1 s) rc=0;      state=L T=123, 76.954322 s remaining</span><br><span style="color: hsl(120, 100%, 40%);">+ --> O (no timer configured for this state)    state=L T=123, 76.954322 s remaining</span><br><span style="color: hsl(120, 100%, 40%);">+ --> L (configured as T123(keep_timer) 1 s) rc=0;      state=L T=123, 76.954322 s remaining</span><br><span> - test T=0:</span><br><span style="color: hsl(0, 100%, 40%);">- --> O (no timer configured for this state)</span><br><span style="color: hsl(120, 100%, 40%);">+ --> O (no timer configured for this state)       state=L T=123, 76.954322 s remaining</span><br><span> - test no timer:</span><br><span style="color: hsl(0, 100%, 40%);">- --> X (no timer configured for this state)</span><br><span style="color: hsl(120, 100%, 40%);">+ --> X (no timer configured for this state)  state=L T=123, 76.954322 s remaining</span><br><span> - test undefined timer, using default_val arg of osmo_tdef_fsm_inst_state_chg(), here passed as 999:</span><br><span>  --> Y (configured as T666 0 -) rc=0;        state=Y T=666, 999.000000 s remaining</span><br><span> - test disallowed transition:</span><br><span style="color: hsl(0, 100%, 40%);">- --> Z (no timer configured for this state)</span><br><span style="color: hsl(120, 100%, 40%);">+ --> Z (no timer configured for this state)    state=Y T=666, 999.000000 s remaining</span><br><span>  --> B (configured as T2 100 ms) rc=0;      state=B T=2, 1.000000 s remaining</span><br><span>  --> C (configured as T3 100 m) rc=0;   state=C T=3, 6000.000000 s remaining</span><br><span>  --> D (configured as T4 100 custom-unit) rc=0;      state=D T=4, 100.000000 s remaining</span><br><span>diff --git a/tests/tdef/tdef_test_range_64bit.ok b/tests/tdef/tdef_test_range_64bit.ok</span><br><span>index bd104b6..72ac466 100644</span><br><span>--- a/tests/tdef/tdef_test_range_64bit.ok</span><br><span>+++ b/tests/tdef/tdef_test_range_64bit.ok</span><br><span>@@ -138,7 +138,6 @@</span><br><span> osmo_tdef_get(7, s)       = 50</span><br><span> </span><br><span> test_tdef_state_timeout()</span><br><span style="color: hsl(0, 100%, 40%);">-Total time passed: 0.000000 s</span><br><span> state=A T=0, no timeout</span><br><span>  --> A (configured as T1 100 s) rc=0;       state=A T=1, 100.000000 s remaining</span><br><span>  --> B (configured as T2 100 ms) rc=0;        state=B T=2, 1.000000 s remaining</span><br><span>@@ -149,23 +148,25 @@</span><br><span>  --> I (configured as T9 5 m) rc=0;     state=I T=9, 300.000000 s remaining</span><br><span>  --> J (configured as T10 20 m) rc=0; state=J T=10, 1200.000000 s remaining</span><br><span> - test keep_timer:</span><br><span style="color: hsl(0, 100%, 40%);">-Total time passed: 123.045678 s</span><br><span style="color: hsl(120, 100%, 40%);">+Time passes: 123.045678 s</span><br><span> state=J T=10, 1076.954322 s remaining</span><br><span>  --> K (configured as T0(keep_timer) 1 custom-unit) rc=0;  state=K T=10, 1076.954322 s remaining</span><br><span>  --> A (configured as T1 100 s) rc=0;       state=A T=1, 100.000000 s remaining</span><br><span style="color: hsl(0, 100%, 40%);">-Total time passed: 146.091356 s</span><br><span style="color: hsl(120, 100%, 40%);">+Time passes: 23.045678 s</span><br><span> state=A T=1, 76.954322 s remaining</span><br><span>  --> K (configured as T0(keep_timer) 1 custom-unit) rc=0;      state=K T=1, 76.954322 s remaining</span><br><span>  --> A (configured as T1 100 s) rc=0;  state=A T=1, 100.000000 s remaining</span><br><span style="color: hsl(0, 100%, 40%);">-Total time passed: 169.137034 s</span><br><span style="color: hsl(120, 100%, 40%);">+Time passes: 23.045678 s</span><br><span> state=A T=1, 76.954322 s remaining</span><br><span>  --> L (configured as T123(keep_timer) 1 s) rc=0;      state=L T=123, 76.954322 s remaining</span><br><span style="color: hsl(120, 100%, 40%);">+ --> O (no timer configured for this state)    state=L T=123, 76.954322 s remaining</span><br><span style="color: hsl(120, 100%, 40%);">+ --> L (configured as T123(keep_timer) 1 s) rc=0;      state=L T=123, 76.954322 s remaining</span><br><span> - test T=0:</span><br><span style="color: hsl(0, 100%, 40%);">- --> O (no timer configured for this state)</span><br><span style="color: hsl(120, 100%, 40%);">+ --> O (no timer configured for this state)       state=L T=123, 76.954322 s remaining</span><br><span> - test no timer:</span><br><span style="color: hsl(0, 100%, 40%);">- --> X (no timer configured for this state)</span><br><span style="color: hsl(120, 100%, 40%);">+ --> X (no timer configured for this state)  state=L T=123, 76.954322 s remaining</span><br><span> - test undefined timer, using default_val arg of osmo_tdef_fsm_inst_state_chg(), here passed as 999:</span><br><span style="color: hsl(0, 100%, 40%);">- --> Y (configured as T666 18446744073709551615 -) rc=0; state=Y T=666, 999.000000 s remaining</span><br><span style="color: hsl(120, 100%, 40%);">+ --> Y (configured as T666 0 -) rc=0; state=Y T=666, 999.000000 s remaining</span><br><span> - test large T:</span><br><span>  --> M (configured as T2147483647 0 s) rc=0;     state=M T=2147483647, no timeout</span><br><span> - test T<0:</span><br><span>@@ -369,7 +370,7 @@</span><br><span>  --> M (configured as T2147483647 18446744073709551615 s) rc=0;  state=M T=2147483647, 2147483647.000000 s remaining</span><br><span>  --> M (configured as T2147483647 0 s) rc=0;  state=M T=2147483647, no timeout</span><br><span> - test disallowed transition:</span><br><span style="color: hsl(0, 100%, 40%);">- --> Z (no timer configured for this state)</span><br><span style="color: hsl(120, 100%, 40%);">+ --> Z (no timer configured for this state) state=M T=2147483647, no timeout</span><br><span>  --> B (configured as T2 100 ms) rc=0;   state=B T=2, 1.000000 s remaining</span><br><span>  --> C (configured as T3 100 m) rc=0;   state=C T=3, 6000.000000 s remaining</span><br><span>  --> D (configured as T4 100 custom-unit) rc=0;      state=D T=4, 100.000000 s remaining</span><br><span></span><br></pre><p>To view, visit <a href="https://gerrit.osmocom.org/13141">change 13141</a>. To unsubscribe, or for help writing mail filters, visit <a href="https://gerrit.osmocom.org/settings">settings</a>.</p><div itemscope itemtype="http://schema.org/EmailMessage"><div itemscope itemprop="action" itemtype="http://schema.org/ViewAction"><link itemprop="url" href="https://gerrit.osmocom.org/13141"/><meta itemprop="name" content="View Change"/></div></div>

<div style="display:none"> Gerrit-Project: libosmocore </div>
<div style="display:none"> Gerrit-Branch: master </div>
<div style="display:none"> Gerrit-MessageType: newchange </div>
<div style="display:none"> Gerrit-Change-Id: Icb31af96d37741e256ff07868f3d4f5c48cdda74 </div>
<div style="display:none"> Gerrit-Change-Number: 13141 </div>
<div style="display:none"> Gerrit-PatchSet: 1 </div>
<div style="display:none"> Gerrit-Owner: Neels Hofmeyr <nhofmeyr@sysmocom.de> </div>