diff options
Diffstat (limited to 'tests/tdef/tdef_test.c')
-rw-r--r-- | tests/tdef/tdef_test.c | 81 |
1 files changed, 43 insertions, 38 deletions
diff --git a/tests/tdef/tdef_test.c b/tests/tdef/tdef_test.c index 9c0808ea..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> @@ -38,9 +34,12 @@ static void *ctx = NULL; static struct osmo_tdef tdefs[] = { { .T=1, .default_val=100, .desc="100s" }, { .T=2, .default_val=100, .unit=OSMO_TDEF_MS, .desc="100ms" }, - { .T=3, .default_val=100, .unit=OSMO_TDEF_M, .desc="100m" }, + { .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" }, @@ -54,6 +53,7 @@ static struct osmo_tdef tdefs[] = { { .T=1006, .default_val=0, .unit=OSMO_TDEF_S, .desc="zero s" }, { .T=1007, .default_val=0, .unit=OSMO_TDEF_M, .desc="zero m" }, { .T=1008, .default_val=0, .unit=OSMO_TDEF_CUSTOM, .desc="zero" }, + { .T=1009, .default_val=0, .unit=OSMO_TDEF_US, .desc="zero us" }, { .T=0, .default_val=1, .unit=OSMO_TDEF_CUSTOM, .desc="zero" }, @@ -86,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"); @@ -109,9 +110,9 @@ 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_CUSTOM; as_unit++) { + for (as_unit = OSMO_TDEF_S; as_unit <= OSMO_TDEF_US; as_unit++) { print_tdef_get_short(tdefs, T, as_unit); } } @@ -120,15 +121,15 @@ 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_CUSTOM; as_unit++) { + for (as_unit = OSMO_TDEF_S; as_unit <= OSMO_TDEF_US; as_unit++) { print_tdef_get_short(tdefs_range, T, as_unit); } } } -static void test_tdef_get_nonexisting() +static void test_tdef_get_nonexisting(void) { printf("\n%s()\n", __func__); @@ -136,15 +137,17 @@ static void test_tdef_get_nonexisting() print_tdef_get(tdefs, 5, OSMO_TDEF_MS); print_tdef_get(tdefs, 5, OSMO_TDEF_M); print_tdef_get(tdefs, 5, OSMO_TDEF_CUSTOM); + 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); @@ -152,6 +155,7 @@ static void test_tdef_set_and_get() print_tdef_get_short(tdefs, 7, OSMO_TDEF_S); print_tdef_get_short(tdefs, 7, OSMO_TDEF_M); print_tdef_get_short(tdefs, 7, OSMO_TDEF_CUSTOM); + print_tdef_get_short(tdefs, 7, OSMO_TDEF_US); printf("setting 7 = 420\n"); OSMO_ASSERT(osmo_tdef_set(tdefs, 7, 420, OSMO_TDEF_S) == 0); @@ -160,6 +164,7 @@ static void test_tdef_set_and_get() print_tdef_get_short(tdefs, 7, OSMO_TDEF_S); print_tdef_get_short(tdefs, 7, OSMO_TDEF_M); print_tdef_get_short(tdefs, 7, OSMO_TDEF_CUSTOM); + print_tdef_get_short(tdefs, 7, OSMO_TDEF_US); printf("setting 7 = 10 (ERANGE)\n"); OSMO_ASSERT(!osmo_tdef_val_in_range(t, 10)); @@ -169,6 +174,7 @@ static void test_tdef_set_and_get() print_tdef_get_short(tdefs, 7, OSMO_TDEF_S); print_tdef_get_short(tdefs, 7, OSMO_TDEF_M); print_tdef_get_short(tdefs, 7, OSMO_TDEF_CUSTOM); + print_tdef_get_short(tdefs, 7, OSMO_TDEF_US); printf("setting 7 = 900 (ERANGE)\n"); OSMO_ASSERT(!osmo_tdef_val_in_range(t, 900)); @@ -178,6 +184,7 @@ static void test_tdef_set_and_get() print_tdef_get_short(tdefs, 7, OSMO_TDEF_S); print_tdef_get_short(tdefs, 7, OSMO_TDEF_M); print_tdef_get_short(tdefs, 7, OSMO_TDEF_CUSTOM); + print_tdef_get_short(tdefs, 7, OSMO_TDEF_US); printf("setting 23 = 50 (EEXIST)\n"); OSMO_ASSERT(osmo_tdef_set(tdefs, 23, 50, OSMO_TDEF_S) == -EEXIST); @@ -193,6 +200,8 @@ enum test_tdef_fsm_states { S_B, S_C, S_D, + S_E, + S_F, S_G, S_H, S_I, @@ -202,6 +211,7 @@ enum test_tdef_fsm_states { S_M, S_N, S_O, + /* ... gap ... */ S_X, S_Y, S_Z, @@ -213,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 }, @@ -243,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), @@ -314,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; @@ -351,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); \ } \ @@ -380,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); @@ -471,10 +469,17 @@ int main(int argc, char **argv) ctx = talloc_named_const(NULL, 0, "tdef_test.c"); osmo_init_logging2(ctx, NULL); - log_set_print_filename(osmo_stderr_target, 0); + 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); |