Browse Source

Optimize slow bottleneck tests of TestDaemonStartWithDaemonCommand

* Remvoe integration test of TestDaemonStartWithDaemonCommand
* Rewrite as unit test

Related issue #19425

Signed-off-by: Wen Cheng Ma <wenchma@cn.ibm.com>
Wen Cheng Ma 9 years ago
parent
commit
b9ef2682b9
2 changed files with 47 additions and 63 deletions
  1. 47 0
      docker/daemon_test.go
  2. 0 63
      integration-cli/docker_cli_daemon_test.go

+ 47 - 0
docker/daemon_test.go

@@ -34,6 +34,53 @@ func TestLoadDaemonCliConfigWithoutOverriding(t *testing.T) {
 	}
 }
 
+func TestLoadDaemonCliConfigWithDaemonFlags(t *testing.T) {
+	c := &daemon.Config{}
+	common := &cli.CommonFlags{
+		Debug:    true,
+		LogLevel: "info",
+	}
+
+	f, err := ioutil.TempFile("", "docker-config-")
+	if err != nil {
+		t.Fatal(err)
+	}
+
+	configFile := f.Name()
+	f.Write([]byte(`{"log-opts": {"max-size": "1k"}}`))
+	f.Close()
+
+	flags := mflag.NewFlagSet("test", mflag.ContinueOnError)
+	flags.String([]string{daemonConfigFileFlag}, "", "")
+	flags.BoolVar(&c.EnableSelinuxSupport, []string{"-selinux-enabled"}, true, "")
+	flags.StringVar(&c.LogConfig.Type, []string{"-log-driver"}, "json-file", "")
+	flags.Var(opts.NewNamedMapOpts("log-opts", c.LogConfig.Config, nil), []string{"-log-opt"}, "")
+	flags.Set(daemonConfigFileFlag, configFile)
+
+	loadedConfig, err := loadDaemonCliConfig(c, flags, common, configFile)
+	if err != nil {
+		t.Fatal(err)
+	}
+	if loadedConfig == nil {
+		t.Fatalf("expected configuration %v, got nil", c)
+	}
+	if !loadedConfig.Debug {
+		t.Fatalf("expected debug mode, got false")
+	}
+	if loadedConfig.LogLevel != "info" {
+		t.Fatalf("expected info log level, got %v", loadedConfig.LogLevel)
+	}
+	if !loadedConfig.EnableSelinuxSupport {
+		t.Fatalf("expected enabled selinux support, got disabled")
+	}
+	if loadedConfig.LogConfig.Type != "json-file" {
+		t.Fatalf("expected LogConfig type json-file, got %v", loadedConfig.LogConfig.Type)
+	}
+	if maxSize := loadedConfig.LogConfig.Config["max-size"]; maxSize != "1k" {
+		t.Fatalf("expected log max-size `1k`, got %s", maxSize)
+	}
+}
+
 func TestLoadDaemonCliConfigWithTLS(t *testing.T) {
 	c := &daemon.Config{}
 	common := &cli.CommonFlags{

+ 0 - 63
integration-cli/docker_cli_daemon_test.go

@@ -432,69 +432,6 @@ func (s *DockerDaemonSuite) TestDaemonLogLevelWrong(c *check.C) {
 	c.Assert(s.d.Start("--log-level=bogus"), check.NotNil, check.Commentf("Daemon shouldn't start with wrong log level"))
 }
 
-func (s *DockerSuite) TestDaemonStartWithDaemonCommand(c *check.C) {
-
-	type kind int
-
-	const (
-		common kind = iota
-		daemon
-	)
-
-	var flags = []map[kind][]string{
-		{common: {"-l", "info"}, daemon: {"--selinux-enabled"}},
-		{common: {"-D"}, daemon: {"--selinux-enabled", "-r"}},
-		{common: {"-D"}, daemon: {"--restart"}},
-		{common: {"--debug"}, daemon: {"--log-driver=json-file", "--log-opt=max-size=1k"}},
-	}
-
-	var invalidGlobalFlags = [][]string{
-		//Invalid because you cannot pass daemon flags as global flags.
-		{"--selinux-enabled", "-l", "info"},
-		{"-D", "-r"},
-		{"--config", "/tmp"},
-	}
-
-	// `docker daemon -l info --selinux-enabled`
-	// should NOT error out
-	for _, f := range flags {
-		d := NewDaemon(c)
-		args := append(f[common], f[daemon]...)
-		if err := d.Start(args...); err != nil {
-			c.Fatalf("Daemon should have started successfully with %v: %v", args, err)
-		}
-		d.Stop()
-	}
-
-	// `docker -l info daemon --selinux-enabled`
-	// should error out
-	for _, f := range flags {
-		d := NewDaemon(c)
-		d.GlobalFlags = f[common]
-		if err := d.Start(f[daemon]...); err == nil {
-			d.Stop()
-			c.Fatalf("Daemon should have failed to start with docker %v daemon %v", d.GlobalFlags, f[daemon])
-		}
-	}
-
-	for _, f := range invalidGlobalFlags {
-		cmd := exec.Command(dockerBinary, append(f, "daemon")...)
-		errch := make(chan error)
-		var err error
-		go func() {
-			errch <- cmd.Run()
-		}()
-		select {
-		case <-time.After(time.Second):
-			cmd.Process.Kill()
-		case err = <-errch:
-		}
-		if err == nil {
-			c.Fatalf("Daemon should have failed to start with docker %v daemon", f)
-		}
-	}
-}
-
 func (s *DockerDaemonSuite) TestDaemonLogLevelDebug(c *check.C) {
 	if err := s.d.Start("--log-level=debug"); err != nil {
 		c.Fatal(err)