From e25e02a325736738981658bcdc722c0a54190d72 Mon Sep 17 00:00:00 2001 From: Umar Farooq Date: Mon, 10 Oct 2016 23:05:29 +0200 Subject: [PATCH 1/3] Add new test cases for gtnet and villas header testing for socket node type --- etc/gtnet_test1.conf | 62 ++++++++++++++++++++++++++++++++++++++++++++ etc/gtnet_test2.conf | 62 ++++++++++++++++++++++++++++++++++++++++++++ etc/gtnet_test3.conf | 62 ++++++++++++++++++++++++++++++++++++++++++++ etc/gtnet_test4.conf | 62 ++++++++++++++++++++++++++++++++++++++++++++ 4 files changed, 248 insertions(+) create mode 100644 etc/gtnet_test1.conf create mode 100644 etc/gtnet_test2.conf create mode 100644 etc/gtnet_test3.conf create mode 100644 etc/gtnet_test4.conf diff --git a/etc/gtnet_test1.conf b/etc/gtnet_test1.conf new file mode 100644 index 000000000..3e5d147b3 --- /dev/null +++ b/etc/gtnet_test1.conf @@ -0,0 +1,62 @@ +# This is an example for a minimal loopback configuration. +# +# All messages will be sent back to the origin using UDP packets. +# +# You can use this configuration in conjunction with the 'send', 'receive' and 'random' +# utilities as shown below (run all three steps in parallel). +# +# 0. Overview: +# +# ./signal --PIPE--> ./pipe --UDP--> ./node --UDP--> ./pipe +# +# 1. Start server: +# +# $ ./node etc/loopback.conf +# +# 2. Send random data to server: +# +# $ ./signal random -r 10 -v 4 | ./pipe etc/loopback.conf node1 +# +# 3. Receive data from server: +# +# $ ./pipe etc/loopback.conf node2 +# +# Author: Steffen Vogel +# Copyright: 2016, Institute for Automation of Complex Power Systems, EONERC +## + +stats = 1; +debug = 10; + +nodes = { + node1 = { + type = "socket", + layer = "udp", + local = "192.168.88.128:12002", # Local ip:port, use '*' for random port + remote = "192.168.88.129:12001", + header = "villas", # 'gtnet-skt' or 'villas'. If not provided, 'villas' header will be used + vectorize = 1, # Number of samples to fetch per iteration from the socket + netem = { + enabled = false, + delay = 1000000, # In micro seconds! + jitter = 300000, + distribution = "normal" + } + }, + node2 = { + type = "socket", + layer = "udp", + local = "*:12004", # Local ip:port, use '*' for random port + remote = "192.168.88.129:12005", + header = "villas", # 'gtnet-skt' or 'villas'. If not provided, 'villas' header will be used + vectorize = 1 # Number of samples to fetch per iteration from the socket + } +}; + +paths = ( + { + in = "node1", # Name of the node we listen to (see above) + out = "node1", # And we loop back to the origin + hook = ["print"] + } +); diff --git a/etc/gtnet_test2.conf b/etc/gtnet_test2.conf new file mode 100644 index 000000000..1c40c3dd4 --- /dev/null +++ b/etc/gtnet_test2.conf @@ -0,0 +1,62 @@ +# This is an example for a minimal loopback configuration. +# +# All messages will be sent back to the origin using UDP packets. +# +# You can use this configuration in conjunction with the 'send', 'receive' and 'random' +# utilities as shown below (run all three steps in parallel). +# +# 0. Overview: +# +# ./signal --PIPE--> ./pipe --UDP--> ./node --UDP--> ./pipe +# +# 1. Start server: +# +# $ ./node etc/loopback.conf +# +# 2. Send random data to server: +# +# $ ./signal random -r 10 -v 4 | ./pipe etc/loopback.conf node1 +# +# 3. Receive data from server: +# +# $ ./pipe etc/loopback.conf node2 +# +# Author: Steffen Vogel +# Copyright: 2016, Institute for Automation of Complex Power Systems, EONERC +## + +stats = 1; +debug = 10; + +nodes = { + node1 = { + type = "socket", + layer = "udp", + local = "192.168.88.128:12002", # Local ip:port, use '*' for random port + remote = "192.168.88.129:12001", + header = "villas", # 'gtnet-skt' or 'villas'. If not provided, 'villas' header will be used + vectorize = 1, # Number of samples to fetch per iteration from the socket + netem = { + enabled = false, + delay = 1000000, # In micro seconds! + jitter = 300000, + distribution = "normal" + } + }, + node2 = { + type = "socket", + layer = "udp", + local = "192.168.88.128:12004", # Local ip:port, use '*' for random port + remote = "192.168.88.129:12001", + header = "villas", # 'gtnet-skt' or 'villas'. If not provided, 'villas' header will be used + vectorize = 1 # Number of samples to fetch per iteration from the socket + } +}; + +paths = ( + { + in = "node1", # Name of the node we listen to (see above) + out = "node2", # And we loop back to the origin + hook = ["print"] + } +); diff --git a/etc/gtnet_test3.conf b/etc/gtnet_test3.conf new file mode 100644 index 000000000..9470160ec --- /dev/null +++ b/etc/gtnet_test3.conf @@ -0,0 +1,62 @@ +# This is an example for a minimal loopback configuration. +# +# All messages will be sent back to the origin using UDP packets. +# +# You can use this configuration in conjunction with the 'send', 'receive' and 'random' +# utilities as shown below (run all three steps in parallel). +# +# 0. Overview: +# +# ./signal --PIPE--> ./pipe --UDP--> ./node --UDP--> ./pipe +# +# 1. Start server: +# +# $ ./node etc/loopback.conf +# +# 2. Send random data to server: +# +# $ ./signal random -r 10 -v 4 | ./pipe etc/loopback.conf node1 +# +# 3. Receive data from server: +# +# $ ./pipe etc/loopback.conf node2 +# +# Author: Steffen Vogel +# Copyright: 2016, Institute for Automation of Complex Power Systems, EONERC +## + +stats = 1; +debug = 10; + +nodes = { + node1 = { + type = "socket", + layer = "udp", + local = "192.168.88.128:12002", # Local ip:port, use '*' for random port + remote = "192.168.88.129:12001", + header = "gtnet-skt", # 'gtnet-skt' or 'villas'. If not provided, 'villas' header will be used + vectorize = 1, # Number of samples to fetch per iteration from the socket + netem = { + enabled = false, + delay = 1000000, # In micro seconds! + jitter = 300000, + distribution = "normal" + } + }, + node2 = { + type = "socket", + layer = "udp", + local = "192.168.88.128:12004", # Local ip:port, use '*' for random port + remote = "192.168.88.129:12001", + header = "gtnet-skt", # 'gtnet-skt' or 'villas'. If not provided, 'villas' header will be used + vectorize = 1 # Number of samples to fetch per iteration from the socket + } +}; + +paths = ( + { + in = "node1", # Name of the node we listen to (see above) + out = "node2", # And we loop back to the origin + hook = ["print"] + } +); diff --git a/etc/gtnet_test4.conf b/etc/gtnet_test4.conf new file mode 100644 index 000000000..b80cbd41d --- /dev/null +++ b/etc/gtnet_test4.conf @@ -0,0 +1,62 @@ +# This is an example for a minimal loopback configuration. +# +# All messages will be sent back to the origin using UDP packets. +# +# You can use this configuration in conjunction with the 'send', 'receive' and 'random' +# utilities as shown below (run all three steps in parallel). +# +# 0. Overview: +# +# ./signal --PIPE--> ./pipe --UDP--> ./node --UDP--> ./pipe +# +# 1. Start server: +# +# $ ./node etc/loopback.conf +# +# 2. Send random data to server: +# +# $ ./signal random -r 10 -v 4 | ./pipe etc/loopback.conf node1 +# +# 3. Receive data from server: +# +# $ ./pipe etc/loopback.conf node2 +# +# Author: Steffen Vogel +# Copyright: 2016, Institute for Automation of Complex Power Systems, EONERC +## + +stats = 1; +debug = 10; + +nodes = { + node1 = { + type = "socket", + layer = "udp", + local = "192.168.88.128:12002", # Local ip:port, use '*' for random port + remote = "192.168.88.129:12001", + header = "gtnet-skt", # 'gtnet-skt' or 'villas'. If not provided, 'villas' header will be used + vectorize = 1, # Number of samples to fetch per iteration from the socket + netem = { + enabled = false, + delay = 1000000, # In micro seconds! + jitter = 300000, + distribution = "normal" + } + }, + node2 = { + type = "socket", + layer = "udp", + local = "192.168.88.128:12004", # Local ip:port, use '*' for random port + remote = "192.168.88.129:12001", + header = "gtnet-skt", # 'gtnet-skt' or 'villas'. If not provided, 'villas' header will be used + vectorize = 1 # Number of samples to fetch per iteration from the socket + } +}; + +paths = ( + { + in = "node1", # Name of the node we listen to (see above) + out = "node1", # And we loop back to the origin + hook = ["print"] + } +); From 59af01cc332e5c34303e778ee9d7ae4c9f109321 Mon Sep 17 00:00:00 2001 From: Umar Farooq Date: Mon, 10 Oct 2016 23:07:41 +0200 Subject: [PATCH 2/3] Fix bug where smp->capacity value is not initialized --- lib/path.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/path.c b/lib/path.c index c032e41fa..1e6d26bb9 100644 --- a/lib/path.c +++ b/lib/path.c @@ -111,7 +111,7 @@ static void * path_run(void *arg) debug(DBG_PATH | 5, "Current pool status for path %s: used=%zu avail=%zu", path_name(p), p->pool.stack.size, p->pool.stack.avail); /* Fill smps[] free sample blocks from the pool */ - ready += pool_get_many(&p->pool, (void **) smps, cnt - ready); + ready += sample_get_many(&p->pool, smps, cnt - ready); if (ready != cnt) warn("Pool underrun for path %s", path_name(p)); From deba07340773e0b7ef7d83843ea3cb6f1d8920da Mon Sep 17 00:00:00 2001 From: Umar Farooq Date: Mon, 10 Oct 2016 23:09:09 +0200 Subject: [PATCH 3/3] =?UTF-8?q?Small=20improvement=20to=20avoid=20lib/kern?= =?UTF-8?q?el/kernel.c:195:3:=20error:=20ignoring=20return=20value=20of=20?= =?UTF-8?q?=E2=80=98fscanf=E2=80=99,=20declared=20with=20attribute=20warn?= =?UTF-8?q?=5Funused=5Fresult=20[-Werror=3Dunused-result]=20error=20on=20U?= =?UTF-8?q?buntu...not=20a=20hard=20requirement?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/kernel/kernel.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/lib/kernel/kernel.c b/lib/kernel/kernel.c index 8474faf5a..6548dbf49 100644 --- a/lib/kernel/kernel.c +++ b/lib/kernel/kernel.c @@ -184,6 +184,7 @@ int kernel_irq_setaffinity(unsigned irq, uintmax_t new, uintmax_t *old) { char fn[64]; FILE *f; + int ret = 0; snprintf(fn, sizeof(fn), "/proc/irq/%u/smp_affinity", irq); @@ -192,10 +193,10 @@ int kernel_irq_setaffinity(unsigned irq, uintmax_t new, uintmax_t *old) return -1; /* IRQ does not exist */ if (old) - fscanf(f, "%jx", old); + ret = fscanf(f, "%jx", old); fprintf(f, "%jx", new); fclose(f); - return 0; + return ret; }