Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Release 2015.09 - RC4 #7

Closed
6 of 8 tasks
OlegHahm opened this issue Oct 3, 2015 · 9 comments
Closed
6 of 8 tasks

Release 2015.09 - RC4 #7

OlegHahm opened this issue Oct 3, 2015 · 9 comments

Comments

@OlegHahm
Copy link
Member

OlegHahm commented Oct 3, 2015

This issue lists the status of all tests for the Release Candidate 4 of the 2015.09 release.

Specs tested:

  • 01-CI
  • 02-Tests
    • Task 01:
    • all other tests succeed on native
    • Task 02 and 03 succeed
  • 03-Single Hop IPv6 ICMP
    • Task 01: 1000 packets transmitted, 1000 received, 0% packet loss, time 10.06155388 s (and pktbuf is empty)
    • Task 02: 1000 packets transmitted, 1000 received, 0% packet loss, time 100.06267042 s
    • Task 03: 3600 packets transmitted, 3600 received, 0% packet loss, time 3600.06266335 s
  • 04-Single Hop 6LoWPAN ICMP
    • Task 01: 1000 packets transmitted, 1000 received, 0% packet loss, time 18.06298406 s
    • Task 02: 1000 packets transmitted, 1000 received, 0% packet loss, time 119.06712665 s (and pktbuf is empty)
    • Task 03: 1000 packets transmitted, 998 received, 1% packet loss, time 243.06217368 s
    • Task 04: 10000 packets transmitted, 9996 received, 1% packet loss, time 1222.06596852 s
  • 05-Single Hop Route
    • Task 01: 100 packets transmitted, 100 received, 0% packet loss, time 1.0619766 s
    • Task 02: 100 packets transmitted, 99 received, 1% packet loss, time 16.06761171 s
    • Task 03: 10 packets transmitted, 10 received, 0% packet loss, time 0.0693490 s
  • 06-Single Hop UDP
  • 07-Multi Hop
    • Task 01:
window: [87, 104, 118, 144]
Setting route dead:beef::90 via fe80::3432:4833:46d8:8a16 for m3-87 ...success
Setting route :: via fe80::3432:4833:46d4:8822 for m3-104 ... success
Setting route dead:beef::90 via fe80::3432:4833:46df:8922 for m3-104 ...success
Setting route :: via fe80::3432:4833:46d8:8a16 for m3-118 ... success
Setting route dead:beef::90 via fe80::3432:4833:46da:9672 for m3-118 ...success
Setting route :: via fe80::3432:4833:46df:8922 for m3-144 ... success
Pinging (dead:beef::90) for node m3-87 ... success with 0% packet loss
Successfully pinged with 3 hops
SUCCESS
  • Task 02:
window: [162, 163, 165, 176]
Setting route dead:beef::b0 via fe80::3432:4833:46de:8922 for m3-162 ...success
Setting route :: via fe80::3432:4833:46d5:8a36 for m3-163 ... success
Setting route dead:beef::b0 via fe80::3432:4833:46d8:8726 for m3-163 ...success
Setting route :: via fe80::3432:4833:46de:8922 for m3-165 ... success
Setting route dead:beef::b0 via fe80::3432:4833:46d4:8d26 for m3-165 ...success
Setting route :: via fe80::3432:4833:46d8:8726 for m3-176 ... success
Send UDP to dead:beef::b0 from node m3-162 ... success
Send UDP to dead:beef::b0 from node m3-162 ... success
Send UDP to dead:beef::b0 from node m3-162 ... success
Send UDP to dead:beef::b0 from node m3-162 ... success
Send UDP to dead:beef::b0 from node m3-162 ... success
Send UDP to dead:beef::b0 from node m3-162 ... success
Send UDP to dead:beef::b0 from node m3-162 ... success
Send UDP to dead:beef::b0 from node m3-162 ... success
Send UDP to dead:beef::b0 from node m3-162 ... success
Send UDP to dead:beef::b0 from node m3-162 ... success
Send UDP to dead:beef::b0 from node m3-162 ... success
Send UDP to dead:beef::b0 from node m3-162 ... success
Send UDP to dead:beef::b0 from node m3-162 ... success
Send UDP to dead:beef::b0 from node m3-162 ... success
Send UDP to dead:beef::b0 from node m3-162 ... success
Send UDP to dead:beef::b0 from node m3-162 ... success
Send UDP to dead:beef::b0 from node m3-162 ... success
Send UDP to dead:beef::b0 from node m3-162 ... success
Send UDP to dead:beef::b0 from node m3-162 ... success
Send UDP to dead:beef::b0 from node m3-162 ... success
Sent successfully with packet loss of 0.0%
Successfully communicated with UDP over 3 hops
SUCCESS
  • Task 03: SUCCESS with 0% - 10% packet loss
  • Task 04: Tested successfully manually.
  • Task 01:
    • Floodping with 1.000.000 packets and default payload from Linux to RIOT: 1000000 packets transmitted, 1000000 received, 0% packet loss, time 33466ms
    • Floodping with 100.000 packets and payload of 1kB from Linux to RIOT: 100000 packets transmitted, 100000 received, 0% packet loss, time 3684ms
    • Floodping with 100.000 pacekts and default payload from RIOT to Linux: 100000 packets transmitted, 100000 received, 0% packet loss, time 3.06685815 s
  • Task 02:
    • Floodping with 100.000 packets and default payload from Linux to RIOT: 100000 packets transmitted, 99648 received, 0% packet loss, time 1010348ms
    • Flooding with 100.000 packets and 1kB payload from RIOT to Linux: 100000 packets transmitted, 93395 received, 7% packet loss, time 21539.06641653 s
  • For Linux testing a patched version of radvd is required, otherwise it won't send the SLLAO in the router advertisements.
