Browse code

Add regression tests for client debug flag.

- Add client debug info to the `docker info` command.

Signed-off-by: David Calavera <david.calavera@gmail.com>

David Calavera authored on 2016/02/02 08:09:25
Showing 5 changed files
... ...
@@ -7,6 +7,7 @@ import (
7 7
 	Cli "github.com/docker/docker/cli"
8 8
 	"github.com/docker/docker/pkg/ioutils"
9 9
 	flag "github.com/docker/docker/pkg/mflag"
10
+	"github.com/docker/docker/utils"
10 11
 	"github.com/docker/go-units"
11 12
 )
12 13
 
... ...
@@ -73,8 +74,10 @@ func (cli *DockerCli) CmdInfo(args ...string) error {
73 73
 	ioutils.FprintfIfNotEmpty(cli.out, "Name: %s\n", info.Name)
74 74
 	ioutils.FprintfIfNotEmpty(cli.out, "ID: %s\n", info.ID)
75 75
 
76
+	fmt.Fprintf(cli.out, "Debug mode (client): %v\n", utils.IsDebugEnabled())
77
+	fmt.Fprintf(cli.out, "Debug mode (server): %v\n", info.Debug)
78
+
76 79
 	if info.Debug {
77
-		fmt.Fprintf(cli.out, "Debug mode (server): %v\n", info.Debug)
78 80
 		fmt.Fprintf(cli.out, " File Descriptors: %d\n", info.NFd)
79 81
 		fmt.Fprintf(cli.out, " Goroutines: %d\n", info.NGoroutines)
80 82
 		fmt.Fprintf(cli.out, " System Time: %s\n", info.SystemTime)
81 83
new file mode 100644
... ...
@@ -0,0 +1,23 @@
0
+package main
1
+
2
+import (
3
+	"os"
4
+	"testing"
5
+
6
+	"github.com/Sirupsen/logrus"
7
+	"github.com/docker/docker/utils"
8
+)
9
+
10
+func TestClientDebugEnabled(t *testing.T) {
11
+	defer utils.DisableDebug()
12
+
13
+	clientFlags.Common.FlagSet.Parse([]string{"-D"})
14
+	clientFlags.PostParse()
15
+
16
+	if os.Getenv("DEBUG") != "1" {
17
+		t.Fatal("expected debug enabled, got false")
18
+	}
19
+	if logrus.GetLevel() != logrus.DebugLevel {
20
+		t.Fatalf("expected logrus debug level, got %v", logrus.GetLevel())
21
+	}
22
+}
... ...
@@ -2095,3 +2095,24 @@ func (s *DockerDaemonSuite) TestDaemonStartWithoutColors(c *check.C) {
2095 2095
 	newD.Stop()
2096 2096
 	c.Assert(b.String(), check.Not(checker.Contains), infoLog)
2097 2097
 }
2098
+
2099
+func (s *DockerDaemonSuite) TestDaemonDebugLog(c *check.C) {
2100
+	testRequires(c, DaemonIsLinux)
2101
+	newD := NewDaemon(c)
2102
+
2103
+	debugLog := "\x1b[37mDEBU\x1b"
2104
+
2105
+	p, tty, err := pty.Open()
2106
+	c.Assert(err, checker.IsNil)
2107
+	defer func() {
2108
+		tty.Close()
2109
+		p.Close()
2110
+	}()
2111
+
2112
+	b := bytes.NewBuffer(nil)
2113
+	go io.Copy(b, p)
2114
+
2115
+	newD.StartWithLogFile(tty, "--debug")
2116
+	newD.Stop()
2117
+	c.Assert(b.String(), checker.Contains, debugLog)
2118
+}
... ...
@@ -146,3 +146,22 @@ func (s *DockerSuite) TestInfoDisplaysStoppedContainers(c *check.C) {
146 146
 	c.Assert(out, checker.Contains, fmt.Sprintf(" Paused: %d\n", 0))
147 147
 	c.Assert(out, checker.Contains, fmt.Sprintf(" Stopped: %d\n", 1))
148 148
 }
149
+
150
+func (s *DockerSuite) TestInfoDebug(c *check.C) {
151
+	testRequires(c, SameHostDaemon, DaemonIsLinux)
152
+
153
+	d := NewDaemon(c)
154
+	err := d.Start("--debug")
155
+	c.Assert(err, checker.IsNil)
156
+	defer d.Stop()
157
+
158
+	out, err := d.Cmd("--debug", "info")
159
+	c.Assert(err, checker.IsNil)
160
+	c.Assert(out, checker.Contains, "Debug mode (client): true\n")
161
+	c.Assert(out, checker.Contains, "Debug mode (server): true\n")
162
+	c.Assert(out, checker.Contains, "File Descriptors")
163
+	c.Assert(out, checker.Contains, "Goroutines")
164
+	c.Assert(out, checker.Contains, "System Time")
165
+	c.Assert(out, checker.Contains, "EventsListeners")
166
+	c.Assert(out, checker.Contains, "Docker Root Dir")
167
+}
149 168
new file mode 100644
... ...
@@ -0,0 +1,43 @@
0
+package utils
1
+
2
+import (
3
+	"os"
4
+	"testing"
5
+
6
+	"github.com/Sirupsen/logrus"
7
+)
8
+
9
+func TestEnableDebug(t *testing.T) {
10
+	defer func() {
11
+		os.Setenv("DEBUG", "")
12
+		logrus.SetLevel(logrus.InfoLevel)
13
+	}()
14
+	EnableDebug()
15
+	if os.Getenv("DEBUG") != "1" {
16
+		t.Fatalf("expected DEBUG=1, got %s\n", os.Getenv("DEBUG"))
17
+	}
18
+	if logrus.GetLevel() != logrus.DebugLevel {
19
+		t.Fatalf("expected log level %v, got %v\n", logrus.DebugLevel, logrus.GetLevel())
20
+	}
21
+}
22
+
23
+func TestDisableDebug(t *testing.T) {
24
+	DisableDebug()
25
+	if os.Getenv("DEBUG") != "" {
26
+		t.Fatalf("expected DEBUG=\"\", got %s\n", os.Getenv("DEBUG"))
27
+	}
28
+	if logrus.GetLevel() != logrus.InfoLevel {
29
+		t.Fatalf("expected log level %v, got %v\n", logrus.InfoLevel, logrus.GetLevel())
30
+	}
31
+}
32
+
33
+func TestDebugEnabled(t *testing.T) {
34
+	EnableDebug()
35
+	if !IsDebugEnabled() {
36
+		t.Fatal("expected debug enabled, got false")
37
+	}
38
+	DisableDebug()
39
+	if IsDebugEnabled() {
40
+		t.Fatal("expected debug disabled, got true")
41
+	}
42
+}