Commit graph

84 commits

Author SHA1 Message Date
Ziheng Liu
c322af8019 test: add buffer to prevent goroutine leak
Signed-off-by: Ziheng Liu <lzhfromustc@gmail.com>
2020-02-27 21:37:26 -05:00
Sebastiaan van Stijn
9f0b3f5609
bump gotest.tools v3.0.1 for compatibility with Go 1.14
full diff: https://github.com/gotestyourself/gotest.tools/compare/v2.3.0...v3.0.1

Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
2020-02-11 00:06:42 +01:00
Sam Whited
0c9b232bf5 Remove unused GlobalFlags
Signed-off-by: Sam Whited <sam@samwhited.com>
2019-11-06 18:30:20 -05:00
Sam Whited
b96a0c7754 Add daemon options required by buildkit tests
Signed-off-by: Sam Whited <sam@samwhited.com>
2019-11-06 17:13:24 -05:00
Tibor Vass
2cf86a03a9
Merge pull request #40112 from thaJeztah/cut_the_noise
integration-cli: don't log "Creating new daemon" logs, and print correct line numbers
2019-10-24 11:24:24 -07:00
Sebastiaan van Stijn
56230f4d37
testutil: no more "Creating a new daemon at"
Instead of logging on the "happy path", add more details when
we fail to create a daemon. Now that we base the path of the
daemon on the test-name, it should still be easy to find.

Before:

    make TEST_FILTER=TestSwarmNetworkCreateIssue27866 test-integration
    ...
    === RUN   TestDockerSwarmSuite
    === RUN   TestDockerSwarmSuite/TestSwarmNetworkCreateIssue27866
    --- PASS: TestDockerSwarmSuite (7.47s)
        --- PASS: TestDockerSwarmSuite/TestSwarmNetworkCreateIssue27866 (7.47s)
            docker_cli_swarm_test.go:1499: Creating a new daemon at: "/go/src/github.com/docker/docker/bundles/test-integration/TestDockerSwarmSuite/TestSwarmNetworkCreateIssue27866"

After:

    make TEST_FILTER=TestSwarmNetworkCreateIssue27866 test-integration
    ...
    === RUN   TestDockerSwarmSuite
    === RUN   TestDockerSwarmSuite/TestSwarmNetworkCreateIssue27866
    --- PASS: TestDockerSwarmSuite (8.67s)
        --- PASS: TestDockerSwarmSuite/TestSwarmNetworkCreateIssue27866 (8.67s)

Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
2019-10-21 12:51:27 +02:00
Sebastiaan van Stijn
bbf82b2e53
testutil: daemon.Info() close client after request
Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
2019-10-18 18:09:41 +02:00
Justin Cormack
f681590a25
Merge pull request #40081 from thaJeztah/http_constants
Use http constants for HTTP methods and status codes
2019-10-17 11:30:26 -07:00
Sam Whited
95ea6e7069 Export the LogT type and use it in the options
Signed-off-by: Sam Whited <sam@samwhited.com>
2019-10-16 16:27:37 -04:00
Sebastiaan van Stijn
a617809fe7
testutil: use constants for http methods
Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
2019-10-13 17:30:17 +02:00
Sebastiaan van Stijn
293c1a27a2
testutil/daemon: remove redundant d.cmd.Wait()
`daemon.StartWithLogFile()` already creates a goroutine that
calls `d.cmd.Waits()` and sends its return to the channel, `d.Wait`.

This code called `d.cmd.Wait()` one more time, and returns the
error, which may produce an error _because_ it's called a second
time, and potentially cause an incorrect test-result.

(thanks to Kir Kolyshkin for spotting this)

Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
2019-10-11 00:38:08 +02:00
Sebastiaan van Stijn
c56bfdf10a
testutil/daemon: always remove pidfile after daemon is stopped
If the daemon was stopped successfully in one of the retry-loops,
the function would return early;

```go
for {
	select {
	case err := <-d.Wait:
---> the function returns here, both on "success" and on "fail"
		return err
	case <-time.After(20 * time.Second):
...
```

In that case, the pidfile would not be cleaned up. This patch changes
the function to clean-up the pidfile in a defer, so that it will
always be removed after succesfully stopping the daemon.

Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
2019-10-11 00:38:06 +02:00
Sebastiaan van Stijn
f6842327b0
testutil/daemon: print all arguments when failing to start daemon
Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
2019-10-11 00:38:04 +02:00
Sebastiaan van Stijn
b843b1ffe3
testutil/daemon: store pidfile-path, and ignore errors when removing
This patch stores the location of the pidfile, so that we can use the
same path that was set to create it. If no pidfile was created, we'll
not try to remove it.

We're now also ignoring errors when removing the pidfile, as they should
not fail the test (especialy if no pidfile was created in the first place,
as that could potentially hide the actual failure).

This may help with "failures" such as the one below:

