mirror of
https://github.com/moby/moby.git
synced 2022-11-09 12:21:53 -05:00
36a0f91b5d
Signed-off-by: Madhu Venugopal <madhu@docker.com>
132 lines
3.5 KiB
Go
132 lines
3.5 KiB
Go
package main
|
|
|
|
import (
|
|
"fmt"
|
|
"io/ioutil"
|
|
"os"
|
|
"testing"
|
|
"time"
|
|
|
|
"github.com/docker/libnetwork/netutils"
|
|
)
|
|
|
|
const dnetCommandName = "dnet"
|
|
|
|
var origStdOut = os.Stdout
|
|
|
|
func TestDnetDaemonCustom(t *testing.T) {
|
|
if !netutils.IsRunningInContainer() {
|
|
t.Skip("This test must run inside a container ")
|
|
}
|
|
customPort := 4567
|
|
doneChan := make(chan bool)
|
|
go func() {
|
|
args := []string{dnetCommandName, "-d", fmt.Sprintf("-H=:%d", customPort)}
|
|
executeDnetCommand(t, args, true)
|
|
doneChan <- true
|
|
}()
|
|
|
|
select {
|
|
case <-doneChan:
|
|
t.Fatal("dnet Daemon is not supposed to exit")
|
|
case <-time.After(3 * time.Second):
|
|
args := []string{dnetCommandName, "-d=false", fmt.Sprintf("-H=:%d", customPort), "-D", "network", "ls"}
|
|
executeDnetCommand(t, args, true)
|
|
}
|
|
}
|
|
|
|
func TestDnetDaemonInvalidCustom(t *testing.T) {
|
|
if !netutils.IsRunningInContainer() {
|
|
t.Skip("This test must run inside a container ")
|
|
}
|
|
customPort := 4668
|
|
doneChan := make(chan bool)
|
|
go func() {
|
|
args := []string{dnetCommandName, "-d=true", fmt.Sprintf("-H=:%d", customPort)}
|
|
executeDnetCommand(t, args, true)
|
|
doneChan <- true
|
|
}()
|
|
|
|
select {
|
|
case <-doneChan:
|
|
t.Fatal("dnet Daemon is not supposed to exit")
|
|
case <-time.After(3 * time.Second):
|
|
args := []string{dnetCommandName, "-d=false", "-H=:6669", "-D", "network", "ls"}
|
|
executeDnetCommand(t, args, false)
|
|
}
|
|
}
|
|
|
|
func TestDnetDaemonInvalidParams(t *testing.T) {
|
|
if !netutils.IsRunningInContainer() {
|
|
t.Skip("This test must run inside a container ")
|
|
}
|
|
args := []string{dnetCommandName, "-d=false", "-H=tcp:/127.0.0.1:8080"}
|
|
executeDnetCommand(t, args, false)
|
|
|
|
args = []string{dnetCommandName, "-d=false", "-H=unix://var/run/dnet.sock"}
|
|
executeDnetCommand(t, args, false)
|
|
|
|
args = []string{dnetCommandName, "-d=false", "-H=", "-l=invalid"}
|
|
executeDnetCommand(t, args, false)
|
|
|
|
args = []string{dnetCommandName, "-d=false", "-H=", "-l=error", "invalid"}
|
|
executeDnetCommand(t, args, false)
|
|
}
|
|
|
|
func TestDnetDefaultsWithFlags(t *testing.T) {
|
|
if !netutils.IsRunningInContainer() {
|
|
t.Skip("This test must run inside a container ")
|
|
}
|
|
doneChan := make(chan bool)
|
|
go func() {
|
|
args := []string{dnetCommandName, "-d=true", "-H=", "-l=error"}
|
|
executeDnetCommand(t, args, true)
|
|
doneChan <- true
|
|
}()
|
|
|
|
select {
|
|
case <-doneChan:
|
|
t.Fatal("dnet Daemon is not supposed to exit")
|
|
case <-time.After(3 * time.Second):
|
|
args := []string{dnetCommandName, "-d=false", "network", "create", "-d=null", "test"}
|
|
executeDnetCommand(t, args, true)
|
|
|
|
args = []string{dnetCommandName, "-d=false", "-D", "network", "ls"}
|
|
executeDnetCommand(t, args, true)
|
|
}
|
|
}
|
|
|
|
func TestDnetMain(t *testing.T) {
|
|
if !netutils.IsRunningInContainer() {
|
|
t.Skip("This test must run inside a container ")
|
|
}
|
|
customPort := 4568
|
|
doneChan := make(chan bool)
|
|
go func() {
|
|
args := []string{dnetCommandName, "-d=true", "-h=false", fmt.Sprintf("-H=:%d", customPort)}
|
|
os.Args = args
|
|
main()
|
|
doneChan <- true
|
|
}()
|
|
select {
|
|
case <-doneChan:
|
|
t.Fatal("dnet Daemon is not supposed to exit")
|
|
case <-time.After(2 * time.Second):
|
|
}
|
|
}
|
|
|
|
func executeDnetCommand(t *testing.T, args []string, shouldSucced bool) {
|
|
_, w, _ := os.Pipe()
|
|
os.Stdout = w
|
|
|
|
os.Args = args
|
|
err := dnetCommand(ioutil.Discard, ioutil.Discard)
|
|
if shouldSucced && err != nil {
|
|
os.Stdout = origStdOut
|
|
t.Fatalf("cli [%v] must succeed, but failed with an error : %v", args, err)
|
|
} else if !shouldSucced && err == nil {
|
|
os.Stdout = origStdOut
|
|
t.Fatalf("cli [%v] must fail, but succeeded with an error : %v", args, err)
|
|
}
|
|
os.Stdout = origStdOut
|
|
}
|