Fix random errors in DockerSuite.TestNetworkNat

I believe this was failing because 'nc' wouldn't show the data
it received sometimes. So intead of looking for that data we now
look for the output of the echo that comes after the nc command
successfully runs

Signed-off-by: Doug Davis <dug@us.ibm.com>
This commit is contained in:
Doug Davis 2015-05-08 08:28:50 -07:00
Родитель 128a07b512
Коммит 769df832a3
1 изменённых файлов: 17 добавлений и 4 удалений

Просмотреть файл

@ -4,14 +4,15 @@ import (
"fmt" "fmt"
"net" "net"
"os/exec" "os/exec"
"strconv"
"strings" "strings"
"github.com/go-check/check" "github.com/go-check/check"
) )
func startServerContainer(c *check.C, proto string, port int) string { func startServerContainer(c *check.C, proto string, port int) string {
cmd := []string{"-d", "-p", fmt.Sprintf("%d:%d", port, port), "busybox", "nc", "-lp", strconv.Itoa(port)} pStr := fmt.Sprintf("%d:%d", port, port)
bCmd := fmt.Sprintf("nc -lp %d && echo bye", port)
cmd := []string{"-d", "-p", pStr, "busybox", "sh", "-c", bCmd}
if proto == "udp" { if proto == "udp" {
cmd = append(cmd, "-u") cmd = append(cmd, "-u")
} }
@ -75,7 +76,13 @@ func (s *DockerSuite) TestNetworkNat(c *check.C) {
} }
result := getContainerLogs(c, srv) result := getContainerLogs(c, srv)
if expected := "hello world"; result != expected {
// Ideally we'd like to check for "hello world" but sometimes
// nc doesn't show the data it received so instead let's look for
// the output of the 'echo bye' that should be printed once
// the nc command gets a connection
expected := "bye"
if !strings.Contains(result, expected) {
c.Fatalf("Unexpected output. Expected: %q, received: %q", expected, result) c.Fatalf("Unexpected output. Expected: %q, received: %q", expected, result)
} }
} }
@ -97,7 +104,13 @@ func (s *DockerSuite) TestNetworkLocalhostTCPNat(c *check.C) {
conn.Close() conn.Close()
result := getContainerLogs(c, srv) result := getContainerLogs(c, srv)
if expected := "hello world"; result != expected {
// Ideally we'd like to check for "hello world" but sometimes
// nc doesn't show the data it received so instead let's look for
// the output of the 'echo bye' that should be printed once
// the nc command gets a connection
expected := "bye"
if !strings.Contains(result, expected) {
c.Fatalf("Unexpected output. Expected: %q, received: %q", expected, result) c.Fatalf("Unexpected output. Expected: %q, received: %q", expected, result)
} }
} }