@OlegHahm OlegHahm mentioned this issue Oct 3, 2015
8 tasks
@miri64
Copy link
Member

miri64 commented Oct 3, 2015

  • tests/cpp11_* are failing on native, but work on iotlab-m3

There seems to be a library on your host system needed for that (for Ubuntu and gcc 4.8 it is libstdc++-4.8-dev:i386), but I still got a linker issue.

@miri64
Copy link
Member

miri64 commented Oct 3, 2015

Task 06.01 is little bit tricky to do with the given applications: it can't send packets of size 1kB and it does not count the received packets (nor checks if they are duplicates of some sort).

@miri64
Copy link
Member

miri64 commented Oct 3, 2015

Should we write a test application for that?

@OlegHahm
Copy link
Member Author

OlegHahm commented Oct 3, 2015

I know, but I guess copying the application and modifying it to fit the needs is not too complicated.

@OlegHahm
Copy link
Member Author

OlegHahm commented Oct 3, 2015

Should we write a test application for that?

Probably wouldn't hurt.

@miri64
Copy link
Member

miri64 commented Oct 3, 2015

I just patched gnrc_networking [edit: forgot to release packets in UDP server]

diff --git a/examples/gnrc_networking/Makefile b/examples/gnrc_networking/Makefile
index f91d1f3..495d1bf 100644
--- a/examples/gnrc_networking/Makefile
+++ b/examples/gnrc_networking/Makefile
@@ -21,8 +21,6 @@ USEMODULE += gnrc_ipv6_router_default
 USEMODULE += gnrc_udp
 # Add a routing protocol
 USEMODULE += gnrc_rpl
-# This application dumps received packets to STDIO using the pktdump module
-USEMODULE += gnrc_pktdump
 # Additional networking modules that can be dropped if not needed
 USEMODULE += gnrc_icmpv6_echo
 # Add also the shell, some shell commands
diff --git a/examples/gnrc_networking/udp.c b/examples/gnrc_networking/udp.c
index 2344045..304ce90 100644
--- a/examples/gnrc_networking/udp.c
+++ b/examples/gnrc_networking/udp.c
@@ -22,22 +22,68 @@
 #include <inttypes.h>

 #include "kernel.h"
+#include "msg.h"
 #include "net/gnrc.h"
 #include "net/gnrc/ipv6.h"
 #include "net/gnrc/udp.h"
-#include "net/gnrc/pktdump.h"
+#include "thread.h"
 #include "timex.h"
 #include "vtimer.h"

+#define SERVER_MSG_QUEUE_SIZE   (8U)
+#define SERVER_PRIO             (THREAD_PRIORITY_MAIN - 1)
+#define SERVER_STACKSIZE        (THREAD_STACKSIZE_MAIN)
+
 static gnrc_netreg_entry_t server = { NULL, GNRC_NETREG_DEMUX_CTX_ALL, KERNEL_PID_UNDEF };
