summaryrefslogtreecommitdiff
path: root/cesar/cp/eoc
diff options
context:
space:
mode:
authorMarko Stankovic2012-04-10 09:59:36 +0200
committerMarko Stankovic2012-05-03 14:04:25 +0200
commit39b610cf057a2bc80bf4acad0d50682d41397ca1 (patch)
tree74b108b52306fa029fdd1a2b8d33aa1c189397c1 /cesar/cp/eoc
parente0defe530d12f6495c3a319cbd1bccb51c0fa603 (diff)
cesar/cp/eoc/sta/action/test[eoc]: add sta fsm unit test, refs #3071
Diffstat (limited to 'cesar/cp/eoc')
-rw-r--r--cesar/cp/eoc/sta/action/test/utest/inc/scenario_defs.h6
-rw-r--r--cesar/cp/eoc/sta/action/test/utest/src/fsm_stub.c101
-rw-r--r--cesar/cp/eoc/sta/action/test/utest/src/test_fsm.c97
3 files changed, 178 insertions, 26 deletions
diff --git a/cesar/cp/eoc/sta/action/test/utest/inc/scenario_defs.h b/cesar/cp/eoc/sta/action/test/utest/inc/scenario_defs.h
index 89dea549aa..83ae138295 100644
--- a/cesar/cp/eoc/sta/action/test/utest/inc/scenario_defs.h
+++ b/cesar/cp/eoc/sta/action/test/utest/inc/scenario_defs.h
@@ -136,6 +136,9 @@ scenario_action_process_urgent_cb (scenario_globals_t *globals,
cp_fsm__UNASSOCIATED__start_retry_timer, \
cp_fsm__UNASSOCIATED__enter_sleep_unassociated, \
cp_fsm__UNASSOCIATED__retry_unassociated, \
+ cp_fsm__UNASSOCIATED__timeout_unassociating, \
+ cp_fsm__UNASSOCIATED__no_beacons, \
+ cp_fsm__UNASSOCIATED__BEACON, \
cp_fsm__UNASSOCIATED__stop_retry_timer, \
cp_fsm__SLEEP_UNASSOCIATED__exit_sleep_unassociated, \
cp_fsm__ASSOCIATED__no_beacons, \
@@ -247,6 +250,9 @@ typedef scenario_empty_t scenario_event_cp_fsm__ASSOCIATING__stop_retry_timer_t;
typedef scenario_empty_t scenario_event_cp_fsm__UNASSOCIATED__start_retry_timer_t;
typedef scenario_empty_t scenario_event_cp_fsm__UNASSOCIATED__enter_sleep_unassociated_t;
typedef scenario_empty_t scenario_event_cp_fsm__UNASSOCIATED__retry_unassociated_t;
+typedef scenario_empty_t scenario_event_cp_fsm__UNASSOCIATED__timeout_unassociating_t;
+typedef scenario_empty_t scenario_event_cp_fsm__UNASSOCIATED__no_beacons_t;
+typedef scenario_empty_t scenario_event_cp_fsm__UNASSOCIATED__BEACON_t;
typedef scenario_empty_t scenario_event_cp_fsm__UNASSOCIATED__stop_retry_timer_t;
typedef scenario_empty_t scenario_event_cp_fsm__SLEEP_UNASSOCIATED__exit_sleep_unassociated_t;
typedef scenario_empty_t scenario_event_cp_fsm__ASSOCIATED__no_beacons_t;
diff --git a/cesar/cp/eoc/sta/action/test/utest/src/fsm_stub.c b/cesar/cp/eoc/sta/action/test/utest/src/fsm_stub.c
index 441ed3209b..4f83ebd43c 100644
--- a/cesar/cp/eoc/sta/action/test/utest/src/fsm_stub.c
+++ b/cesar/cp/eoc/sta/action/test/utest/src/fsm_stub.c
@@ -81,13 +81,16 @@ void
cp_eoc_sta_action_assoc__beacon_not_received (cp_t *ctx);
void
-cp_sta_action_drv__stopped__drv_sta_set_mac_addr_req (cp_t *ctx, cp_mme_rx_t *mme);
+cp_sta_action_drv__stopped__drv_sta_set_mac_addr_req (cp_t *ctx,
+ cp_mme_rx_t *mme);
void
-cp_sta_action_drv__stopped__drv_sta_set_cco_pref_req (cp_t *ctx, cp_mme_rx_t *mme);
+cp_sta_action_drv__stopped__drv_sta_set_cco_pref_req (cp_t *ctx,
+ cp_mme_rx_t *mme);
void
-cp_sta_action_drv__stopped__drv_sta_set_was_cco_req (cp_t *ctx, cp_mme_rx_t *mme);
+cp_sta_action_drv__stopped__drv_sta_set_was_cco_req (cp_t *ctx,
+ cp_mme_rx_t *mme);
void
cp_sta_action_drv__stopped__drv_sta_set_dpw_req (cp_t *ctx, cp_mme_rx_t *mme);
@@ -96,7 +99,8 @@ void
cp_sta_action_drv__stopped__drv_sta_set_nid_req (cp_t *ctx, cp_mme_rx_t *mme);
void
-cp_sta_action_drv__stopped__drv_sta_set_tonemask_req (cp_t *ctx, cp_mme_rx_t *mme);
+cp_sta_action_drv__stopped__drv_sta_set_tonemask_req (cp_t *ctx,
+ cp_mme_rx_t *mme);
void
cp_sta_action_drv__stopped__drv_sta_set_key_req (cp_t *ctx, cp_mme_rx_t *mme);
@@ -105,7 +109,8 @@ void
cp_sta_action_drv__stopped__drv_sta_set_dak_req (cp_t *ctx, cp_mme_rx_t *mme);
void
-cp_sta_action_drv__stopped__drv_sta_mac_start_req (cp_t *ctx, cp_mme_rx_t *mme);
+cp_sta_action_drv__stopped__drv_sta_mac_start_req (cp_t *ctx,
+ cp_mme_rx_t *mme);
void
cp_sta_action_poweron__idle__to_poweron (cp_t *ctx);
@@ -174,20 +179,23 @@ void
cp_sta_action_poweron__many__to_idle (cp_t *ctx);
void
-cp_sta_action_vs__started__vs_get_tonemap_req (cp_t *ctx, cp_mme_rx_t *mme_rx);
+cp_sta_action_vs__started__vs_get_tonemap_req (cp_t *ctx,
+ cp_mme_rx_t *mme_rx);
void
cp_eoc_sta_action_auth__beacon_received (cp_t *ctx, bsu_beacon_t *beacon,
- cp_net_t *net, cp_sta_t *sta);
+ cp_net_t *net, cp_sta_t *sta);
void
-cp_eoc_sta_action_auth__authenticated_set_key_req (cp_t *ctx, cp_mme_rx_t *mme);
+cp_eoc_sta_action_auth__authenticated_set_key_req (cp_t *ctx,
+ cp_mme_rx_t *mme);
void
cp_sta_action_drv__drv_sta_set_config_req (cp_t *ctx, cp_mme_rx_t *mme_rx);
void
-cp_eoc_sta_action_auth__authenticated_set_out_lev(cp_t *ctx, cp_mme_rx_t *mme);
+cp_eoc_sta_action_auth__authenticated_set_out_lev(cp_t *ctx,
+ cp_mme_rx_t *mme);
void
cp_sta_action_process_cm_sta_cap_req (cp_t *ctx, cp_mme_rx_t *rx_mme);
@@ -215,16 +223,19 @@ cp_sta_action_drv__drv_sta_set_eoc_config_req (cp_t *ctx, cp_mme_rx_t *mme);
void
cp_eoc_sta_action_detect__beacon_received (cp_t *ctx, bsu_beacon_t *beacon,
- cp_net_t *net, cp_sta_t *sta);
+ cp_net_t *net, cp_sta_t *sta);
void
-cp_eoc_sta_action_vs_eoc__sta__vs_eoc_get_info_req (cp_t *ctx, cp_mme_rx_t *mme);
+cp_eoc_sta_action_vs_eoc__sta__vs_eoc_get_info_req (cp_t *ctx,
+ cp_mme_rx_t *mme);
void
-cp_eoc_sta_action_vs_eoc__sta__vs_eoc_diagnostic_info_req (cp_t *ctx, cp_mme_rx_t *mme);
+cp_eoc_sta_action_vs_eoc__sta__vs_eoc_diagnostic_info_req (cp_t *ctx,
+ cp_mme_rx_t *mme);
void
-cp_eoc_sta_action_vs_eoc__sta__vs_eoc_get_real_time_statistics_req (cp_t *ctx, cp_mme_rx_t *mme);
+cp_eoc_sta_action_vs_eoc__sta__vs_eoc_get_real_time_statistics_req (cp_t *ctx,
+ cp_mme_rx_t *mme);
void
cp_sta_action_vs__started__vs_get_ce_stats_req (cp_t *ctx, cp_mme_rx_t *mme);
@@ -235,6 +246,16 @@ cp_sta_action_vs__started__vs_get_pb_stats_req (cp_t *ctx, cp_mme_rx_t *mme);
void
cp_sta_action_vs__started__vs_get_mactotei_req (cp_t *ctx, cp_mme_rx_t *mme);
+void
+cp_eoc_sta_action_assoc__detecting_no_beacons (cp_t *ctx);
+
+void
+cp_eoc_sta_action_assoc__unassoc_no_beacons (cp_t *ctx);
+
+void
+cp_eoc_sta_action_unassoc__beacon_received (cp_t *ctx, bsu_beacon_t *beacon,
+ cp_net_t *net, cp_sta_t *sta);
+
/* Include generated tables. */
#include "cp_fsm_tables.h"
@@ -256,19 +277,22 @@ cp_sta_action_process_cm_sta_cap_req (cp_t *ctx, cp_mme_rx_t *rx_mme)
}
void
-cp_sta_action_drv__stopped__drv_sta_set_mac_addr_req (cp_t *ctx, cp_mme_rx_t *mme)
+cp_sta_action_drv__stopped__drv_sta_set_mac_addr_req (cp_t *ctx,
+ cp_mme_rx_t *mme)
{
scenario_event (cp_fsm__STOPPED__drv_sta_set_mac_addr_req);
}
void
-cp_sta_action_drv__stopped__drv_sta_set_cco_pref_req (cp_t *ctx, cp_mme_rx_t *mme)
+cp_sta_action_drv__stopped__drv_sta_set_cco_pref_req (cp_t *ctx,
+ cp_mme_rx_t *mme)
{
scenario_event (cp_fsm__STOPPED__drv_sta_set_cco_pref_req);
}
void
-cp_sta_action_drv__stopped__drv_sta_set_was_cco_req (cp_t *ctx, cp_mme_rx_t *mme)
+cp_sta_action_drv__stopped__drv_sta_set_was_cco_req (cp_t *ctx,
+ cp_mme_rx_t *mme)
{
scenario_event (cp_fsm__STOPPED__drv_sta_set_was_cco_req);
}
@@ -286,7 +310,8 @@ cp_sta_action_drv__stopped__drv_sta_set_nid_req (cp_t *ctx, cp_mme_rx_t *mme)
}
void
-cp_sta_action_drv__stopped__drv_sta_set_tonemask_req (cp_t *ctx, cp_mme_rx_t *mme)
+cp_sta_action_drv__stopped__drv_sta_set_tonemask_req (cp_t *ctx,
+ cp_mme_rx_t *mme)
{
scenario_event (cp_fsm__STOPPED__drv_sta_set_tonemask_req);
}
@@ -304,7 +329,8 @@ cp_sta_action_drv__stopped__drv_sta_set_dak_req (cp_t *ctx, cp_mme_rx_t *mme)
}
void
-cp_sta_action_drv__stopped__drv_sta_mac_start_req (cp_t *ctx, cp_mme_rx_t *mme)
+cp_sta_action_drv__stopped__drv_sta_mac_start_req (cp_t *ctx,
+ cp_mme_rx_t *mme)
{
scenario_event (cp_fsm__STOPPED__drv_sta_mac_start_req);
}
@@ -461,7 +487,6 @@ ce_tx_process__cm_update_tm_ind (cp_t *ctx, cp_mme_rx_t *mme)
void
cp_eoc_sta_action_sta_clear_status (cp_t *ctx)
{
- scenario_event (cp_fsm__DETECTING_BEACON__sta_clear_status);
}
void
@@ -548,7 +573,8 @@ void
cp_sta_action_drv__started__drv_sta_mac_stop_req (cp_t *ctx,
cp_mme_rx_t *mme)
{
- scenario_event (cp_fsm__AUTHENTICATED__drv__started__drv_sta_mac_stop_req);
+ scenario_event
+ (cp_fsm__AUTHENTICATED__drv__started__drv_sta_mac_stop_req);
}
void
@@ -570,13 +596,14 @@ cp_sta_action_vs__started__vs_get_tonemap_req (cp_t *ctx, cp_mme_rx_t *mme_rx)
void
cp_eoc_sta_action_auth__beacon_received (cp_t *ctx, bsu_beacon_t *beacon,
- cp_net_t *net, cp_sta_t *sta)
+ cp_net_t *net, cp_sta_t *sta)
{
scenario_event (cp_fsm__AUTHENTICATED__BEACON);
}
void
-cp_eoc_sta_action_auth__authenticated_set_key_req (cp_t *ctx, cp_mme_rx_t *mme)
+cp_eoc_sta_action_auth__authenticated_set_key_req (cp_t *ctx,
+ cp_mme_rx_t *mme)
{
scenario_event (cp_fsm__AUTHENTICATED__CM_SET_KEY_REQ);
}
@@ -619,21 +646,24 @@ cp_sta_action_drv__drv_sta_set_eoc_config_req (cp_t *ctx, cp_mme_rx_t *mme)
void
cp_eoc_sta_action_detect__beacon_received (cp_t *ctx, bsu_beacon_t *beacon,
- cp_net_t *net, cp_sta_t *sta)
+ cp_net_t *net, cp_sta_t *sta)
{
scenario_event (cp_fsm__DETECTING_BEACON__BEACON);
}
void
-cp_eoc_sta_action_vs_eoc__sta__vs_eoc_get_info_req (cp_t *ctx, cp_mme_rx_t *mme)
+cp_eoc_sta_action_vs_eoc__sta__vs_eoc_get_info_req (cp_t *ctx,
+ cp_mme_rx_t *mme)
{}
void
-cp_eoc_sta_action_vs_eoc__sta__vs_eoc_diagnostic_info_req (cp_t *ctx, cp_mme_rx_t *mme)
+cp_eoc_sta_action_vs_eoc__sta__vs_eoc_diagnostic_info_req (cp_t *ctx,
+ cp_mme_rx_t *mme)
{}
void
-cp_eoc_sta_action_vs_eoc__sta__vs_eoc_get_real_time_statistics_req (cp_t *ctx, cp_mme_rx_t *mme)
+cp_eoc_sta_action_vs_eoc__sta__vs_eoc_get_real_time_statistics_req (cp_t *ctx,
+ cp_mme_rx_t *mme)
{
}
@@ -651,3 +681,22 @@ void
cp_sta_action_vs__started__vs_get_mactotei_req (cp_t *ctx, cp_mme_rx_t *mme)
{
}
+
+void
+cp_eoc_sta_action_assoc__detecting_no_beacons (cp_t *ctx)
+{
+ scenario_event (cp_fsm__DETECTING_BEACON__sta_clear_status);
+}
+
+void
+cp_eoc_sta_action_assoc__unassoc_no_beacons (cp_t *ctx)
+{
+ scenario_event (cp_fsm__UNASSOCIATED__no_beacons);
+}
+
+void
+cp_eoc_sta_action_unassoc__beacon_received (cp_t *ctx, bsu_beacon_t *beacon,
+ cp_net_t *net, cp_sta_t *sta)
+{
+ scenario_event (cp_fsm__UNASSOCIATED__BEACON);
+}
diff --git a/cesar/cp/eoc/sta/action/test/utest/src/test_fsm.c b/cesar/cp/eoc/sta/action/test/utest/src/test_fsm.c
index 66087a9325..8bd0d26798 100644
--- a/cesar/cp/eoc/sta/action/test/utest/src/test_fsm.c
+++ b/cesar/cp/eoc/sta/action/test/utest/src/test_fsm.c
@@ -144,6 +144,103 @@ test_fsm_basic_test_case (test_t t)
cp_fsm_uninit (&cp);
} test_end;
+ test_begin (t, "unassociated")
+ {
+ cp_fsm_init (&cp);
+ cp.sta_core_flag = false;
+ scenario_entry_t entries[] = {
+ /* STOPPED */
+ SCENARIO_ACTION (post_and_process,
+ .type = CP_FSM_EVENT_TYPE_DRV_STA_MAC_START_REQ),
+ SCENARIO_EVENT (cp_fsm__STOPPED__drv_sta_mac_start_req),
+ /* STARTED */
+ SCENARIO_ACTION (post_and_process,
+ .type = CP_FSM_EVENT_TYPE_to_poweron),
+ SCENARIO_EVENT (cp_fsm__STARTED__poweron__idle__to_poweron),
+ /* DETECTING_BEACON */
+ SCENARIO_ACTION (post_and_process,
+ .type = CP_FSM_EVENT_TYPE_BEACON),
+ SCENARIO_EVENT (cp_fsm__DETECTING_BEACON__BEACON),
+ SCENARIO_ACTION (post_and_process,
+ .type = CP_FSM_EVENT_TYPE_nd_beacon),
+ SCENARIO_EVENT (cp_fsm__DETECTING_BEACON__nd_beacon),
+ /*Enter ASSOC timer */
+ SCENARIO_EVENT (cp_fsm__ASSOCIATING__start_retry_timer),
+ /* ASSOCIATING*/
+ SCENARIO_ACTION (post_and_process,
+ .type = CP_FSM_EVENT_TYPE_CC_ASSOC_CNF),
+ SCENARIO_EVENT (cp_fsm__ASSOCIATING__CC_ASSOC_CNF,
+ .branch = CP_FSM_BRANCH (ASSOCIATING,
+ CC_ASSOC_CNF, success)),
+ SCENARIO_EVENT (cp_fsm__ASSOCIATING__stop_retry_timer),
+ SCENARIO_EVENT (cp_fsm__ASSOCIATING__start_retry_timer),
+ /* ASSOCIATED */
+ SCENARIO_ACTION (post_and_process,
+ .type = CP_FSM_EVENT_TYPE_CM_GET_KEY_CNF),
+ SCENARIO_EVENT (cp_fsm__ASSOCIATED__CM_GET_KEY_CNF,
+ .branch = CP_FSM_BRANCH (ASSOCIATED,
+ CM_GET_KEY_CNF, granted_more_to_grant)),
+ SCENARIO_ACTION (post_and_process,
+ .type = CP_FSM_EVENT_TYPE_CM_GET_KEY_CNF),
+ SCENARIO_EVENT (cp_fsm__ASSOCIATED__CM_GET_KEY_CNF,
+ .branch = CP_FSM_BRANCH (ASSOCIATED,
+ CM_GET_KEY_CNF, granted_more_to_grant)),
+ SCENARIO_ACTION (post_and_process,
+ .type = CP_FSM_EVENT_TYPE_CM_GET_KEY_CNF),
+ SCENARIO_EVENT (cp_fsm__ASSOCIATED__CM_GET_KEY_CNF,
+ .branch = CP_FSM_BRANCH (ASSOCIATED,
+ CM_GET_KEY_CNF, all_keys_granted)),
+ SCENARIO_EVENT (cp_fsm__ASSOCIATING__stop_retry_timer),
+ /* AUTHENTICATED */
+ SCENARIO_ACTION (post_and_process,
+ .type = CP_FSM_EVENT_TYPE_BEACON),
+ SCENARIO_EVENT (cp_fsm__AUTHENTICATED__BEACON),
+ /* AUTHENTICATED -> VS_EOC_CCO_SET_OUT_LEV_IND -> AUTHENTICATED */
+ SCENARIO_ACTION (post_and_process,
+ .type
+ = CP_FSM_EVENT_TYPE_VS_EOC_CCO_SET_OUT_LEV_IND),
+ SCENARIO_EVENT (cp_fsm__AUTHENTICATED__set_out_lev_ind),
+ /* AUTHENTICATED, leave => OK */
+ SCENARIO_ACTION (post_and_process,
+ .type = CP_FSM_EVENT_TYPE_CC_LEAVE_IND),
+ SCENARIO_EVENT (cp_fsm__AUTHENTICATED__CC_LEAVE_IND,
+ .branch = CP_FSM_BRANCH (AUTHENTICATED,
+ CC_LEAVE_IND, ok)),
+ /* DETECTING_BEACON, beacon detected */
+ SCENARIO_ACTION (post_and_process,
+ .type = CP_FSM_EVENT_TYPE_nd_beacon),
+ SCENARIO_EVENT (cp_fsm__DETECTING_BEACON__nd_beacon),
+ /* ASSOCIATING, assoc_cnf, unsuccess*/
+ SCENARIO_EVENT (cp_fsm__ASSOCIATING__start_retry_timer),
+ SCENARIO_ACTION (post_and_process,
+ .type = CP_FSM_EVENT_TYPE_CC_ASSOC_CNF),
+ SCENARIO_EVENT (cp_fsm__ASSOCIATING__CC_ASSOC_CNF,
+ .branch = CP_FSM_BRANCH (ASSOCIATING,
+ CC_ASSOC_CNF, unsuccess)),
+ SCENARIO_EVENT (cp_fsm__ASSOCIATING__stop_retry_timer),
+ /* UNASSOCIATED */
+ SCENARIO_EVENT (cp_fsm__UNASSOCIATED__start_retry_timer),
+ SCENARIO_ACTION (post_and_process,
+ .type = CP_FSM_EVENT_TYPE_BEACON),
+ SCENARIO_EVENT (cp_fsm__UNASSOCIATED__BEACON),
+ /* UNASSOCIATED, no beacons */
+ SCENARIO_ACTION (post_and_process,
+ .type = CP_FSM_EVENT_TYPE_no_beacons),
+ SCENARIO_EVENT (cp_fsm__UNASSOCIATED__no_beacons),
+ SCENARIO_ACTION (post_and_process,
+ .type = CP_FSM_EVENT_TYPE_timeout_unassociating),
+ SCENARIO_EVENT (cp_fsm__UNASSOCIATED__stop_retry_timer),
+ SCENARIO_END
+ };
+ scenario_globals_t globals = {
+ .cp = &cp,
+ };
+ scenario_run (t, entries, &globals);
+ test_fail_unless (cp.fsm.active_states[0]
+ == CP_FSM_STATE_DETECTING_BEACON);
+ cp_fsm_uninit (&cp);
+ } test_end;
+
test_begin (t, "associating, beacon timeout => sleep_unassociated")
{
cp_fsm_init (&cp);