[lxc-devel] [lxd/master] Fix some test failures

stgraber on Github lxc-bot at linuxcontainers.org
Thu Apr 4 19:04:51 UTC 2019


A non-text attachment was scrubbed...
Name: not available
Type: text/x-mailbox
Size: 301 bytes
Desc: not available
URL: <http://lists.linuxcontainers.org/pipermail/lxc-devel/attachments/20190404/c5aa335a/attachment.bin>
-------------- next part --------------
From d2b2e7438bd3e2998aad73f6d4425443d3cf6250 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?St=C3=A9phane=20Graber?= <stgraber at ubuntu.com>
Date: Thu, 4 Apr 2019 14:30:40 -0400
Subject: [PATCH 1/4] tests: Allow up to 15s for container reboot
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Signed-off-by: Stéphane Graber <stgraber at ubuntu.com>
---
 test/suites/basic.sh | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/test/suites/basic.sh b/test/suites/basic.sh
index 961b57442d..fd80141424 100644
--- a/test/suites/basic.sh
+++ b/test/suites/basic.sh
@@ -465,7 +465,7 @@ test_basic_usage() {
   REBOOTED="false"
 
   # shellcheck disable=SC2034
-  for i in $(seq 20); do
+  for i in $(seq 30); do
     NEW_INIT=$(lxc info foo | grep ^Pid || true)
 
     if [ -n "${NEW_INIT}" ] && [ "${OLD_INIT}" != "${NEW_INIT}" ]; then

From f8a09c30f40614a218e4757f9f7c19fef275f4bc Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?St=C3=A9phane=20Graber?= <stgraber at ubuntu.com>
Date: Thu, 4 Apr 2019 14:50:48 -0400
Subject: [PATCH 2/4] tests: Remove dead code
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Signed-off-by: Stéphane Graber <stgraber at ubuntu.com>
---
 test/suites/incremental_copy.sh | 5 -----
 1 file changed, 5 deletions(-)

diff --git a/test/suites/incremental_copy.sh b/test/suites/incremental_copy.sh
index 27348e5a30..2340d65425 100644
--- a/test/suites/incremental_copy.sh
+++ b/test/suites/incremental_copy.sh
@@ -42,11 +42,6 @@ do_copy() {
   # Initial copy
   # shellcheck disable=2086
   lxc copy c1 c2 ${pool}
-
-  # Make sure the testfile doesn't exist
-  ! lxc exec c1 -- touch /root/testfile1 || false
-  ! lxc exec c2 -- touch /root/testfile1 || false
-
   lxc start c1 c2
 
   # Target container may not be running when refreshing

From 11724cd8da19b49cb2514a6206694fb5e26962f0 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?St=C3=A9phane=20Graber?= <stgraber at ubuntu.com>
Date: Thu, 4 Apr 2019 14:59:25 -0400
Subject: [PATCH 3/4] lxd/tasks: Avoid races on startup
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Signed-off-by: Stéphane Graber <stgraber at ubuntu.com>
---
 lxd/task/group.go | 21 ++++++++++++++++++---
 1 file changed, 18 insertions(+), 3 deletions(-)

diff --git a/lxd/task/group.go b/lxd/task/group.go
index b8b70b3065..2cb8de774a 100644
--- a/lxd/task/group.go
+++ b/lxd/task/group.go
@@ -37,16 +37,31 @@ func (g *Group) Start() {
 	ctx := context.Background()
 	ctx, g.cancel = context.WithCancel(ctx)
 	g.wg.Add(len(g.tasks))
-	g.running = make(map[int]bool)
+
+	g.mu.Lock()
+	if g.running == nil {
+		g.running = make(map[int]bool)
+	}
+	g.mu.Unlock()
+
 	for i := range g.tasks {
-		task := g.tasks[i] // Local variable for the closure below.
+		g.mu.Lock()
+		if g.running[i] {
+			g.mu.Unlock()
+			continue
+		}
+
 		g.running[i] = true
+		task := g.tasks[i] // Local variable for the closure below.
+		g.mu.Unlock()
+
 		go func(i int) {
 			task.loop(ctx)
 			g.wg.Done()
+
 			g.mu.Lock()
-			defer g.mu.Unlock()
 			g.running[i] = false
+			g.mu.Unlock()
 		}(i)
 	}
 }

From c39609039383748dc5db748cbdfaefd9850cf258 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?St=C3=A9phane=20Graber?= <stgraber at ubuntu.com>
Date: Thu, 4 Apr 2019 15:02:18 -0400
Subject: [PATCH 4/4] tests: Fix race condition in proxy test
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Signed-off-by: Stéphane Graber <stgraber at ubuntu.com>
---
 test/suites/proxy.sh | 115 ++++++++++++++++++++++++++-----------------
 1 file changed, 69 insertions(+), 46 deletions(-)

diff --git a/test/suites/proxy.sh b/test/suites/proxy.sh
index ac38f17b23..3ec9e270bc 100644
--- a/test/suites/proxy.sh
+++ b/test/suites/proxy.sh
@@ -24,8 +24,9 @@ test_proxy_device_tcp() {
   NSENTER_PID=$!
   sleep 0.5
 
-  ECHO=$( (echo "${MESSAGE}" ; sleep 0.1) | socat - tcp:127.0.0.1:"${HOST_TCP_PORT}")
-  kill -9 "${NSENTER_PID}" 2>/dev/null || true
+  ECHO=$( (echo "${MESSAGE}" ; sleep 0.5) | socat - tcp:127.0.0.1:"${HOST_TCP_PORT}")
+  kill "${NSENTER_PID}" 2>/dev/null || true
+  wait "${NSENTER_PID}" 2>/dev/null || true
 
   if [ "${ECHO}" != "${MESSAGE}" ]; then
     cat "${LXD_DIR}/logs/proxyTester/proxy.proxyDev.log"
@@ -39,8 +40,9 @@ test_proxy_device_tcp() {
   NSENTER_PID=$!
   sleep 0.5
 
-  ECHO=$( (echo "${MESSAGE}" ; sleep 0.1) | socat - tcp:127.0.0.1:"${HOST_TCP_PORT}")
-  kill -9 "${NSENTER_PID}" 2>/dev/null || true
+  ECHO=$( (echo "${MESSAGE}" ; sleep 0.5) | socat - tcp:127.0.0.1:"${HOST_TCP_PORT}")
+  kill "${NSENTER_PID}" 2>/dev/null || true
+  wait "${NSENTER_PID}" 2>/dev/null || true
 
   if [ "${ECHO}" != "${MESSAGE}" ]; then
     cat "${LXD_DIR}/logs/proxyTester/proxy.proxyDev.log"
@@ -54,8 +56,9 @@ test_proxy_device_tcp() {
   NSENTER_PID=$!
   sleep 0.5
 
-  ECHO=$( (echo "${MESSAGE}" ; sleep 0.1) | socat - tcp:127.0.0.1:"${HOST_TCP_PORT}")
-  kill -9 "${NSENTER_PID}" 2>/dev/null || true
+  ECHO=$( (echo "${MESSAGE}" ; sleep 0.5) | socat - tcp:127.0.0.1:"${HOST_TCP_PORT}")
+  kill "${NSENTER_PID}" 2>/dev/null || true
+  wait "${NSENTER_PID}" 2>/dev/null || true
 
   if [ "${ECHO}" != "${MESSAGE}" ]; then
     cat "${LXD_DIR}/logs/proxyTester/proxy.proxyDev.log"
@@ -73,10 +76,12 @@ test_proxy_device_tcp() {
   NSENTER_PID1=$!
   sleep 0.5
 
-  ECHO=$( (echo "${MESSAGE}" ; sleep 0.1) | socat - tcp:127.0.0.1:"${HOST_TCP_PORT}")
-  kill -9 "${NSENTER_PID}" 2>/dev/null || true
-  ECHO1=$( (echo "${MESSAGE}" ; sleep 0.1) | socat - tcp:127.0.0.1:"${HOST_TCP_PORT2}")
-  kill -9 "${NSENTER_PID1}" 2>/dev/null || true
+  ECHO=$( (echo "${MESSAGE}" ; sleep 0.5) | socat - tcp:127.0.0.1:"${HOST_TCP_PORT}")
+  kill "${NSENTER_PID}" 2>/dev/null || true
+  wait "${NSENTER_PID}" 2>/dev/null || true
+  ECHO1=$( (echo "${MESSAGE}" ; sleep 0.5) | socat - tcp:127.0.0.1:"${HOST_TCP_PORT2}")
+  kill "${NSENTER_PID1}" 2>/dev/null || true
+  wait "${NSENTER_PID1}" 2>/dev/null || true
 
   if [ "${ECHO}" != "${MESSAGE}" ]; then
     cat "${LXD_DIR}/logs/proxyTester/proxy.proxyDev.log"
@@ -168,8 +173,9 @@ test_proxy_device_unix() {
   NSENTER_PID=$!
   sleep 0.5
 
-  ECHO=$( (echo "${MESSAGE}" ; sleep 0.1) | socat - unix:"${HOST_SOCK#$(pwd)/}")
-  kill -9 "${NSENTER_PID}" 2>/dev/null || true
+  ECHO=$( (echo "${MESSAGE}" ; sleep 0.5) | socat - unix:"${HOST_SOCK#$(pwd)/}")
+  kill "${NSENTER_PID}" 2>/dev/null || true
+  wait "${NSENTER_PID}" 2>/dev/null || true
 
   if [ "${ECHO}" != "${MESSAGE}" ]; then
     cat "${LXD_DIR}/logs/proxyTester/proxy.proxyDev.log"
@@ -190,8 +196,9 @@ test_proxy_device_unix() {
   NSENTER_PID=$!
   sleep 0.5
 
-  ECHO=$( (echo "${MESSAGE}" ; sleep 0.1) | socat - unix:"${HOST_SOCK#$(pwd)/}")
-  kill -9 "${NSENTER_PID}" 2>/dev/null || true
+  ECHO=$( (echo "${MESSAGE}" ; sleep 0.5) | socat - unix:"${HOST_SOCK#$(pwd)/}")
+  kill "${NSENTER_PID}" 2>/dev/null || true
+  wait "${NSENTER_PID}" 2>/dev/null || true
 
   if [ "${ECHO}" != "${MESSAGE}" ]; then
     cat "${LXD_DIR}/logs/proxyTester/proxy.proxyDev.log"
@@ -212,8 +219,9 @@ test_proxy_device_unix() {
   NSENTER_PID=$!
   sleep 0.5
 
-  ECHO=$( (echo "${MESSAGE}" ; sleep 0.1) | socat - unix:"${HOST_SOCK#$(pwd)/}")
-  kill -9 "${NSENTER_PID}" 2>/dev/null || true
+  ECHO=$( (echo "${MESSAGE}" ; sleep 0.5) | socat - unix:"${HOST_SOCK#$(pwd)/}")
+  kill "${NSENTER_PID}" 2>/dev/null || true
+  wait "${NSENTER_PID}" 2>/dev/null || true
 
   if [ "${ECHO}" != "${MESSAGE}" ]; then
     cat "${LXD_DIR}/logs/proxyTester/proxy.proxyDev.log"
@@ -248,8 +256,9 @@ test_proxy_device_tcp_unix() {
   NSENTER_PID=$!
   sleep 0.5
 
-  ECHO=$( (echo "${MESSAGE}" ; sleep 0.1) | socat - tcp:127.0.0.1:"${HOST_TCP_PORT}")
-  kill -9 "${NSENTER_PID}" 2>/dev/null || true
+  ECHO=$( (echo "${MESSAGE}" ; sleep 0.5) | socat - tcp:127.0.0.1:"${HOST_TCP_PORT}")
+  kill "${NSENTER_PID}" 2>/dev/null || true
+  wait "${NSENTER_PID}" 2>/dev/null || true
 
   if [ "${ECHO}" != "${MESSAGE}" ]; then
     cat "${LXD_DIR}/logs/proxyTester/proxy.proxyDev.log"
@@ -268,8 +277,9 @@ test_proxy_device_tcp_unix() {
   NSENTER_PID=$!
   sleep 0.5
 
-  ECHO=$( (echo "${MESSAGE}" ; sleep 0.1) | socat - tcp:127.0.0.1:"${HOST_TCP_PORT}")
-  kill -9 "${NSENTER_PID}" 2>/dev/null || true
+  ECHO=$( (echo "${MESSAGE}" ; sleep 0.5) | socat - tcp:127.0.0.1:"${HOST_TCP_PORT}")
+  kill "${NSENTER_PID}" 2>/dev/null || true
+  wait "${NSENTER_PID}" 2>/dev/null || true
 
   if [ "${ECHO}" != "${MESSAGE}" ]; then
     cat "${LXD_DIR}/logs/proxyTester/proxy.proxyDev.log"
@@ -288,8 +298,9 @@ test_proxy_device_tcp_unix() {
   NSENTER_PID=$!
   sleep 0.5
 
-  ECHO=$( (echo "${MESSAGE}" ; sleep 0.1) | socat - tcp:127.0.0.1:"${HOST_TCP_PORT}")
-  kill -9 "${NSENTER_PID}" 2>/dev/null || true
+  ECHO=$( (echo "${MESSAGE}" ; sleep 0.5) | socat - tcp:127.0.0.1:"${HOST_TCP_PORT}")
+  kill "${NSENTER_PID}" 2>/dev/null || true
+  wait "${NSENTER_PID}" 2>/dev/null || true
 
   if [ "${ECHO}" != "${MESSAGE}" ]; then
     cat "${LXD_DIR}/logs/proxyTester/proxy.proxyDev.log"
@@ -317,8 +328,9 @@ test_proxy_device_unix_tcp() {
   NSENTER_PID=$!
   sleep 0.5
 
-  ECHO=$( (echo "${MESSAGE}" ; sleep 0.1) | socat - unix:"${HOST_SOCK#$(pwd)/}")
-  kill -9 "${NSENTER_PID}" 2>/dev/null || true
+  ECHO=$( (echo "${MESSAGE}" ; sleep 0.5) | socat - unix:"${HOST_SOCK#$(pwd)/}")
+  kill "${NSENTER_PID}" 2>/dev/null || true
+  wait "${NSENTER_PID}" 2>/dev/null || true
 
   if [ "${ECHO}" != "${MESSAGE}" ]; then
     cat "${LXD_DIR}/logs/proxyTester/proxy.proxyDev.log"
@@ -334,8 +346,9 @@ test_proxy_device_unix_tcp() {
   NSENTER_PID=$!
   sleep 0.5
 
-  ECHO=$( (echo "${MESSAGE}" ; sleep 0.1) | socat - unix:"${HOST_SOCK#$(pwd)/}")
-  kill -9 "${NSENTER_PID}" 2>/dev/null || true
+  ECHO=$( (echo "${MESSAGE}" ; sleep 0.5) | socat - unix:"${HOST_SOCK#$(pwd)/}")
+  kill "${NSENTER_PID}" 2>/dev/null || true
+  wait "${NSENTER_PID}" 2>/dev/null || true
 
   if [ "${ECHO}" != "${MESSAGE}" ]; then
     cat "${LXD_DIR}/logs/proxyTester/proxy.proxyDev.log"
@@ -351,8 +364,9 @@ test_proxy_device_unix_tcp() {
   NSENTER_PID=$!
   sleep 0.5
 
-  ECHO=$( (echo "${MESSAGE}" ; sleep 0.1) | socat - unix:"${HOST_SOCK#$(pwd)/}")
-  kill -9 "${NSENTER_PID}" 2>/dev/null || true
+  ECHO=$( (echo "${MESSAGE}" ; sleep 0.5) | socat - unix:"${HOST_SOCK#$(pwd)/}")
+  kill "${NSENTER_PID}" 2>/dev/null || true
+  wait "${NSENTER_PID}" 2>/dev/null || true
 
   if [ "${ECHO}" != "${MESSAGE}" ]; then
     cat "${LXD_DIR}/logs/proxyTester/proxy.proxyDev.log"
@@ -382,8 +396,9 @@ test_proxy_device_udp() {
   NSENTER_PID=$!
   sleep 0.5
 
-  ECHO=$( (echo "${MESSAGE}" ; sleep 0.1) | socat - udp:127.0.0.1:"${HOST_UDP_PORT}")
-  kill -9 "${NSENTER_PID}" 2>/dev/null || true
+  ECHO=$( (echo "${MESSAGE}" ; sleep 0.5) | socat - udp:127.0.0.1:"${HOST_UDP_PORT}")
+  kill "${NSENTER_PID}" 2>/dev/null || true
+  wait "${NSENTER_PID}" 2>/dev/null || true
 
   if [ "${ECHO}" != "${MESSAGE}" ]; then
     cat "${LXD_DIR}/logs/proxyTester/proxy.proxyDev.log"
@@ -397,8 +412,9 @@ test_proxy_device_udp() {
   NSENTER_PID=$!
   sleep 0.5
 
-  ECHO=$( (echo "${MESSAGE}" ; sleep 0.1) | socat - udp:127.0.0.1:"${HOST_UDP_PORT}")
-  kill -9 "${NSENTER_PID}" 2>/dev/null || true
+  ECHO=$( (echo "${MESSAGE}" ; sleep 0.5) | socat - udp:127.0.0.1:"${HOST_UDP_PORT}")
+  kill "${NSENTER_PID}" 2>/dev/null || true
+  wait "${NSENTER_PID}" 2>/dev/null || true
 
   if [ "${ECHO}" != "${MESSAGE}" ]; then
     cat "${LXD_DIR}/logs/proxyTester/proxy.proxyDev.log"
@@ -412,8 +428,9 @@ test_proxy_device_udp() {
   NSENTER_PID=$!
   sleep 0.5
 
-  ECHO=$( (echo "${MESSAGE}" ; sleep 0.1) | socat - udp:127.0.0.1:"${HOST_UDP_PORT}")
-  kill -9 "${NSENTER_PID}" 2>/dev/null || true
+  ECHO=$( (echo "${MESSAGE}" ; sleep 0.5) | socat - udp:127.0.0.1:"${HOST_UDP_PORT}")
+  kill "${NSENTER_PID}" 2>/dev/null || true
+  wait "${NSENTER_PID}" 2>/dev/null || true
 
   if [ "${ECHO}" != "${MESSAGE}" ]; then
     cat "${LXD_DIR}/logs/proxyTester/proxy.proxyDev.log"
@@ -441,8 +458,9 @@ test_proxy_device_unix_udp() {
   NSENTER_PID=$!
   sleep 0.5
 
-  ECHO=$( (echo "${MESSAGE}" ; sleep 0.1) | socat - unix:"${HOST_SOCK#$(pwd)/}")
-  kill -9 "${NSENTER_PID}" 2>/dev/null || true
+  ECHO=$( (echo "${MESSAGE}" ; sleep 0.5) | socat - unix:"${HOST_SOCK#$(pwd)/}")
+  kill "${NSENTER_PID}" 2>/dev/null || true
+  wait "${NSENTER_PID}" 2>/dev/null || true
 
   if [ "${ECHO}" != "${MESSAGE}" ]; then
     cat "${LXD_DIR}/logs/proxyTester/proxy.proxyDev.log"
@@ -458,8 +476,9 @@ test_proxy_device_unix_udp() {
   NSENTER_PID=$!
   sleep 0.5
 
-  ECHO=$( (echo "${MESSAGE}" ; sleep 0.1) | socat - unix:"${HOST_SOCK#$(pwd)/}")
-  kill -9 "${NSENTER_PID}" 2>/dev/null || true
+  ECHO=$( (echo "${MESSAGE}" ; sleep 0.5) | socat - unix:"${HOST_SOCK#$(pwd)/}")
+  kill "${NSENTER_PID}" 2>/dev/null || true
+  wait "${NSENTER_PID}" 2>/dev/null || true
 
   if [ "${ECHO}" != "${MESSAGE}" ]; then
     cat "${LXD_DIR}/logs/proxyTester/proxy.proxyDev.log"
@@ -475,8 +494,9 @@ test_proxy_device_unix_udp() {
   NSENTER_PID=$!
   sleep 0.5
 
-  ECHO=$( (echo "${MESSAGE}" ; sleep 0.1) | socat - unix:"${HOST_SOCK#$(pwd)/}")
-  kill -9 "${NSENTER_PID}" 2>/dev/null || true
+  ECHO=$( (echo "${MESSAGE}" ; sleep 0.5) | socat - unix:"${HOST_SOCK#$(pwd)/}")
+  kill "${NSENTER_PID}" 2>/dev/null || true
+  wait "${NSENTER_PID}" 2>/dev/null || true
 
   if [ "${ECHO}" != "${MESSAGE}" ]; then
     cat "${LXD_DIR}/logs/proxyTester/proxy.proxyDev.log"
@@ -506,8 +526,9 @@ test_proxy_device_tcp_udp() {
   NSENTER_PID=$!
   sleep 0.5
 
-  ECHO=$( (echo "${MESSAGE}" ; sleep 0.1) | socat - tcp:127.0.0.1:"${HOST_TCP_PORT}")
-  kill -9 "${NSENTER_PID}" 2>/dev/null || true
+  ECHO=$( (echo "${MESSAGE}" ; sleep 0.5) | socat - tcp:127.0.0.1:"${HOST_TCP_PORT}")
+  kill "${NSENTER_PID}" 2>/dev/null || true
+  wait "${NSENTER_PID}" 2>/dev/null || true
 
   if [ "${ECHO}" != "${MESSAGE}" ]; then
     cat "${LXD_DIR}/logs/proxyTester/proxy.proxyDev.log"
@@ -521,8 +542,9 @@ test_proxy_device_tcp_udp() {
   NSENTER_PID=$!
   sleep 0.5
 
-  ECHO=$( (echo "${MESSAGE}" ; sleep 0.1) | socat - tcp:127.0.0.1:"${HOST_TCP_PORT}")
-  kill -9 "${NSENTER_PID}" 2>/dev/null || true
+  ECHO=$( (echo "${MESSAGE}" ; sleep 0.5) | socat - tcp:127.0.0.1:"${HOST_TCP_PORT}")
+  kill "${NSENTER_PID}" 2>/dev/null || true
+  wait "${NSENTER_PID}" 2>/dev/null || true
 
   if [ "${ECHO}" != "${MESSAGE}" ]; then
     cat "${LXD_DIR}/logs/proxyTester/proxy.proxyDev.log"
@@ -536,8 +558,9 @@ test_proxy_device_tcp_udp() {
   NSENTER_PID=$!
   sleep 0.5
 
-  ECHO=$( (echo "${MESSAGE}" ; sleep 0.1) | socat - tcp:127.0.0.1:"${HOST_TCP_PORT}")
-  kill -9 "${NSENTER_PID}" 2>/dev/null || true
+  ECHO=$( (echo "${MESSAGE}" ; sleep 0.5) | socat - tcp:127.0.0.1:"${HOST_TCP_PORT}")
+  kill "${NSENTER_PID}" 2>/dev/null || true
+  wait "${NSENTER_PID}" 2>/dev/null || true
 
   if [ "${ECHO}" != "${MESSAGE}" ]; then
     cat "${LXD_DIR}/logs/proxyTester/proxy.proxyDev.log"


More information about the lxc-devel mailing list