mirror of
https://github.com/moby/moby.git
synced 2022-11-09 12:21:53 -05:00
133 lines
3.5 KiB
Go
133 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
|
||
|
}
|