[PATCH 18/18] testsuite: Add test ptpd01

Gabriel Moyano gabriel.moyano at dlr.de
Wed Apr 12 13:54:22 UTC 2023


---
 libbsd.py                    |   2 +
 testsuite/ptpd01/test_main.c | 171 +++++++++++++++++++++++++++++++++++
 2 files changed, 173 insertions(+)
 create mode 100644 testsuite/ptpd01/test_main.c

diff --git a/libbsd.py b/libbsd.py
index 8b9b0c39..96f69c8c 100644
--- a/libbsd.py
+++ b/libbsd.py
@@ -5526,6 +5526,8 @@ class tests(builder.Module):
         self.addTest(mm.generator['test']('openssl01', ['test_main']))
         self.addTest(mm.generator['test']('openssl02', ['test_main']))
         self.addTest(mm.generator['test']('tcpdump01', ['test_main']))
+        self.addTest(mm.generator['test']('ptpd01', ['test_main'],
+                                          runTest = False, netTest = True))
 
 def load(mm):
 
diff --git a/testsuite/ptpd01/test_main.c b/testsuite/ptpd01/test_main.c
new file mode 100644
index 00000000..5eae42e6
--- /dev/null
+++ b/testsuite/ptpd01/test_main.c
@@ -0,0 +1,171 @@
+/**
+ * @file
+ *
+ * @brief It runs a PTPd instance configured as slave only.
+ *
+ * PTPd logs are printed out.
+ * For changing the configuration, update ptpd_conf.
+ */
+
+/*
+ * Copyright (c) 2023 Gabriel Moyano, German Aerospace Center (DLR)
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+
+#include <assert.h>
+#include <stdio.h>
+#include <net/if.h>
+
+#include <rtems.h>
+#include <machine/rtems-bsd-commands.h>
+
+#define TEST_NAME "LIBBSD PTPD 1"
+#define TEST_STATE_USER_INPUT 1
+
+static const char* ptpd_if = "ptpengine:interface = ";
+
+static const char* ptpd_conf = \
+    "\n" \
+    "ptpengine:preset = slaveonly\n" \
+    "ptpengine:ip_mode = multicast\n" \
+    "ptpengine:transport = ipv4\n" \
+    "ptpengine:use_libpcap = N\n" \
+    "ptpengine:delay_mechanism = E2E\n" \
+    "ptpengine:domain = 0\n" \
+    "ptpengine:slave_only = N\n" \
+    "ptpengine:inbound_latency = 0\n" \
+    "ptpengine:outbound_latency = 0\n" \
+    "ptpengine:always_respect_utc_offset = N\n" \
+    "ptpengine:log_announce_interval = 1\n" \
+    "ptpengine:log_sync_interval = 0\n" \
+    "ptpengine:log_delayreq_interval_initial = 0\n" \
+    "ptpengine:log_delayreq_interval = 0\n" \
+    "ptpengine:log_peer_delayreq_interval = 1\n" \
+    "ptpengine:foreignrecord_capacity = 5\n" \
+    "ptpengine:ptp_allan_variance = 28768\n" \
+    "ptpengine:ptp_clock_accuracy = ACC_UNKNOWN\n" \
+    "ptpengine:utc_offset = 0\n" \
+    "ptpengine:utc_offset_valid = N\n" \
+    "ptpengine:time_traceable = N\n" \
+    "ptpengine:frequency_traceable = N\n" \
+    "ptpengine:ptp_timescale = ARB\n" \
+    "ptpengine:ptp_timesource = INTERNAL_OSCILLATOR\n" \
+    "ptpengine:clock_class = 255\n" \
+    "ptpengine:priority1 = 128\n" \
+    "ptpengine:priority2 = 128\n" \
+    "ptpengine:unicast_address = \n" \
+    "ptpengine:igmp_refresh = Y\n" \
+    "ptpengine:multicast_ttl = 64\n" \
+    "ptpengine:ip_dscp = 0\n" \
+    "ptpengine:panic_mode = N\n" \
+    "ptpengine:panic_mode_duration = 2\n" \
+    "ptpengine:ntp_failover = N\n" \
+    "ptpengine:ntp_failover_timeout = 60\n" \
+    "ptpengine:prefer_ntp = N\n" \
+    "ptpengine:panic_mode_ntp = N\n" \
+    "clock:no_adjust = N\n" \
+    "clock:no_reset = N\n" \
+    "clock:drift_handling = preserve\n" \
+    "clock:drift_file = /etc/ptpd2_kernelclock.drift\n" \
+    "servo:delayfilter_stiffness = 6\n" \
+    "servo:kp = 0.1\n" \
+    "servo:ki = 0.001\n" \
+    "servo:max_delay = 0\n" \
+    "servo:max_delay = 0\n" \
+    "servo:max_offset = 0\n" \
+    "global:use_syslog = N\n" \
+    "global:lock_file = \n" \
+    "global:auto_lockfile = N\n" \
+    "global:ignore_lock = Y\n" \
+    "global:quality_file = \n" \
+    "global:quality_file_max_size = 0\n" \
+    "global:quality_file_max_files = 0\n" \
+    "global:quality_file_truncate = N\n" \
+    "global:log_status = Y\n" \
+    "global:status_update_interval = 1\n" \
+    "global:log_file_max_size = 0\n" \
+    "global:log_file_max_files = 0\n" \
+    "global:log_file_truncate = N\n" \
+    "global:log_level = LOG_ALL\n" \
+    "global:statistics_log_interval = 0\n" \
+    "global:statistics_file_max_size = 0\n" \
+    "global:statistics_file_truncate = N\n" \
+    "global:statistics_file_max_files = 0\n" \
+    "global:dump_packets = N\n" \
+    "global:verbose_foreground = N\n" \
+    "global:foreground = N\n" \
+    "global:log_statistics = Y\n" \
+    "global:cpuaffinity_cpucore = -1\n" \
+    "global:statistics_update_interval = 5\n" \
+    "ntpengine:enabled = N\n" \
+    "ntpengine:control_enabled = N\n" \
+    "ntpengine:check_interval = 15\n" \
+    "ntpengine:key_id = 0\n" \
+    "ntpengine:key = \n" \
+    "\n";
+
+
+static void
+create_config_file(char *ifname)
+{
+
+    FILE* fd;
+    fd = fopen("/etc/ptpd_rtems.conf", "w");
+    fwrite(ptpd_if, strlen(ptpd_if), 1, fd);
+    fwrite(ifname, strlen(ifname), 1, fd);
+    fwrite(ptpd_conf, strlen(ptpd_conf), 1, fd);
+    fclose(fd);
+}
+
+static void
+test_main(void)
+{
+
+	rtems_status_code sc;
+	int exit_code;
+	char *ifname;
+	char ifnamebuf[IF_NAMESIZE];
+
+	ifname = if_indextoname(1, &ifnamebuf[0]);
+	assert(ifname != NULL);
+    create_config_file(ifname);
+
+	/* Give some time to obtain an IP */
+	sc = rtems_task_wake_after(2000);
+	assert(sc == RTEMS_SUCCESSFUL);
+
+	char *ptpd[] = {
+		"ptpd",
+        "-c",
+        "/etc/ptpd_rtems.conf",
+        NULL
+    };
+	exit_code = rtems_bsd_command_ptpd(RTEMS_BSD_ARGC(ptpd), ptpd);
+	assert(exit_code == 0);
+	rtems_task_exit();
+}
+
+#define DEFAULT_NETWORK_DHCPCD_ENABLE
+#define DEFAULT_NETWORK_SHELL
+
+#include <rtems/bsd/test/default-network-init.h>
-- 
2.25.1



More information about the devel mailing list