summaryrefslogtreecommitdiff
path: root/cleopatre/devkit/tests/autodiscoverd/utests/src/autodiscoveryd_utests.c
diff options
context:
space:
mode:
Diffstat (limited to 'cleopatre/devkit/tests/autodiscoverd/utests/src/autodiscoveryd_utests.c')
-rw-r--r--cleopatre/devkit/tests/autodiscoverd/utests/src/autodiscoveryd_utests.c231
1 files changed, 231 insertions, 0 deletions
diff --git a/cleopatre/devkit/tests/autodiscoverd/utests/src/autodiscoveryd_utests.c b/cleopatre/devkit/tests/autodiscoverd/utests/src/autodiscoveryd_utests.c
new file mode 100644
index 0000000000..7ca587c01f
--- /dev/null
+++ b/cleopatre/devkit/tests/autodiscoverd/utests/src/autodiscoveryd_utests.c
@@ -0,0 +1,231 @@
+/* Cleopatre project {{{
+ *
+ * Copyright (C) 2010 Spidcom
+ *
+ * <<<Licence>>>
+ *
+ * }}} */
+/**
+ * \file autodiscoveryd_utest.c
+ * \brief Unitary tests for autodiscoveryd
+ * \ingroup Cleopatre - autodiscoveryd
+ *
+ * This file content all the unitary tests for autodiscoveryd.
+ */
+
+#include <check.h>
+#include <stdio.h>
+#include <string.h>
+#include <stdlib.h>
+#include <fcntl.h>
+#include <sys/time.h> /* for select() */
+#include <linux/if_ether.h> /* for ETH_ALEN */
+#include <unistd.h>
+#include <assert.h>
+#include <errno.h>
+#include "autodiscoveryd.h"
+
+#define VERSION "testfiles/version"
+#define CONF "testfiles/system.conf"
+
+struct autodiscoveryd_ctx ctx;
+
+START_TEST (test_autodiscoveryd_payload)
+{
+ int ret = 0;
+ unsigned char* payload = (unsigned char *)
+ malloc (AUTODISCOVERYD_PAYLOAD_SIZE * sizeof (char));
+ char default_payload_manufactory[64] = "SPIDCOM";
+ char default_payload_product[64] = "SPID SPC";
+ unsigned char default_payload_manufactory_header[]
+ = {AUTODISCOVERYD_MANUFACTURE, AUTODISCOVERYD_MANUFACTURE_STR_LEN};
+ unsigned char default_payload_product_header[]
+ = {AUTODISCOVERYD_PRODUCT, AUTODISCOVERYD_PRODUCT_STR_LEN};
+ unsigned char default_payload_equiment[]
+ = {AUTODISCOVERYD_EQUIPMENT, AUTODISCOVERYD_EQUIPMENT_STR_LEN,
+ AUTODISCOVERYD_DEFAULT_EQUIPMENT};
+ unsigned char default_payload_software[]
+ = {AUTODISCOVERYD_SOFTWARE,
+ AUTODISCOVERYD_SOFT_VERSION_BIN_LEN, 0, 4, 2};
+ unsigned char default_payload_mib[]
+ = {AUTODISCOVERYD_MIB,
+ AUTODISCOVERYD_MIB_VERSION_STR_LEN, 50, 48, 55};
+ unsigned char default_payload_ip[]
+ = {AUTODISCOVERYD_IP, LIBSPID_IP_BIN_LEN, 192, 168, 3, 72};
+ unsigned char default_payload_mac[]
+ = {AUTODISCOVERYD_MAC, LIBSPID_MAC_BIN_LEN,
+ 0xAA, 0xBB, 0xCC, 0x12, 0x34, 0x56};
+ uint8_t expected_br_mac_addr[ETH_ALEN]
+ = {0xAA, 0xBB, 0xCC, 0x12, 0x34, 0x56};
+
+ /* prepare testing content */
+ system ("mkdir -p /tmp/utests/");
+ system ("cp " VERSION " " PLC_VERSION_PATH);
+ memcpy (ctx.br_mac_addr, expected_br_mac_addr, ETH_ALEN);
+
+ memset (payload, 0, AUTODISCOVERYD_PAYLOAD_SIZE);
+
+ ret = autodiscoveryd_payload (&ctx, payload);
+
+ fail_if (ret != LIBSPID_SUCCESS, "autodiscoveryd_payload funtion failed");
+
+ fail_if (memcmp (payload + AUTODISCOVERYD_PAYLOAD_MANUFACTURE_OFFSET,
+ default_payload_manufactory_header, 2) != 0,
+ "autodiscoveryd_payload funtion failed: "
+ "manufactory header error");
+
+ fail_if (memcmp (payload + AUTODISCOVERYD_PAYLOAD_MANUFACTURE_OFFSET + 2,
+ default_payload_manufactory,
+ AUTODISCOVERYD_MANUFACTURE_STR_LEN) != 0,
+ "autodiscoveryd_payload funtion failed: "
+ "manufactory error");
+
+ fail_if (memcmp (payload + AUTODISCOVERYD_PAYLOAD_PRODUCT_OFFSET,
+ default_payload_product_header, 2) != 0,
+ "autodiscoveryd_payload funtion failed: "
+ "product header error");
+
+ fail_if (memcmp (payload + AUTODISCOVERYD_PAYLOAD_PRODUCT_OFFSET + 2,
+ default_payload_product,
+ AUTODISCOVERYD_PRODUCT_STR_LEN) != 0,
+ "autodiscoveryd_payload funtion failed: product error");
+
+ fail_if (memcmp (payload + AUTODISCOVERYD_PAYLOAD_EQUIPMENT_OFFSET,
+ default_payload_equiment, 3) != 0,
+ "autodiscoveryd_payload funtion failed: "
+ "equimpent error");
+
+ fail_if (memcmp (payload + AUTODISCOVERYD_PAYLOAD_SOFT_VERSION_OFFSET,
+ default_payload_software, 5) != 0,
+ "autodiscoveryd_payload funtion failed: "
+ "software version error");
+
+ fail_if (memcmp (payload + AUTODISCOVERYD_PAYLOAD_MIB_VERSION_OFFSET,
+ default_payload_mib, 5) != 0,
+ "autodiscoveryd_payload funtion failed: mib error");
+
+ fail_if (memcmp (payload + AUTODISCOVERYD_PAYLOAD_IP_OFFSET,
+ default_payload_ip, 6) != 0,
+ "autodiscoveryd_payload funtion failed: IP error");
+
+ fail_if (memcmp (payload + AUTODISCOVERYD_PAYLOAD_MAC_OFFSET,
+ default_payload_mac, 8) != 0,
+ "autodiscoveryd_payload funtion failed: MAC error");
+
+ system ("rm -rf /tmp/utests");
+
+ free (payload);
+}
+END_TEST
+
+START_TEST (test_autodiscoveryd_get_version)
+{
+ int ret = 0;
+ unsigned char* version = (unsigned char *)
+ malloc (AUTODISCOVERYD_SOFT_VERSION_BIN_LEN * sizeof (char));
+ unsigned char default_version_software[] = {0, 4, 2};
+
+ /* prepare testing content */
+ system ("mkdir -p /tmp/utests/");
+ system ("cp " VERSION " " PLC_VERSION_PATH);
+
+ ret = autodiscoveryd_get_version (&ctx, version);
+
+ fail_if (ret != LIBSPID_SUCCESS,
+ "autodiscoveryd_get_version funtion failed");
+ fail_if (memcmp (version, default_version_software, 3) != 0,
+ "autodiscoveryd_get_version funtion failed: "
+ "software version error");
+
+ system ("rm -rf /tmp/utests");
+
+ free (version);;
+}
+END_TEST
+
+
+START_TEST (test_autodiscoveryd_init)
+{
+ int ret;
+ unsigned short default_sending_period
+ = AUTODISCOVERYD_DEFAULT_MIN_SENDING_TIME_SEC;
+ libspid_boolean_t default_autodiscovery_enable
+ = AUTODISCOVERYD_DEFAULT_ENABLE;
+ unsigned short expected_sending_period = 80;
+ libspid_boolean_t expected_autodiscovery_enable = LIBSPID_TRUE;
+ uint8_t br_mac_addr[ETH_ALEN] = {0xAA, 0xBB, 0xCC, 0x12, 0x34, 0x56};
+
+ /* prepare testing content */
+ /* without system.conf file */
+ system ("mkdir -p /tmp/utests/etc");
+
+ ret = autodiscoveryd_init (&ctx);
+ fail_if (ret != LIBSPID_SUCCESS, "autodiscoveryd_init function failed");
+ fail_if (default_sending_period != ctx.sending_period,
+ "autodiscoveryd_init funtion failed: "
+ "default_sending_period error");
+ fail_if (default_autodiscovery_enable != ctx.autodiscovery_enable,
+ "autodiscoveryd_init funtion failed: "
+ "default_autodiscovery_enable error");
+ fail_if (memcmp (br_mac_addr, ctx.br_mac_addr, ETH_ALEN) != 0,
+ "autodiscoveryd_init funtion failed: mac address error");
+
+ /* prepare testing content */
+ /* add system.conf */
+ system ("cp " CONF " " LIBSPID_SYSTEM_CONF_PATH);
+
+ ret = autodiscoveryd_init (&ctx);
+ fail_if (ret != LIBSPID_SUCCESS,
+ "autodiscoveryd_init funtion failed");
+ fail_if (expected_sending_period != ctx.sending_period,
+ "autodiscoveryd_init funtion failed: "
+ "expected_sending_period error");
+ fail_if (expected_autodiscovery_enable != ctx.autodiscovery_enable,
+ "autodiscoveryd_init funtion failed: "
+ "expected_autodiscovery_enable error");
+ fail_if (memcmp (br_mac_addr, ctx.br_mac_addr, ETH_ALEN) != 0,
+ "autodiscoveryd_init funtion failed: mac address error");
+
+ system ("rm -rf /tmp/utests");
+}
+END_TEST
+
+START_TEST (test_autodiscoveryd_uninit)
+{
+
+}
+END_TEST
+
+
+Suite* autodiscoveryd_suite(void)
+{
+ Suite *s = suite_create ("autodiscoveryd");
+ TCase *tc_core = tcase_create ("Core");
+
+ /* test file preparation */
+ tcase_add_test (tc_core, test_autodiscoveryd_init);
+ tcase_add_test (tc_core, test_autodiscoveryd_payload);
+ tcase_add_test (tc_core, test_autodiscoveryd_get_version);
+ tcase_add_test (tc_core, test_autodiscoveryd_uninit);
+
+ suite_add_tcase (s, tc_core);
+ return s;
+}
+
+int main(void)
+{
+ Suite *s = suite_create ("autodiscoveryd");
+ int number_failed = 0;
+
+ /* Run autodiscoveryd tests */
+ s = autodiscoveryd_suite ();
+
+ SRunner *sr = srunner_create (s);
+ /* srunner_set_fork_status (sr, CK_FORK); */
+ srunner_run_all (sr, CK_NORMAL);
+ number_failed = srunner_ntests_failed (sr);
+ srunner_free (sr);
+
+ return (number_failed == 0) ? 0 : -1;
+}
+