Skip to content

Commit

Permalink
acc: Code improvements
Browse files Browse the repository at this point in the history
* make the is_xxx_on() macros more practical, by returning `int` instead
of `unsigned long long`, to avoid integer overflows during result check

* add more unit tests

(cherry picked from commit f635a63)
  • Loading branch information
liviuchircu committed Dec 4, 2023
1 parent 9608d8a commit 0bc0e07
Show file tree
Hide file tree
Showing 2 changed files with 74 additions and 1 deletion.
2 changes: 1 addition & 1 deletion modules/acc/acc_logic.h
Original file line number Diff line number Diff line change
Expand Up @@ -79,7 +79,7 @@

#define ACC_MASK_REF_BYTE (((unsigned long long)(0xFF)<<(8*7))

#define is_acc_flag_set(_mask, _type, _flag) ( _mask & ((_type * _flag)))
#define is_acc_flag_set(_mask, _type, _flag) (!!( _mask & (_type * _flag)))

#define is_log_flag_on(_mask, _flag) is_acc_flag_set(_mask, DO_ACC_LOG, _flag)
#define is_log_acc_on(_mask) is_log_flag_on(_mask, DO_ACC)
Expand Down
73 changes: 73 additions & 0 deletions modules/acc/test/test.c
Original file line number Diff line number Diff line change
Expand Up @@ -160,6 +160,79 @@ static void test_acc_flags(void)
ok(!is_evi_mc_on(mask), "test-acc-flags-%d", t++);
ok(!is_evi_failed_on(mask), "test-acc-flags-%d", t++);


/* 7. All backends, all flags */
flags = DO_ACC_FLAGS;
mask = acc_bitmask_set(DO_ACC_LOG|DO_ACC_AAA|DO_ACC_DB|DO_ACC_EVI, &flags);
ok(is_log_acc_on(mask), "test-acc-flags-%d", t++);
ok(is_log_cdr_on(mask), "test-acc-flags-%d", t++);
ok(is_log_mc_on(mask), "test-acc-flags-%d", t++);
ok(is_log_failed_on(mask), "test-acc-flags-%d", t++);

ok(is_aaa_acc_on(mask), "test-acc-flags-%d", t++);
ok(is_aaa_cdr_on(mask), "test-acc-flags-%d", t++);
ok(is_aaa_mc_on(mask), "test-acc-flags-%d", t++);
ok(is_aaa_failed_on(mask), "test-acc-flags-%d", t++);

ok(is_db_acc_on(mask), "test-acc-flags-%d", t++);
ok(is_db_cdr_on(mask), "test-acc-flags-%d", t++);
ok(is_db_mc_on(mask), "test-acc-flags-%d", t++);
ok(is_db_failed_on(mask), "test-acc-flags-%d", t++);

ok(is_evi_acc_on(mask), "test-acc-flags-%d", t++);
ok(is_evi_cdr_on(mask), "test-acc-flags-%d", t++);
ok(is_evi_mc_on(mask), "test-acc-flags-%d", t++);
ok(is_evi_failed_on(mask), "test-acc-flags-%d", t++);


/* 8. resets across all backends */
types = DO_ACC_LOG|DO_ACC_AAA|DO_ACC_DB|DO_ACC_EVI;
flags = DO_ACC_FAILED;
mask = acc_bitmask_reset(&types, &flags, mask);
ok(is_log_acc_on(mask), "test-acc-flags-%d", t++);
ok(is_log_cdr_on(mask), "test-acc-flags-%d", t++);
ok(is_log_mc_on(mask), "test-acc-flags-%d", t++);
ok(!is_log_failed_on(mask), "test-acc-flags-%d", t++);

ok(is_aaa_acc_on(mask), "test-acc-flags-%d", t++);
ok(is_aaa_cdr_on(mask), "test-acc-flags-%d", t++);
ok(is_aaa_mc_on(mask), "test-acc-flags-%d", t++);
ok(!is_aaa_failed_on(mask), "test-acc-flags-%d", t++);

ok(is_db_acc_on(mask), "test-acc-flags-%d", t++);
ok(is_db_cdr_on(mask), "test-acc-flags-%d", t++);
ok(is_db_mc_on(mask), "test-acc-flags-%d", t++);
ok(!is_db_failed_on(mask), "test-acc-flags-%d", t++);

ok(is_evi_acc_on(mask), "test-acc-flags-%d", t++);
ok(is_evi_cdr_on(mask), "test-acc-flags-%d", t++);
ok(is_evi_mc_on(mask), "test-acc-flags-%d", t++);
ok(!is_evi_failed_on(mask), "test-acc-flags-%d", t++);


/* 9. ... and more resets */
types = DO_ACC_LOG|DO_ACC_AAA|DO_ACC_DB|DO_ACC_EVI;
flags = DO_ACC_CDR|DO_ACC_MISSED;
mask = acc_bitmask_reset(&types, &flags, mask);
ok(!is_log_acc_on(mask), "test-acc-flags-%d", t++);
ok(!is_log_cdr_on(mask), "test-acc-flags-%d", t++);
ok(!is_log_mc_on(mask), "test-acc-flags-%d", t++);
ok(!is_log_failed_on(mask), "test-acc-flags-%d", t++);

ok(!is_aaa_acc_on(mask), "test-acc-flags-%d", t++);
ok(!is_aaa_cdr_on(mask), "test-acc-flags-%d", t++);
ok(!is_aaa_mc_on(mask), "test-acc-flags-%d", t++);
ok(!is_aaa_failed_on(mask), "test-acc-flags-%d", t++);

ok(!is_db_acc_on(mask), "test-acc-flags-%d", t++);
ok(!is_db_cdr_on(mask), "test-acc-flags-%d", t++);
ok(!is_db_mc_on(mask), "test-acc-flags-%d", t++);
ok(!is_db_failed_on(mask), "test-acc-flags-%d", t++);

ok(!is_evi_acc_on(mask), "test-acc-flags-%d", t++);
ok(!is_evi_cdr_on(mask), "test-acc-flags-%d", t++);
ok(!is_evi_mc_on(mask), "test-acc-flags-%d", t++);
ok(!is_evi_failed_on(mask), "test-acc-flags-%d", t++);
}


Expand Down

0 comments on commit 0bc0e07

Please sign in to comment.