diff options
Diffstat (limited to 'tests/tdef')
-rw-r--r-- | tests/tdef/tdef_test.c | 67 | ||||
-rw-r--r-- | tests/tdef/tdef_test.err | 25 | ||||
-rw-r--r-- | tests/tdef/tdef_test.ok | 24 | ||||
-rw-r--r-- | tests/tdef/tdef_vty_config_root_test.c | 10 | ||||
-rw-r--r-- | tests/tdef/tdef_vty_config_subnode_test.c | 10 | ||||
-rw-r--r-- | tests/tdef/tdef_vty_dynamic_test.c | 10 |
6 files changed, 86 insertions, 60 deletions
diff --git a/tests/tdef/tdef_test.c b/tests/tdef/tdef_test.c index d188eed2..710a4aa0 100644 --- a/tests/tdef/tdef_test.c +++ b/tests/tdef/tdef_test.c @@ -17,10 +17,6 @@ * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License along - * with this program; if not, write to the Free Software Foundation, Inc., - * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #include <stdio.h> @@ -41,6 +37,9 @@ static struct osmo_tdef tdefs[] = { { .T=3, .default_val=50, .unit=OSMO_TDEF_M, .desc="50m" }, { .T=4, .default_val=100, .unit=OSMO_TDEF_CUSTOM, .desc="100 potatoes" }, + { .T=-5, .default_val=100, .unit=OSMO_TDEF_MS, .desc="X-100ms" }, + { .T=-6, .default_val=100, .unit=OSMO_TDEF_US, .desc="X-100us" }, + { .T=7, .default_val=50, .desc="Water Boiling Timeout", .min_val=20, .max_val=800 }, // default is .unit=OSMO_TDEF_S == 0 { .T=8, .default_val=300, .desc="Tea brewing" }, { .T=9, .default_val=5, .unit=OSMO_TDEF_M, .desc="Let tea cool down before drinking" }, @@ -87,14 +86,15 @@ static struct osmo_tdef tdefs_range[] = { printf("osmo_tdef_get(%d, %s)\t= %lu\n", T, osmo_tdef_unit_name(AS_UNIT), val); \ } while (0) -void print_tdef_info(unsigned int T) +void print_tdef_info(int T) { const struct osmo_tdef *t = osmo_tdef_get_entry(tdefs, T); if (!t) { - printf("T%d=NULL", T); + printf(OSMO_T_FMT "=NULL", OSMO_T_FMT_ARGS(T)); return; } - printf("T%d=%lu%s", T, t->val, osmo_tdef_unit_name(t->unit)); + printf(OSMO_T_FMT "=%lu%s", + OSMO_T_FMT_ARGS(T), t->val, osmo_tdef_unit_name(t->unit)); if (t->val != t->default_val) printf("(def=%lu)", t->default_val); printf("\n"); @@ -110,7 +110,7 @@ static void test_tdef_get(bool test_range) osmo_tdefs_reset(tdefs); // make all values the default for (i = 0; i < ARRAY_SIZE(tdefs)-1; i++) { - unsigned int T = tdefs[i].T; + int T = tdefs[i].T; print_tdef_info(T); for (as_unit = OSMO_TDEF_S; as_unit <= OSMO_TDEF_US; as_unit++) { print_tdef_get_short(tdefs, T, as_unit); @@ -121,7 +121,7 @@ static void test_tdef_get(bool test_range) return; for (i = 0; i < ARRAY_SIZE(tdefs_range)-1; i++) { - unsigned int T = tdefs_range[i].T; + int T = tdefs_range[i].T; print_tdef_info(T); for (as_unit = OSMO_TDEF_S; as_unit <= OSMO_TDEF_US; as_unit++) { print_tdef_get_short(tdefs_range, T, as_unit); @@ -129,7 +129,7 @@ static void test_tdef_get(bool test_range) } } -static void test_tdef_get_nonexisting() +static void test_tdef_get_nonexisting(void) { printf("\n%s()\n", __func__); @@ -140,13 +140,14 @@ static void test_tdef_get_nonexisting() print_tdef_get(tdefs, 5, OSMO_TDEF_US); } -static void test_tdef_set_and_get() +static void test_tdef_set_and_get(void) { struct osmo_tdef *t; printf("\n%s()\n", __func__); printf("setting 7 = 42\n"); t = osmo_tdef_get_entry(tdefs, 7); + OSMO_ASSERT(t != NULL); OSMO_ASSERT(osmo_tdef_val_in_range(t, 42)); t->val = 42; print_tdef_info(7); @@ -199,6 +200,8 @@ enum test_tdef_fsm_states { S_B, S_C, S_D, + S_E, + S_F, S_G, S_H, S_I, @@ -208,6 +211,7 @@ enum test_tdef_fsm_states { S_M, S_N, S_O, + /* ... gap ... */ S_X, S_Y, S_Z, @@ -219,6 +223,9 @@ static const struct osmo_tdef_state_timeout test_tdef_state_timeouts[32] = { [S_C] = { .T = 3 }, [S_D] = { .T = 4 }, + [S_E] = { .T = -5 }, + [S_F] = { .T = -6 }, + [S_G] = { .T = 7 }, [S_H] = { .T = 8 }, [S_I] = { .T = 9 }, @@ -249,31 +256,15 @@ static const struct osmo_fsm_state test_tdef_fsm_states[] = { #define DEF_STATE(NAME) \ [S_##NAME] = { \ .name = #NAME, \ - .out_state_mask = 0 \ - | S(S_A) \ - | S(S_B) \ - | S(S_C) \ - | S(S_D) \ - | S(S_G) \ - | S(S_H) \ - | S(S_I) \ - | S(S_J) \ - | S(S_K) \ - | S(S_L) \ - | S(S_M) \ - | S(S_N) \ - | S(S_O) \ - | S(S_X) \ - | S(S_Y) \ - | S(S_Z) \ - , \ + .out_state_mask = 0xffffffff, \ } DEF_STATE(A), DEF_STATE(B), DEF_STATE(C), DEF_STATE(D), - + DEF_STATE(E), + DEF_STATE(F), DEF_STATE(G), DEF_STATE(H), DEF_STATE(I), @@ -320,7 +311,7 @@ const struct timeval fake_time_start_time = { 123, 456 }; osmo_timers_update(); \ } while (0) -void fake_time_start() +void fake_time_start(void) { struct timespec *clock_override; @@ -357,9 +348,9 @@ static void print_fsm_state(struct osmo_fsm_inst *fi) osmo_fsm_state_name(&test_tdef_fsm, NEXT_STATE), rc); \ } else { \ struct osmo_tdef *t = osmo_tdef_get_entry(tdefs, st->T); \ - printf(" --> %s (configured as T%d%s %lu %s) rc=%d;\t", \ + printf(" --> %s (configured as " OSMO_T_FMT "%s %lu %s) rc=%d;\t", \ osmo_fsm_state_name(&test_tdef_fsm, NEXT_STATE), \ - st->T, st->keep_timer ? "(keep_timer)" : "", \ + OSMO_T_FMT_ARGS(st->T), st->keep_timer ? " (keep_timer)" : "", \ t? t->val : 0, t? osmo_tdef_unit_name(t->unit) : "-", \ rc); \ } \ @@ -386,7 +377,8 @@ static void test_tdef_state_timeout(bool test_range) test_tdef_fsm_state_chg(tdefs, S_B); test_tdef_fsm_state_chg(tdefs, S_C); test_tdef_fsm_state_chg(tdefs, S_D); - + test_tdef_fsm_state_chg(tdefs, S_E); + test_tdef_fsm_state_chg(tdefs, S_F); test_tdef_fsm_state_chg(tdefs, S_G); test_tdef_fsm_state_chg(tdefs, S_H); test_tdef_fsm_state_chg(tdefs, S_I); @@ -478,9 +470,16 @@ int main(int argc, char **argv) osmo_init_logging2(ctx, NULL); log_set_print_filename2(osmo_stderr_target, LOG_FILENAME_NONE); + log_set_print_level(osmo_stderr_target, 1); log_set_print_category(osmo_stderr_target, 1); + log_set_print_category_hex(osmo_stderr_target, 0); log_set_use_color(osmo_stderr_target, 0); + osmo_fsm_log_addr(false); + osmo_fsm_log_timeouts(true); + + log_set_category_filter(osmo_stderr_target, DLGLOBAL, 1, LOGL_DEBUG); + OSMO_ASSERT(osmo_fsm_register(&test_tdef_fsm) == 0); test_tdef_get(argc > 1); diff --git a/tests/tdef/tdef_test.err b/tests/tdef/tdef_test.err new file mode 100644 index 00000000..8e5860d7 --- /dev/null +++ b/tests/tdef/tdef_test.err @@ -0,0 +1,25 @@ +DLGLOBAL DEBUG tdef_test(test_tdef_state_timeout){A}: Allocated +DLGLOBAL DEBUG tdef_test(test_tdef_state_timeout){A}: State change to A (T1, 100s) +DLGLOBAL DEBUG tdef_test(test_tdef_state_timeout){A}: State change to B (T2, 100ms) +DLGLOBAL DEBUG tdef_test(test_tdef_state_timeout){B}: State change to C (T3, 3000s) +DLGLOBAL DEBUG tdef_test(test_tdef_state_timeout){C}: State change to D (T4, 100s) +DLGLOBAL DEBUG tdef_test(test_tdef_state_timeout){D}: State change to E (X5, 100ms) +DLGLOBAL DEBUG tdef_test(test_tdef_state_timeout){E}: State change to F (X6, 1ms) +DLGLOBAL DEBUG tdef_test(test_tdef_state_timeout){F}: State change to G (T7, 50s) +DLGLOBAL DEBUG tdef_test(test_tdef_state_timeout){G}: State change to H (T8, 300s) +DLGLOBAL DEBUG tdef_test(test_tdef_state_timeout){H}: State change to I (T9, 300s) +DLGLOBAL DEBUG tdef_test(test_tdef_state_timeout){I}: State change to J (T10, 1200s) +DLGLOBAL DEBUG tdef_test(test_tdef_state_timeout){J}: State change to K (keeping T10, 1076.954s remaining) +DLGLOBAL DEBUG tdef_test(test_tdef_state_timeout){K}: State change to A (T1, 100s) +DLGLOBAL DEBUG tdef_test(test_tdef_state_timeout){A}: State change to K (keeping T1, 76.954s remaining) +DLGLOBAL DEBUG tdef_test(test_tdef_state_timeout){K}: State change to A (T1, 100s) +DLGLOBAL DEBUG tdef_test(test_tdef_state_timeout){A}: State change to L (keeping T1, 76.954s remaining) +DLGLOBAL DEBUG tdef_test(test_tdef_state_timeout){L}: State change to O (no timeout) +DLGLOBAL DEBUG tdef_test(test_tdef_state_timeout){O}: State change to L (T123, 1s) +DLGLOBAL DEBUG tdef_test(test_tdef_state_timeout){L}: State change to O (no timeout) +DLGLOBAL DEBUG tdef_test(test_tdef_state_timeout){O}: State change to X (no timeout) +DLGLOBAL DEBUG tdef_test(test_tdef_state_timeout){X}: State change to Y (T666, 999s) +DLGLOBAL DEBUG tdef_test(test_tdef_state_timeout){Y}: State change to Z (no timeout) +DLGLOBAL ERROR tdef_test(test_tdef_state_timeout){Z}: transition to state B not permitted! +DLGLOBAL ERROR tdef_test(test_tdef_state_timeout){Z}: transition to state C not permitted! +DLGLOBAL ERROR tdef_test(test_tdef_state_timeout){Z}: transition to state D not permitted! diff --git a/tests/tdef/tdef_test.ok b/tests/tdef/tdef_test.ok index 4c97dabb..6ceaffcc 100644 --- a/tests/tdef/tdef_test.ok +++ b/tests/tdef/tdef_test.ok @@ -24,6 +24,18 @@ osmo_tdef_get(4, ms) = 100 osmo_tdef_get(4, m) = 100 osmo_tdef_get(4, custom-unit) = 100 osmo_tdef_get(4, us) = 100 +X5=100ms +osmo_tdef_get(-5, s) = 1 +osmo_tdef_get(-5, ms) = 100 +osmo_tdef_get(-5, m) = 1 +osmo_tdef_get(-5, custom-unit) = 100 +osmo_tdef_get(-5, us) = 100000 +X6=100us +osmo_tdef_get(-6, s) = 1 +osmo_tdef_get(-6, ms) = 1 +osmo_tdef_get(-6, m) = 1 +osmo_tdef_get(-6, custom-unit) = 100 +osmo_tdef_get(-6, us) = 100 T7=50s osmo_tdef_get(7, s) = 50 osmo_tdef_get(7, ms) = 50000 @@ -153,9 +165,11 @@ osmo_tdef_get(7, s) = 50 test_tdef_state_timeout() state=A T=0, no timeout --> A (configured as T1 100 s) rc=0; state=A T=1, 100.000000 s remaining - --> B (configured as T2 100 ms) rc=0; state=B T=2, 1.000000 s remaining + --> B (configured as T2 100 ms) rc=0; state=B T=2, 0.100000 s remaining --> C (configured as T3 50 m) rc=0; state=C T=3, 3000.000000 s remaining --> D (configured as T4 100 custom-unit) rc=0; state=D T=4, 100.000000 s remaining + --> E (configured as X5 100 ms) rc=0; state=E T=-5, 0.100000 s remaining + --> F (configured as X6 100 us) rc=0; state=F T=-6, 0.001000 s remaining --> G (configured as T7 50 s) rc=0; state=G T=7, 50.000000 s remaining --> H (configured as T8 300 s) rc=0; state=H T=8, 300.000000 s remaining --> I (configured as T9 5 m) rc=0; state=I T=9, 300.000000 s remaining @@ -163,17 +177,17 @@ state=A T=0, no timeout - test keep_timer: Time passes: 123.045678 s state=J T=10, 1076.954322 s remaining - --> K (configured as T0(keep_timer) 1 custom-unit) rc=0; state=K T=10, 1076.954322 s remaining + --> K (configured as T0 (keep_timer) 1 custom-unit) rc=0; state=K T=10, 1076.954322 s remaining --> A (configured as T1 100 s) rc=0; state=A T=1, 100.000000 s remaining Time passes: 23.045678 s state=A T=1, 76.954322 s remaining - --> K (configured as T0(keep_timer) 1 custom-unit) rc=0; state=K T=1, 76.954322 s remaining + --> K (configured as T0 (keep_timer) 1 custom-unit) rc=0; state=K T=1, 76.954322 s remaining --> A (configured as T1 100 s) rc=0; state=A T=1, 100.000000 s remaining Time passes: 23.045678 s state=A T=1, 76.954322 s remaining - --> L (configured as T123(keep_timer) 1 s) rc=0; state=L T=1, 76.954322 s remaining + --> L (configured as T123 (keep_timer) 1 s) rc=0; state=L T=1, 76.954322 s remaining --> O (no timer configured for this state) rc=0; state=O T=0, no timeout - --> L (configured as T123(keep_timer) 1 s) rc=0; state=L T=123, 1.000000 s remaining + --> L (configured as T123 (keep_timer) 1 s) rc=0; state=L T=123, 1.000000 s remaining - test T=0: --> O (no timer configured for this state) rc=0; state=O T=0, no timeout - test no timer: diff --git a/tests/tdef/tdef_vty_config_root_test.c b/tests/tdef/tdef_vty_config_root_test.c index 0472ad55..8c46d958 100644 --- a/tests/tdef/tdef_vty_config_root_test.c +++ b/tests/tdef/tdef_vty_config_root_test.c @@ -17,10 +17,6 @@ * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License along - * with this program; if not, write to the Free Software Foundation, Inc., - * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #define _GNU_SOURCE @@ -115,7 +111,7 @@ static int config_write_timer(struct vty *vty) return CMD_SUCCESS; } -static void timer_init_vty() +static void timer_init_vty(void) { /* Again, this is merely to get a vty write hook, see above. */ install_node(&timer_node, config_write_timer); @@ -127,7 +123,7 @@ static void timer_init_vty() void *root_ctx = NULL; -static void print_help() +static void print_help(void) { printf( "options:\n" " -h --help this text\n" @@ -264,7 +260,7 @@ int main(int argc, char **argv) } } - rc = telnet_init_dynif(root_ctx, NULL, vty_get_bind_addr(), 42042); + rc = telnet_init_default(root_ctx, NULL, 42042); if (rc < 0) return 2; diff --git a/tests/tdef/tdef_vty_config_subnode_test.c b/tests/tdef/tdef_vty_config_subnode_test.c index ff191502..e3e165da 100644 --- a/tests/tdef/tdef_vty_config_subnode_test.c +++ b/tests/tdef/tdef_vty_config_subnode_test.c @@ -17,10 +17,6 @@ * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License along - * with this program; if not, write to the Free Software Foundation, Inc., - * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #define _GNU_SOURCE @@ -106,7 +102,7 @@ static int config_write_gsmnet(struct vty *vty) return CMD_SUCCESS; } -static void gsmnet_init_vty() +static void gsmnet_init_vty(void) { install_node(&gsmnet_node, config_write_gsmnet); install_element(CONFIG_NODE, &cfg_net_cmd); @@ -120,7 +116,7 @@ static void gsmnet_init_vty() void *root_ctx = NULL; -static void print_help() +static void print_help(void) { printf( "options:\n" " -h --help this text\n" @@ -257,7 +253,7 @@ int main(int argc, char **argv) } } - rc = telnet_init_dynif(root_ctx, NULL, vty_get_bind_addr(), 42042); + rc = telnet_init_default(root_ctx, NULL, 42042); if (rc < 0) return 2; diff --git a/tests/tdef/tdef_vty_dynamic_test.c b/tests/tdef/tdef_vty_dynamic_test.c index 20dae535..b646c54e 100644 --- a/tests/tdef/tdef_vty_dynamic_test.c +++ b/tests/tdef/tdef_vty_dynamic_test.c @@ -17,10 +17,6 @@ * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License along - * with this program; if not, write to the Free Software Foundation, Inc., - * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #define _GNU_SOURCE @@ -183,7 +179,7 @@ static int config_write_member(struct vty *vty) return CMD_SUCCESS; } -static void member_init_vty() +static void member_init_vty(void) { install_node(&member_node, config_write_member); install_element(CONFIG_NODE, &cfg_member_cmd); @@ -194,7 +190,7 @@ static void member_init_vty() /* ------------------- THE REST is just boilerplate osmo main() ------------------- */ -static void print_help() +static void print_help(void) { printf( "options:\n" " -h --help this text\n" @@ -331,7 +327,7 @@ int main(int argc, char **argv) } } - rc = telnet_init_dynif(root_ctx, NULL, vty_get_bind_addr(), 42042); + rc = telnet_init_default(root_ctx, NULL, 42042); if (rc < 0) return 2; |