- Fix the setup step (the process has changed now that we're using
pytest)
- Skip tests that are unstable
- Make better use of build caching
Signed-off-by: Aanand Prasad <aanand.prasad@gmail.com>
- Support all basic pattern forms: file, directory, *, ?, !
- Fix handling of wildcard patterns and subdirectories - `*/a.py` should
match `foo/a.py`, but not `foo/bar/a.py`
- Fix handling of directory patterns with a trailing slash - make sure
they're handled equivalently to those without one
- Fix handling of custom Dockerfiles - make sure they go in the tarball
Signed-off-by: Aanand Prasad <aanand.prasad@gmail.com>
- There was a typo (".dockerginore"), which meant that the exclusion of
the .dockerignore file itself wasn't being tested.
- Some of the file names were non-descriptive.
- The test was inspecting the output of the build process, rather than
running 'ls' in a new container, which meant it was full of extra
output, and would fail when there was a cache hit.
Signed-off-by: Aanand Prasad <aanand.prasad@gmail.com>
By having this hardcoded list of log drivers, it is a bottleneck
to us supporting more log drivers.
The daemon already validates if a log driver is valid or not, so rather
than duplicating that validation, let's pass the log_driver along.
This allows support for new/more log drivers as they become supported
in docker without having to wait for both docker-py and docker-compose
to support them.
Keeping the current list of log driver types for backwards compatibility.
Signed-off-by: Mazz Mosley <mazz@houseofmnowster.com>
By using `json-file` as the use case we can run this without needing
to be on a machine with syslog installed.
Even if syslog was installed, this test was still failing as the
`log_opt` of 'key1' is an invalid option.
This test is slightly different style to the others, it hopefully
includes an example of how to space out tests for increased readability,
we construct our tests in 3 phases(generally) and include a space imbetween
them:
- setup
- perform action
- assertions
Expanded variable names is important for readability/clarity. Also
reduced the number of assertions to focus on the logic we're testing.
Signed-off-by: Mazz Mosley <mazz@houseofmnowster.com>
- Fixed#726 by adding a check for None in split_port
- Also switched to using a _raise_invalid_port() function to replace
multiple slightly differing ValueErrors for invalid port
The daemon already pings the registry, so doing it on our end is
redundant and error-prone.
The `insecure_registry` argument to `push()`, `pull()` and `login()` has
been deprecated - in the latter case, it wasn't being used anyway.
The `insecure` argument to `docker.auth.resolve_repository_name()` has
also been deprecated.
`docker.utils.ping_registry()` has been deprecated.
`docker.auth.expand_registry_url()` has been removed.
Signed-off-by: Aanand Prasad <aanand.prasad@gmail.com>
In testing Docker master with the latest docker-py release, a few new
tests exist which don't set the base_url, which is not the default unix
socket location when Docker's integration tests are running.
Also, there is no guarantee syslog can be reached from a test container
so I wrapped that test with the NOT_ON_HOST skip logic.
Docker-DCO-1.1-Signed-off-by: Phil Estes <estesp@linux.vnet.ibm.com> (github: estesp)
Treat output from TTY-enabled containers as raw streams, rather than
as multiplexed streams. The docker API docs specify that tty-enabled
containers don't multiplex. Also update tests to pass with these
changes, and changed the code used to read raw streams to not
read line-by-line, and to not skip empty lines.
Addresses issue #630
Signed-off-by: Dan O'Reilly <oreilldf@gmail.com>
- Add appropriate test which also asserts that volume names can be passed through to drivers.
- Add new param to docs.
Signed-off-by: Luke Marsden <luke@clusterhq.com>
Volume binds now take a "mode" key, whose value can be any string.
"ro" is still supported. It is an error to specify both "ro" and "mode".
Signed-off-by: Aanand Prasad <aanand.prasad@gmail.com>
Instead of expanding the registry name we're looking for to a full URL,
strip entries in the authconfig down to just the hostname.
Signed-off-by: Aanand Prasad <aanand.prasad@gmail.com>
Fixes#498
Allowing `Dockerfile` and `.dockerignore` in the exclusion filter
completely breaks the build on docker < 1.5
In Docker 1.5 these entries are treated as special cases when included
in the .dockerignore and are still sent as part of the context. The
daemon ends up excluding them from any `ADD`, `COPY`, and cache
validation.
Signed-off-by: Brian Goff <cpuguy83@gmail.com>
- Add since, until and filters parameters to `Client.events`
- Add missing `events`command in the documentation
Signed-off-by: Christophe Labouisse <christophe@labouisse.org>
Avoid crashing when the Docker python client is able to load
registry credentials when building using a remote source
Signed-off-by: Vincent Giersch <vincent.giersch@ovh.net>
The new docker api allows specifing mac address for containers. This change is to allow docker py the same functionality.
Signed-off-by: James Harris <james@rancher.com>
Currently TestImportFromStream fails, because something is going wrong
with the HTTP chunked transfer-encoding. This didn't work before,
either (for a different reason).
Rather than have one function that can do 5 things and attempts to guess
what the user wanted, it's good to have a function for each possible
method of importing an image. Error cases are handled a lot better this
way.
The unit test test_import_image_from_file() was changed to be
test_import_image_from_bytes(), because if we try to import a temporary
file in the test, the 'data' parameter of the 'fake_request' object is
an instance of a funny internal type like <_io.BufferedReader
name='/tmp/tmpc9chux'> and it's very hard to match such a thing with
`mock.assert_called_with()`.
This allows streaming a system to the 'import' command, rather than
having to read the whole thing into memory before sending it.
Previously both the UnixAdapter and the docker.Client objects would
track the 'base URL' of the Docker daemon (socket path in the case of
local Unix-domain socket connections). The Client object would construct
URLs which contained the path to the socket with the path of the Docker
API call appended. The UnixHTTPConnection instance would then remove the
known socket path from the URL.
This relied on all calls going through the HTTPConnection.request()
function, where the URL could be rewritten. In the case of 'chunked'
HTTP POST requests this doesn't happen, so such calls would request
a path still including the socket path and would receive a 404 error.
The client now constructs URLs containing just the path of the desired API
endpoint, and expects the Unix socket transport to know the path to the
Docker daemon's socket.
Totally bad test :( (written by me). The documentation and
code should match now. Many thanks to pranavs18 for spotting
the error and proposing the fix.
Data already in local python buffers was lost when stream socket
fileobject was re-created. We now use http.client to handle the chunk
transfer encoding, and we read only the data from each chunk.
This adds a test harness for stream responses which tries to trigger the
lost-buffer behaviour by responding to the HTTP request in full, as
early as possible.
NB: Python's http.client will close the socket fileobj early if there is
no content length or chunked transfer encoding header. If this happens,
requests/urllib3 will reopen it, but we lose some data which was stored
in buffers.
The command line and daemon started supporting --device
parameter during docker start a while ago in the following commit:
docker/docker@e855c4b
Since the command line looks like this,
--device=[] Add a host device to the container (e.g. --device=/dev/sdc:/dev/xvdc)
This patch allows a list of strings to be passed into the start() method
and we parse out the 3 components just like in the above mentioned commit
This change adds both files and directories to the tra-file for the
Docker context. Previously only files where added.
The context will now also contain empty directoryes and symlinks
to directories.
[`filters` is a json encoded value of the filters (a map[string][string]) to process on the images list. ][1]
The tricky thing is that we must convert boolean value to string and any filter value to list to make a `map[string][string]` json format
[1]: https://docs.docker.com/reference/api/docker_remote_api_v1.14/#list-images
Using the max of the stop timeout and request timeout did not entirely
make sure that a stop timeout greater than a request timeout wouldn't
fail prematurely with a HTTPTimeout exception. The correct behavior is
to add the timeouts together, as the stop timeout is understood to be
part of the "request processing time". Any transport-level timeout thus
comes in addition to that.
Signed-off-by: Maxime Petazzoni <max@signalfuse.com>
Fixes#265.
Implementation is a bit more elaborate than docker's implementation and
matches with the one proposed in dotcloud/docker#6869 to handle permission
issues more nicely.
If the tests are run somewhere that somebody has push auth
configured, the auth headers bleed into the tests. Add a mock
to prevent that from happening.
to run the tests on a host without using the default unix socket, it's
now possible to specify:
DOCKER_HOST=tcp://localdocker:4243 env/bin/python setup.py test
TestWithBinds was failing when shared folders are used because /tmp was
not shared from OS X to my VM. This fix allows the location of the temp
folders to be changed via:
TMPDIR=$(pwd) env/bin/python setup.py test
This also properly cleans up temp folders which were sticking around
before.