summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorlefranc2009-12-28 08:57:02 +0000
committerlefranc2009-12-28 08:57:02 +0000
commit176bfa5b340ed6932b4cd0a6ecf2989600af1aed (patch)
treea6bf188ea364dda4b5357ed32d5e42d023623e42
parentc788468816e2721f02c8047685ef524a98b41959 (diff)
cleo/devkit/plcd: unit test of event.c
- unit test for check_sc_start() and refresh_status() git-svn-id: svn+ssh://pessac/svn/cesar/trunk@6576 017c9cb6-072f-447c-8318-d5b54f68fe89
-rw-r--r--cleopatre/devkit/tests/plcd/src/event_utests.c336
1 files changed, 319 insertions, 17 deletions
diff --git a/cleopatre/devkit/tests/plcd/src/event_utests.c b/cleopatre/devkit/tests/plcd/src/event_utests.c
index ccf402e913..48b0dccf58 100644
--- a/cleopatre/devkit/tests/plcd/src/event_utests.c
+++ b/cleopatre/devkit/tests/plcd/src/event_utests.c
@@ -68,11 +68,15 @@ static plcd_ctx_t plcd_ctx;
static plcd_ctx_t *ctx = &plcd_ctx;
static int is_info_manager_needed, is_save_conf_needed;
static mme_ctx_t mme_ctx;
-static char mme_buffer[1024];
+static char mme_buffer[256];
unsigned char label_table[2][MAX_ITEM_NB][64];
unsigned char value_table[2][MAX_ITEM_NB][64];
unsigned char msg_buf[ETH_FRAME_LEN]; /* local buffer to store netlink messages */
+extern int check_sc_start (plcd_ctx_t *ctx);
+extern int refresh_status (plcd_ctx_t *ctx, mme_ctx_t *status_ctx, int *is_save_conf_needed, int *is_info_manager_needed);
+
+
/*
######################################
# FUNCTION STUB
@@ -121,8 +125,16 @@ int select(int nfds, fd_set *readfds, fd_set *writefds,
return 1;
}
+void syslog(int priority, const char *format, ...)
+{
+ return;
+}
+
int hpav_send_single_value (const plcd_ctx_t *plcd_ctx, unsigned int mmtype, const void *value, unsigned int length)
{
+ int len;
+ mme_init (&mme_ctx, mmtype, mme_buffer, sizeof(mme_buffer));
+ mme_put (&mme_ctx, value, length, &len);
return 0;
}
@@ -231,13 +243,106 @@ void teardown(void)
{
}
-/* --- TEST PROCEDURES --- */
+/***********************************************************
+ *
+ * check_sc_start() test cases
+ *
+ *******************************************************/
/* check when plcd_ctx = NULL */
-START_TEST (test_refresh_status_param_1)
+START_TEST (test_check_sc_start_param_1)
+{
+ check_ctx.test_id = 1;
+ if(0 == setjmp (check_ctx.jmp_env))
+ {
+ check_sc_start (NULL);
+ fail ("check_sc_start plcd_ctx = NULL (1)");
+ }
+ fail_unless ((check_ctx.test_id == check_ctx.assert_id),
+ "check_sc_start plcd_ctx = NULL (2)");
+}
+END_TEST
+
+/* check if no MME is sent if SC_BUTTON!=yes or SC!=no */
+START_TEST (test_check_sc_start_cond_1)
+{
+ libspid_config_write_item (plcd_ctx.hpav_info_path, LIBSPID_HPAV_INFO_LABEL_SC_BUTTON, "yes");
+ libspid_config_write_item (plcd_ctx.hpav_info_path, LIBSPID_HPAV_INFO_LABEL_SC, "yes");
+ check_sc_start (&plcd_ctx);
+ fail_unless ((mme_ctx.head == mme_ctx.tail),
+ "check_sc_start SC_BUTTON=yes, SC=yes");
+
+}
+END_TEST
+
+/* check if no MME is sent if SC_BUTTON!=no or SC!=no */
+START_TEST (test_check_sc_start_cond_2)
+{
+ libspid_config_write_item (plcd_ctx.hpav_info_path, LIBSPID_HPAV_INFO_LABEL_SC_BUTTON, "no");
+ libspid_config_write_item (plcd_ctx.hpav_info_path, LIBSPID_HPAV_INFO_LABEL_SC, "no");
+ check_sc_start (&plcd_ctx);
+ fail_unless ((mme_ctx.head == mme_ctx.tail),
+ "check_sc_start SC_BUTTON=no, SC=no");
+
+}
+END_TEST
+
+/* check if MME is sent with SC_JOIN */
+START_TEST (test_check_sc_start_assoc_1)
+{
+ unsigned char sc;
+ unsigned int length;
+ libspid_config_write_item (plcd_ctx.hpav_info_path, LIBSPID_HPAV_INFO_LABEL_SC_BUTTON, "yes");
+ libspid_config_write_item (plcd_ctx.hpav_info_path, LIBSPID_HPAV_INFO_LABEL_SC, "no");
+ libspid_config_write_item (plcd_ctx.hpav_info_path, LIBSPID_HPAV_INFO_LABEL_STATUS, "unassociated");
+
+ check_sc_start (&plcd_ctx);
+ mme_pull (&mme_ctx, &sc, 1, &length);
+ fail_unless ((MME_DRV_SC_JOIN == sc)
+ && (1 == length),
+ "check_sc_start SC_JOIN");
+}
+END_TEST
+
+/* check if MME is sent with SC_ADD */
+START_TEST (test_check_sc_start_assoc_2)
+{
+ unsigned char sc;
+ unsigned int length;
+ libspid_config_write_item (plcd_ctx.hpav_info_path, LIBSPID_HPAV_INFO_LABEL_SC_BUTTON, "yes");
+ libspid_config_write_item (plcd_ctx.hpav_info_path, LIBSPID_HPAV_INFO_LABEL_SC, "no");
+ libspid_config_write_item (plcd_ctx.hpav_info_path, LIBSPID_HPAV_INFO_LABEL_STATUS, "authenticated");
+
+ check_sc_start (&plcd_ctx);
+ mme_pull (&mme_ctx, &sc, 1, &length);
+ fail_unless ((MME_DRV_SC_ADD == sc)
+ && (1 == length),
+ "check_sc_start SC_ADD");
+}
+END_TEST
+
+TCase *event_refresh_check_sc_start_tcase (void)
{
- int result;
+ TCase *tc = tcase_create ("check_sc_start");
+ tcase_add_checked_fixture (tc, setup, teardown);
+ // check STATUS field
+ tcase_add_test (tc, test_check_sc_start_param_1);
+ tcase_add_test (tc, test_check_sc_start_cond_1);
+ tcase_add_test (tc, test_check_sc_start_cond_2);
+ tcase_add_test (tc, test_check_sc_start_assoc_1);
+ tcase_add_test (tc, test_check_sc_start_assoc_2);
+ return (tc);
+}
+/***********************************************************
+ *
+ * refresh_status() test cases
+ *
+ *******************************************************/
+
+/* check when plcd_ctx = NULL */
+START_TEST (test_refresh_status_param_1)
+{
check_ctx.test_id = 1;
if(0 == setjmp (check_ctx.jmp_env))
{
@@ -252,8 +357,6 @@ END_TEST
/* check when mme_ctx = NULL */
START_TEST (test_refresh_status_param_2)
{
- int result;
-
check_ctx.test_id = 2;
if(0 == setjmp (check_ctx.jmp_env))
{
@@ -268,8 +371,6 @@ END_TEST
/* check when mme_ctx.mmtype has wrong value */
START_TEST (test_refresh_status_param_3)
{
- int result;
-
mme_ctx.mmtype = MME_TYPE_DRV_STA_STATUS | MME_TYPE_CNF;
check_ctx.test_id = 3;
if(0 == setjmp (check_ctx.jmp_env))
@@ -285,8 +386,6 @@ END_TEST
/* check when is_save_conf_needed = NULL */
START_TEST (test_refresh_status_param_4)
{
- int result;
-
check_ctx.test_id = 4;
if(0 == setjmp (check_ctx.jmp_env))
{
@@ -301,8 +400,6 @@ END_TEST
/* check when is_info_manager_needed = NULL */
START_TEST (test_refresh_status_param_5)
{
- int result;
-
check_ctx.test_id = 5;
if(0 == setjmp (check_ctx.jmp_env))
{
@@ -334,7 +431,7 @@ TCase *event_refresh_status_param_tcase (void)
/* check assoc status switch to unassociated */
START_TEST (test_refresh_status_assoc_1)
{
- int result, length;
+ unsigned int length;
char buffer[1024];
mme_put (&mme_ctx, "\x00\x00\x00\x00\x00", 5, &length);
@@ -352,7 +449,7 @@ END_TEST
/* check assoc status switch to associated */
START_TEST (test_refresh_status_assoc_2)
{
- int result, length;
+ unsigned int length;
char buffer[1024];
mme_put (&mme_ctx, "\x01\x00\x00\x00\x00", 5, &length);
@@ -376,7 +473,7 @@ END_TEST
/* check assoc status switch to associated */
START_TEST (test_refresh_status_assoc_3)
{
- int result, length;
+ unsigned int length;
char buffer[1024];
mme_put (&mme_ctx, "\x02\x00\x00\x00\x00", 5, &length);
@@ -394,7 +491,7 @@ END_TEST
/* check assoc status wrong value */
START_TEST (test_refresh_status_assoc_4)
{
- int result, length;
+ unsigned int length;
char buffer[1024];
mme_put (&mme_ctx, "\x03\x00\x00\x00\x00", 5, &length);
@@ -425,7 +522,7 @@ TCase *event_refresh_status_assoc_tcase (void)
/* check cco switch to proxy */
START_TEST (test_refresh_status_cco_1)
{
- int result, length;
+ unsigned int length;
char buffer[1024];
mme_put (&mme_ctx, "\x00\x01\x00\x00\x00", 5, &length);
@@ -440,21 +537,226 @@ START_TEST (test_refresh_status_cco_1)
}
END_TEST
+/* check cco switch to station */
+START_TEST (test_refresh_status_cco_2)
+{
+ unsigned int length;
+ char buffer[1024];
+
+ mme_put (&mme_ctx, "\x00\x00\x00\x00\x00", 5, &length);
+ libspid_config_write_item (plcd_ctx.hpav_info_path, LIBSPID_HPAV_INFO_LABEL_CCO, "proxy");
+
+ refresh_status (&plcd_ctx, &mme_ctx, &is_save_conf_needed, &is_info_manager_needed);
+ libspid_config_read_item (plcd_ctx.hpav_info_path, LIBSPID_HPAV_INFO_LABEL_CCO, buffer, sizeof(buffer));
+
+ fail_unless (!strcmp (buffer, "station")
+ && (LIBSPID_TRUE == is_info_manager_needed),
+ "CCO = station");
+}
+END_TEST
+
+/* check cco switch to main with WAS_CCO=no update */
+START_TEST (test_refresh_status_cco_3)
+{
+ unsigned int length;
+ char buffer1[256], buffer2[256];
+
+ mme_put (&mme_ctx, "\x02\x02\x00\x00\x00", 5, &length);
+ libspid_config_write_item (plcd_ctx.hpav_info_path, LIBSPID_HPAV_INFO_LABEL_CCO, "station");
+ libspid_config_write_item (plcd_ctx.hpav_conf_path, LIBSPID_HPAV_CONF_LABEL_WAS_CCO, "no");
+
+ refresh_status (&plcd_ctx, &mme_ctx, &is_save_conf_needed, &is_info_manager_needed);
+ libspid_config_read_item (plcd_ctx.hpav_info_path, LIBSPID_HPAV_INFO_LABEL_CCO, buffer1, sizeof(buffer1));
+ libspid_config_read_item (plcd_ctx.hpav_conf_path, LIBSPID_HPAV_CONF_LABEL_WAS_CCO, buffer2, sizeof(buffer2));
+
+ fail_unless (!strcmp (buffer1, "main")
+ && !strcmp (buffer2, "yes")
+ && (LIBSPID_TRUE == is_info_manager_needed)
+ && (LIBSPID_TRUE == is_save_conf_needed),
+ "CCO = main with WAS_CCO = no (status=%s, was_cco=%s)", buffer1, buffer2);
+}
+END_TEST
+
+/* check cco switch to station with WAS_CCO=yes update */
+START_TEST (test_refresh_status_cco_4)
+{
+ unsigned int length;
+ char buffer1[256], buffer2[256];
+
+ mme_put (&mme_ctx, "\x02\x00\x00\x00\x00", 5, &length);
+ libspid_config_write_item (plcd_ctx.hpav_info_path, LIBSPID_HPAV_INFO_LABEL_CCO, "main");
+ libspid_config_write_item (plcd_ctx.hpav_conf_path, LIBSPID_HPAV_CONF_LABEL_WAS_CCO, "yes");
+
+ refresh_status (&plcd_ctx, &mme_ctx, &is_save_conf_needed, &is_info_manager_needed);
+ libspid_config_read_item (plcd_ctx.hpav_info_path, LIBSPID_HPAV_INFO_LABEL_CCO, buffer1, sizeof(buffer1));
+ libspid_config_read_item (plcd_ctx.hpav_conf_path, LIBSPID_HPAV_CONF_LABEL_WAS_CCO, buffer2, sizeof(buffer2));
+
+ fail_unless (!strcmp (buffer1, "station")
+ && !strcmp (buffer2, "no")
+ && (LIBSPID_TRUE == is_info_manager_needed)
+ && (LIBSPID_TRUE == is_save_conf_needed),
+ "CCO = station with WAS_CCO = yes (status=%s, was_cco=%s)", buffer1, buffer2);
+}
+END_TEST
+
TCase *event_refresh_status_cco_tcase (void)
{
TCase *tc = tcase_create ("refresh_status_cco");
tcase_add_checked_fixture (tc, setup, teardown);
// check STATUS field
tcase_add_test (tc, test_refresh_status_cco_1);
+ tcase_add_test (tc, test_refresh_status_cco_2);
+ tcase_add_test (tc, test_refresh_status_cco_3);
+ tcase_add_test (tc, test_refresh_status_cco_4);
+ return tc;
+}
+
+/* check cco preferred from no to yes*/
+START_TEST (test_refresh_status_cco_preferred_1)
+{
+ unsigned int length;
+ char buffer[256];
+
+ mme_put (&mme_ctx, "\x00\x00\x01\x00\x00", 5, &length);
+ libspid_config_write_item (plcd_ctx.hpav_conf_path, LIBSPID_HPAV_CONF_LABEL_CCO_PREFERRED, "no");
+
+ refresh_status (&plcd_ctx, &mme_ctx, &is_save_conf_needed, &is_info_manager_needed);
+ libspid_config_read_item (plcd_ctx.hpav_conf_path, LIBSPID_HPAV_CONF_LABEL_CCO_PREFERRED, buffer, sizeof(buffer));
+
+ fail_unless (!strcmp (buffer, "yes")
+ && (LIBSPID_TRUE == is_save_conf_needed),
+ "CCO_PREFERRED = yes");
+}
+END_TEST
+
+/* check cco preferred from yes to no */
+START_TEST (test_refresh_status_cco_preferred_2)
+{
+ unsigned int length;
+ char buffer[256];
+
+ mme_put (&mme_ctx, "\x00\x00\x00\x00\x00", 5, &length);
+ libspid_config_write_item (plcd_ctx.hpav_conf_path, LIBSPID_HPAV_CONF_LABEL_CCO_PREFERRED, "yes");
+
+ refresh_status (&plcd_ctx, &mme_ctx, &is_save_conf_needed, &is_info_manager_needed);
+ libspid_config_read_item (plcd_ctx.hpav_conf_path, LIBSPID_HPAV_CONF_LABEL_CCO_PREFERRED, buffer, sizeof(buffer));
+
+ fail_unless (!strcmp (buffer, "no")
+ && (LIBSPID_TRUE == is_save_conf_needed),
+ "CCO_PREFERRED = no");
+}
+END_TEST
+
+TCase *event_refresh_status_cco_preferred_tcase (void)
+{
+ TCase *tc = tcase_create ("refresh_status_cco_preferred");
+ tcase_add_checked_fixture (tc, setup, teardown);
+ tcase_add_test (tc, test_refresh_status_cco_preferred_1);
+ tcase_add_test (tc, test_refresh_status_cco_preferred_2);
+ return tc;
+}
+
+/* check cco backup from no to yes */
+START_TEST (test_refresh_status_cco_backup_1)
+{
+ unsigned int length;
+ char buffer[256];
+
+ mme_put (&mme_ctx, "\x00\x00\x00\x01\x00", 5, &length);
+ libspid_config_write_item (plcd_ctx.hpav_info_path, LIBSPID_HPAV_INFO_LABEL_BACKUP_CCO, "no");
+
+ refresh_status (&plcd_ctx, &mme_ctx, &is_save_conf_needed, &is_info_manager_needed);
+ libspid_config_read_item (plcd_ctx.hpav_info_path, LIBSPID_HPAV_INFO_LABEL_BACKUP_CCO, buffer, sizeof(buffer));
+
+ fail_unless (!strcmp (buffer, "yes")
+ && (LIBSPID_TRUE == is_info_manager_needed),
+ "BACKUP_CCO = yes");
+}
+END_TEST
+
+/* check cco backup from yes to no */
+START_TEST (test_refresh_status_cco_backup_2)
+{
+ unsigned int length;
+ char buffer[256];
+
+ mme_put (&mme_ctx, "\x00\x00\x00\x00\x00", 5, &length);
+ libspid_config_write_item (plcd_ctx.hpav_info_path, LIBSPID_HPAV_INFO_LABEL_BACKUP_CCO, "yes");
+
+ refresh_status (&plcd_ctx, &mme_ctx, &is_save_conf_needed, &is_info_manager_needed);
+ libspid_config_read_item (plcd_ctx.hpav_info_path, LIBSPID_HPAV_INFO_LABEL_BACKUP_CCO, buffer, sizeof(buffer));
+
+ fail_unless (!strcmp (buffer, "no")
+ && (LIBSPID_TRUE == is_info_manager_needed),
+ "BACKUP_CCO = no");
+}
+END_TEST
+
+TCase *event_refresh_status_cco_backup_tcase (void)
+{
+ TCase *tc = tcase_create ("refresh_status_cco_backup");
+ tcase_add_checked_fixture (tc, setup, teardown);
+ tcase_add_test (tc, test_refresh_status_cco_backup_1);
+ tcase_add_test (tc, test_refresh_status_cco_backup_2);
return tc;
}
+/* check SC from no to yes */
+START_TEST (test_refresh_status_sc_1)
+{
+ unsigned int length;
+ char buffer[256];
+
+ mme_put (&mme_ctx, "\x00\x00\x00\x00\x01", 5, &length);
+ libspid_config_write_item (plcd_ctx.hpav_info_path, LIBSPID_HPAV_INFO_LABEL_SC, "no");
+
+ refresh_status (&plcd_ctx, &mme_ctx, &is_save_conf_needed, &is_info_manager_needed);
+ libspid_config_read_item (plcd_ctx.hpav_info_path, LIBSPID_HPAV_INFO_LABEL_SC, buffer, sizeof(buffer));
+
+ fail_unless (!strcmp (buffer, "yes")
+ && (LIBSPID_TRUE == is_info_manager_needed),
+ "SC = yes");
+}
+END_TEST
+
+/* check sc from yes to no */
+START_TEST (test_refresh_status_sc_2)
+{
+ unsigned int length;
+ char buffer[256];
+
+ mme_put (&mme_ctx, "\x00\x00\x00\x00\x00", 5, &length);
+ libspid_config_write_item (plcd_ctx.hpav_info_path, LIBSPID_HPAV_INFO_LABEL_SC, "yes");
+
+ refresh_status (&plcd_ctx, &mme_ctx, &is_save_conf_needed, &is_info_manager_needed);
+ libspid_config_read_item (plcd_ctx.hpav_info_path, LIBSPID_HPAV_INFO_LABEL_SC, buffer, sizeof(buffer));
+
+ fail_unless (!strcmp (buffer, "no")
+ && (LIBSPID_TRUE == is_info_manager_needed),
+ "BACKUP_SC = no");
+}
+END_TEST
+
+TCase *event_refresh_status_sc_tcase (void)
+{
+ TCase *tc = tcase_create ("refresh_status_sc");
+ tcase_add_checked_fixture (tc, setup, teardown);
+ tcase_add_test (tc, test_refresh_status_sc_1);
+ tcase_add_test (tc, test_refresh_status_sc_2);
+ return tc;
+}
+
+
Suite* event_suite(void)
{
Suite *s = suite_create ("event");
suite_add_tcase (s, event_refresh_status_param_tcase ());
suite_add_tcase (s, event_refresh_status_assoc_tcase());
suite_add_tcase (s, event_refresh_status_cco_tcase());
+ suite_add_tcase (s, event_refresh_status_cco_preferred_tcase());
+ suite_add_tcase (s, event_refresh_status_cco_backup_tcase());
+ suite_add_tcase (s, event_refresh_status_sc_tcase());
+ suite_add_tcase (s, event_refresh_check_sc_start_tcase ());
return s;
}