Windows: Workaround for CI

Signed-off-by: John Howard <jhoward@microsoft.com>
This commit is contained in:
John Howard 2015-08-05 09:21:45 -07:00
parent 6206cbe193
commit ac120567e8
7 changed files with 53 additions and 36 deletions

View file

@ -169,14 +169,15 @@ To run the same test inside your Docker development container, you do this:
root@5f8630b873fe:/go/src/github.com/docker/docker# TESTFLAGS='-check.f TestBuild*' hack/make.sh binary test-integration-cli
## Testing just the Windows client
## Testing the Windows binary against a Linux daemon
This explains how to test the Windows client on a Windows server set up as a
development environment. You'll use the **Git Bash** came with the Git for
Windows installation. **Git Bash** just as it sounds allows you to run a Bash
terminal on Windows.
This explains how to test the Windows binary on a Windows machine set up as a
development environment. The tests will be run against a docker daemon
running on a remote Linux machine. You'll use **Git Bash** that came with the
Git for Windows installation. **Git Bash**, just as it sounds, allows you to
run a Bash terminal on Windows.
1. If you don't have one, start a Git Bash terminal.
1. If you don't have one open already, start a Git Bash terminal.
![Git Bash](/project/images/git_bash.png)
@ -184,27 +185,31 @@ terminal on Windows.
$ cd /c/gopath/src/github.com/docker/docker
3. Set `DOCKER_CLIENTONLY` as follows:
3. Set `DOCKER_REMOTE_DAEMON` as follows:
$ export DOCKER_REMOTE_DAEMON=1
$ export DOCKER_CLIENTONLY=1
This ensures you are building only the client binary instead of both the
binary and the daemon.
4. Set `DOCKER_TEST_HOST` to the `tcp://IP_ADDRESS:2376` value; substitute your
machine's actual IP address, for example:
Linux machines actual IP address. For example:
$ export DOCKER_TEST_HOST=tcp://263.124.23.200:2376
5. Make the binary and the test:
5. Make the binary and run the tests:
$ hack/make.sh binary test-integration-cli
Many tests are skipped on Windows for various reasons. You see which tests
were skipped by re-running the make and passing in the
`TESTFLAGS='-test.v'` value.
Some tests are skipped on Windows for various reasons. You can see which
tests were skipped by re-running the make and passing in the
`TESTFLAGS='-test.v'` value. For example
$ TESTFLAGS='-test.v' hack/make.sh binary test-integration-cli
Should you wish to run a single test such as one with the name
'TestExample', you can pass in `TESTFLAGS='-check.f TestExample'`. For
example
$TESTFLAGS='-check.f TestExample' hack/make.sh binary test-integration-cli
You can now choose to make changes to the Docker source or the tests. If you
make any changes just run these commands again.

View file

@ -220,6 +220,7 @@ test_env() {
DOCKER_GRAPHDRIVER="$DOCKER_GRAPHDRIVER" \
DOCKER_USERLANDPROXY="$DOCKER_USERLANDPROXY" \
DOCKER_HOST="$DOCKER_HOST" \
DOCKER_REMOTE_DAEMON="$DOCKER_REMOTE_DAEMON" \
GOPATH="$GOPATH" \
HOME="$ABS_DEST/fake-HOME" \
PATH="$PATH" \

View file

@ -1,4 +1,4 @@
// +build daemon,experimental
// +build daemon,experimental,!windows
package main
@ -22,6 +22,7 @@ func assertNetwork(c *check.C, d *Daemon, name string) {
}
func (s *DockerDaemonSuite) TestDaemonDefaultNetwork(c *check.C) {
testRequires(c, SameHostDaemon)
d := s.d
networkName := "testdefault"

View file

@ -1,4 +1,4 @@
// +build daemon
// +build daemon,!windows
package main

View file

@ -24,6 +24,10 @@ var (
execDriverPath = runtimePath + "/execdriver/native"
workingDirectory string
// isLocalDaemon is true if the daemon under test is on the same
// host as the CLI.
isLocalDaemon bool
)
func init() {
@ -43,4 +47,26 @@ func init() {
privateRegistryURL = registry
}
workingDirectory, _ = os.Getwd()
// Deterministically working out the environment in which CI is running
// to evaluate whether the daemon is local or remote is not possible through
// a build tag.
//
// For example Windows CI under Jenkins test the 64-bit
// Windows binary build with the daemon build tag, but calls a remote
// Linux daemon.
//
// We can't just say if Windows then assume the daemon is local as at
// some point, we will be testing the Windows CLI against a Windows daemon.
//
// Similarly, it will be perfectly valid to also run CLI tests from
// a Linux CLI (built with the daemon tag) against a Windows daemon.
if len(os.Getenv("DOCKER_REMOTE_DAEMON")) > 0 {
fmt.Println("INFO: Testing against a remote daemon")
isLocalDaemon = false
} else {
fmt.Println("INFO: Testing against a local daemon")
isLocalDaemon = true
}
}

View file

@ -1,8 +0,0 @@
// +build !daemon
package main
const (
// tests should not assume daemon runs on the same machine as CLI
isLocalDaemon = false
)

View file

@ -1,8 +0,0 @@
// +build daemon
package main
const (
// tests can assume daemon runs on the same machine as CLI
isLocalDaemon = true
)