Page Menu
Home
Software Heritage
Search
Configure Global Search
Log In
Files
F9125235
run_spec.rb
No One
Temporary
Actions
Download File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Award Token
Flag For Later
Size
31 KB
Subscribers
None
run_spec.rb
View Options
require
'spec_helper'
[
'Debian'
,
'RedHat'
].
each
do
|
osfamily
|
describe
'docker::run'
,
:type
=>
:define
do
let
(
:title
)
{
'sample'
}
context
"on
#{
osfamily
}
"
do
if
osfamily
==
'Debian'
let
(
:facts
)
{
{
:architecture
=>
'amd64'
,
:osfamily
=>
'Debian'
,
:operatingsystem
=>
'Ubuntu'
,
:lsbdistid
=>
'Ubuntu'
,
:lsbdistcodename
=>
'xenial'
,
:kernelrelease
=>
'4.4.0-21-generic'
,
:operatingsystemrelease
=>
'16.04'
,
:operatingsystemmajrelease
=>
'16.04'
,
}
}
initscript
=
'/etc/systemd/system/docker-sample.service'
command
=
'docker'
systemd
=
true
elsif
osfamily
==
'RedHat'
let
(
:facts
)
{
{
:architecture
=>
'x86_64'
,
:osfamily
=>
osfamily
,
:operatingsystem
=>
'RedHat'
,
:lsbdistcodename
=>
'xenial'
,
:operatingsystemrelease
=>
'7.2'
,
:operatingsystemmajrelease
=>
'7'
,
:kernelversion
=>
'3.10.0'
,
}
}
initscript
=
'/etc/systemd/system/docker-sample.service'
command
=
'docker'
systemd
=
true
end
context
'passing the required params'
do
let
(
:params
)
{
{
'command'
=>
'command'
,
'image'
=>
'base'
}
}
it
{
should
compile
.
with_all_deps
}
it
{
should
contain_service
(
'docker-sample'
)
}
if
(
osfamily
==
'Debian'
)
it
{
should
contain_file
(
initscript
)
.
with_content
(
/docker run/
)
}
it
{
should
contain_file
(
initscript
)
.
with_content
(
/
#{
command
}
/
)
}
else
it
{
should
contain_file
(
initscript
)
.
with_content
(
/
#{
command
}
run/
)
.
with_content
(
/base/
)
}
it
{
should
contain_file
(
initscript
)
.
with_content
(
/
#{
command
}
run/
)
.
with_content
(
/command/
)
}
end
if
systemd
it
{
should
contain_file
(
initscript
)
.
with_content
(
/^SyslogIdentifier=docker-sample$/
)
}
end
[
'p'
,
'dns'
,
'H'
,
'dns-search'
,
'u'
,
'v'
,
'e'
,
'n'
,
't'
,
'volumes-from'
,
'name'
].
each
do
|
search
|
it
{
should_not
contain_file
(
initscript
)
.
with_content
(
/-${search}/
)
}
end
end
context
'when passing `after` containers'
do
let
(
:params
)
{
{
'command'
=>
'command'
,
'image'
=>
'base'
,
'after'
=>
[
'foo'
,
'bar'
,
'foo_bar/baz'
]
}
}
if
(
systemd
)
it
{
should
contain_file
(
initscript
)
.
with_content
(
/After=(.*\s+)?docker-foo.service/
)
}
it
{
should
contain_file
(
initscript
)
.
with_content
(
/After=(.*\s+)?docker-bar.service/
)
}
it
{
should
contain_file
(
initscript
)
.
with_content
(
/After=(.*\s+)?docker-foo_bar-baz.service/
)
}
it
{
should
contain_file
(
initscript
)
.
with_content
(
/Wants=(.*\s+)?docker-foo.service/
)
}
it
{
should
contain_file
(
initscript
)
.
with_content
(
/Wants=(.*\s+)?docker-bar.service/
)
}
it
{
should
contain_file
(
initscript
)
.
with_content
(
/Wants=(.*\s+)?docker-foo_bar-baz.service/
)
}
else
it
{
should
contain_file
(
initscript
)
.
with_content
(
/Required-Start:.*\s+docker-foo/
)
}
it
{
should
contain_file
(
initscript
)
.
with_content
(
/Required-Start:.*\s+docker-bar/
)
}
it
{
should
contain_file
(
initscript
)
.
with_content
(
/Required-Start:.*\s+docker-foo_bar-baz/
)
}
end
end
context
'when passing `depends` containers'
do
let
(
:params
)
{
{
'command'
=>
'command'
,
'image'
=>
'base'
,
'depends'
=>
[
'foo'
,
'bar'
,
'foo_bar/baz'
]
}
}
if
(
systemd
)
it
{
should
contain_file
(
initscript
)
.
with_content
(
/After=(.*\s+)?docker-foo.service/
)
}
it
{
should
contain_file
(
initscript
)
.
with_content
(
/After=(.*\s+)?docker-bar.service/
)
}
it
{
should
contain_file
(
initscript
)
.
with_content
(
/After=(.*\s+)?docker-foo_bar-baz.service/
)
}
it
{
should
contain_file
(
initscript
)
.
with_content
(
/Requires=(.*\s+)?docker-foo.service/
)
}
it
{
should
contain_file
(
initscript
)
.
with_content
(
/Requires=(.*\s+)?docker-bar.service/
)
}
it
{
should
contain_file
(
initscript
)
.
with_content
(
/Requires=(.*\s+)?docker-foo_bar-baz.service/
)
}
else
it
{
should
contain_file
(
initscript
)
.
with_content
(
/Required-Start:.*\s+docker-foo/
)
}
it
{
should
contain_file
(
initscript
)
.
with_content
(
/Required-Start:.*\s+docker-bar/
)
}
it
{
should
contain_file
(
initscript
)
.
with_content
(
/Required-Start:.*\s+docker-foo_bar-baz/
)
}
it
{
should
contain_file
(
initscript
)
.
with_content
(
/Required-Stop:.*\s+docker-foo/
)
}
it
{
should
contain_file
(
initscript
)
.
with_content
(
/Required-Stop:.*\s+docker-bar/
)
}
it
{
should
contain_file
(
initscript
)
.
with_content
(
/Required-Stop:.*\s+docker-foo_bar-baz/
)
}
end
end
context
'when passing `depend_services`'
do
let
(
:params
)
{
{
'command'
=>
'command'
,
'image'
=>
'base'
,
'depend_services'
=>
[
'foo'
,
'bar'
]
}
}
if
(
systemd
)
it
{
should
contain_file
(
initscript
)
.
with_content
(
/After=(.*\s+)?foo.service/
)
}
it
{
should
contain_file
(
initscript
)
.
with_content
(
/After=(.*\s+)?bar.service/
)
}
it
{
should
contain_file
(
initscript
)
.
with_content
(
/Requires=(.*\s+)?foo.service/
)
}
it
{
should
contain_file
(
initscript
)
.
with_content
(
/Requires=(.*\s+)?bar.service/
)
}
else
it
{
should
contain_file
(
initscript
)
.
with_content
(
/Required-Start:.*\s+foo/
)
}
it
{
should
contain_file
(
initscript
)
.
with_content
(
/Required-Start:.*\s+bar/
)
}
it
{
should
contain_file
(
initscript
)
.
with_content
(
/Required-Stop:.*\s+foo/
)
}
it
{
should
contain_file
(
initscript
)
.
with_content
(
/Required-Stop:.*\s+bar/
)
}
end
end
context
'removing containers and volumes'
do
context
'when trying to remove the volume and not the container on stop'
do
let
(
:params
)
{{
'command'
=>
'command'
,
'image'
=>
'base'
,
'remove_container_on_stop'
=>
false
,
'remove_volume_on_stop'
=>
true
,
}}
it
do
expect
{
should
contain_service
(
'docker-sample'
)
}
.
to
raise_error
(
Puppet
::
Error
)
end
end
context
'when trying to remove the volume and not the container on start'
do
let
(
:params
)
{{
'command'
=>
'command'
,
'image'
=>
'base'
,
'remove_container_on_start'
=>
false
,
'remove_volume_on_start'
=>
true
,
}}
it
do
expect
{
should
contain_service
(
'docker-sample'
)
}
.
to
raise_error
(
Puppet
::
Error
)
end
end
context
'when not removing containers on container start and stop'
do
let
(
:params
)
{{
'command'
=>
'command'
,
'image'
=>
'base'
,
'remove_container_on_start'
=>
false
,
'remove_container_on_stop'
=>
false
,
}}
if
(
systemd
)
it
{
should_not
contain_file
(
initscript
)
.
with_content
(
/ExecStartPre=-\/usr\/bin\/docker rm/
)
}
else
it
{
should_not
contain_file
(
initscript
)
.
with_content
(
/\$docker rm sample/
)
}
end
end
context
'when removing containers on container start'
do
let
(
:params
)
{
{
'command'
=>
'command'
,
'image'
=>
'base'
,
'remove_container_on_start'
=>
true
}
}
if
(
systemd
)
it
{
should
contain_file
(
initscript
)
.
with_content
(
/ExecStartPre=-\/usr\/bin\/docker rm/
)
}
else
it
{
should
contain_file
(
initscript
)
.
with_content
(
/\$docker rm sample/
)
}
end
end
context
'when removing containers on container stop'
do
let
(
:params
)
{
{
'command'
=>
'command'
,
'image'
=>
'base'
,
'remove_container_on_stop'
=>
true
}
}
if
(
systemd
)
it
{
should
contain_file
(
initscript
)
.
with_content
(
/ExecStop=-\/usr\/bin\/docker rm/
)
}
else
it
{
should
contain_file
(
initscript
)
.
with_content
(
/\$docker rm sample/
)
}
end
end
context
'when not removing volumes on container start'
do
let
(
:params
)
{
{
'command'
=>
'command'
,
'image'
=>
'base'
,
'remove_volume_on_start'
=>
false
}
}
if
(
systemd
)
it
{
should_not
contain_file
(
initscript
)
.
with_content
(
/ExecStartPre=-\/usr\/bin\/docker rm -v/
)
}
else
it
{
should_not
contain_file
(
initscript
)
.
with_content
(
/\$docker rm -v sample/
)
}
end
end
context
'when removing volumes on container start'
do
let
(
:params
)
{
{
'command'
=>
'command'
,
'image'
=>
'base'
,
'remove_volume_on_start'
=>
true
}
}
if
(
systemd
)
it
{
should
contain_file
(
initscript
)
.
with_content
(
/ExecStartPre=-\/usr\/bin\/docker rm -v/
)
}
else
it
{
should
contain_file
(
initscript
)
.
with_content
(
/\$docker rm -v/
)
}
end
end
context
'when not removing volumes on container stop'
do
let
(
:params
)
{
{
'command'
=>
'command'
,
'image'
=>
'base'
,
'remove_volume_on_stop'
=>
false
}
}
if
(
systemd
)
it
{
should_not
contain_file
(
initscript
)
.
with_content
(
/ExecStop=-\/usr\/bin\/docker rm -v/
)
}
else
it
{
should_not
contain_file
(
initscript
)
.
with_content
(
/\$docker rm -v sample/
)
}
end
end
context
'when removing volumes on container stop'
do
let
(
:params
)
{
{
'command'
=>
'command'
,
'image'
=>
'base'
,
'remove_volume_on_stop'
=>
true
}
}
if
(
systemd
)
it
{
should
contain_file
(
initscript
)
.
with_content
(
/ExecStop=-\/usr\/bin\/docker rm -v/
)
}
else
it
{
should
contain_file
(
initscript
)
.
with_content
(
/\$docker rm -v/
)
}
end
end
end
context
'with autorestart functionality'
do
let
(
:params
)
{
{
'command'
=>
'command'
,
'image'
=>
'base'
}
}
if
(
systemd
)
it
{
should
contain_file
(
initscript
)
.
with_content
(
/Restart=on-failure/
)
}
end
end
context
'when lxc_conf disables swap'
do
let
(
:params
)
{
{
'command'
=>
'command'
,
'image'
=>
'base'
,
'lxc_conf'
=>
'lxc.cgroup.memory.memsw.limit_in_bytes=536870912'
}
}
it
{
should
contain_file
(
initscript
)
.
with_content
(
/-lxc-conf=\"lxc.cgroup.memory.memsw.limit_in_bytes=536870912\"/
)
}
end
context
'when `use_name` is true'
do
let
(
:params
)
{
{
'command'
=>
'command'
,
'image'
=>
'base'
,
'use_name'
=>
true
}
}
it
{
should
contain_file
(
initscript
)
.
with_content
(
/ --name sample /
)
}
end
context
'when stopping the service'
do
let
(
:params
)
{
{
'command'
=>
'command'
,
'image'
=>
'base'
,
'running'
=>
false
}
}
it
{
should
contain_service
(
'docker-sample'
)
.
with_ensure
(
false
)
}
end
context
'when passing a memory limit in bytes'
do
let
(
:params
)
{
{
'command'
=>
'command'
,
'image'
=>
'base'
,
'memory_limit'
=>
'1000b'
}
}
it
{
should
contain_file
(
initscript
)
.
with_content
(
/-m 1000b/
)
}
end
context
'when passing a cpuset'
do
let
(
:params
)
{
{
'command'
=>
'command'
,
'image'
=>
'base'
,
'cpuset'
=>
'3'
}
}
it
{
should
contain_file
(
initscript
)
.
with_content
(
/--cpuset=3/
)
}
end
context
'when passing a multiple cpu cpuset'
do
let
(
:params
)
{
{
'command'
=>
'command'
,
'image'
=>
'base'
,
'cpuset'
=>
[
'0'
,
'3'
]
}
}
it
{
should
contain_file
(
initscript
)
.
with_content
(
/--cpuset=0,3/
)
}
end
context
'when not passing a cpuset'
do
let
(
:params
)
{
{
'command'
=>
'command'
,
'image'
=>
'base'
}
}
it
{
should
contain_file
(
initscript
)
.
without_content
(
/--cpuset=/
)
}
end
context
'when passing a links option'
do
let
(
:params
)
{
{
'command'
=>
'command'
,
'image'
=>
'base'
,
'links'
=>
[
'example:one'
,
'example:two'
]
}
}
it
{
should
contain_file
(
initscript
)
.
with_content
(
/--link example:one/
)
.
with_content
(
/--link example:two/
)
}
end
context
'when passing a hostname'
do
let
(
:params
)
{
{
'command'
=>
'command'
,
'image'
=>
'base'
,
'hostname'
=>
'example.com'
}
}
it
{
should
contain_file
(
initscript
)
.
with_content
(
/-h 'example.com'/
)
}
end
context
'when not passing a hostname'
do
let
(
:params
)
{
{
'command'
=>
'command'
,
'image'
=>
'base'
}
}
it
{
should
contain_file
(
initscript
)
.
without_content
(
/-h ''/
)
}
end
context
'when passing a username'
do
let
(
:params
)
{
{
'command'
=>
'command'
,
'image'
=>
'base'
,
'username'
=>
'bob'
}
}
it
{
should
contain_file
(
initscript
)
.
with_content
(
/-u 'bob'/
)
}
end
context
'when not passing a username'
do
let
(
:params
)
{
{
'command'
=>
'command'
,
'image'
=>
'base'
}
}
it
{
should
contain_file
(
initscript
)
.
without_content
(
/-u ''/
)
}
end
context
'when passing a port number'
do
let
(
:params
)
{
{
'command'
=>
'command'
,
'image'
=>
'base'
,
'ports'
=>
'4444'
}
}
it
{
should
contain_file
(
initscript
)
.
with_content
(
/-p 4444/
)
}
end
context
'when passing a port to expose'
do
let
(
:params
)
{
{
'command'
=>
'command'
,
'image'
=>
'base'
,
'expose'
=>
'4666'
}
}
it
{
should
contain_file
(
initscript
)
.
with_content
(
/--expose=4666/
)
}
end
context
'when passing a label'
do
let
(
:params
)
{
{
'command'
=>
'command'
,
'image'
=>
'base'
,
'labels'
=>
'key=value'
}
}
it
{
should
contain_file
(
initscript
)
.
with_content
(
/-l key=value/
)
}
end
context
'when passing a hostentry'
do
let
(
:params
)
{
{
'command'
=>
'command'
,
'image'
=>
'base'
,
'hostentries'
=>
'dummyhost:127.0.0.2'
}
}
it
{
should
contain_file
(
initscript
)
.
with_content
(
/--add-host dummyhost:127.0.0.2/
)
}
end
context
'when connecting to shared data volumes'
do
let
(
:params
)
{
{
'command'
=>
'command'
,
'image'
=>
'base'
,
'volumes_from'
=>
'6446ea52fbc9'
}
}
it
{
should
contain_file
(
initscript
)
.
with_content
(
/--volumes-from 6446ea52fbc9/
)
}
end
context
'when connecting to several shared data volumes'
do
let
(
:params
)
{
{
'command'
=>
'command'
,
'image'
=>
'base'
,
'volumes_from'
=>
[
'sample-linked-container-1'
,
'sample-linked-container-2'
]
}
}
it
{
should
contain_file
(
initscript
)
.
with_content
(
/--volumes-from sample-linked-container-1/
)
}
it
{
should
contain_file
(
initscript
)
.
with_content
(
/--volumes-from sample-linked-container-2/
)
}
end
context
'when passing several port numbers'
do
let
(
:params
)
{
{
'command'
=>
'command'
,
'image'
=>
'base'
,
'ports'
=>
[
'4444'
,
'4555'
]
}
}
it
{
should
contain_file
(
initscript
)
.
with_content
(
/-p 4444/
)
.
with_content
(
/-p 4555/
)
}
end
context
'when passing several labels'
do
let
(
:params
)
{
{
'command'
=>
'command'
,
'image'
=>
'base'
,
'labels'
=>
[
'key1=value1'
,
'key2=value2'
]
}
}
it
{
should
contain_file
(
initscript
)
.
with_content
(
/-l key1=value1/
)
.
with_content
(
/-l key2=value2/
)
}
end
context
'when passing several ports to expose'
do
let
(
:params
)
{
{
'command'
=>
'command'
,
'image'
=>
'base'
,
'expose'
=>
[
'4666'
,
'4777'
]
}
}
it
{
should
contain_file
(
initscript
)
.
with_content
(
/--expose=4666/
)
.
with_content
(
/--expose=4777/
)
}
end
context
'when passing serveral environment variables'
do
let
(
:params
)
{
{
'command'
=>
'command'
,
'image'
=>
'base'
,
'env'
=>
[
'FOO=BAR'
,
'FOO2=BAR2'
]
}
}
it
{
should
contain_file
(
initscript
)
.
with_content
(
/-e FOO=BAR/
)
.
with_content
(
/-e FOO2=BAR2/
)
}
end
context
'when passing an environment variable'
do
let
(
:params
)
{
{
'command'
=>
'command'
,
'image'
=>
'base'
,
'env'
=>
'FOO=BAR'
}
}
it
{
should
contain_file
(
initscript
)
.
with_content
(
/-e FOO=BAR/
)
}
end
context
'when passing serveral environment files'
do
let
(
:params
)
{
{
'command'
=>
'command'
,
'image'
=>
'base'
,
'env_file'
=>
[
'/etc/foo.env'
,
'/etc/bar.env'
]
}
}
it
{
should
contain_file
(
initscript
)
.
with_content
(
/--env-file \/etc\/foo.env/
)
.
with_content
(
/--env-file \/etc\/bar.env/
)
}
end
context
'when passing an environment file'
do
let
(
:params
)
{
{
'command'
=>
'command'
,
'image'
=>
'base'
,
'env_file'
=>
'/etc/foo.env'
}
}
it
{
should
contain_file
(
initscript
)
.
with_content
(
/--env-file \/etc\/foo.env/
)
}
end
context
'when passing serveral dns addresses'
do
let
(
:params
)
{
{
'command'
=>
'command'
,
'image'
=>
'base'
,
'dns'
=>
[
'8.8.8.8'
,
'8.8.4.4'
]
}
}
it
{
should
contain_file
(
initscript
)
.
with_content
(
/--dns 8.8.8.8/
)
.
with_content
(
/--dns 8.8.4.4/
)
}
end
context
'when passing a dns address'
do
let
(
:params
)
{
{
'command'
=>
'command'
,
'image'
=>
'base'
,
'dns'
=>
'8.8.8.8'
}
}
it
{
should
contain_file
(
initscript
)
.
with_content
(
/--dns 8.8.8.8/
)
}
end
context
'when passing serveral sockets to connect to'
do
let
(
:params
)
{
{
'command'
=>
'command'
,
'image'
=>
'base'
,
'socket_connect'
=>
[
'tcp://127.0.0.1:4567'
,
'tcp://127.0.0.2:4567'
]
}
}
it
{
should
contain_file
(
initscript
)
.
with_content
(
/-H tcp:\/\/127.0.0.1:4567/
)
}
end
context
'when passing a socket to connect to'
do
let
(
:params
)
{
{
'command'
=>
'command'
,
'image'
=>
'base'
,
'socket_connect'
=>
'tcp://127.0.0.1:4567'
}
}
it
{
should
contain_file
(
initscript
)
.
with_content
(
/-H tcp:\/\/127.0.0.1:4567/
)
}
end
context
'when passing serveral dns search domains'
do
let
(
:params
)
{
{
'command'
=>
'command'
,
'image'
=>
'base'
,
'dns_search'
=>
[
'my.domain.local'
,
'other-domain.de'
]
}
}
it
{
should
contain_file
(
initscript
)
.
with_content
(
/--dns-search my.domain.local/
)
.
with_content
(
/--dns-search other-domain.de/
)
}
end
context
'when passing a dns search domain'
do
let
(
:params
)
{
{
'command'
=>
'command'
,
'image'
=>
'base'
,
'dns_search'
=>
'my.domain.local'
}
}
it
{
should
contain_file
(
initscript
)
.
with_content
(
/--dns-search my.domain.local/
)
}
end
context
'when disabling network'
do
let
(
:params
)
{
{
'command'
=>
'command'
,
'image'
=>
'base'
,
'disable_network'
=>
true
}
}
it
{
should
contain_file
(
initscript
)
.
with_content
(
/-n false/
)
}
end
context
'when running privileged'
do
let
(
:params
)
{
{
'command'
=>
'command'
,
'image'
=>
'base'
,
'privileged'
=>
true
}
}
it
{
should
contain_file
(
initscript
)
.
with_content
(
/--privileged/
)
}
end
context
'should run with correct detached value'
do
let
(
:params
)
{
{
'command'
=>
'command'
,
'image'
=>
'base'
}
}
if
(
systemd
)
it
{
should_not
contain_file
(
initscript
)
.
with_content
(
/--detach=true/
)
}
else
it
{
should
contain_file
(
initscript
)
.
with_content
(
/--detach=true/
)
}
end
end
context
'should be able to override detached'
do
let
(
:params
)
{
{
'command'
=>
'command'
,
'image'
=>
'base'
,
'detach'
=>
false
}
}
it
{
should
contain_file
(
initscript
)
.
without_content
(
/--detach=true/
)
}
end
context
'when running with a tty'
do
let
(
:params
)
{
{
'command'
=>
'command'
,
'image'
=>
'base'
,
'tty'
=>
true
}
}
it
{
should
contain_file
(
initscript
)
.
with_content
(
/-t/
)
}
end
context
'when passing serveral extra parameters'
do
let
(
:params
)
{
{
'command'
=>
'command'
,
'image'
=>
'base'
,
'extra_parameters'
=>
[
'--rm'
,
'-w /tmp'
]
}
}
it
{
should
contain_file
(
initscript
)
.
with_content
(
/--rm/
)
.
with_content
(
/-w \/tmp/
)
}
end
context
'when passing an extra parameter'
do
let
(
:params
)
{
{
'command'
=>
'command'
,
'image'
=>
'base'
,
'extra_parameters'
=>
'-c 4'
}
}
it
{
should
contain_file
(
initscript
)
.
with_content
(
/-c 4/
)
}
end
context
'when passing a data volume'
do
let
(
:params
)
{
{
'command'
=>
'command'
,
'image'
=>
'base'
,
'volumes'
=>
'/var/log'
}
}
it
{
should
contain_file
(
initscript
)
.
with_content
(
/-v \/var\/log/
)
}
end
context
'when passing serveral data volume'
do
let
(
:params
)
{
{
'command'
=>
'command'
,
'image'
=>
'base'
,
'volumes'
=>
[
'/var/lib/couchdb'
,
'/var/log'
]
}
}
it
{
should
contain_file
(
initscript
)
.
with_content
(
/-v \/var\/lib\/couchdb/
)
}
it
{
should
contain_file
(
initscript
)
.
with_content
(
/-v \/var\/log/
)
}
end
context
'when using network mode'
do
let
(
:params
)
{
{
'command'
=>
'command'
,
'image'
=>
'nginx'
,
'net'
=>
'host'
}
}
it
{
should
contain_file
(
initscript
)
.
with_content
(
/--net host/
)
}
end
context
'when `pull_on_start` is true'
do
let
(
:params
)
{
{
'command'
=>
'command'
,
'image'
=>
'base'
,
'pull_on_start'
=>
true
}
}
it
{
should
contain_file
(
initscript
)
.
with_content
(
/docker pull base/
)
}
end
context
'when `pull_on_start` is false'
do
let
(
:params
)
{
{
'command'
=>
'command'
,
'image'
=>
'base'
,
'pull_on_start'
=>
false
}
}
it
{
should_not
contain_file
(
initscript
)
.
with_content
(
/docker pull base/
)
}
end
context
'when `before_start` is set'
do
let
(
:params
)
{
{
'command'
=>
'command'
,
'image'
=>
'base'
,
'before_start'
=>
"echo before_start"
}
}
it
{
should
contain_file
(
initscript
)
.
with_content
(
/before_start/
)
}
end
context
'when `before_start` is not set'
do
let
(
:params
)
{
{
'command'
=>
'command'
,
'image'
=>
'base'
,
'before_start'
=>
false
}
}
it
{
should_not
contain_file
(
initscript
)
.
with_content
(
/before_start/
)
}
end
context
'when `before_stop` is set'
do
let
(
:params
)
{
{
'command'
=>
'command'
,
'image'
=>
'base'
,
'before_stop'
=>
"echo before_stop"
}
}
it
{
should
contain_file
(
initscript
)
.
with_content
(
/before_stop/
)
}
end
context
'when `before_stop` is not set'
do
let
(
:params
)
{
{
'command'
=>
'command'
,
'image'
=>
'base'
,
'before_stop'
=>
false
}
}
it
{
should_not
contain_file
(
initscript
)
.
with_content
(
/before_stop/
)
}
end
context
'with an title that will not format into a path'
do
let
(
:title
)
{
'this/that'
}
let
(
:params
)
{
{
'image'
=>
'base'
}
}
if
osfamily
==
'Debian'
new_initscript
=
'/etc/systemd/system/docker-this-that.service'
else
new_initscript
=
'/etc/systemd/system/docker-this-that.service'
end
it
{
should
contain_service
(
'docker-this-that'
)
}
it
{
should
contain_file
(
new_initscript
)
}
end
context
'with manage_service turned off'
do
let
(
:title
)
{
'this/that'
}
let
(
:params
)
{
{
'image'
=>
'base'
,
'manage_service'
=>
false
}
}
if
osfamily
==
'Debian'
new_initscript
=
'/etc/systemd/system/docker-this-that.service'
else
new_initscript
=
'/etc/systemd/system/docker-this-that.service'
end
it
{
should_not
contain_service
(
'docker-this-that'
)
}
it
{
should
contain_file
(
new_initscript
)
}
end
context
'with service_prefix set to empty string'
do
let
(
:title
)
{
'this/that'
}
let
(
:params
)
{
{
'image'
=>
'base'
,
'service_prefix'
=>
''
}
}
if
osfamily
==
'Debian'
new_initscript
=
'/etc/systemd/system/this-that.service'
else
new_initscript
=
'/etc/systemd/system/this-that.service'
end
it
{
should
contain_service
(
'this-that'
)
}
it
{
should
contain_file
(
new_initscript
)
}
end
context
'with an invalid title'
do
let
(
:title
)
{
'with spaces'
}
it
do
expect
{
should
contain_service
(
'docker-sample'
)
}
.
to
raise_error
(
Puppet
::
Error
)
end
end
context
'with title that need sanitisation'
do
let
(
:title
)
{
'this/that_other'
}
let
(
:params
)
{
{
'image'
=>
'base'
}
}
if
osfamily
==
'Debian'
new_initscript
=
'/etc/systemd/system/docker-this-that_other.service'
else
new_initscript
=
'/etc/systemd/system/docker-this-that_other.service'
end
it
{
should
contain_service
(
'docker-this-that_other'
)
}
it
{
should
contain_file
(
new_initscript
)
}
end
context
'with an invalid image name'
do
let
(
:params
)
{
{
'command'
=>
'command'
,
'image'
=>
'with spaces'
,
'running'
=>
'not a boolean'
}
}
it
do
expect
{
should
contain_service
(
'docker-sample'
)
}
.
to
raise_error
(
Puppet
::
Error
)
end
end
context
'with an invalid running value'
do
let
(
:title
)
{
'with spaces'
}
let
(
:params
)
{
{
'command'
=>
'command'
,
'image'
=>
'base'
,
'running'
=>
'not a boolean'
}
}
it
do
expect
{
should
contain_service
(
'docker-sample'
)
}
.
to
raise_error
(
Puppet
::
Error
)
end
end
context
'with an invalid memory value'
do
let
(
:title
)
{
'with spaces'
}
let
(
:params
)
{
{
'command'
=>
'command'
,
'image'
=>
'base'
,
'memory'
=>
'not a number'
}
}
it
do
expect
{
should
contain_service
(
'docker-sample'
)
}
.
to
raise_error
(
Puppet
::
Error
)
end
end
context
'with a missing memory unit'
do
let
(
:title
)
{
'with spaces'
}
let
(
:params
)
{
{
'command'
=>
'command'
,
'image'
=>
'base'
,
'memory'
=>
'10240'
}
}
it
do
expect
{
should
contain_service
(
'docker-sample'
)
}
.
to
raise_error
(
Puppet
::
Error
)
end
end
context
'with restart policy set to no'
do
let
(
:params
)
{
{
'restart'
=>
'no'
,
'command'
=>
'command'
,
'image'
=>
'base'
,
'extra_parameters'
=>
'-c 4'
}
}
it
{
should
contain_exec
(
'run sample with docker'
)
}
it
{
should
contain_exec
(
'run sample with docker'
)
.
with_unless
(
/\/var\/run\/docker-sample.cid/
)
}
it
{
should
contain_exec
(
'run sample with docker'
)
.
with_unless
(
/-a/
)
}
it
{
should
contain_exec
(
'run sample with docker'
)
.
with_command
(
/--cidfile=\/var\/run\/docker-sample.cid/
)
}
it
{
should
contain_exec
(
'run sample with docker'
)
.
with_command
(
/-c 4/
)
}
it
{
should
contain_exec
(
'run sample with docker'
)
.
with_command
(
/--restart="no"/
)
}
it
{
should
contain_exec
(
'run sample with docker'
)
.
with_command
(
/base command/
)
}
it
{
should
contain_exec
(
'run sample with docker'
)
.
with_timeout
(
0
)
}
end
context
'with restart policy set to always'
do
let
(
:params
)
{
{
'restart'
=>
'always'
,
'command'
=>
'command'
,
'image'
=>
'base'
,
'extra_parameters'
=>
'-c 4'
}
}
it
{
should
contain_exec
(
'run sample with docker'
)
}
it
{
should
contain_exec
(
'run sample with docker'
)
.
with_unless
(
/\/var\/run\/docker-sample.cid/
)
}
it
{
should
contain_exec
(
'run sample with docker'
)
.
with_unless
(
/-a/
)
}
it
{
should
contain_exec
(
'run sample with docker'
)
.
with_command
(
/--cidfile=\/var\/run\/docker-sample.cid/
)
}
it
{
should
contain_exec
(
'run sample with docker'
)
.
with_command
(
/-c 4/
)
}
it
{
should
contain_exec
(
'run sample with docker'
)
.
with_command
(
/--restart="always"/
)
}
it
{
should
contain_exec
(
'run sample with docker'
)
.
with_command
(
/base command/
)
}
it
{
should
contain_exec
(
'run sample with docker'
)
.
with_timeout
(
0
)
}
end
context
'with restart policy set to on-failure'
do
let
(
:params
)
{
{
'restart'
=>
'on-failure'
,
'command'
=>
'command'
,
'image'
=>
'base'
,
'extra_parameters'
=>
'-c 4'
}
}
it
{
should
contain_exec
(
'run sample with docker'
)
}
it
{
should
contain_exec
(
'run sample with docker'
)
.
with_unless
(
/\/var\/run\/docker-sample.cid/
)
}
it
{
should
contain_exec
(
'run sample with docker'
)
.
with_unless
(
/-a/
)
}
it
{
should
contain_exec
(
'run sample with docker'
)
.
with_command
(
/--cidfile=\/var\/run\/docker-sample.cid/
)
}
it
{
should
contain_exec
(
'run sample with docker'
)
.
with_command
(
/-c 4/
)
}
it
{
should
contain_exec
(
'run sample with docker'
)
.
with_command
(
/--restart="on-failure"/
)
}
it
{
should
contain_exec
(
'run sample with docker'
)
.
with_command
(
/base command/
)
}
it
{
should
contain_exec
(
'run sample with docker'
)
.
with_timeout
(
0
)
}
end
context
'with restart policy set to on-failure:3'
do
let
(
:params
)
{
{
'restart'
=>
'on-failure:3'
,
'command'
=>
'command'
,
'image'
=>
'base'
,
'extra_parameters'
=>
'-c 4'
}
}
it
{
should
contain_exec
(
'run sample with docker'
)
}
it
{
should
contain_exec
(
'run sample with docker'
)
.
with_unless
(
/\/var\/run\/docker-sample.cid/
)
}
it
{
should
contain_exec
(
'run sample with docker'
)
.
with_unless
(
/-a/
)
}
it
{
should
contain_exec
(
'run sample with docker'
)
.
with_command
(
/--cidfile=\/var\/run\/docker-sample.cid/
)
}
it
{
should
contain_exec
(
'run sample with docker'
)
.
with_command
(
/-c 4/
)
}
it
{
should
contain_exec
(
'run sample with docker'
)
.
with_command
(
/--restart="on-failure:3"/
)
}
it
{
should
contain_exec
(
'run sample with docker'
)
.
with_command
(
/base command/
)
}
it
{
should
contain_exec
(
'run sample with docker'
)
.
with_timeout
(
0
)
}
end
context
'when `docker_service` is false'
do
let
(
:params
)
{
{
'command'
=>
'command'
,
'image'
=>
'base'
,
'docker_service'
=>
false
}
}
it
{
should
compile
.
with_all_deps
}
it
{
should
contain_service
(
'docker-sample'
)
}
end
context
'when `docker_service` is true'
do
let
(
:params
)
{
{
'command'
=>
'command'
,
'image'
=>
'base'
,
'docker_service'
=>
true
}
}
let
(
:pre_condition
)
{
"service { 'docker': }"
}
it
{
should
compile
.
with_all_deps
}
it
{
should
contain_service
(
'docker'
)
.
that_comes_before
(
'Service[docker-sample]'
)
}
it
{
should
contain_service
(
'docker'
)
.
that_notifies
(
'Service[docker-sample]'
)
}
end
context
'when `docker_service` is true and `restart_service_on_docker_refresh` is false'
do
let
(
:params
)
{
{
'command'
=>
'command'
,
'image'
=>
'base'
,
'docker_service'
=>
true
,
'restart_service_on_docker_refresh'
=>
false
}
}
let
(
:pre_condition
)
{
"service { 'docker': }"
}
it
{
should
compile
.
with_all_deps
}
it
{
should
contain_service
(
'docker'
)
.
that_comes_before
(
'Service[docker-sample]'
)
}
end
context
'when `docker_service` is `my-docker`'
do
let
(
:params
)
{
{
'command'
=>
'command'
,
'image'
=>
'base'
,
'docker_service'
=>
'my-docker'
}
}
let
(
:pre_condition
)
{
"service{ 'my-docker': }"
}
it
{
should
compile
.
with_all_deps
}
it
{
should
contain_service
(
'my-docker'
)
.
that_comes_before
(
'Service[docker-sample]'
)
}
it
{
should
contain_service
(
'my-docker'
)
.
that_notifies
(
'Service[docker-sample]'
)
}
end
context
'when `docker_service` is `my-docker` and `restart_service_on_docker_refresh` is false'
do
let
(
:params
)
{
{
'command'
=>
'command'
,
'image'
=>
'base'
,
'docker_service'
=>
'my-docker'
,
'restart_service_on_docker_refresh'
=>
false
}
}
let
(
:pre_condition
)
{
"service{ 'my-docker': }"
}
it
{
should
compile
.
with_all_deps
}
it
{
should
contain_service
(
'my-docker'
)
.
that_comes_before
(
'Service[docker-sample]'
)
}
end
context
'with syslog_identifier'
do
let
(
:params
)
{
{
'command'
=>
'command'
,
'image'
=>
'base'
,
'syslog_identifier'
=>
'docker-universe'
}
}
if
systemd
it
{
should
contain_file
(
initscript
)
.
with_content
(
/^SyslogIdentifier=docker-universe$/
)
}
end
end
context
'with extra_systemd_parameters'
do
let
(
:params
)
{
{
'command'
=>
'command'
,
'image'
=>
'base'
,
'extra_systemd_parameters'
=>
{
'RestartSec'
=>
5
}}
}
if
(
systemd
)
it
{
should
contain_file
(
initscript
)
.
with_content
(
/^RestartSec=5$/
)
}
end
end
context
'with ensure absent'
do
let
(
:params
)
{
{
'ensure'
=>
'absent'
,
'command'
=>
'command'
,
'image'
=>
'base'
}
}
it
{
should
compile
.
with_all_deps
}
it
{
should
contain_service
(
'docker-sample'
)
.
with_ensure
(
false
)
}
it
{
should
contain_exec
(
"remove container docker-sample"
)
.
with_command
(
'docker rm -v sample'
)
}
it
{
should_not
contain_file
(
'docker-sample.service'
)}
end
end
end
end
File Metadata
Details
Attached
Mime Type
text/x-ruby
Expires
Sat, Jun 21, 8:19 PM (3 w, 4 d ago)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
3373561
Attached To
R205 puppet-puppetlabs-docker
Event Timeline
Log In to Comment