summaryrefslogtreecommitdiff
path: root/cesar/bsu/test/utest/src
diff options
context:
space:
mode:
Diffstat (limited to 'cesar/bsu/test/utest/src')
-rw-r--r--cesar/bsu/test/utest/src/bsut.c65
-rw-r--r--cesar/bsu/test/utest/src/tests.c2
2 files changed, 65 insertions, 2 deletions
diff --git a/cesar/bsu/test/utest/src/bsut.c b/cesar/bsu/test/utest/src/bsut.c
index e78324c15f..616c9618e8 100644
--- a/cesar/bsu/test/utest/src/bsut.c
+++ b/cesar/bsu/test/utest/src/bsut.c
@@ -18,6 +18,7 @@
#include <string.h>
#include "bsu/inc/bsu.h"
#include "bsu/inc/context.h"
+#include "bsu/inc/interface.h"
void
bsu_timer_event_process (void *ud);
@@ -37,7 +38,6 @@ test_case_bsu_process (test_t test)
test_case_begin (test, "BSU process");
test_begin (test, "Process function on neighbour beacon")
{
- t.bsu->sta_avln = &t.bsu->avlns[0];
bsu_beacon_t beacon_neighbour;
pb_beacon_t *bneighbour;
bsu_beacon_t beacon;
@@ -82,6 +82,7 @@ test_case_bsu_process (test_t test)
test_fail_unless (t.bsu->avlns[0].sync.beacon_nb == 2);
blk_release_desc ((blk_t*) bneighbour);
/* Our AVLN. */
+ t.mac_config.tei = 1;
bsu_track_avln (0x2, 0x5, t.mac_config.tei,
MAC_COEXISTENCE_AV_ONLY_MODE);
bsu_test_create_beacon (&t, &beacon);
@@ -110,6 +111,67 @@ test_case_bsu_process (test_t test)
blk_release_desc ((blk_t*) b);
}
test_end;
+ test_begin (test, "Central beacon received with discover request")
+ {
+ bsu_beacon_t beacon;
+ bsu_test_create_beacon (&t, &beacon);
+ pb_beacon_t *b;
+ pbproc_tx_beacon_params_t btx;
+ pbproc_rx_beacon_params_t brx;
+ brx.snid = 0x2;
+ b = bsu_beacon_write (&beacon, BSU_BEACON_TYPE_CENTRAL, &t.mac_config,
+ &btx);
+ /* Change MAC config TEI for the test. */
+ bsu_beacon_track_info_t tinfo;
+ bsu_beacon_read_track_info (b, &tinfo);
+ bsu_track_avln (tinfo.nid, brx.snid, tinfo.tei, beacon.vf.hm);
+ t.mac_config.tei = beacon.bmis.discover.tei;
+ memset (&t.sar, 0, sizeof (bsu_test_sar_t));
+ bsu_test_upper_layer_beacon_received_init (&t);
+ bsu_beacon_recv (t.bsu, b, &brx);
+ /* Discover beacon sent ? */
+ test_fail_unless (t.sar.beacon != NULL);
+ test_fail_unless (t.sar.mfs != NULL);
+ test_fail_unless (t.sar.mfs->common.lid == MAC_LID_DISCOVER);
+ /* Upper layer receives it ? */
+ test_fail_unless (t.ul.beacon == t.sar.beacon);
+ test_fail_unless (t.ul.beacon->next);
+ blk_release_desc ((blk_t*) t.ul.beacon->next);
+ blk_release_desc ((blk_t*) t.ul.beacon);
+ }
+ test_end;
+ bsu_test_uninit (&t);
+}
+
+void
+test_case_bsu_process_sta_is_cco (test_t test)
+{
+ test_case_begin (test, "STA is CCO");
+ bsu_test_t t;
+ bsu_test_init (&t);
+ test_begin (test, "Receive Discover beacon")
+ {
+ bsu_beacon_t beacon;
+ bsu_test_create_beacon (&t, &beacon);
+ bsu_update (&beacon, BSU_UPDATE_STA_TYPE_CCO);
+ pb_beacon_t *b;
+ pbproc_tx_beacon_params_t btx;
+ pbproc_rx_beacon_params_t brx;
+ brx.snid = 0x2;
+ b = bsu_beacon_write (&beacon, BSU_BEACON_TYPE_CENTRAL, &t.mac_config,
+ &btx);
+ bool ok = bsu_beacon_process (t.bsu, b, &brx);
+ test_fail_unless (ok == true);
+ test_fail_unless (t.bsu->sta_avln->sync.init == false);
+ blk_release_desc ((blk_t*) b);
+ b = bsu_beacon_write (&beacon, BSU_BEACON_TYPE_DISCOVER,
+ &t.mac_config, &btx);
+ ok = bsu_beacon_process (t.bsu, b, &brx);
+ test_fail_unless (ok == true);
+ test_fail_unless (t.bsu->sta_avln->sync.init == false);
+ blk_release_desc ((blk_t*) b);
+ }
+ test_end;
bsu_test_uninit (&t);
}
@@ -541,6 +603,7 @@ test_suite_bsu (test_t t)
test_case_bsu_activate (t);
test_case_bsu_power_on (t);
test_case_bsu_process (t);
+ test_case_bsu_process_sta_is_cco (t);
test_case_bsu_update (t);
test_case_bsu_timer_event (t);
test_case_bsu_persistent_schedules_update (t);
diff --git a/cesar/bsu/test/utest/src/tests.c b/cesar/bsu/test/utest/src/tests.c
index 82fbf9a2ee..c185da0f8b 100644
--- a/cesar/bsu/test/utest/src/tests.c
+++ b/cesar/bsu/test/utest/src/tests.c
@@ -56,7 +56,7 @@ bsu_test_init (bsu_test_t *ctx)
bsu_init_beacon_cb (bsu_test_upper_layer_beacon_received, ctx);
/* Warn just for the test. */
memset (&ctx->bsu->beacon, 0, sizeof (bsu_beacon_t));
- ctx->bsu->sta_avln = &ctx->bsu->avlns[0];
+ ctx->bsu->sta_avln = &ctx->bsu->poweron;
bsu_test_upper_layer_beacon_received_init (ctx);
bsu_beacon_t beacon;
bsu_test_create_beacon (ctx, &beacon);