+static char server_stack[SERVER_STACKSIZE];
+static msg_t server_queue[SERVER_MSG_QUEUE_SIZE];
+static kernel_pid_t server_pid = KERNEL_PID_UNDEF;
+static uint8_t send_count = 0;
+
+static void *_eventloop(void *arg)
+{
+    (void)arg;
+    msg_t msg, reply;
+    unsigned int rcv_count = 0, snd_count = 0;
+
+    /* setup the message queue */
+    msg_init_queue(server_queue, SERVER_MSG_QUEUE_SIZE);
+
+    reply.content.value = (uint32_t)(-ENOTSUP);
+    reply.type = GNRC_NETAPI_MSG_TYPE_ACK;
+
+    while (1) {
+        msg_receive(&msg);
+
+        switch (msg.type) {
+            case GNRC_NETAPI_MSG_TYPE_RCV:
+                printf("Packets received: %d\n", ++rcv_count);
+                gnrc_pktbuf_release((gnrc_pktsnip_t *)msg.content.ptr);
+                break;
+            case GNRC_NETAPI_MSG_TYPE_SND:
+                printf("Packets send: %d\n", ++snd_count);
+                gnrc_pktbuf_release((gnrc_pktsnip_t *)msg.content.ptr);
+                break;
+            case GNRC_NETAPI_MSG_TYPE_GET:
+            case GNRC_NETAPI_MSG_TYPE_SET:
+                msg_reply(&msg, &reply);
+                break;
+            default:
+                break;
+        }
+    }

+    /* never reached */
+    return NULL;
+}

-static void send(char *addr_str, char *port_str, char *data, unsigned int num,
+static void send(char *addr_str, char *port_str, char *data_len_str, unsigned int num,
                  unsigned int delay)
 {
     uint8_t port[2];
     uint16_t tmp;
     ipv6_addr_t addr;
+    size_t data_len;

     /* parse destination address */
     if (ipv6_addr_from_str(&addr, addr_str) == NULL) {
@@ -53,14 +99,21 @@ static void send(char *addr_str, char *port_str, char *data, unsigned int num,
     port[0] = (uint8_t)tmp;
     port[1] = tmp >> 8;

+    data_len = (size_t)atoi(data_len_str);
+    if (data_len == 0) {
+        puts("Error: unable to parse data_len");
+        return;
+    }
+
     for (unsigned int i = 0; i < num; i++) {
         gnrc_pktsnip_t *payload, *udp, *ip;
         /* allocate payload */
-        payload = gnrc_pktbuf_add(NULL, data, strlen(data), GNRC_NETTYPE_UNDEF);
+        payload = gnrc_pktbuf_add(NULL, NULL, data_len, GNRC_NETTYPE_UNDEF);
         if (payload == NULL) {
             puts("Error: unable to copy data to packet buffer");
             return;
         }
+        memset(payload->data, send_count++, data_len);
         /* allocate UDP header, set source port := destination port */
         udp = gnrc_udp_hdr_build(payload, port, 2, port, 2);
         if (udp == NULL) {
@@ -103,8 +156,16 @@ static void start_server(char *port_str)
         puts("Error: invalid port specified");
         return;
     }
+    if (server_pid <= KERNEL_PID_UNDEF) {
+        server_pid = thread_create(server_stack, sizeof(server_stack), SERVER_PRIO,
+                                   CREATE_STACKTEST, _eventloop, NULL, "UDP server");
+        if (server_pid <= KERNEL_PID_UNDEF) {
+            puts("Error: can not start server thread");
+            return;
+        }
+    }
     /* start server (which means registering pktdump for the chosen port) */
-    server.pid = gnrc_pktdump_getpid();
+    server.pid = server_pid;
     server.demux_ctx = (uint32_t)port;
     gnrc_netreg_register(GNRC_NETTYPE_UDP, &server);
     printf("Success: started UDP server on port %" PRIu16 "\n", port);

@miri64
Copy link
Member

miri64 commented Oct 3, 2015

Note, that since gnrc_pktdump was removed you need to add od if you want to use the patched-in pktbuf command.

@miri64
Copy link
Member

miri64 commented Oct 3, 2015

See RIOT-OS/RIOT#4038 and RIOT-OS/RIOT#4039 respectively about the C++ issue.

@miri64
Copy link
Member

miri64 commented Dec 18, 2015

We forgot to close this ;-)

@miri64 miri64 closed this as completed Dec 18, 2015
aabadie pushed a commit to aabadie/Release-Specs that referenced this issue Feb 10, 2019
testutils.mixins: use assignment instead of equality
This was referenced Jan 22, 2020
@riot-ci riot-ci mentioned this issue Jul 17, 2020
81 tasks
@kaspar030 kaspar030 mentioned this issue May 4, 2021
88 tasks
@jia200x jia200x mentioned this issue Jul 10, 2021
88 tasks
@jia200x jia200x mentioned this issue Aug 24, 2022
88 tasks
@jia200x jia200x mentioned this issue Apr 18, 2023
86 tasks
@maribu maribu mentioned this issue Apr 24, 2024
86 tasks
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

2 participants