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>
This commit is contained in:
parent
89f6d3b041
commit
b9ef2682b9
2 changed files with 47 additions and 63 deletions
|
@ -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{
|
||||
|
|
|
@ -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)
|
||||
|
|
Loading…
Reference in a new issue