summaryrefslogtreecommitdiff
path: root/cesar/bsu/test/utest/src/schedules.c
diff options
context:
space:
mode:
Diffstat (limited to 'cesar/bsu/test/utest/src/schedules.c')
-rw-r--r--cesar/bsu/test/utest/src/schedules.c46
1 files changed, 45 insertions, 1 deletions
diff --git a/cesar/bsu/test/utest/src/schedules.c b/cesar/bsu/test/utest/src/schedules.c
index e8811a638b..a115532ece 100644
--- a/cesar/bsu/test/utest/src/schedules.c
+++ b/cesar/bsu/test/utest/src/schedules.c
@@ -10,6 +10,7 @@
* \brief BSU schedule tests.
* \ingroup bsu
*/
+#include "config.h"
#include "common/std.h"
#include "lib/test.h"
#include "bsu/bsu.h"
@@ -321,6 +322,7 @@ test_case_track_new (test_t t)
test_fail_unless (ctx.bsu->nid_track == beacon.vf.nid);
test_fail_unless (ctx.bsu->snid_track == 0x1);
test_fail_unless (ctx.bsu->sta_avln == avln);
+ ctx.bsu->avln_tracked = true;
bsu_timer_event_process (ctx.bsu);
test_fail_unless (ctx.bsu->track_new == false);
test_fail_unless (ctx.bsu->sta_avln != &ctx.bsu->poweron);
@@ -367,6 +369,7 @@ test_case_track_new (test_t t)
test_fail_unless (ctx.bsu->snid_track == 0x1);
test_fail_unless (ctx.bsu->sta_avln == avln);
avln = test_case_track_new_beacon (t, &ctx, &beacon);
+ test_fail_unless (ctx.bsu->avln_tracked == true);
bsu_timer_event_process (ctx.bsu);
test_fail_unless (ctx.bsu->track_new == false);
test_fail_unless (ctx.bsu->sta_avln != &ctx.bsu->poweron);
@@ -406,6 +409,7 @@ test_case_track_new (test_t t)
bsu_timer_event_process (ctx.bsu);
bsu_track_avln (ctx.bsu, beacon.vf.nid, 0x1, 0x1,
beacon.bmis.mac_address.mac_address);
+ ctx.bsu->avln_tracked = true;
test_fail_unless (ctx.bsu->track_new);
bsu_timer_event_process (ctx.bsu);
test_fail_unless (ctx.bsu->track_new == false);
@@ -429,6 +433,45 @@ test_case_track_new (test_t t)
bsu_test_uninit (&ctx);
}
test_end;
+ test_begin (t, "Track new after overlap.")
+ {
+ bsu_test_init (&ctx);
+ ctx.bsu->aclf->beacon_period_tck = ctx.bsu->aclf->beacon_period_tck;
+ for (i = 0; i < COUNT (ctx.bsu->aclf->bpsd); i++)
+ ctx.bsu->aclf->bpsd[i] = i * ctx.bsu->aclf->beacon_period_tck;
+ ctx.bsu->activate = true;
+ ctx.bsu->is_sta = BSU_UPDATE_STA_TYPE_STA;
+ bsu_avln_t *avln = test_case_track_new_beacon (t, &ctx, &beacon);
+ bsu_timer_event_process (ctx.bsu);
+ bsu_track_avln (ctx.bsu, beacon.vf.nid, 0x1, 0x1,
+ beacon.bmis.mac_address.mac_address);
+ ctx.bsu->avln_tracked = true;
+ test_fail_unless (ctx.bsu->track_new);
+ bsu_timer_event_process (ctx.bsu);
+ test_fail_unless (ctx.bsu->track_new == false);
+ /* avoid recalculation of scheduler on beacon reception */
+ test_case_track_new_beacon (t, &ctx, &beacon);
+ for (i = 0; i < BSU_BEACON_SCHEDULES_NB - 1; i++)
+ {
+ test_fail_unless (
+ lesseq_mod2p32 (
+ ctx.ca.beacon_periods[i].start_date
+ + ctx.bsu->aclf->beacon_period_tck,
+ ctx.ca.beacon_periods[i + 1].start_date));
+ }
+ /* Check beacon has been modified. */
+ beacon.bmis.ps.nb = 1;
+ beacon.bmis.ps.ps[0] = beacon.bmis.ps.ps[1];
+ if (beacon.bmis.ps.ps[0].pscd)
+ test_fail_unless (beacon.bmis.ps.ps[0].pscd - 2 ==
+ avln->beacon.bmis.ps.ps[0].pscd);
+ else
+ test_fail_unless (beacon.bmis.ps.ps[0].cscd - 2 ==
+ avln->beacon.bmis.ps.ps[0].cscd);
+ bsu_test_uninit (&ctx);
+ }
+ test_end;
+
test_begin (t, "Track new for CCo")
{
bsu_test_init (&ctx);
@@ -595,7 +638,8 @@ test_suite_bsu_schedule (test_t t)
{
test_suite_begin (t, "BSU schedules");
test_case_ca_schedules (t);
- test_case_ca_schedules_intellon (t);
+ if (CONFIG_BSU_BEACON_REGIONS_PRESENT)
+ test_case_ca_schedules_intellon (t);
test_case_ca_schedules_special_allocations (t);
test_case_track_new (t);
}