[rtems commit] libtests/record01: Fix test failure

Sebastian Huber sebh at rtems.org
Tue Oct 1 07:55:19 UTC 2019


Module:    rtems
Branch:    master
Commit:    c1eb5774863f8fd797f205ba2bf7972dc4312057
Changeset: http://git.rtems.org/rtems/commit/?id=c1eb5774863f8fd797f205ba2bf7972dc4312057

Author:    Sebastian Huber <sebastian.huber at embedded-brains.de>
Date:      Tue Oct  1 09:53:05 2019 +0200

libtests/record01: Fix test failure

Update #3665.

---

 testsuites/libtests/record01/init.c | 47 +++++++++++++++++++++++++++++++++++--
 1 file changed, 45 insertions(+), 2 deletions(-)

diff --git a/testsuites/libtests/record01/init.c b/testsuites/libtests/record01/init.c
index 1789d41..8cca784 100644
--- a/testsuites/libtests/record01/init.c
+++ b/testsuites/libtests/record01/init.c
@@ -517,6 +517,15 @@ static void test_drain(test_context *ctx, Record_Control *control)
 #ifdef RTEMS_NETWORKING
 #define PORT 1234
 
+typedef enum {
+  HEADER_ARCH,
+  HEADER_MULTILIB,
+  HEADER_BSP,
+  HEADER_VERSION_CONTROL_KEY,
+  HEADER_TOOLS,
+  HEADER_LAST
+} header_state;
+
 static uint32_t get_format(void)
 {
   uint32_t format;
@@ -544,6 +553,25 @@ static uint32_t get_format(void)
   return format;
 }
 
+static rtems_record_event hs_to_ev(header_state hs)
+{
+  switch (hs) {
+    case HEADER_ARCH:
+      return RTEMS_RECORD_ARCH;
+    case HEADER_MULTILIB:
+      return RTEMS_RECORD_MULTILIB;
+    case HEADER_BSP:
+      return RTEMS_RECORD_BSP;
+    case HEADER_VERSION_CONTROL_KEY:
+      return RTEMS_RECORD_VERSION_CONTROL_KEY;
+    case HEADER_TOOLS:
+      return RTEMS_RECORD_TOOLS;
+    default:
+      rtems_test_assert(0);
+      return RTEMS_RECORD_EMPTY;
+  }
+}
+
 static int connect_client(void)
 {
   struct sockaddr_in addr;
@@ -553,6 +581,7 @@ static int connect_client(void)
   uint32_t v;
   rtems_record_item item;
   rtems_record_item items[8];
+  header_state hs;
 
   fd = socket(PF_INET, SOCK_STREAM, 0);
   rtems_test_assert(fd >= 0);
@@ -592,8 +621,22 @@ static int connect_client(void)
   rtems_test_assert(item.event == TE(0, RTEMS_RECORD_FREQUENCY));
   rtems_test_assert(item.data == rtems_counter_frequency());
 
-  n = read(fd, items, sizeof(expected_items_13));
-  rtems_test_assert(n == (ssize_t) sizeof(expected_items_13));
+  hs = HEADER_ARCH;
+  while (hs != HEADER_LAST) {
+    n = read(fd, items, sizeof(items[0]));
+    rtems_test_assert(n == (ssize_t) sizeof(items[0]));
+
+    if (items[0].event != hs_to_ev(hs)) {
+      ++hs;
+    }
+
+    rtems_test_assert(hs == HEADER_LAST || items[0].event == hs_to_ev(hs));
+  }
+
+  n = read(fd, &items[1], sizeof(expected_items_13) - sizeof(items[0]));
+  rtems_test_assert(
+    n == (ssize_t) (sizeof(expected_items_13) - sizeof(items[0]))
+  );
   rtems_test_assert(
     memcmp(items, expected_items_13, sizeof(expected_items_13)) == 0
   );



More information about the vc mailing list