From 8458503316760bf4cb5e7ff83fda506a05339c97 Mon Sep 17 00:00:00 2001 From: Markus Blaschke Date: Tue, 7 Feb 2017 01:37:38 +0100 Subject: [PATCH 1/6] WIP: Fix parallel execution environment --- bin/webdevops/Command.py | 5 ++- .../DockerTestServerspecTaskLoader.py | 2 +- tests/serverspec/Rakefile | 37 +++++++++++++------ tests/serverspec/serverspec.sh | 2 +- tests/serverspec/spec/spec_helper.rb | 2 +- 5 files changed, 33 insertions(+), 15 deletions(-) diff --git a/bin/webdevops/Command.py b/bin/webdevops/Command.py index 3b179aefd..5fb7957eb 100644 --- a/bin/webdevops/Command.py +++ b/bin/webdevops/Command.py @@ -18,7 +18,7 @@ # OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR # OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -import os, subprocess, tempfile +import os, subprocess, tempfile, copy def execute(cmd, cwd=False, env=None): """ @@ -27,6 +27,9 @@ def execute(cmd, cwd=False, env=None): print 'Execute: %s' % ' '.join(cmd) + if env is not None: + env = copy.deepcopy(env) + # remove _ from env (prevent errors) if env is not None and '_' in env: del env['_'] diff --git a/bin/webdevops/taskloader/DockerTestServerspecTaskLoader.py b/bin/webdevops/taskloader/DockerTestServerspecTaskLoader.py index d0a45127a..f63ffc8f3 100644 --- a/bin/webdevops/taskloader/DockerTestServerspecTaskLoader.py +++ b/bin/webdevops/taskloader/DockerTestServerspecTaskLoader.py @@ -77,7 +77,7 @@ def task_run(dockerfile, configuration, task): # serverspec options serverspec_opts = [] - serverspec_opts.extend(['--pattern', spec_path]) + serverspec_opts.extend([spec_path]) # serverspec env serverspec_env = DockerTestServerspecTaskLoader.generate_serverspec_environment( diff --git a/tests/serverspec/Rakefile b/tests/serverspec/Rakefile index 296e546f9..01ef7f4ef 100644 --- a/tests/serverspec/Rakefile +++ b/tests/serverspec/Rakefile @@ -1,13 +1,28 @@ -require 'rake' -require 'rspec/core/rake_task' - -RSpec.configure do |config| - # show retry status in spec process - config.verbose_retry = true - # show exception that triggers a retry if verbose_retry is set to true - config.display_try_failure_messages = true -end +begin + require 'rake' + require 'rspec/core/rake_task' + require 'rspec' + require 'serverspec' + require 'rspec/retry' + + RSpec.configure do |config| + # show retry status in spec process + config.verbose_retry = true + # show exception that triggers a retry if verbose_retry is set to true + config.display_try_failure_messages = true + end + + RSpec::Core::RakeTask.new(:spec, :pattern, :dockerfile, :osFamily, :osVersion, :dockerImage, :dockerTag) do |t, task_args| + t.pattern = task_args[:pattern] + + ENV['DOCKERFILE'] = task_args[:dockerfile] + ENV['DOCKER_IMAGE'] = task_args[:dockerImage] + ENV['DOCKER_TAG'] = task_args[:dockerTag] + + ENV['OS_FAMILY'] = task_args[:osFamily] + ENV['OS_VERSION'] = task_args[:osVersion] + end -RSpec::Core::RakeTask.new(:"spec") do |t, args| - #t.pattern = 'spec/base/*_spec.rb' +rescue LoadError + # no rspec available end diff --git a/tests/serverspec/serverspec.sh b/tests/serverspec/serverspec.sh index c3b01ac12..6ba07ef61 100644 --- a/tests/serverspec/serverspec.sh +++ b/tests/serverspec/serverspec.sh @@ -48,4 +48,4 @@ echo " Docker image: ${DOCKER_IMAGE}:${DOCKER_TAG}" echo " Dockerfile: ${DOCKERFILE}" echo "" -exec bundle exec rspec "$@" +exec bundle exec rake spec["$1","$DOCKERFILE","$OS_FAMILY","$OS_VERSION","$DOCKER_IMAGE","$DOCKER_TAG"] "$@" diff --git a/tests/serverspec/spec/spec_helper.rb b/tests/serverspec/spec/spec_helper.rb index ffa8fc105..38a3036c3 100644 --- a/tests/serverspec/spec/spec_helper.rb +++ b/tests/serverspec/spec/spec_helper.rb @@ -7,7 +7,7 @@ Dir[base_spec_dir.join('collection/**.rb')].sort.each{ |f| require f } set :backend, :docker -set :docker_container, ENV['DOCKER_IMAGE'] +#set :docker_container, ENV['DOCKER_IMAGE'] set :os, :family => ENV['OS_FAMILY'], :version => ENV['OS_VERSION'], :arch => 'x86_64' Excon.defaults[:write_timeout] = 1000 From ad070dbf18dca68ea377856f5a047aa0910feadd Mon Sep 17 00:00:00 2001 From: Markus Blaschke Date: Wed, 8 Feb 2017 01:29:08 +0100 Subject: [PATCH 2/6] WIP --- bin/webdevops/Command.py | 21 ++++++-- bin/webdevops/command/DoitCommand.py | 2 +- .../DockerTestServerspecTaskLoader.py | 34 ++++++------- conf/console.yml | 2 +- tests/serverspec/Rakefile | 18 ++++--- tests/serverspec/serverspec.sh | 50 ++++--------------- tests/serverspec/spec/docker/ansible_spec.rb | 2 +- .../serverspec/spec/docker/apache-dev_spec.rb | 2 +- tests/serverspec/spec/docker/apache_spec.rb | 2 +- tests/serverspec/spec/docker/base-app_spec.rb | 2 +- tests/serverspec/spec/docker/base_spec.rb | 2 +- .../serverspec/spec/docker/bootstrap_spec.rb | 2 +- tests/serverspec/spec/docker/certbot_spec.rb | 2 +- .../spec/docker/hhvm-apache_spec.rb | 2 +- .../serverspec/spec/docker/hhvm-nginx_spec.rb | 2 +- tests/serverspec/spec/docker/hhvm_spec.rb | 2 +- .../serverspec/spec/docker/liquibase_spec.rb | 2 +- .../spec/docker/mail-sandbox_spec.rb | 2 +- .../serverspec/spec/docker/nginx-dev_spec.rb | 2 +- tests/serverspec/spec/docker/nginx_spec.rb | 2 +- .../spec/docker/php-apache-dev_spec.rb | 2 +- .../serverspec/spec/docker/php-apache_spec.rb | 2 +- tests/serverspec/spec/docker/php-dev_spec.rb | 2 +- .../spec/docker/php-nginx-dev_spec.rb | 2 +- .../serverspec/spec/docker/php-nginx_spec.rb | 2 +- tests/serverspec/spec/docker/php_spec.rb | 2 +- tests/serverspec/spec/docker/postfix_spec.rb | 2 +- .../spec/docker/samson-deployment_spec.rb | 2 +- tests/serverspec/spec/docker/sphinx_spec.rb | 2 +- tests/serverspec/spec/docker/ssh_spec.rb | 2 +- tests/serverspec/spec/docker/varnish_spec.rb | 2 +- tests/serverspec/spec/docker/vsftp_spec.rb | 2 +- tests/serverspec/spec/image.rb | 4 +- tests/serverspec/spec/spec_helper.rb | 27 +++++----- 34 files changed, 96 insertions(+), 114 deletions(-) diff --git a/bin/webdevops/Command.py b/bin/webdevops/Command.py index 5fb7957eb..1ea923d13 100644 --- a/bin/webdevops/Command.py +++ b/bin/webdevops/Command.py @@ -29,10 +29,25 @@ def execute(cmd, cwd=False, env=None): if env is not None: env = copy.deepcopy(env) + env['PWD'] = os.environ['PWD'] + env['LC_CTYPE'] = os.environ['LC_CTYPE'] + env['SHELL'] = os.environ['SHELL'] - # remove _ from env (prevent errors) - if env is not None and '_' in env: - del env['_'] + if '_' in env: + del env['_'] + + if not 'PWD' in env: + env['PWD'] = os.environ['PWD'] + if not 'PATH' in env: + env['PATH'] = os.environ['PATH'] + if not 'LC_CTYPE' in env: + env['LC_CTYPE'] = os.environ['LC_CTYPE'] + if not 'SHELL' in env: + env['SHELL'] = os.environ['SHELL'] + if not 'DOCKER_HOST' in env: + env['DOCKER_HOST'] = os.environ['DOCKER_HOST'] + if not 'DOCKER_CERT_PATH' in env: + env['DOCKER_CERT_PATH'] = os.environ['DOCKER_CERT_PATH'] # set current working directory path_current = os.getcwd() diff --git a/bin/webdevops/command/DoitCommand.py b/bin/webdevops/command/DoitCommand.py index a805bfb95..c7d1dc3ed 100644 --- a/bin/webdevops/command/DoitCommand.py +++ b/bin/webdevops/command/DoitCommand.py @@ -28,7 +28,7 @@ def run_doit(self, task_loader, configuration): extra_configuration = {} if 'threads' in configuration and configuration.get('threads') > 1: - arguments.extend(['-n', str(configuration.get('threads'))]) + arguments.extend(['-n', str(configuration.get('threads')), '--parallel-type', 'process']) if 'doitConfig' in configuration: extra_configuration = configuration.get('doitConfig') diff --git a/bin/webdevops/taskloader/DockerTestServerspecTaskLoader.py b/bin/webdevops/taskloader/DockerTestServerspecTaskLoader.py index f63ffc8f3..3d30a76b2 100644 --- a/bin/webdevops/taskloader/DockerTestServerspecTaskLoader.py +++ b/bin/webdevops/taskloader/DockerTestServerspecTaskLoader.py @@ -18,7 +18,7 @@ # OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR # OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -import os, re, tempfile, json +import os, re, tempfile, json, base64 from webdevops import Command from .BaseDockerTaskLoader import BaseDockerTaskLoader from .BaseTaskLoader import BaseTaskLoader @@ -75,18 +75,18 @@ def task_run(dockerfile, configuration, task): tmp_suffix = '.%s_%s_%s.tmp' % (dockerfile['image']['repository'], dockerfile['image']['imageName'], dockerfile['image']['tag']) test_dockerfile = tempfile.NamedTemporaryFile(prefix='Dockerfile.', suffix=tmp_suffix, dir=configuration.get('serverspecPath'), bufsize=0, delete=False) - # serverspec options - serverspec_opts = [] - serverspec_opts.extend([spec_path]) - - # serverspec env - serverspec_env = DockerTestServerspecTaskLoader.generate_serverspec_environment( + # serverspec conf + serverspec_conf = DockerTestServerspecTaskLoader.generate_serverspec_configuration( path=os.path.basename(test_dockerfile.name), dockerfile=dockerfile, configuration=configuration, is_toolimage=is_toolimage ) + # serverspec options + serverspec_opts = [] + serverspec_opts.extend([spec_path, base64.b64encode(json.dumps(serverspec_conf))]) + # dockerfile content dockerfile_content = DockerTestServerspecTaskLoader.generate_dockerfile( dockerfile=dockerfile, @@ -103,9 +103,9 @@ def task_run(dockerfile, configuration, task): print ' path: %s' % (spec_path) print ' args: %s' % (' '.join(serverspec_opts)) print '' - print 'environment:' - print '------------' - print json.dumps(serverspec_env, indent=4, sort_keys=True) + print 'spec configuration:' + print '-------------------' + print json.dumps(serverspec_conf, indent=4, sort_keys=True) print '' print 'Dockerfile:' print '-----------' @@ -123,10 +123,6 @@ def task_run(dockerfile, configuration, task): cmd = ['bash', 'serverspec.sh'] cmd.extend(serverspec_opts) - # Set environment variables - env = os.environ.copy() - env.update(serverspec_env) - # create Dockerfile with open(test_dockerfile.name, mode='w', buffering=0) as f: f.write(dockerfile_content) @@ -137,7 +133,7 @@ def task_run(dockerfile, configuration, task): test_status = False for retry_count in range(0, configuration.get('retry')): try: - test_status = Command.execute(cmd, cwd=configuration.get('serverspecPath'), env=env) + test_status = Command.execute(cmd, cwd=configuration.get('serverspecPath')) except Exception as e: print e pass @@ -153,19 +149,19 @@ def task_run(dockerfile, configuration, task): return test_status @staticmethod - def generate_serverspec_environment(path, dockerfile, configuration, is_toolimage=False): + def generate_serverspec_configuration(path, dockerfile, configuration, is_toolimage=False): """ - Generate serverspec environment dict + Generate serverspec configuration dict """ ret = {} # add default vars - default_env_list = configuration.get('dockerTest.environment.default', False) + default_env_list = configuration.get('dockerTest.configuration.default', False) if default_env_list: ret = default_env_list.to_dict().copy() # add docker image specific vars - image_env_list = configuration.get('dockerTest.environment.image') + image_env_list = configuration.get('dockerTest.configuration.image') if image_env_list: image_env_list = image_env_list.to_dict().copy() for term in image_env_list: diff --git a/conf/console.yml b/conf/console.yml index ce162c082..7c6584a17 100644 --- a/conf/console.yml +++ b/conf/console.yml @@ -35,7 +35,7 @@ dockerTest: '/varnish': - 'ENV VARNISH_BACKEND_HOST webdevops.io' - environment: + configuration: default: OS_FAMILY: 'ubuntu' OS_VERSION: '16.04' diff --git a/tests/serverspec/Rakefile b/tests/serverspec/Rakefile index 01ef7f4ef..eddf71fc3 100644 --- a/tests/serverspec/Rakefile +++ b/tests/serverspec/Rakefile @@ -1,9 +1,11 @@ begin require 'rake' - require 'rspec/core/rake_task' + require 'json' + require 'base64' require 'rspec' require 'serverspec' require 'rspec/retry' + require 'rspec/core/rake_task' RSpec.configure do |config| # show retry status in spec process @@ -12,15 +14,17 @@ begin config.display_try_failure_messages = true end - RSpec::Core::RakeTask.new(:spec, :pattern, :dockerfile, :osFamily, :osVersion, :dockerImage, :dockerTag) do |t, task_args| + RSpec::Core::RakeTask.new(:spec, :pattern, :configuration) do |t, task_args| t.pattern = task_args[:pattern] + t.fail_on_error = true - ENV['DOCKERFILE'] = task_args[:dockerfile] - ENV['DOCKER_IMAGE'] = task_args[:dockerImage] - ENV['DOCKER_TAG'] = task_args[:dockerTag] + $specConfiguration = JSON.parse(Base64.decode64(task_args[:configuration])) - ENV['OS_FAMILY'] = task_args[:osFamily] - ENV['OS_VERSION'] = task_args[:osVersion] + ENV['DOCKERFILE'] = $specConfiguration['DOCKERFILE'] + ENV['OS_FAMILY'] = $specConfiguration['OS_FAMILY'] + ENV['OS_VERSION'] = $specConfiguration['OS_VERSION'] + ENV['DOCKER_IMAGE'] = $specConfiguration['DOCKER_IMAGE'] + ENV['DOCKER_TAG'] = $specConfiguration['DOCKER_TAG'] end rescue LoadError diff --git a/tests/serverspec/serverspec.sh b/tests/serverspec/serverspec.sh index 6ba07ef61..9170b693c 100644 --- a/tests/serverspec/serverspec.sh +++ b/tests/serverspec/serverspec.sh @@ -1,51 +1,19 @@ #!/usr/bin/env bash -# Check if DOCKERFILE is set, needed for test -if [[ -z "$DOCKERFILE" ]]; then - echo "Environment variable 'DOCKERFILE' not set" - exit 1 -fi -# Check if dockerfile exists -if [[ ! -f "${DOCKERFILE}" ]]; then - # Filesystem is maybe not synced? - sync - - # recheck if file is now available - if [[ ! -f "${DOCKERFILE}" ]]; then - echo "Dockerfile $DOCKERFILE' not found" - exit 1 - fi -fi - -# Check if DOCKER_IMAGE is set, needed for test -if [[ -z "$DOCKER_IMAGE" ]]; then - echo "Environment variable 'DOCKER_IMAGE' not set" - exit 1 -fi - -# Check if DOCKER_TAG is set, needed for test -if [[ -z "$DOCKER_TAG" ]]; then - echo "Environment variable 'DOCKER_TAG' not set" - exit 1 -fi - -# Check if OS_FAMILY is set, needed for test -if [[ -z "$OS_FAMILY" ]]; then - echo "Environment variable 'OS_FAMILY' not set" - exit 1 -fi +echo "Starting serverspec" +echo " OS: ${OS_FAMILY} Version ${OS_VERSION}" +echo " Docker image: ${DOCKER_IMAGE}:${DOCKER_TAG}" +echo " Dockerfile: ${DOCKERFILE}" +echo "" -# Check if OS_FAMILY is set, needed for test -if [[ -z "$OS_VERSION" ]]; then - echo "Environment variable 'OS_FAMILY' not set" - exit 1 -fi +RAILS_ENV=development bundle exec rake spec["$1","$2"] +ret=$? -echo "Starting serverspec" +echo "Finished serverspec" echo " OS: ${OS_FAMILY} Version ${OS_VERSION}" echo " Docker image: ${DOCKER_IMAGE}:${DOCKER_TAG}" echo " Dockerfile: ${DOCKERFILE}" echo "" -exec bundle exec rake spec["$1","$DOCKERFILE","$OS_FAMILY","$OS_VERSION","$DOCKER_IMAGE","$DOCKER_TAG"] "$@" +exit $ret diff --git a/tests/serverspec/spec/docker/ansible_spec.rb b/tests/serverspec/spec/docker/ansible_spec.rb index 380e528d2..2ccb2d3a5 100644 --- a/tests/serverspec/spec/docker/ansible_spec.rb +++ b/tests/serverspec/spec/docker/ansible_spec.rb @@ -4,7 +4,7 @@ describe "Dockerfile" do before(:all) do - @image = Docker::Image.build_from_dir('.', { 'dockerfile' => ENV['DOCKERFILE'] }) + @image = Docker::Image.build_from_dir('.', { 'dockerfile' => $specConfiguration['DOCKERFILE'] }) set :docker_image, @image.id end diff --git a/tests/serverspec/spec/docker/apache-dev_spec.rb b/tests/serverspec/spec/docker/apache-dev_spec.rb index 704ba62c4..aa9014f92 100644 --- a/tests/serverspec/spec/docker/apache-dev_spec.rb +++ b/tests/serverspec/spec/docker/apache-dev_spec.rb @@ -4,7 +4,7 @@ describe "Dockerfile" do before(:all) do - @image = Docker::Image.build_from_dir('.', { 'dockerfile' => ENV['DOCKERFILE'] }) + @image = Docker::Image.build_from_dir('.', { 'dockerfile' => $specConfiguration['DOCKERFILE'] }) set :docker_image, @image.id end diff --git a/tests/serverspec/spec/docker/apache_spec.rb b/tests/serverspec/spec/docker/apache_spec.rb index 704ba62c4..aa9014f92 100644 --- a/tests/serverspec/spec/docker/apache_spec.rb +++ b/tests/serverspec/spec/docker/apache_spec.rb @@ -4,7 +4,7 @@ describe "Dockerfile" do before(:all) do - @image = Docker::Image.build_from_dir('.', { 'dockerfile' => ENV['DOCKERFILE'] }) + @image = Docker::Image.build_from_dir('.', { 'dockerfile' => $specConfiguration['DOCKERFILE'] }) set :docker_image, @image.id end diff --git a/tests/serverspec/spec/docker/base-app_spec.rb b/tests/serverspec/spec/docker/base-app_spec.rb index 80d086a46..158fca1d1 100644 --- a/tests/serverspec/spec/docker/base-app_spec.rb +++ b/tests/serverspec/spec/docker/base-app_spec.rb @@ -4,7 +4,7 @@ describe "Dockerfile" do before(:all) do - @image = Docker::Image.build_from_dir('.', { 'dockerfile' => ENV['DOCKERFILE'] }) + @image = Docker::Image.build_from_dir('.', { 'dockerfile' => $specConfiguration['DOCKERFILE'] }) set :docker_image, @image.id end diff --git a/tests/serverspec/spec/docker/base_spec.rb b/tests/serverspec/spec/docker/base_spec.rb index 053be94ce..459feb042 100644 --- a/tests/serverspec/spec/docker/base_spec.rb +++ b/tests/serverspec/spec/docker/base_spec.rb @@ -4,7 +4,7 @@ describe "Dockerfile" do before(:all) do - @image = Docker::Image.build_from_dir('.', { 'dockerfile' => ENV['DOCKERFILE'] }) + @image = Docker::Image.build_from_dir('.', { 'dockerfile' => $specConfiguration['DOCKERFILE'] }) set :docker_image, @image.id end diff --git a/tests/serverspec/spec/docker/bootstrap_spec.rb b/tests/serverspec/spec/docker/bootstrap_spec.rb index 380e528d2..2ccb2d3a5 100644 --- a/tests/serverspec/spec/docker/bootstrap_spec.rb +++ b/tests/serverspec/spec/docker/bootstrap_spec.rb @@ -4,7 +4,7 @@ describe "Dockerfile" do before(:all) do - @image = Docker::Image.build_from_dir('.', { 'dockerfile' => ENV['DOCKERFILE'] }) + @image = Docker::Image.build_from_dir('.', { 'dockerfile' => $specConfiguration['DOCKERFILE'] }) set :docker_image, @image.id end diff --git a/tests/serverspec/spec/docker/certbot_spec.rb b/tests/serverspec/spec/docker/certbot_spec.rb index d4dae3595..b44707804 100644 --- a/tests/serverspec/spec/docker/certbot_spec.rb +++ b/tests/serverspec/spec/docker/certbot_spec.rb @@ -4,7 +4,7 @@ describe "Dockerfile" do before(:all) do - @image = Docker::Image.build_from_dir('.', { 'dockerfile' => ENV['DOCKERFILE'] }) + @image = Docker::Image.build_from_dir('.', { 'dockerfile' => $specConfiguration['DOCKERFILE'] }) set :docker_image, @image.id end diff --git a/tests/serverspec/spec/docker/hhvm-apache_spec.rb b/tests/serverspec/spec/docker/hhvm-apache_spec.rb index fbe867530..b37f3a765 100644 --- a/tests/serverspec/spec/docker/hhvm-apache_spec.rb +++ b/tests/serverspec/spec/docker/hhvm-apache_spec.rb @@ -4,7 +4,7 @@ describe "Dockerfile" do before(:all) do - @image = Docker::Image.build_from_dir('.', { 'dockerfile' => ENV['DOCKERFILE'] }) + @image = Docker::Image.build_from_dir('.', { 'dockerfile' => $specConfiguration['DOCKERFILE'] }) set :docker_image, @image.id end diff --git a/tests/serverspec/spec/docker/hhvm-nginx_spec.rb b/tests/serverspec/spec/docker/hhvm-nginx_spec.rb index b26cc05da..955999d29 100644 --- a/tests/serverspec/spec/docker/hhvm-nginx_spec.rb +++ b/tests/serverspec/spec/docker/hhvm-nginx_spec.rb @@ -4,7 +4,7 @@ describe "Dockerfile" do before(:all) do - @image = Docker::Image.build_from_dir('.', { 'dockerfile' => ENV['DOCKERFILE'] }) + @image = Docker::Image.build_from_dir('.', { 'dockerfile' => $specConfiguration['DOCKERFILE'] }) set :docker_image, @image.id end diff --git a/tests/serverspec/spec/docker/hhvm_spec.rb b/tests/serverspec/spec/docker/hhvm_spec.rb index a864a9b4a..51fec310a 100644 --- a/tests/serverspec/spec/docker/hhvm_spec.rb +++ b/tests/serverspec/spec/docker/hhvm_spec.rb @@ -4,7 +4,7 @@ describe "Dockerfile" do before(:all) do - @image = Docker::Image.build_from_dir('.', { 'dockerfile' => ENV['DOCKERFILE'] }) + @image = Docker::Image.build_from_dir('.', { 'dockerfile' => $specConfiguration['DOCKERFILE'] }) set :docker_image, @image.id end diff --git a/tests/serverspec/spec/docker/liquibase_spec.rb b/tests/serverspec/spec/docker/liquibase_spec.rb index 16a456449..64a09410f 100644 --- a/tests/serverspec/spec/docker/liquibase_spec.rb +++ b/tests/serverspec/spec/docker/liquibase_spec.rb @@ -4,7 +4,7 @@ describe "Dockerfile" do before(:all) do - @image = Docker::Image.build_from_dir('.', { 'dockerfile' => ENV['DOCKERFILE'] }) + @image = Docker::Image.build_from_dir('.', { 'dockerfile' => $specConfiguration['DOCKERFILE'] }) set :docker_image, @image.id end diff --git a/tests/serverspec/spec/docker/mail-sandbox_spec.rb b/tests/serverspec/spec/docker/mail-sandbox_spec.rb index 9ef495544..fb9461bb1 100644 --- a/tests/serverspec/spec/docker/mail-sandbox_spec.rb +++ b/tests/serverspec/spec/docker/mail-sandbox_spec.rb @@ -4,7 +4,7 @@ describe "Dockerfile" do before(:all) do - @image = Docker::Image.build_from_dir('.', { 'dockerfile' => ENV['DOCKERFILE'] }) + @image = Docker::Image.build_from_dir('.', { 'dockerfile' => $specConfiguration['DOCKERFILE'] }) set :docker_image, @image.id end diff --git a/tests/serverspec/spec/docker/nginx-dev_spec.rb b/tests/serverspec/spec/docker/nginx-dev_spec.rb index 59a795608..6d7869538 100644 --- a/tests/serverspec/spec/docker/nginx-dev_spec.rb +++ b/tests/serverspec/spec/docker/nginx-dev_spec.rb @@ -4,7 +4,7 @@ describe "Dockerfile" do before(:all) do - @image = Docker::Image.build_from_dir('.', { 'dockerfile' => ENV['DOCKERFILE'] }) + @image = Docker::Image.build_from_dir('.', { 'dockerfile' => $specConfiguration['DOCKERFILE'] }) set :docker_image, @image.id end diff --git a/tests/serverspec/spec/docker/nginx_spec.rb b/tests/serverspec/spec/docker/nginx_spec.rb index 59a795608..6d7869538 100644 --- a/tests/serverspec/spec/docker/nginx_spec.rb +++ b/tests/serverspec/spec/docker/nginx_spec.rb @@ -4,7 +4,7 @@ describe "Dockerfile" do before(:all) do - @image = Docker::Image.build_from_dir('.', { 'dockerfile' => ENV['DOCKERFILE'] }) + @image = Docker::Image.build_from_dir('.', { 'dockerfile' => $specConfiguration['DOCKERFILE'] }) set :docker_image, @image.id end diff --git a/tests/serverspec/spec/docker/php-apache-dev_spec.rb b/tests/serverspec/spec/docker/php-apache-dev_spec.rb index 79116c148..c47d7e357 100644 --- a/tests/serverspec/spec/docker/php-apache-dev_spec.rb +++ b/tests/serverspec/spec/docker/php-apache-dev_spec.rb @@ -4,7 +4,7 @@ describe "Dockerfile" do before(:all) do - @image = Docker::Image.build_from_dir('.', { 'dockerfile' => ENV['DOCKERFILE'] }) + @image = Docker::Image.build_from_dir('.', { 'dockerfile' => $specConfiguration['DOCKERFILE'] }) set :docker_image, @image.id end diff --git a/tests/serverspec/spec/docker/php-apache_spec.rb b/tests/serverspec/spec/docker/php-apache_spec.rb index fc27e7fff..6099cb931 100644 --- a/tests/serverspec/spec/docker/php-apache_spec.rb +++ b/tests/serverspec/spec/docker/php-apache_spec.rb @@ -4,7 +4,7 @@ describe "Dockerfile" do before(:all) do - @image = Docker::Image.build_from_dir('.', { 'dockerfile' => ENV['DOCKERFILE'] }) + @image = Docker::Image.build_from_dir('.', { 'dockerfile' => $specConfiguration['DOCKERFILE'] }) set :docker_image, @image.id end diff --git a/tests/serverspec/spec/docker/php-dev_spec.rb b/tests/serverspec/spec/docker/php-dev_spec.rb index c18f86b5e..2fda07037 100644 --- a/tests/serverspec/spec/docker/php-dev_spec.rb +++ b/tests/serverspec/spec/docker/php-dev_spec.rb @@ -4,7 +4,7 @@ describe "Dockerfile" do before(:all) do - @image = Docker::Image.build_from_dir('.', { 'dockerfile' => ENV['DOCKERFILE'] }) + @image = Docker::Image.build_from_dir('.', { 'dockerfile' => $specConfiguration['DOCKERFILE'] }) set :docker_image, @image.id end diff --git a/tests/serverspec/spec/docker/php-nginx-dev_spec.rb b/tests/serverspec/spec/docker/php-nginx-dev_spec.rb index dfb49c29d..458785fc8 100644 --- a/tests/serverspec/spec/docker/php-nginx-dev_spec.rb +++ b/tests/serverspec/spec/docker/php-nginx-dev_spec.rb @@ -4,7 +4,7 @@ describe "Dockerfile" do before(:all) do - @image = Docker::Image.build_from_dir('.', { 'dockerfile' => ENV['DOCKERFILE'] }) + @image = Docker::Image.build_from_dir('.', { 'dockerfile' => $specConfiguration['DOCKERFILE'] }) set :docker_image, @image.id end diff --git a/tests/serverspec/spec/docker/php-nginx_spec.rb b/tests/serverspec/spec/docker/php-nginx_spec.rb index 294446e39..4a184519c 100644 --- a/tests/serverspec/spec/docker/php-nginx_spec.rb +++ b/tests/serverspec/spec/docker/php-nginx_spec.rb @@ -4,7 +4,7 @@ describe "Dockerfile" do before(:all) do - @image = Docker::Image.build_from_dir('.', { 'dockerfile' => ENV['DOCKERFILE'] }) + @image = Docker::Image.build_from_dir('.', { 'dockerfile' => $specConfiguration['DOCKERFILE'] }) set :docker_image, @image.id end diff --git a/tests/serverspec/spec/docker/php_spec.rb b/tests/serverspec/spec/docker/php_spec.rb index 098c60867..6fc266189 100644 --- a/tests/serverspec/spec/docker/php_spec.rb +++ b/tests/serverspec/spec/docker/php_spec.rb @@ -4,7 +4,7 @@ describe "Dockerfile" do before(:all) do - @image = Docker::Image.build_from_dir('.', { 'dockerfile' => ENV['DOCKERFILE'] }) + @image = Docker::Image.build_from_dir('.', { 'dockerfile' => $specConfiguration['DOCKERFILE'] }) set :docker_image, @image.id end diff --git a/tests/serverspec/spec/docker/postfix_spec.rb b/tests/serverspec/spec/docker/postfix_spec.rb index 3bdcbd6da..448e6c453 100644 --- a/tests/serverspec/spec/docker/postfix_spec.rb +++ b/tests/serverspec/spec/docker/postfix_spec.rb @@ -4,7 +4,7 @@ describe "Dockerfile" do before(:all) do - @image = Docker::Image.build_from_dir('.', { 'dockerfile' => ENV['DOCKERFILE'] }) + @image = Docker::Image.build_from_dir('.', { 'dockerfile' => $specConfiguration['DOCKERFILE'] }) set :docker_image, @image.id end diff --git a/tests/serverspec/spec/docker/samson-deployment_spec.rb b/tests/serverspec/spec/docker/samson-deployment_spec.rb index 6d685d622..834df23e8 100644 --- a/tests/serverspec/spec/docker/samson-deployment_spec.rb +++ b/tests/serverspec/spec/docker/samson-deployment_spec.rb @@ -4,7 +4,7 @@ describe "Dockerfile" do before(:all) do - @image = Docker::Image.build_from_dir('.', { 'dockerfile' => ENV['DOCKERFILE'] }) + @image = Docker::Image.build_from_dir('.', { 'dockerfile' => $specConfiguration['DOCKERFILE'] }) set :docker_image, @image.id end diff --git a/tests/serverspec/spec/docker/sphinx_spec.rb b/tests/serverspec/spec/docker/sphinx_spec.rb index 3dad0e053..e440a3428 100644 --- a/tests/serverspec/spec/docker/sphinx_spec.rb +++ b/tests/serverspec/spec/docker/sphinx_spec.rb @@ -4,7 +4,7 @@ describe "Dockerfile" do before(:all) do - @image = Docker::Image.build_from_dir('.', { 'dockerfile' => ENV['DOCKERFILE'] }) + @image = Docker::Image.build_from_dir('.', { 'dockerfile' => $specConfiguration['DOCKERFILE'] }) set :docker_image, @image.id end diff --git a/tests/serverspec/spec/docker/ssh_spec.rb b/tests/serverspec/spec/docker/ssh_spec.rb index cee534c74..357559c2f 100644 --- a/tests/serverspec/spec/docker/ssh_spec.rb +++ b/tests/serverspec/spec/docker/ssh_spec.rb @@ -4,7 +4,7 @@ describe "Dockerfile" do before(:all) do - @image = Docker::Image.build_from_dir('.', { 'dockerfile' => ENV['DOCKERFILE'] }) + @image = Docker::Image.build_from_dir('.', { 'dockerfile' => $specConfiguration['DOCKERFILE'] }) set :docker_image, @image.id end diff --git a/tests/serverspec/spec/docker/varnish_spec.rb b/tests/serverspec/spec/docker/varnish_spec.rb index 9e6eeb4d9..81219fe8c 100644 --- a/tests/serverspec/spec/docker/varnish_spec.rb +++ b/tests/serverspec/spec/docker/varnish_spec.rb @@ -4,7 +4,7 @@ describe "Dockerfile" do before(:all) do - @image = Docker::Image.build_from_dir('.', { 'dockerfile' => ENV['DOCKERFILE'] }) + @image = Docker::Image.build_from_dir('.', { 'dockerfile' => $specConfiguration['DOCKERFILE'] }) set :docker_image, @image.id end diff --git a/tests/serverspec/spec/docker/vsftp_spec.rb b/tests/serverspec/spec/docker/vsftp_spec.rb index 49b443ad9..d4ac72c9d 100644 --- a/tests/serverspec/spec/docker/vsftp_spec.rb +++ b/tests/serverspec/spec/docker/vsftp_spec.rb @@ -4,7 +4,7 @@ describe "Dockerfile" do before(:all) do - @image = Docker::Image.build_from_dir('.', { 'dockerfile' => ENV['DOCKERFILE'] }) + @image = Docker::Image.build_from_dir('.', { 'dockerfile' => $specConfiguration['DOCKERFILE'] }) set :docker_image, @image.id end diff --git a/tests/serverspec/spec/image.rb b/tests/serverspec/spec/image.rb index 9124841f0..6c4280252 100644 --- a/tests/serverspec/spec/image.rb +++ b/tests/serverspec/spec/image.rb @@ -2,9 +2,9 @@ require 'docker' set :backend, :exec -set :docker_container, ENV['DOCKER_IMAGE'] +set :docker_container, $specConfiguration['DOCKER_IMAGE'] -describe docker_image(ENV['DOCKER_IMAGE']) do +describe docker_image($specConfiguration['DOCKER_IMAGE']) do its(:inspection) { should_not include 'Architecture' => 'i386' } its(:inspection) { should include 'Architecture' => 'amd64' } end diff --git a/tests/serverspec/spec/spec_helper.rb b/tests/serverspec/spec/spec_helper.rb index 38a3036c3..f231a48e7 100644 --- a/tests/serverspec/spec/spec_helper.rb +++ b/tests/serverspec/spec/spec_helper.rb @@ -1,23 +1,22 @@ require 'serverspec' require 'rspec/retry' +require 'json' +require 'base64' base_spec_dir = Pathname.new(File.join(File.dirname(__FILE__))) Dir[base_spec_dir.join('shared/**/*.rb')].sort.each{ |f| require f } Dir[base_spec_dir.join('collection/**.rb')].sort.each{ |f| require f } +$specConfiguration = ENV + set :backend, :docker -#set :docker_container, ENV['DOCKER_IMAGE'] -set :os, :family => ENV['OS_FAMILY'], :version => ENV['OS_VERSION'], :arch => 'x86_64' +set :docker_container, $specConfiguration['DOCKER_IMAGE'] +set :os, :family => $specConfiguration['OS_FAMILY'], :version => $specConfiguration['OS_VERSION'], :arch => 'x86_64' Excon.defaults[:write_timeout] = 1000 Excon.defaults[:read_timeout] = 1000 -$dockerInfo = {} -$dockerInfo[:image] = ENV['DOCKER_IMAGE'] -$dockerInfo[:tag] = ENV['DOCKER_TAG'] -$dockerInfo[:dockerfile] = ENV['DOCKERFILE'] - $packageVersions = {} $packageVersions[:ansible] = %r!ansible 2.([0-9]\.?)+! $packageVersions[:ansiblePlaybook] = %r!ansible-playbook 2.([0-9]\.?)+! @@ -45,32 +44,32 @@ (os[:family] == 'debian' and os[:version] == '7') or (os[:family] == 'debian' and os[:version] == '8') or (os[:family] == 'alpine' and os[:version] == '3') or - ($dockerInfo[:tag].match('php5'))) + ($specConfiguration['DOCKER_TAG'].match('php5'))) $testConfiguration[:php] = 5 end -if ($dockerInfo[:tag].match('php7')) +if ($specConfiguration['DOCKER_TAG'].match('php7')) $testConfiguration[:php] = 7 end -if ENV['PHP_XDEBUG'] and ENV['PHP_XDEBUG'] == "0" +if $specConfiguration['PHP_XDEBUG'] and $specConfiguration['PHP_XDEBUG'] == "0" $testConfiguration[:phpXdebug] = false end -if ENV['PHP_APCU'] and ENV['PHP_APCU'] == "0" +if $specConfiguration['PHP_APCU'] and $specConfiguration['PHP_APCU'] == "0" $testConfiguration[:phpApcu] = false end -if ENV['PHP_REDIS'] and ENV['PHP_REDIS'] == "0" +if $specConfiguration['PHP_REDIS'] and $specConfiguration['PHP_REDIS'] == "0" $testConfiguration[:phpRedis] = false end -if ENV['PHP_MHASH'] and ENV['PHP_MHASH'] == "0" +if $specConfiguration['PHP_MHASH'] and $specConfiguration['PHP_MHASH'] == "0" $testConfiguration[:phpMhash] = false end -if ENV['PHP_BLACKFIRE'] and ENV['PHP_BLACKFIRE'] == "1" +if $specConfiguration['PHP_BLACKFIRE'] and $specConfiguration['PHP_BLACKFIRE'] == "1" $testConfiguration[:phpBlackfire] = true $testConfiguration[:phpXdebug] = false end From ce706b6d925b312a5899ae4c8e92c55101f85e88 Mon Sep 17 00:00:00 2001 From: Markus Blaschke Date: Thu, 9 Feb 2017 21:47:32 +0100 Subject: [PATCH 3/6] WIP --- bin/webdevops/Command.py | 17 +++++---------- .../DockerTestServerspecTaskLoader.py | 6 ++---- conf/console.yml | 1 + tests/serverspec/Rakefile | 21 ++++++++++++------- tests/serverspec/serverspec.sh | 17 +-------------- tests/serverspec/spec/docker/ansible_spec.rb | 3 +-- .../serverspec/spec/docker/apache-dev_spec.rb | 3 +-- tests/serverspec/spec/docker/apache_spec.rb | 3 +-- tests/serverspec/spec/docker/base-app_spec.rb | 3 +-- tests/serverspec/spec/docker/base_spec.rb | 3 +-- .../serverspec/spec/docker/bootstrap_spec.rb | 3 +-- tests/serverspec/spec/docker/certbot_spec.rb | 3 +-- .../spec/docker/hhvm-apache_spec.rb | 3 +-- .../serverspec/spec/docker/hhvm-nginx_spec.rb | 3 +-- tests/serverspec/spec/docker/hhvm_spec.rb | 3 +-- .../serverspec/spec/docker/liquibase_spec.rb | 3 +-- .../spec/docker/mail-sandbox_spec.rb | 5 +---- .../serverspec/spec/docker/nginx-dev_spec.rb | 4 +--- tests/serverspec/spec/docker/nginx_spec.rb | 4 +--- .../spec/docker/php-apache-dev_spec.rb | 3 +-- .../serverspec/spec/docker/php-apache_spec.rb | 4 ++-- tests/serverspec/spec/docker/php-dev_spec.rb | 3 +-- .../spec/docker/php-nginx-dev_spec.rb | 3 +-- .../serverspec/spec/docker/php-nginx_spec.rb | 3 +-- tests/serverspec/spec/docker/php_spec.rb | 3 +-- tests/serverspec/spec/docker/postfix_spec.rb | 3 +-- .../spec/docker/samson-deployment_spec.rb | 3 +-- tests/serverspec/spec/docker/sphinx_spec.rb | 3 +-- tests/serverspec/spec/docker/ssh_spec.rb | 3 +-- tests/serverspec/spec/docker/varnish_spec.rb | 3 +-- tests/serverspec/spec/docker/vsftp_spec.rb | 3 +-- 31 files changed, 50 insertions(+), 95 deletions(-) diff --git a/bin/webdevops/Command.py b/bin/webdevops/Command.py index 1ea923d13..098894638 100644 --- a/bin/webdevops/Command.py +++ b/bin/webdevops/Command.py @@ -36,18 +36,11 @@ def execute(cmd, cwd=False, env=None): if '_' in env: del env['_'] - if not 'PWD' in env: - env['PWD'] = os.environ['PWD'] - if not 'PATH' in env: - env['PATH'] = os.environ['PATH'] - if not 'LC_CTYPE' in env: - env['LC_CTYPE'] = os.environ['LC_CTYPE'] - if not 'SHELL' in env: - env['SHELL'] = os.environ['SHELL'] - if not 'DOCKER_HOST' in env: - env['DOCKER_HOST'] = os.environ['DOCKER_HOST'] - if not 'DOCKER_CERT_PATH' in env: - env['DOCKER_CERT_PATH'] = os.environ['DOCKER_CERT_PATH'] + # add system env vars + system_env_vars = ['PWD', 'PATH', 'LC_CTYPE', 'SHELL', 'DOCKER_HOST', 'DOCKER_CERT_PATH', 'DOCKER_MACHINE_NAME', 'DOCKER_TLS_VERIFY'] + for var_name in system_env_vars: + if not var_name in env and var_name in os.environ: + env[var_name] = os.environ[var_name] # set current working directory path_current = os.getcwd() diff --git a/bin/webdevops/taskloader/DockerTestServerspecTaskLoader.py b/bin/webdevops/taskloader/DockerTestServerspecTaskLoader.py index 3d30a76b2..eacac8c02 100644 --- a/bin/webdevops/taskloader/DockerTestServerspecTaskLoader.py +++ b/bin/webdevops/taskloader/DockerTestServerspecTaskLoader.py @@ -85,7 +85,7 @@ def task_run(dockerfile, configuration, task): # serverspec options serverspec_opts = [] - serverspec_opts.extend([spec_path, base64.b64encode(json.dumps(serverspec_conf))]) + serverspec_opts.extend([spec_path, dockerfile['image']['fullname'], base64.b64encode(json.dumps(serverspec_conf)), os.path.basename(test_dockerfile.name)]) # dockerfile content dockerfile_content = DockerTestServerspecTaskLoader.generate_dockerfile( @@ -110,8 +110,6 @@ def task_run(dockerfile, configuration, task): print 'Dockerfile:' print '-----------' print dockerfile_content - - os.remove(test_dockerfile.name) return True # check if we have any tests @@ -145,7 +143,6 @@ def task_run(dockerfile, configuration, task): else: print ' failed, giving up' - os.remove(test_dockerfile.name) return test_status @staticmethod @@ -187,6 +184,7 @@ def generate_dockerfile(dockerfile, configuration, is_toolimage=False): ret.append('FROM %s' % dockerfile['image']['fullname']) ret.append('COPY conf/ /') + ret.append('RUN echo "%s" > /DOCKER.IMAGENAME' % dockerfile['image']['fullname']) if is_toolimage: ret.append('RUN chmod +x /loop-entrypoint.sh') diff --git a/conf/console.yml b/conf/console.yml index 7c6584a17..216e32e28 100644 --- a/conf/console.yml +++ b/conf/console.yml @@ -7,6 +7,7 @@ imagePath: 'documentation/docs/resources/images/' baselayoutPath: 'baselayout' testinfraPath: 'tests/testinfra' serverspecPath: 'tests/serverspec' +testDockerfilePath: 'tests/dockerfile' blacklistFile: 'BLACKLIST' docker: diff --git a/tests/serverspec/Rakefile b/tests/serverspec/Rakefile index eddf71fc3..092dba151 100644 --- a/tests/serverspec/Rakefile +++ b/tests/serverspec/Rakefile @@ -2,30 +2,37 @@ begin require 'rake' require 'json' require 'base64' + require 'docker' require 'rspec' require 'serverspec' require 'rspec/retry' require 'rspec/core/rake_task' RSpec.configure do |config| + config.fail_fast = 3 # show retry status in spec process config.verbose_retry = true # show exception that triggers a retry if verbose_retry is set to true config.display_try_failure_messages = true end - RSpec::Core::RakeTask.new(:spec, :pattern, :configuration) do |t, task_args| + RSpec::Core::RakeTask.new(:spec, :pattern, :dockerImageName, :configuration) do |t, task_args| t.pattern = task_args[:pattern] t.fail_on_error = true $specConfiguration = JSON.parse(Base64.decode64(task_args[:configuration])) - ENV['DOCKERFILE'] = $specConfiguration['DOCKERFILE'] - ENV['OS_FAMILY'] = $specConfiguration['OS_FAMILY'] - ENV['OS_VERSION'] = $specConfiguration['OS_VERSION'] - ENV['DOCKER_IMAGE'] = $specConfiguration['DOCKER_IMAGE'] - ENV['DOCKER_TAG'] = $specConfiguration['DOCKER_TAG'] - end + $dockerImage = Docker::Image.build_from_dir('.', { 'dockerfile' => $specConfiguration['DOCKERFILE'] }) + $specConfiguration['DOCKERIMAGE_ID'] = $dockerImage.id + + print "Init Rakefile environment:\n" + $specConfiguration.each do |key, value| + print key + ':' + value + "\n" + ENV[key] = value + end + print "\n" + print "\n" + end rescue LoadError # no rspec available diff --git a/tests/serverspec/serverspec.sh b/tests/serverspec/serverspec.sh index 9170b693c..7ca997909 100644 --- a/tests/serverspec/serverspec.sh +++ b/tests/serverspec/serverspec.sh @@ -1,19 +1,4 @@ #!/usr/bin/env bash +exec bundle exec rake spec["$1","$2","$3"] -echo "Starting serverspec" -echo " OS: ${OS_FAMILY} Version ${OS_VERSION}" -echo " Docker image: ${DOCKER_IMAGE}:${DOCKER_TAG}" -echo " Dockerfile: ${DOCKERFILE}" -echo "" - -RAILS_ENV=development bundle exec rake spec["$1","$2"] -ret=$? - -echo "Finished serverspec" -echo " OS: ${OS_FAMILY} Version ${OS_VERSION}" -echo " Docker image: ${DOCKER_IMAGE}:${DOCKER_TAG}" -echo " Dockerfile: ${DOCKERFILE}" -echo "" - -exit $ret diff --git a/tests/serverspec/spec/docker/ansible_spec.rb b/tests/serverspec/spec/docker/ansible_spec.rb index 2ccb2d3a5..fac365f49 100644 --- a/tests/serverspec/spec/docker/ansible_spec.rb +++ b/tests/serverspec/spec/docker/ansible_spec.rb @@ -4,8 +4,7 @@ describe "Dockerfile" do before(:all) do - @image = Docker::Image.build_from_dir('.', { 'dockerfile' => $specConfiguration['DOCKERFILE'] }) - set :docker_image, @image.id + set :docker_image, ENV['DOCKERIMAGE_ID'] end include_examples 'collection::bootstrap' diff --git a/tests/serverspec/spec/docker/apache-dev_spec.rb b/tests/serverspec/spec/docker/apache-dev_spec.rb index aa9014f92..91fe7bbae 100644 --- a/tests/serverspec/spec/docker/apache-dev_spec.rb +++ b/tests/serverspec/spec/docker/apache-dev_spec.rb @@ -4,8 +4,7 @@ describe "Dockerfile" do before(:all) do - @image = Docker::Image.build_from_dir('.', { 'dockerfile' => $specConfiguration['DOCKERFILE'] }) - set :docker_image, @image.id + set :docker_image, ENV['DOCKERIMAGE_ID'] end include_examples 'collection::bootstrap' diff --git a/tests/serverspec/spec/docker/apache_spec.rb b/tests/serverspec/spec/docker/apache_spec.rb index aa9014f92..91fe7bbae 100644 --- a/tests/serverspec/spec/docker/apache_spec.rb +++ b/tests/serverspec/spec/docker/apache_spec.rb @@ -4,8 +4,7 @@ describe "Dockerfile" do before(:all) do - @image = Docker::Image.build_from_dir('.', { 'dockerfile' => $specConfiguration['DOCKERFILE'] }) - set :docker_image, @image.id + set :docker_image, ENV['DOCKERIMAGE_ID'] end include_examples 'collection::bootstrap' diff --git a/tests/serverspec/spec/docker/base-app_spec.rb b/tests/serverspec/spec/docker/base-app_spec.rb index 158fca1d1..670217726 100644 --- a/tests/serverspec/spec/docker/base-app_spec.rb +++ b/tests/serverspec/spec/docker/base-app_spec.rb @@ -4,8 +4,7 @@ describe "Dockerfile" do before(:all) do - @image = Docker::Image.build_from_dir('.', { 'dockerfile' => $specConfiguration['DOCKERFILE'] }) - set :docker_image, @image.id + set :docker_image, ENV['DOCKERIMAGE_ID'] end include_examples 'collection::bootstrap' diff --git a/tests/serverspec/spec/docker/base_spec.rb b/tests/serverspec/spec/docker/base_spec.rb index 459feb042..0be395a05 100644 --- a/tests/serverspec/spec/docker/base_spec.rb +++ b/tests/serverspec/spec/docker/base_spec.rb @@ -4,8 +4,7 @@ describe "Dockerfile" do before(:all) do - @image = Docker::Image.build_from_dir('.', { 'dockerfile' => $specConfiguration['DOCKERFILE'] }) - set :docker_image, @image.id + set :docker_image, ENV['DOCKERIMAGE_ID'] end include_examples 'collection::bootstrap' diff --git a/tests/serverspec/spec/docker/bootstrap_spec.rb b/tests/serverspec/spec/docker/bootstrap_spec.rb index 2ccb2d3a5..fac365f49 100644 --- a/tests/serverspec/spec/docker/bootstrap_spec.rb +++ b/tests/serverspec/spec/docker/bootstrap_spec.rb @@ -4,8 +4,7 @@ describe "Dockerfile" do before(:all) do - @image = Docker::Image.build_from_dir('.', { 'dockerfile' => $specConfiguration['DOCKERFILE'] }) - set :docker_image, @image.id + set :docker_image, ENV['DOCKERIMAGE_ID'] end include_examples 'collection::bootstrap' diff --git a/tests/serverspec/spec/docker/certbot_spec.rb b/tests/serverspec/spec/docker/certbot_spec.rb index b44707804..026cb235f 100644 --- a/tests/serverspec/spec/docker/certbot_spec.rb +++ b/tests/serverspec/spec/docker/certbot_spec.rb @@ -4,8 +4,7 @@ describe "Dockerfile" do before(:all) do - @image = Docker::Image.build_from_dir('.', { 'dockerfile' => $specConfiguration['DOCKERFILE'] }) - set :docker_image, @image.id + set :docker_image, ENV['DOCKERIMAGE_ID'] end include_examples 'collection::bootstrap' diff --git a/tests/serverspec/spec/docker/hhvm-apache_spec.rb b/tests/serverspec/spec/docker/hhvm-apache_spec.rb index b37f3a765..bd649c4f4 100644 --- a/tests/serverspec/spec/docker/hhvm-apache_spec.rb +++ b/tests/serverspec/spec/docker/hhvm-apache_spec.rb @@ -4,8 +4,7 @@ describe "Dockerfile" do before(:all) do - @image = Docker::Image.build_from_dir('.', { 'dockerfile' => $specConfiguration['DOCKERFILE'] }) - set :docker_image, @image.id + set :docker_image, ENV['DOCKERIMAGE_ID'] end include_examples 'collection::bootstrap' diff --git a/tests/serverspec/spec/docker/hhvm-nginx_spec.rb b/tests/serverspec/spec/docker/hhvm-nginx_spec.rb index 955999d29..b01114c34 100644 --- a/tests/serverspec/spec/docker/hhvm-nginx_spec.rb +++ b/tests/serverspec/spec/docker/hhvm-nginx_spec.rb @@ -4,8 +4,7 @@ describe "Dockerfile" do before(:all) do - @image = Docker::Image.build_from_dir('.', { 'dockerfile' => $specConfiguration['DOCKERFILE'] }) - set :docker_image, @image.id + set :docker_image, ENV['DOCKERIMAGE_ID'] end include_examples 'collection::bootstrap' diff --git a/tests/serverspec/spec/docker/hhvm_spec.rb b/tests/serverspec/spec/docker/hhvm_spec.rb index 51fec310a..2fa137682 100644 --- a/tests/serverspec/spec/docker/hhvm_spec.rb +++ b/tests/serverspec/spec/docker/hhvm_spec.rb @@ -4,8 +4,7 @@ describe "Dockerfile" do before(:all) do - @image = Docker::Image.build_from_dir('.', { 'dockerfile' => $specConfiguration['DOCKERFILE'] }) - set :docker_image, @image.id + set :docker_image, ENV['DOCKERIMAGE_ID'] end include_examples 'collection::bootstrap' diff --git a/tests/serverspec/spec/docker/liquibase_spec.rb b/tests/serverspec/spec/docker/liquibase_spec.rb index 64a09410f..e17540e0c 100644 --- a/tests/serverspec/spec/docker/liquibase_spec.rb +++ b/tests/serverspec/spec/docker/liquibase_spec.rb @@ -4,8 +4,7 @@ describe "Dockerfile" do before(:all) do - @image = Docker::Image.build_from_dir('.', { 'dockerfile' => $specConfiguration['DOCKERFILE'] }) - set :docker_image, @image.id + set :docker_image, ENV['DOCKERIMAGE_ID'] end include_examples 'collection::liquibase' diff --git a/tests/serverspec/spec/docker/mail-sandbox_spec.rb b/tests/serverspec/spec/docker/mail-sandbox_spec.rb index fb9461bb1..bb1e08489 100644 --- a/tests/serverspec/spec/docker/mail-sandbox_spec.rb +++ b/tests/serverspec/spec/docker/mail-sandbox_spec.rb @@ -4,8 +4,7 @@ describe "Dockerfile" do before(:all) do - @image = Docker::Image.build_from_dir('.', { 'dockerfile' => $specConfiguration['DOCKERFILE'] }) - set :docker_image, @image.id + set :docker_image, ENV['DOCKERIMAGE_ID'] end include_examples 'collection::bootstrap' @@ -13,6 +12,4 @@ include_examples 'collection::postfix' include_examples 'collection::dovecot' - - end diff --git a/tests/serverspec/spec/docker/nginx-dev_spec.rb b/tests/serverspec/spec/docker/nginx-dev_spec.rb index 6d7869538..bdb1985b8 100644 --- a/tests/serverspec/spec/docker/nginx-dev_spec.rb +++ b/tests/serverspec/spec/docker/nginx-dev_spec.rb @@ -4,13 +4,11 @@ describe "Dockerfile" do before(:all) do - @image = Docker::Image.build_from_dir('.', { 'dockerfile' => $specConfiguration['DOCKERFILE'] }) - set :docker_image, @image.id + set :docker_image, ENV['DOCKERIMAGE_ID'] end include_examples 'collection::bootstrap' include_examples 'collection::base' include_examples 'collection::nginx' - end diff --git a/tests/serverspec/spec/docker/nginx_spec.rb b/tests/serverspec/spec/docker/nginx_spec.rb index 6d7869538..bdb1985b8 100644 --- a/tests/serverspec/spec/docker/nginx_spec.rb +++ b/tests/serverspec/spec/docker/nginx_spec.rb @@ -4,13 +4,11 @@ describe "Dockerfile" do before(:all) do - @image = Docker::Image.build_from_dir('.', { 'dockerfile' => $specConfiguration['DOCKERFILE'] }) - set :docker_image, @image.id + set :docker_image, ENV['DOCKERIMAGE_ID'] end include_examples 'collection::bootstrap' include_examples 'collection::base' include_examples 'collection::nginx' - end diff --git a/tests/serverspec/spec/docker/php-apache-dev_spec.rb b/tests/serverspec/spec/docker/php-apache-dev_spec.rb index c47d7e357..b18ac1ef0 100644 --- a/tests/serverspec/spec/docker/php-apache-dev_spec.rb +++ b/tests/serverspec/spec/docker/php-apache-dev_spec.rb @@ -4,8 +4,7 @@ describe "Dockerfile" do before(:all) do - @image = Docker::Image.build_from_dir('.', { 'dockerfile' => $specConfiguration['DOCKERFILE'] }) - set :docker_image, @image.id + set :docker_image, ENV['DOCKERIMAGE_ID'] end include_examples 'collection::bootstrap' diff --git a/tests/serverspec/spec/docker/php-apache_spec.rb b/tests/serverspec/spec/docker/php-apache_spec.rb index 6099cb931..da40e6085 100644 --- a/tests/serverspec/spec/docker/php-apache_spec.rb +++ b/tests/serverspec/spec/docker/php-apache_spec.rb @@ -4,8 +4,7 @@ describe "Dockerfile" do before(:all) do - @image = Docker::Image.build_from_dir('.', { 'dockerfile' => $specConfiguration['DOCKERFILE'] }) - set :docker_image, @image.id + set :docker_image, ENV['DOCKERIMAGE_ID'] end include_examples 'collection::bootstrap' @@ -29,4 +28,5 @@ else include_examples 'collection::php-fpm7::webserver-test::production' end + end diff --git a/tests/serverspec/spec/docker/php-dev_spec.rb b/tests/serverspec/spec/docker/php-dev_spec.rb index 2fda07037..0a44f1347 100644 --- a/tests/serverspec/spec/docker/php-dev_spec.rb +++ b/tests/serverspec/spec/docker/php-dev_spec.rb @@ -4,8 +4,7 @@ describe "Dockerfile" do before(:all) do - @image = Docker::Image.build_from_dir('.', { 'dockerfile' => $specConfiguration['DOCKERFILE'] }) - set :docker_image, @image.id + set :docker_image, ENV['DOCKERIMAGE_ID'] end include_examples 'collection::bootstrap' diff --git a/tests/serverspec/spec/docker/php-nginx-dev_spec.rb b/tests/serverspec/spec/docker/php-nginx-dev_spec.rb index 458785fc8..7af978067 100644 --- a/tests/serverspec/spec/docker/php-nginx-dev_spec.rb +++ b/tests/serverspec/spec/docker/php-nginx-dev_spec.rb @@ -4,8 +4,7 @@ describe "Dockerfile" do before(:all) do - @image = Docker::Image.build_from_dir('.', { 'dockerfile' => $specConfiguration['DOCKERFILE'] }) - set :docker_image, @image.id + set :docker_image, ENV['DOCKERIMAGE_ID'] end include_examples 'collection::bootstrap' diff --git a/tests/serverspec/spec/docker/php-nginx_spec.rb b/tests/serverspec/spec/docker/php-nginx_spec.rb index 4a184519c..c1ba611cc 100644 --- a/tests/serverspec/spec/docker/php-nginx_spec.rb +++ b/tests/serverspec/spec/docker/php-nginx_spec.rb @@ -4,8 +4,7 @@ describe "Dockerfile" do before(:all) do - @image = Docker::Image.build_from_dir('.', { 'dockerfile' => $specConfiguration['DOCKERFILE'] }) - set :docker_image, @image.id + set :docker_image, ENV['DOCKERIMAGE_ID'] end include_examples 'collection::bootstrap' diff --git a/tests/serverspec/spec/docker/php_spec.rb b/tests/serverspec/spec/docker/php_spec.rb index 6fc266189..05d4a520f 100644 --- a/tests/serverspec/spec/docker/php_spec.rb +++ b/tests/serverspec/spec/docker/php_spec.rb @@ -4,8 +4,7 @@ describe "Dockerfile" do before(:all) do - @image = Docker::Image.build_from_dir('.', { 'dockerfile' => $specConfiguration['DOCKERFILE'] }) - set :docker_image, @image.id + set :docker_image, ENV['DOCKERIMAGE_ID'] end include_examples 'collection::bootstrap' diff --git a/tests/serverspec/spec/docker/postfix_spec.rb b/tests/serverspec/spec/docker/postfix_spec.rb index 448e6c453..6c887e82a 100644 --- a/tests/serverspec/spec/docker/postfix_spec.rb +++ b/tests/serverspec/spec/docker/postfix_spec.rb @@ -4,8 +4,7 @@ describe "Dockerfile" do before(:all) do - @image = Docker::Image.build_from_dir('.', { 'dockerfile' => $specConfiguration['DOCKERFILE'] }) - set :docker_image, @image.id + set :docker_image, ENV['DOCKERIMAGE_ID'] end include_examples 'collection::bootstrap' diff --git a/tests/serverspec/spec/docker/samson-deployment_spec.rb b/tests/serverspec/spec/docker/samson-deployment_spec.rb index 834df23e8..0762252d5 100644 --- a/tests/serverspec/spec/docker/samson-deployment_spec.rb +++ b/tests/serverspec/spec/docker/samson-deployment_spec.rb @@ -4,8 +4,7 @@ describe "Dockerfile" do before(:all) do - @image = Docker::Image.build_from_dir('.', { 'dockerfile' => $specConfiguration['DOCKERFILE'] }) - set :docker_image, @image.id + set :docker_image, ENV['DOCKERIMAGE_ID'] end include_examples 'bootstrap::layout' diff --git a/tests/serverspec/spec/docker/sphinx_spec.rb b/tests/serverspec/spec/docker/sphinx_spec.rb index e440a3428..2bae8bdce 100644 --- a/tests/serverspec/spec/docker/sphinx_spec.rb +++ b/tests/serverspec/spec/docker/sphinx_spec.rb @@ -4,8 +4,7 @@ describe "Dockerfile" do before(:all) do - @image = Docker::Image.build_from_dir('.', { 'dockerfile' => $specConfiguration['DOCKERFILE'] }) - set :docker_image, @image.id + set :docker_image, ENV['DOCKERIMAGE_ID'] end include_examples 'collection::bootstrap' diff --git a/tests/serverspec/spec/docker/ssh_spec.rb b/tests/serverspec/spec/docker/ssh_spec.rb index 357559c2f..4873f5b2d 100644 --- a/tests/serverspec/spec/docker/ssh_spec.rb +++ b/tests/serverspec/spec/docker/ssh_spec.rb @@ -4,8 +4,7 @@ describe "Dockerfile" do before(:all) do - @image = Docker::Image.build_from_dir('.', { 'dockerfile' => $specConfiguration['DOCKERFILE'] }) - set :docker_image, @image.id + set :docker_image, ENV['DOCKERIMAGE_ID'] end include_examples 'collection::bootstrap' diff --git a/tests/serverspec/spec/docker/varnish_spec.rb b/tests/serverspec/spec/docker/varnish_spec.rb index 81219fe8c..e061d5c7b 100644 --- a/tests/serverspec/spec/docker/varnish_spec.rb +++ b/tests/serverspec/spec/docker/varnish_spec.rb @@ -4,8 +4,7 @@ describe "Dockerfile" do before(:all) do - @image = Docker::Image.build_from_dir('.', { 'dockerfile' => $specConfiguration['DOCKERFILE'] }) - set :docker_image, @image.id + set :docker_image, ENV['DOCKERIMAGE_ID'] end include_examples 'collection::bootstrap' diff --git a/tests/serverspec/spec/docker/vsftp_spec.rb b/tests/serverspec/spec/docker/vsftp_spec.rb index d4ac72c9d..c1bc069a2 100644 --- a/tests/serverspec/spec/docker/vsftp_spec.rb +++ b/tests/serverspec/spec/docker/vsftp_spec.rb @@ -4,8 +4,7 @@ describe "Dockerfile" do before(:all) do - @image = Docker::Image.build_from_dir('.', { 'dockerfile' => $specConfiguration['DOCKERFILE'] }) - set :docker_image, @image.id + set :docker_image, ENV['DOCKERIMAGE_ID'] end #include_examples 'collection::bootstrap' From ce5016eb55df0e37f20b3d832000521cb9fab1b3 Mon Sep 17 00:00:00 2001 From: Markus Blaschke Date: Sat, 11 Feb 2017 22:30:35 +0100 Subject: [PATCH 4/6] Add more verbose messages for spec init/run --- tests/serverspec/Rakefile | 17 ++-- tests/serverspec/serverspec.sh | 17 +++- tests/serverspec/spec/docker/ansible_spec.rb | 2 +- .../serverspec/spec/docker/apache-dev_spec.rb | 2 +- tests/serverspec/spec/docker/apache_spec.rb | 2 +- tests/serverspec/spec/docker/base-app_spec.rb | 2 +- tests/serverspec/spec/docker/base_spec.rb | 2 +- .../serverspec/spec/docker/bootstrap_spec.rb | 2 +- tests/serverspec/spec/docker/certbot_spec.rb | 2 +- .../spec/docker/hhvm-apache_spec.rb | 2 +- .../serverspec/spec/docker/hhvm-nginx_spec.rb | 2 +- tests/serverspec/spec/docker/hhvm_spec.rb | 2 +- .../serverspec/spec/docker/liquibase_spec.rb | 2 +- .../spec/docker/mail-sandbox_spec.rb | 2 +- .../serverspec/spec/docker/nginx-dev_spec.rb | 2 +- tests/serverspec/spec/docker/nginx_spec.rb | 2 +- .../spec/docker/php-apache-dev_spec.rb | 2 +- .../serverspec/spec/docker/php-apache_spec.rb | 2 +- tests/serverspec/spec/docker/php-dev_spec.rb | 2 +- .../spec/docker/php-nginx-dev_spec.rb | 2 +- .../serverspec/spec/docker/php-nginx_spec.rb | 2 +- tests/serverspec/spec/docker/php_spec.rb | 2 +- tests/serverspec/spec/docker/postfix_spec.rb | 2 +- .../spec/docker/samson-deployment_spec.rb | 2 +- tests/serverspec/spec/docker/sphinx_spec.rb | 2 +- tests/serverspec/spec/docker/ssh_spec.rb | 2 +- tests/serverspec/spec/docker/varnish_spec.rb | 2 +- tests/serverspec/spec/docker/vsftp_spec.rb | 2 +- tests/serverspec/spec/image.rb | 10 --- tests/serverspec/spec/spec_autoload.rb | 4 + tests/serverspec/spec/spec_config.rb | 81 +++++++++++++++++++ tests/serverspec/spec/spec_helper.rb | 78 +----------------- tests/serverspec/spec/spec_init.rb | 14 ++++ 33 files changed, 151 insertions(+), 122 deletions(-) delete mode 100644 tests/serverspec/spec/image.rb create mode 100644 tests/serverspec/spec/spec_autoload.rb create mode 100644 tests/serverspec/spec/spec_config.rb create mode 100644 tests/serverspec/spec/spec_init.rb diff --git a/tests/serverspec/Rakefile b/tests/serverspec/Rakefile index 092dba151..019d4253e 100644 --- a/tests/serverspec/Rakefile +++ b/tests/serverspec/Rakefile @@ -8,26 +8,23 @@ begin require 'rspec/retry' require 'rspec/core/rake_task' - RSpec.configure do |config| - config.fail_fast = 3 - # show retry status in spec process - config.verbose_retry = true - # show exception that triggers a retry if verbose_retry is set to true - config.display_try_failure_messages = true - end - RSpec::Core::RakeTask.new(:spec, :pattern, :dockerImageName, :configuration) do |t, task_args| t.pattern = task_args[:pattern] t.fail_on_error = true + # hide command + t.verbose = false + $specConfiguration = JSON.parse(Base64.decode64(task_args[:configuration])) $dockerImage = Docker::Image.build_from_dir('.', { 'dockerfile' => $specConfiguration['DOCKERFILE'] }) $specConfiguration['DOCKERIMAGE_ID'] = $dockerImage.id - print "Init Rakefile environment:\n" + print "\n" + print "Environment configuration\n" + print "-------------------------\n" $specConfiguration.each do |key, value| - print key + ':' + value + "\n" + print " " + key + ':' + value + "\n" ENV[key] = value end print "\n" diff --git a/tests/serverspec/serverspec.sh b/tests/serverspec/serverspec.sh index 7ca997909..9a6cd6518 100644 --- a/tests/serverspec/serverspec.sh +++ b/tests/serverspec/serverspec.sh @@ -1,4 +1,19 @@ #!/usr/bin/env bash -exec bundle exec rake spec["$1","$2","$3"] +set -o pipefail ## trace ERR through pipes +set -o errtrace ## trace ERR through 'time command' and other functions +set -o nounset ## set -u : exit the script if you try to use an uninitialised variable +set -o errexit ## set -e : exit the script if any statement returns a non-true return value + +SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" + +PARAM_SPEC_FILE="$1" +PARAM_DOCKER_IMAGE="$2" +PARAM_SPEC_CONF="$3" + +# LOGFILE="${PARAM_DOCKER_IMAGE//:/_}" +# LOGFILE="${PARAM_DOCKER_IMAGE//\//_}" +# LOGFILE="${SCRIPT_DIR}/logs/${LOGFILE}.log" + +exec bundle exec rake spec["$PARAM_SPEC_FILE","$PARAM_DOCKER_IMAGE","$PARAM_SPEC_CONF"] diff --git a/tests/serverspec/spec/docker/ansible_spec.rb b/tests/serverspec/spec/docker/ansible_spec.rb index fac365f49..fcf450086 100644 --- a/tests/serverspec/spec/docker/ansible_spec.rb +++ b/tests/serverspec/spec/docker/ansible_spec.rb @@ -1,6 +1,6 @@ require 'serverspec' require 'docker' -require 'spec_helper' +require 'spec_init' describe "Dockerfile" do before(:all) do diff --git a/tests/serverspec/spec/docker/apache-dev_spec.rb b/tests/serverspec/spec/docker/apache-dev_spec.rb index 91fe7bbae..4d839f035 100644 --- a/tests/serverspec/spec/docker/apache-dev_spec.rb +++ b/tests/serverspec/spec/docker/apache-dev_spec.rb @@ -1,6 +1,6 @@ require 'serverspec' require 'docker' -require 'spec_helper' +require 'spec_init' describe "Dockerfile" do before(:all) do diff --git a/tests/serverspec/spec/docker/apache_spec.rb b/tests/serverspec/spec/docker/apache_spec.rb index 91fe7bbae..4d839f035 100644 --- a/tests/serverspec/spec/docker/apache_spec.rb +++ b/tests/serverspec/spec/docker/apache_spec.rb @@ -1,6 +1,6 @@ require 'serverspec' require 'docker' -require 'spec_helper' +require 'spec_init' describe "Dockerfile" do before(:all) do diff --git a/tests/serverspec/spec/docker/base-app_spec.rb b/tests/serverspec/spec/docker/base-app_spec.rb index 670217726..9871aa576 100644 --- a/tests/serverspec/spec/docker/base-app_spec.rb +++ b/tests/serverspec/spec/docker/base-app_spec.rb @@ -1,6 +1,6 @@ require 'serverspec' require 'docker' -require 'spec_helper' +require 'spec_init' describe "Dockerfile" do before(:all) do diff --git a/tests/serverspec/spec/docker/base_spec.rb b/tests/serverspec/spec/docker/base_spec.rb index 0be395a05..43f41f759 100644 --- a/tests/serverspec/spec/docker/base_spec.rb +++ b/tests/serverspec/spec/docker/base_spec.rb @@ -1,6 +1,6 @@ require 'serverspec' require 'docker' -require 'spec_helper' +require 'spec_init' describe "Dockerfile" do before(:all) do diff --git a/tests/serverspec/spec/docker/bootstrap_spec.rb b/tests/serverspec/spec/docker/bootstrap_spec.rb index fac365f49..fcf450086 100644 --- a/tests/serverspec/spec/docker/bootstrap_spec.rb +++ b/tests/serverspec/spec/docker/bootstrap_spec.rb @@ -1,6 +1,6 @@ require 'serverspec' require 'docker' -require 'spec_helper' +require 'spec_init' describe "Dockerfile" do before(:all) do diff --git a/tests/serverspec/spec/docker/certbot_spec.rb b/tests/serverspec/spec/docker/certbot_spec.rb index 026cb235f..e4c5b0180 100644 --- a/tests/serverspec/spec/docker/certbot_spec.rb +++ b/tests/serverspec/spec/docker/certbot_spec.rb @@ -1,6 +1,6 @@ require 'serverspec' require 'docker' -require 'spec_helper' +require 'spec_init' describe "Dockerfile" do before(:all) do diff --git a/tests/serverspec/spec/docker/hhvm-apache_spec.rb b/tests/serverspec/spec/docker/hhvm-apache_spec.rb index bd649c4f4..1a817e502 100644 --- a/tests/serverspec/spec/docker/hhvm-apache_spec.rb +++ b/tests/serverspec/spec/docker/hhvm-apache_spec.rb @@ -1,6 +1,6 @@ require 'serverspec' require 'docker' -require 'spec_helper' +require 'spec_init' describe "Dockerfile" do before(:all) do diff --git a/tests/serverspec/spec/docker/hhvm-nginx_spec.rb b/tests/serverspec/spec/docker/hhvm-nginx_spec.rb index b01114c34..3d270c747 100644 --- a/tests/serverspec/spec/docker/hhvm-nginx_spec.rb +++ b/tests/serverspec/spec/docker/hhvm-nginx_spec.rb @@ -1,6 +1,6 @@ require 'serverspec' require 'docker' -require 'spec_helper' +require 'spec_init' describe "Dockerfile" do before(:all) do diff --git a/tests/serverspec/spec/docker/hhvm_spec.rb b/tests/serverspec/spec/docker/hhvm_spec.rb index 2fa137682..32b586f20 100644 --- a/tests/serverspec/spec/docker/hhvm_spec.rb +++ b/tests/serverspec/spec/docker/hhvm_spec.rb @@ -1,6 +1,6 @@ require 'serverspec' require 'docker' -require 'spec_helper' +require 'spec_init' describe "Dockerfile" do before(:all) do diff --git a/tests/serverspec/spec/docker/liquibase_spec.rb b/tests/serverspec/spec/docker/liquibase_spec.rb index e17540e0c..ff3605893 100644 --- a/tests/serverspec/spec/docker/liquibase_spec.rb +++ b/tests/serverspec/spec/docker/liquibase_spec.rb @@ -1,6 +1,6 @@ require 'serverspec' require 'docker' -require 'spec_helper' +require 'spec_init' describe "Dockerfile" do before(:all) do diff --git a/tests/serverspec/spec/docker/mail-sandbox_spec.rb b/tests/serverspec/spec/docker/mail-sandbox_spec.rb index bb1e08489..a6371519c 100644 --- a/tests/serverspec/spec/docker/mail-sandbox_spec.rb +++ b/tests/serverspec/spec/docker/mail-sandbox_spec.rb @@ -1,6 +1,6 @@ require 'serverspec' require 'docker' -require 'spec_helper' +require 'spec_init' describe "Dockerfile" do before(:all) do diff --git a/tests/serverspec/spec/docker/nginx-dev_spec.rb b/tests/serverspec/spec/docker/nginx-dev_spec.rb index bdb1985b8..e9ed14206 100644 --- a/tests/serverspec/spec/docker/nginx-dev_spec.rb +++ b/tests/serverspec/spec/docker/nginx-dev_spec.rb @@ -1,6 +1,6 @@ require 'serverspec' require 'docker' -require 'spec_helper' +require 'spec_init' describe "Dockerfile" do before(:all) do diff --git a/tests/serverspec/spec/docker/nginx_spec.rb b/tests/serverspec/spec/docker/nginx_spec.rb index bdb1985b8..e9ed14206 100644 --- a/tests/serverspec/spec/docker/nginx_spec.rb +++ b/tests/serverspec/spec/docker/nginx_spec.rb @@ -1,6 +1,6 @@ require 'serverspec' require 'docker' -require 'spec_helper' +require 'spec_init' describe "Dockerfile" do before(:all) do diff --git a/tests/serverspec/spec/docker/php-apache-dev_spec.rb b/tests/serverspec/spec/docker/php-apache-dev_spec.rb index b18ac1ef0..c0e363246 100644 --- a/tests/serverspec/spec/docker/php-apache-dev_spec.rb +++ b/tests/serverspec/spec/docker/php-apache-dev_spec.rb @@ -1,6 +1,6 @@ require 'serverspec' require 'docker' -require 'spec_helper' +require 'spec_init' describe "Dockerfile" do before(:all) do diff --git a/tests/serverspec/spec/docker/php-apache_spec.rb b/tests/serverspec/spec/docker/php-apache_spec.rb index da40e6085..246a1deec 100644 --- a/tests/serverspec/spec/docker/php-apache_spec.rb +++ b/tests/serverspec/spec/docker/php-apache_spec.rb @@ -1,6 +1,6 @@ require 'serverspec' require 'docker' -require 'spec_helper' +require 'spec_init' describe "Dockerfile" do before(:all) do diff --git a/tests/serverspec/spec/docker/php-dev_spec.rb b/tests/serverspec/spec/docker/php-dev_spec.rb index 0a44f1347..70cd1111e 100644 --- a/tests/serverspec/spec/docker/php-dev_spec.rb +++ b/tests/serverspec/spec/docker/php-dev_spec.rb @@ -1,6 +1,6 @@ require 'serverspec' require 'docker' -require 'spec_helper' +require 'spec_init' describe "Dockerfile" do before(:all) do diff --git a/tests/serverspec/spec/docker/php-nginx-dev_spec.rb b/tests/serverspec/spec/docker/php-nginx-dev_spec.rb index 7af978067..22eca235e 100644 --- a/tests/serverspec/spec/docker/php-nginx-dev_spec.rb +++ b/tests/serverspec/spec/docker/php-nginx-dev_spec.rb @@ -1,6 +1,6 @@ require 'serverspec' require 'docker' -require 'spec_helper' +require 'spec_init' describe "Dockerfile" do before(:all) do diff --git a/tests/serverspec/spec/docker/php-nginx_spec.rb b/tests/serverspec/spec/docker/php-nginx_spec.rb index c1ba611cc..0e90ebd7c 100644 --- a/tests/serverspec/spec/docker/php-nginx_spec.rb +++ b/tests/serverspec/spec/docker/php-nginx_spec.rb @@ -1,6 +1,6 @@ require 'serverspec' require 'docker' -require 'spec_helper' +require 'spec_init' describe "Dockerfile" do before(:all) do diff --git a/tests/serverspec/spec/docker/php_spec.rb b/tests/serverspec/spec/docker/php_spec.rb index 05d4a520f..1cf32ab50 100644 --- a/tests/serverspec/spec/docker/php_spec.rb +++ b/tests/serverspec/spec/docker/php_spec.rb @@ -1,6 +1,6 @@ require 'serverspec' require 'docker' -require 'spec_helper' +require 'spec_init' describe "Dockerfile" do before(:all) do diff --git a/tests/serverspec/spec/docker/postfix_spec.rb b/tests/serverspec/spec/docker/postfix_spec.rb index 6c887e82a..e2cdfd21b 100644 --- a/tests/serverspec/spec/docker/postfix_spec.rb +++ b/tests/serverspec/spec/docker/postfix_spec.rb @@ -1,6 +1,6 @@ require 'serverspec' require 'docker' -require 'spec_helper' +require 'spec_init' describe "Dockerfile" do before(:all) do diff --git a/tests/serverspec/spec/docker/samson-deployment_spec.rb b/tests/serverspec/spec/docker/samson-deployment_spec.rb index 0762252d5..943ece68d 100644 --- a/tests/serverspec/spec/docker/samson-deployment_spec.rb +++ b/tests/serverspec/spec/docker/samson-deployment_spec.rb @@ -1,6 +1,6 @@ require 'serverspec' require 'docker' -require 'spec_helper' +require 'spec_init' describe "Dockerfile" do before(:all) do diff --git a/tests/serverspec/spec/docker/sphinx_spec.rb b/tests/serverspec/spec/docker/sphinx_spec.rb index 2bae8bdce..175762f02 100644 --- a/tests/serverspec/spec/docker/sphinx_spec.rb +++ b/tests/serverspec/spec/docker/sphinx_spec.rb @@ -1,6 +1,6 @@ require 'serverspec' require 'docker' -require 'spec_helper' +require 'spec_init' describe "Dockerfile" do before(:all) do diff --git a/tests/serverspec/spec/docker/ssh_spec.rb b/tests/serverspec/spec/docker/ssh_spec.rb index 4873f5b2d..aa8277d81 100644 --- a/tests/serverspec/spec/docker/ssh_spec.rb +++ b/tests/serverspec/spec/docker/ssh_spec.rb @@ -1,6 +1,6 @@ require 'serverspec' require 'docker' -require 'spec_helper' +require 'spec_init' describe "Dockerfile" do before(:all) do diff --git a/tests/serverspec/spec/docker/varnish_spec.rb b/tests/serverspec/spec/docker/varnish_spec.rb index e061d5c7b..a502b279b 100644 --- a/tests/serverspec/spec/docker/varnish_spec.rb +++ b/tests/serverspec/spec/docker/varnish_spec.rb @@ -1,6 +1,6 @@ require 'serverspec' require 'docker' -require 'spec_helper' +require 'spec_init' describe "Dockerfile" do before(:all) do diff --git a/tests/serverspec/spec/docker/vsftp_spec.rb b/tests/serverspec/spec/docker/vsftp_spec.rb index c1bc069a2..b874d69ef 100644 --- a/tests/serverspec/spec/docker/vsftp_spec.rb +++ b/tests/serverspec/spec/docker/vsftp_spec.rb @@ -1,6 +1,6 @@ require 'serverspec' require 'docker' -require 'spec_helper' +require 'spec_init' describe "Dockerfile" do before(:all) do diff --git a/tests/serverspec/spec/image.rb b/tests/serverspec/spec/image.rb deleted file mode 100644 index 6c4280252..000000000 --- a/tests/serverspec/spec/image.rb +++ /dev/null @@ -1,10 +0,0 @@ -require 'serverspec' -require 'docker' - -set :backend, :exec -set :docker_container, $specConfiguration['DOCKER_IMAGE'] - -describe docker_image($specConfiguration['DOCKER_IMAGE']) do - its(:inspection) { should_not include 'Architecture' => 'i386' } - its(:inspection) { should include 'Architecture' => 'amd64' } -end diff --git a/tests/serverspec/spec/spec_autoload.rb b/tests/serverspec/spec/spec_autoload.rb new file mode 100644 index 000000000..5f74823bf --- /dev/null +++ b/tests/serverspec/spec/spec_autoload.rb @@ -0,0 +1,4 @@ +base_spec_dir = Pathname.new(File.join(File.dirname(__FILE__))) + +Dir[base_spec_dir.join('shared/**/*.rb')].sort.each{ |f| require f } +Dir[base_spec_dir.join('collection/**.rb')].sort.each{ |f| require f } diff --git a/tests/serverspec/spec/spec_config.rb b/tests/serverspec/spec/spec_config.rb new file mode 100644 index 000000000..fbeec5655 --- /dev/null +++ b/tests/serverspec/spec/spec_config.rb @@ -0,0 +1,81 @@ +# ----------------------------------------------- +# RSpec/Serverspec configuration +# ----------------------------------------------- + +RSpec.configure do |config| + config.fail_fast = 3 + + # show retry status in spec process + config.verbose_retry = true + + # show exception that triggers a retry if verbose_retry is set to true + config.display_try_failure_messages = true +end + +set :backend, :docker +set :docker_container, ENV['DOCKER_IMAGE'] +set :os, :family => ENV['OS_FAMILY'], :version => ENV['OS_VERSION'], :arch => 'x86_64' + +Excon.defaults[:write_timeout] = 1000 +Excon.defaults[:read_timeout] = 1000 + +# ----------------------------------------------- +# General spec configuration +# ----------------------------------------------- + +$packageVersions = {} +$packageVersions[:ansible] = %r!ansible 2.([0-9]\.?)+! +$packageVersions[:ansiblePlaybook] = %r!ansible-playbook 2.([0-9]\.?)+! + +$testConfiguration = {} + +if ['redhat', 'alpine'].include?(os[:family]) + $testConfiguration[:ansiblePath] = "/usr/bin" +else + $testConfiguration[:ansiblePath] = "/usr/local/bin" +end + +$testConfiguration[:php] = 7 +$testConfiguration[:phpXdebug] = true +$testConfiguration[:phpApcu] = true +$testConfiguration[:phpRedis] = true +$testConfiguration[:phpMhash] = true +$testConfiguration[:phpBlackfire] = false + +if ((os[:family] == 'ubuntu' and os[:version] == '12.04') or + (os[:family] == 'ubuntu' and os[:version] == '14.04') or + (os[:family] == 'ubuntu' and os[:version] == '15.04') or + (os[:family] == 'ubuntu' and os[:version] == '15.10') or + (os[:family] == 'redhat' and os[:version] == '7') or + (os[:family] == 'debian' and os[:version] == '7') or + (os[:family] == 'debian' and os[:version] == '8') or + (os[:family] == 'alpine' and os[:version] == '3') or + (ENV['DOCKER_TAG'].match('php5'))) + $testConfiguration[:php] = 5 +end + +if (ENV['DOCKER_TAG'].match('php7')) + $testConfiguration[:php] = 7 +end + + +if ENV['PHP_XDEBUG'] and ENV['PHP_XDEBUG'] == "0" + $testConfiguration[:phpXdebug] = false +end + +if ENV['PHP_APCU'] and ENV['PHP_APCU'] == "0" + $testConfiguration[:phpApcu] = false +end + +if ENV['PHP_REDIS'] and ENV['PHP_REDIS'] == "0" + $testConfiguration[:phpRedis] = false +end + +if ENV['PHP_MHASH'] and ENV['PHP_MHASH'] == "0" + $testConfiguration[:phpMhash] = false +end + +if ENV['PHP_BLACKFIRE'] and ENV['PHP_BLACKFIRE'] == "1" + $testConfiguration[:phpBlackfire] = true + $testConfiguration[:phpXdebug] = false +end diff --git a/tests/serverspec/spec/spec_helper.rb b/tests/serverspec/spec/spec_helper.rb index f231a48e7..3f6b091d0 100644 --- a/tests/serverspec/spec/spec_helper.rb +++ b/tests/serverspec/spec/spec_helper.rb @@ -1,75 +1,3 @@ -require 'serverspec' -require 'rspec/retry' -require 'json' -require 'base64' - -base_spec_dir = Pathname.new(File.join(File.dirname(__FILE__))) - -Dir[base_spec_dir.join('shared/**/*.rb')].sort.each{ |f| require f } -Dir[base_spec_dir.join('collection/**.rb')].sort.each{ |f| require f } - -$specConfiguration = ENV - -set :backend, :docker -set :docker_container, $specConfiguration['DOCKER_IMAGE'] -set :os, :family => $specConfiguration['OS_FAMILY'], :version => $specConfiguration['OS_VERSION'], :arch => 'x86_64' - -Excon.defaults[:write_timeout] = 1000 -Excon.defaults[:read_timeout] = 1000 - -$packageVersions = {} -$packageVersions[:ansible] = %r!ansible 2.([0-9]\.?)+! -$packageVersions[:ansiblePlaybook] = %r!ansible-playbook 2.([0-9]\.?)+! - -$testConfiguration = {} - -if ['redhat', 'alpine'].include?(os[:family]) - $testConfiguration[:ansiblePath] = "/usr/bin" -else - $testConfiguration[:ansiblePath] = "/usr/local/bin" -end - -$testConfiguration[:php] = 7 -$testConfiguration[:phpXdebug] = true -$testConfiguration[:phpApcu] = true -$testConfiguration[:phpRedis] = true -$testConfiguration[:phpMhash] = true -$testConfiguration[:phpBlackfire] = false - -if ((os[:family] == 'ubuntu' and os[:version] == '12.04') or - (os[:family] == 'ubuntu' and os[:version] == '14.04') or - (os[:family] == 'ubuntu' and os[:version] == '15.04') or - (os[:family] == 'ubuntu' and os[:version] == '15.10') or - (os[:family] == 'redhat' and os[:version] == '7') or - (os[:family] == 'debian' and os[:version] == '7') or - (os[:family] == 'debian' and os[:version] == '8') or - (os[:family] == 'alpine' and os[:version] == '3') or - ($specConfiguration['DOCKER_TAG'].match('php5'))) - $testConfiguration[:php] = 5 -end - -if ($specConfiguration['DOCKER_TAG'].match('php7')) - $testConfiguration[:php] = 7 -end - - -if $specConfiguration['PHP_XDEBUG'] and $specConfiguration['PHP_XDEBUG'] == "0" - $testConfiguration[:phpXdebug] = false -end - -if $specConfiguration['PHP_APCU'] and $specConfiguration['PHP_APCU'] == "0" - $testConfiguration[:phpApcu] = false -end - -if $specConfiguration['PHP_REDIS'] and $specConfiguration['PHP_REDIS'] == "0" - $testConfiguration[:phpRedis] = false -end - -if $specConfiguration['PHP_MHASH'] and $specConfiguration['PHP_MHASH'] == "0" - $testConfiguration[:phpMhash] = false -end - -if $specConfiguration['PHP_BLACKFIRE'] and $specConfiguration['PHP_BLACKFIRE'] == "1" - $testConfiguration[:phpBlackfire] = true - $testConfiguration[:phpXdebug] = false -end +# +# placeholder for methods and stuff +# diff --git a/tests/serverspec/spec/spec_init.rb b/tests/serverspec/spec/spec_init.rb new file mode 100644 index 000000000..d890915f2 --- /dev/null +++ b/tests/serverspec/spec/spec_init.rb @@ -0,0 +1,14 @@ +require 'serverspec' +require 'rspec/retry' +require 'spec_config' +require 'spec_autoload' +require 'spec_helper' + +print "Serverspec configuration\n" +print "------------------------\n" +print " DOCKERIMAGE_ID: " + ENV['DOCKERIMAGE_ID'] + "\n" +print " DOCKER_IMAGE: " + ENV['DOCKER_IMAGE'] + "\n" +print " OS_FAMILY: " + ENV['OS_FAMILY'] + "\n" +print " OS_VERSION: " + ENV['OS_VERSION'] + "\n" +print " OS_VERSION: " + ENV['OS_VERSION'] + "\n" +print "\n" From b0738fba6ab2e026ee5a404e6eb3ddaa9e8080dc Mon Sep 17 00:00:00 2001 From: Markus Blaschke Date: Sat, 11 Feb 2017 23:00:48 +0100 Subject: [PATCH 5/6] Reduce python cpu usage for wait loop --- bin/webdevops/Command.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/bin/webdevops/Command.py b/bin/webdevops/Command.py index 098894638..c7979e8d3 100644 --- a/bin/webdevops/Command.py +++ b/bin/webdevops/Command.py @@ -18,7 +18,7 @@ # OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR # OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -import os, subprocess, tempfile, copy +import os, subprocess, tempfile, copy, time def execute(cmd, cwd=False, env=None): """ @@ -62,7 +62,7 @@ def execute(cmd, cwd=False, env=None): # wait for process end while proc.poll() is None: - pass + time.sleep(1) # output stdout with open(file_stdout.name, 'r') as f: From 1e517959c20cc6d4d2ff0519c9007d773cb4378c Mon Sep 17 00:00:00 2001 From: Markus Blaschke Date: Sun, 12 Feb 2017 01:15:38 +0100 Subject: [PATCH 6/6] Set threads to auto for test target Set from cpu-count/2 to cpu-count --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index df22fda9a..962f2ef84 100644 --- a/Makefile +++ b/Makefile @@ -36,7 +36,7 @@ requirements: cd tests/serverspec && bundle install --path=vendor test: - python bin/console test:serverspec --threads=auto/2 -v + python bin/console test:serverspec --threads=auto -v baselayout: python bin/console generate:provision --baselayout