|
@@ -2,15 +2,12 @@ package daemon // import "github.com/docker/docker/daemon"
|
|
|
|
|
|
import (
|
|
|
"os"
|
|
|
- "reflect"
|
|
|
"sort"
|
|
|
"testing"
|
|
|
- "time"
|
|
|
|
|
|
"github.com/docker/docker/daemon/config"
|
|
|
"github.com/docker/docker/daemon/images"
|
|
|
"github.com/docker/docker/libnetwork"
|
|
|
- "github.com/docker/docker/pkg/discovery"
|
|
|
_ "github.com/docker/docker/pkg/discovery/memory"
|
|
|
"github.com/docker/docker/registry"
|
|
|
"github.com/sirupsen/logrus"
|
|
@@ -341,180 +338,6 @@ func TestDaemonReloadNotAffectOthers(t *testing.T) {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
-func TestDaemonDiscoveryReload(t *testing.T) {
|
|
|
- daemon := &Daemon{
|
|
|
- imageService: images.NewImageService(images.ImageServiceConfig{}),
|
|
|
- }
|
|
|
- muteLogs()
|
|
|
- daemon.configStore = &config.Config{
|
|
|
- CommonConfig: config.CommonConfig{
|
|
|
- ClusterStore: "memory://127.0.0.1",
|
|
|
- ClusterAdvertise: "127.0.0.1:3333",
|
|
|
- },
|
|
|
- }
|
|
|
-
|
|
|
- if err := daemon.initDiscovery(daemon.configStore); err != nil {
|
|
|
- t.Fatal(err)
|
|
|
- }
|
|
|
-
|
|
|
- expected := discovery.Entries{
|
|
|
- &discovery.Entry{Host: "127.0.0.1", Port: "3333"},
|
|
|
- }
|
|
|
-
|
|
|
- select {
|
|
|
- case <-time.After(10 * time.Second):
|
|
|
- t.Fatal("timeout waiting for discovery")
|
|
|
- case <-daemon.discoveryWatcher.ReadyCh():
|
|
|
- }
|
|
|
-
|
|
|
- stopCh := make(chan struct{})
|
|
|
- defer close(stopCh)
|
|
|
- ch, errCh := daemon.discoveryWatcher.Watch(stopCh)
|
|
|
-
|
|
|
- select {
|
|
|
- case <-time.After(1 * time.Second):
|
|
|
- t.Fatal("failed to get discovery advertisements in time")
|
|
|
- case e := <-ch:
|
|
|
- if !reflect.DeepEqual(e, expected) {
|
|
|
- t.Fatalf("expected %v, got %v\n", expected, e)
|
|
|
- }
|
|
|
- case e := <-errCh:
|
|
|
- t.Fatal(e)
|
|
|
- }
|
|
|
-
|
|
|
- valuesSets := make(map[string]interface{})
|
|
|
- valuesSets["cluster-store"] = "memory://127.0.0.1:2222"
|
|
|
- valuesSets["cluster-advertise"] = "127.0.0.1:5555"
|
|
|
- newConfig := &config.Config{
|
|
|
- CommonConfig: config.CommonConfig{
|
|
|
- ClusterStore: "memory://127.0.0.1:2222",
|
|
|
- ClusterAdvertise: "127.0.0.1:5555",
|
|
|
- ValuesSet: valuesSets,
|
|
|
- },
|
|
|
- }
|
|
|
-
|
|
|
- expected = discovery.Entries{
|
|
|
- &discovery.Entry{Host: "127.0.0.1", Port: "5555"},
|
|
|
- }
|
|
|
-
|
|
|
- if err := daemon.Reload(newConfig); err != nil {
|
|
|
- t.Fatal(err)
|
|
|
- }
|
|
|
-
|
|
|
- select {
|
|
|
- case <-time.After(10 * time.Second):
|
|
|
- t.Fatal("timeout waiting for discovery")
|
|
|
- case <-daemon.discoveryWatcher.ReadyCh():
|
|
|
- }
|
|
|
-
|
|
|
- ch, errCh = daemon.discoveryWatcher.Watch(stopCh)
|
|
|
-
|
|
|
- select {
|
|
|
- case <-time.After(1 * time.Second):
|
|
|
- t.Fatal("failed to get discovery advertisements in time")
|
|
|
- case e := <-ch:
|
|
|
- if !reflect.DeepEqual(e, expected) {
|
|
|
- t.Fatalf("expected %v, got %v\n", expected, e)
|
|
|
- }
|
|
|
- case e := <-errCh:
|
|
|
- t.Fatal(e)
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-func TestDaemonDiscoveryReloadFromEmptyDiscovery(t *testing.T) {
|
|
|
- daemon := &Daemon{
|
|
|
- imageService: images.NewImageService(images.ImageServiceConfig{}),
|
|
|
- }
|
|
|
- daemon.configStore = &config.Config{}
|
|
|
- muteLogs()
|
|
|
-
|
|
|
- valuesSet := make(map[string]interface{})
|
|
|
- valuesSet["cluster-store"] = "memory://127.0.0.1:2222"
|
|
|
- valuesSet["cluster-advertise"] = "127.0.0.1:5555"
|
|
|
- newConfig := &config.Config{
|
|
|
- CommonConfig: config.CommonConfig{
|
|
|
- ClusterStore: "memory://127.0.0.1:2222",
|
|
|
- ClusterAdvertise: "127.0.0.1:5555",
|
|
|
- ValuesSet: valuesSet,
|
|
|
- },
|
|
|
- }
|
|
|
-
|
|
|
- expected := discovery.Entries{
|
|
|
- &discovery.Entry{Host: "127.0.0.1", Port: "5555"},
|
|
|
- }
|
|
|
-
|
|
|
- if err := daemon.Reload(newConfig); err != nil {
|
|
|
- t.Fatal(err)
|
|
|
- }
|
|
|
-
|
|
|
- select {
|
|
|
- case <-time.After(10 * time.Second):
|
|
|
- t.Fatal("timeout waiting for discovery")
|
|
|
- case <-daemon.discoveryWatcher.ReadyCh():
|
|
|
- }
|
|
|
-
|
|
|
- stopCh := make(chan struct{})
|
|
|
- defer close(stopCh)
|
|
|
- ch, errCh := daemon.discoveryWatcher.Watch(stopCh)
|
|
|
-
|
|
|
- select {
|
|
|
- case <-time.After(1 * time.Second):
|
|
|
- t.Fatal("failed to get discovery advertisements in time")
|
|
|
- case e := <-ch:
|
|
|
- if !reflect.DeepEqual(e, expected) {
|
|
|
- t.Fatalf("expected %v, got %v\n", expected, e)
|
|
|
- }
|
|
|
- case e := <-errCh:
|
|
|
- t.Fatal(e)
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-func TestDaemonDiscoveryReloadOnlyClusterAdvertise(t *testing.T) {
|
|
|
- daemon := &Daemon{
|
|
|
- imageService: images.NewImageService(images.ImageServiceConfig{}),
|
|
|
- }
|
|
|
- daemon.configStore = &config.Config{
|
|
|
- CommonConfig: config.CommonConfig{
|
|
|
- ClusterStore: "memory://127.0.0.1",
|
|
|
- },
|
|
|
- }
|
|
|
- valuesSets := make(map[string]interface{})
|
|
|
- valuesSets["cluster-advertise"] = "127.0.0.1:5555"
|
|
|
- newConfig := &config.Config{
|
|
|
- CommonConfig: config.CommonConfig{
|
|
|
- ClusterAdvertise: "127.0.0.1:5555",
|
|
|
- ValuesSet: valuesSets,
|
|
|
- },
|
|
|
- }
|
|
|
- expected := discovery.Entries{
|
|
|
- &discovery.Entry{Host: "127.0.0.1", Port: "5555"},
|
|
|
- }
|
|
|
-
|
|
|
- if err := daemon.Reload(newConfig); err != nil {
|
|
|
- t.Fatal(err)
|
|
|
- }
|
|
|
-
|
|
|
- select {
|
|
|
- case <-daemon.discoveryWatcher.ReadyCh():
|
|
|
- case <-time.After(10 * time.Second):
|
|
|
- t.Fatal("Timeout waiting for discovery")
|
|
|
- }
|
|
|
- stopCh := make(chan struct{})
|
|
|
- defer close(stopCh)
|
|
|
- ch, errCh := daemon.discoveryWatcher.Watch(stopCh)
|
|
|
-
|
|
|
- select {
|
|
|
- case <-time.After(1 * time.Second):
|
|
|
- t.Fatal("failed to get discovery advertisements in time")
|
|
|
- case e := <-ch:
|
|
|
- if !reflect.DeepEqual(e, expected) {
|
|
|
- t.Fatalf("expected %v, got %v\n", expected, e)
|
|
|
- }
|
|
|
- case e := <-errCh:
|
|
|
- t.Fatal(e)
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
func TestDaemonReloadNetworkDiagnosticPort(t *testing.T) {
|
|
|
if os.Getuid() != 0 {
|
|
|
t.Skip("root required")
|