```
FAIL: check_test.go:347: DockerSwarmSuite.TearDownTest

check_test.go:352:
    d.Stop(c)
/go/src/github.com/docker/docker/internal/test/daemon/daemon.go:414:
    t.Fatalf("Error while stopping the daemon %s : %v", d.id, err)
... Error: Error while stopping the daemon d1512c423813a : remove /go/src/github.com/docker/docker/bundles/test-integration/DockerSwarmSuite.TestServiceLogs/d1512c423813a/docker.pid: no such file or directory
```

Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
2019-10-11 00:38:02 +02:00
Sebastiaan van Stijn
22662cac57
testutil/daemon: wrap errors
Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
2019-10-11 00:38:00 +02:00
Sebastiaan van Stijn
2b3957d0b1
testutil/daemon: prefix all logs with daemon-id
This makes it easier to debug issues with tests that
start multiple daemons.

Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
2019-10-11 00:37:49 +02:00
Sebastiaan van Stijn
1fe7a9552c
testutil/daemon: daemon.Cleanup(): unmount daemon root-dir as part of cleanup
test-daemons remove their docker.pid when stopped, so the `.integration-daemon-stop`
script did not find the mounts for those daemons, and therefore was not unmounting
them.

As a result, cleaning up the bundles directory on consecutive runs of the tests would fail;

    rm: cannot remove 'bundles/test-integration/TestDockerSwarmSuite/TestSwarmInit/d1f188f3f5472/root': Device or resource busy

This patch unmounts the root directory of the daemon as part of the cleanup step.

Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
2019-10-11 00:34:55 +02:00
Sebastiaan van Stijn
f60d6ee4bc
testutil: update WithInitsignature to be a daemon.Option
Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
2019-09-30 17:38:26 +02:00
Sebastiaan van Stijn
554d9cec25
testutil: update WithExperimental signature to be a daemon.Option
Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
2019-09-30 17:38:24 +02:00
Sebastiaan van Stijn
ce2e8e37d0
testutil: update WithTestLogger to use daemon.Option as return type
Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
2019-09-30 17:38:21 +02:00
Sebastiaan van Stijn
279ddb31ef
testutil: update WithStorageDriver to use daemon.Option as return type
Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
2019-09-30 17:38:18 +02:00
Sebastiaan van Stijn
5aebd69857
testutil: fix WithExperimental also setting "init"
Looks like this was overlooked in the review of the PR that added
this; e401b88e59

There is a separate option for `WithInit`, so this option should not
automatically enable it when starting  a daemon with experimental enabled.

Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
2019-09-30 14:37:57 +02:00
Sam Whited
ae0a878b86 testutil, integration: untangle image dependency
Signed-off-by: Sam Whited <sam@samwhited.com>
2019-09-24 14:50:59 -05:00
Sebastiaan van Stijn
51ca8081d8
testutil: use testing.TB instead of assert.TestingT
Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
2019-09-23 14:23:01 +02:00
Sebastiaan van Stijn
0d4ffa3588
Remove some uses of testutil.HelperT
Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
2019-09-23 14:06:27 +02:00
Sebastiaan van Stijn
d79cc1b67d
testing: remove custom testingT interfaces
now that we no longer use gocheck, we should be able
to just use golang's own interface.

Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
2019-09-23 13:54:51 +02:00
Sebastiaan van Stijn
3e4f6225da
testutil: remove unneeded namer, testname interfaces
Now that the gocheck framework is no longer used, we don't
have to define these interfaces.

Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
2019-09-23 13:41:45 +02:00
Sam Whited
04d9e157b2 testutil/daemon: add NewDaemon without testingT
Signed-off-by: Sam Whited <sam@samwhited.com>
2019-09-20 09:21:38 -05:00
Sebastiaan van Stijn
41ee87c681
Merge pull request #39942 from SamWhited/daemon_ops_type
testutil/daemon: group options under type
2019-09-19 17:44:49 +02:00
Sam Whited
41adef29f5 testutil/daemon: group options under type
Signed-off-by: Sam Whited <sam@samwhited.com>
2019-09-18 09:14:50 -05:00
Sebastiaan van Stijn
c9553897f3
golangci-lint: enable gosec linter
Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
2019-09-18 12:57:58 +02:00
Sebastiaan van Stijn
101ff26eb5
misspell: fix some spelling issues
```
internal/test/environment/environment.go:37:23: `useing` is a misspelling of `using`(misspell)
integration/container/wait_test.go:49:9: `waitres` is a misspelling of `waiters`(misspell)
integration/container/wait_test.go:95:9: `waitres` is a misspelling of `waiters`(misspell)
integration-cli/docker_api_containers_test.go:1042:7: `waitres` is a misspelling of `waiters`(misspell)
```

Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
2019-09-18 12:57:48 +02:00
Sebastiaan van Stijn
07ff4f1de8
goimports: fix imports
Format the source according to latest goimports.

Signed-off-by: Kir Kolyshkin <kolyshkin@gmail.com>
Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
2019-09-18 12:56:54 +02:00
Sam Whited
b37c214e3c testutil: make testing packages public
This was done with something along the lines of:

```
mv internal/test testutil
pushd testutil/; grep -IRl "package test" | xargs -I '{}' sed -i -e 's|package test|package testutil|g' {}; popd
mv internal/testutil/*.go testutil/ && rm -rf internal/
grep -IRl "github.com\/docker\/docker\/internal\/test" | xargs -I '{}' sed -i -e 's|github.com/docker/docker/internal/test|github.com/docker/docker/test|g' {}
goimports .
```

I also modified the basic plugin path in testutil/fixtures/plugin.

Signed-off-by: Sam Whited <sam@samwhited.com>
2019-09-11 07:47:23 -05:00