diff options
author | Grzegorz Bizon <grzesiek.bizon@gmail.com> | 2018-01-23 12:04:01 +0100 |
---|---|---|
committer | Grzegorz Bizon <grzesiek.bizon@gmail.com> | 2018-01-23 12:04:01 +0100 |
commit | 5cb94835c0010d1954b26c858f910d533cd88e38 (patch) | |
tree | 5a1ff0ad9838bd70dbb7ca5fc1376c58aacc95b1 | |
parent | 738bad8ee83932ffd1b7b4de9113b0152b37172a (diff) | |
download | gitlab-ce-5cb94835c0010d1954b26c858f910d533cd88e38.tar.gz |
Refactor QA instance test scenario and tags
-rw-r--r-- | qa/qa.rb | 2 | ||||
-rw-r--r-- | qa/qa/scenario/entrypoint.rb | 34 | ||||
-rw-r--r-- | qa/qa/scenario/taggable.rb | 13 | ||||
-rw-r--r-- | qa/qa/scenario/test/instance.rb | 22 | ||||
-rw-r--r-- | qa/qa/scenario/test/integration/mattermost.rb | 2 | ||||
-rw-r--r-- | qa/qa/service/runner.rb | 10 | ||||
-rw-r--r-- | qa/spec/scenario/test/instance_spec.rb (renamed from qa/spec/scenario/entrypoint_spec.rb) | 4 |
7 files changed, 41 insertions, 46 deletions
@@ -47,7 +47,7 @@ module QA # autoload :Bootable, 'qa/scenario/bootable' autoload :Actable, 'qa/scenario/actable' - autoload :Entrypoint, 'qa/scenario/entrypoint' + autoload :Taggable, 'qa/scenario/taggable' autoload :Template, 'qa/scenario/template' ## diff --git a/qa/qa/scenario/entrypoint.rb b/qa/qa/scenario/entrypoint.rb deleted file mode 100644 index ae099fd911e..00000000000 --- a/qa/qa/scenario/entrypoint.rb +++ /dev/null @@ -1,34 +0,0 @@ -module QA - module Scenario - ## - # Base class for running the suite against any GitLab instance, - # including staging and on-premises installation. - # - class Entrypoint < Template - include Bootable - - def perform(address, *files) - Runtime::Scenario.define(:gitlab_address, address) - - ## - # Perform before hooks, which are different for CE and EE - # - Runtime::Release.perform_before_hooks - - Specs::Runner.perform do |specs| - specs.tty = true - specs.tags = self.class.get_tags - specs.files = files.any? ? files : 'qa/specs/features' - end - end - - def self.tags(*tags) - @tags = tags - end - - def self.get_tags - @tags - end - end - end -end diff --git a/qa/qa/scenario/taggable.rb b/qa/qa/scenario/taggable.rb new file mode 100644 index 00000000000..b63c245bf47 --- /dev/null +++ b/qa/qa/scenario/taggable.rb @@ -0,0 +1,13 @@ +module QA + module Scenario + module Taggable + def tags(*tags) + @tags = tags + end + + def focus + @tags.to_a + end + end + end +end diff --git a/qa/qa/scenario/test/instance.rb b/qa/qa/scenario/test/instance.rb index e2a1f6bf2bd..993bbd723a3 100644 --- a/qa/qa/scenario/test/instance.rb +++ b/qa/qa/scenario/test/instance.rb @@ -2,11 +2,29 @@ module QA module Scenario module Test ## - # Run test suite against any GitLab instance, + # Base class for running the suite against any GitLab instance, # including staging and on-premises installation. # - class Instance < Entrypoint + class Instance < Template + include Bootable + extend Taggable + tags :core + + def perform(address, *files) + Runtime::Scenario.define(:gitlab_address, address) + + ## + # Perform before hooks, which are different for CE and EE + # + Runtime::Release.perform_before_hooks + + Specs::Runner.perform do |specs| + specs.tty = true + specs.tags = self.class.focus + specs.files = files.any? ? files : 'qa/specs/features' + end + end end end end diff --git a/qa/qa/scenario/test/integration/mattermost.rb b/qa/qa/scenario/test/integration/mattermost.rb index 7d0702afdb1..d939f52ab16 100644 --- a/qa/qa/scenario/test/integration/mattermost.rb +++ b/qa/qa/scenario/test/integration/mattermost.rb @@ -6,7 +6,7 @@ module QA # Run test suite against any GitLab instance where mattermost is enabled, # including staging and on-premises installation. # - class Mattermost < Scenario::Entrypoint + class Mattermost < Test::Instance tags :core, :mattermost def perform(address, mattermost, *files) diff --git a/qa/qa/service/runner.rb b/qa/qa/service/runner.rb index 2e313b59d28..d0ee33c69f2 100644 --- a/qa/qa/service/runner.rb +++ b/qa/qa/service/runner.rb @@ -11,6 +11,8 @@ module QA def initialize(name) @image = 'gitlab/gitlab-runner:alpine' @name = name || "qa-runner-#{SecureRandom.hex(4)}" + @network = Runtime::Scenario.attributes[:network] || 'test' + @tags = %w[qa test] end def pull @@ -18,18 +20,14 @@ module QA end def register! - ## - # TODO, this assumes that `test` network exists, because we know that - # gitlab-qa environment orchestration tool creates it. - # shell <<~CMD.tr("\n", ' ') docker run -d --rm --entrypoint=/bin/sh - --network test --name #{@name} + --network #{@network} --name #{@name} -e CI_SERVER_URL=#{@address} -e REGISTER_NON_INTERACTIVE=true -e REGISTRATION_TOKEN=#{@token} -e RUNNER_EXECUTOR=shell - -e RUNNER_TAG_LIST=#{@tags.to_a.join(',')} + -e RUNNER_TAG_LIST=#{@tags.join(',')} -e RUNNER_NAME=#{@name} #{@image} -c 'gitlab-runner register && gitlab-runner run' CMD diff --git a/qa/spec/scenario/entrypoint_spec.rb b/qa/spec/scenario/test/instance_spec.rb index aec79dcea04..1824db54c9b 100644 --- a/qa/spec/scenario/entrypoint_spec.rb +++ b/qa/spec/scenario/test/instance_spec.rb @@ -1,6 +1,6 @@ -describe QA::Scenario::Entrypoint do +describe QA::Scenario::Test::Instance do subject do - Class.new(QA::Scenario::Entrypoint) do + Class.new(described_class) do tags :rspec end end |