summaryrefslogtreecommitdiff
path: root/cleopatre/devkit/tests/autodiscoverd/utests
diff options
context:
space:
mode:
Diffstat (limited to 'cleopatre/devkit/tests/autodiscoverd/utests')
-rw-r--r--cleopatre/devkit/tests/autodiscoverd/utests/Makefile44
-rw-r--r--cleopatre/devkit/tests/autodiscoverd/utests/src/autodiscoveryd_utests.c231
-rw-r--r--cleopatre/devkit/tests/autodiscoverd/utests/testfiles/system.conf3
-rw-r--r--cleopatre/devkit/tests/autodiscoverd/utests/testfiles/version3
4 files changed, 281 insertions, 0 deletions
diff --git a/cleopatre/devkit/tests/autodiscoverd/utests/Makefile b/cleopatre/devkit/tests/autodiscoverd/utests/Makefile
new file mode 100644
index 0000000000..eb5cea2558
--- /dev/null
+++ b/cleopatre/devkit/tests/autodiscoverd/utests/Makefile
@@ -0,0 +1,44 @@
+BASE = ../../../../../cesar
+CLEO_BASE = ../cleopatre
+
+LINUX_PATH = $(CLEO_BASE)/linux-2.6.25.10-spc300
+
+# We test autodiscoveryd.
+PROJECT_DIR = $(CLEO_BASE)/application/autodiscoveryd
+
+LIBMME_BASE = $(CLEO_BASE)/application/libmme
+LIBSPID_BASE = $(CLEO_BASE)/application/libspid
+LIBMME_OVERRIDE_BASE = $(CLEO_BASE)/devkit/tests/stub/libmme
+LIBSPID_OVERRIDE_BASE = $(CLEO_BASE)/devkit/tests/stub/libspid
+
+INCLUDES = $(PROJECT_DIR)/inc $(LINUX_PATH)/include/asm-arm/arch-spc300 \
+ $(LIBMME_BASE)/inc $(LIBSPID_BASE)/inc $(CLEO_BASE)/include \
+ $(LIBMME_OVERRIDE_BASE)/inc $(LIBSPID_OVERRIDE_BASE)/inc
+
+EXTRA_HOST_LDLIBS = -lcheck
+
+EXTRA_CFLAGS = -MMD
+
+DEFS = -D__UTESTS__ -D__AUTODISCOVERYD__
+
+MMTYPES = $(OBJ_INC_DIR)/mmtypes.h
+MMTCGEN = $(BASE)/../common/lib/mmtcgen
+COMPILE_DEPS += $(MMTYPES)
+
+HOST_PROGRAMS = autodiscoveryd_utests
+
+autodiscoveryd_utests_SOURCES = autodiscoveryd_utests.c
+autodiscoveryd_utests_MODULES = $(PROJECT_DIR) $(LIBMME_OVERRIDE_BASE) \
+ $(LIBSPID_OVERRIDE_BASE) $(LIBSPID_BASE)
+
+.._cleopatre_application_libspid_MODULE_SOURCES = config_item.c misc.c
+.._cleopatre_devkit_tests_stub_libspid_MODULE_SOURCES = network.c system.c
+.._cleopatre_devkit_tests_stub_libmme_MODULE_SOURCES = mme.c
+
+include $(BASE)/common/make/top.mk
+
+CLEAN_FILES += $(MMTYPES)
+
+-include $(MMTCGEN)/Makefile
+
+$(MMTYPES): $(OBJ_INC_DIR_STAMP)
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;
+}
+
diff --git a/cleopatre/devkit/tests/autodiscoverd/utests/testfiles/system.conf b/cleopatre/devkit/tests/autodiscoverd/utests/testfiles/system.conf
new file mode 100644
index 0000000000..b799e060b2
--- /dev/null
+++ b/cleopatre/devkit/tests/autodiscoverd/utests/testfiles/system.conf
@@ -0,0 +1,3 @@
+AUTODISCOVERY_ENABLE = yes
+AUTODISCOVERY_TIME_SEC = 80
+AUTODISCOVERY_INTERFACE = eth0
diff --git a/cleopatre/devkit/tests/autodiscoverd/utests/testfiles/version b/cleopatre/devkit/tests/autodiscoverd/utests/testfiles/version
new file mode 100644
index 0000000000..a6e74cf353
--- /dev/null
+++ b/cleopatre/devkit/tests/autodiscoverd/utests/testfiles/version
@@ -0,0 +1,3 @@
+PLC Driver: eoc-0.4.2
+PLC Firmware: eoc-0.4.2
+