gitlab-qa 5.13.6 → 5.16.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -3,18 +3,14 @@ require 'tempfile'
3
3
  module Gitlab
4
4
  module QA
5
5
  module Component
6
- class InternetTunnel
7
- include Scenario::Actable
8
-
6
+ class InternetTunnel < Base
9
7
  DOCKER_IMAGE = 'gitlab/ssh-tunnel'.freeze
10
8
  DOCKER_IMAGE_TAG = '1.0.0'.freeze
11
9
 
12
- attr_writer :gitlab_hostname, :name
13
- attr_accessor :network
10
+ attr_writer :gitlab_hostname
14
11
 
15
12
  def initialize
16
- @docker = Docker::Engine.new
17
- @volumes = {}
13
+ super
18
14
 
19
15
  key_dir = ENV['CI_PROJECT_DIR'] || Dir.tmpdir
20
16
  @ssh_key = Tempfile.new('tunnel-ssh-private-key', key_dir)
@@ -27,14 +23,9 @@ module Gitlab
27
23
  end
28
24
 
29
25
  def instance
30
- raise ArgumentError, 'Please provide a block!' unless block_given?
31
-
32
- prepare
33
- start
26
+ raise 'Please provide a block!' unless block_given?
34
27
 
35
- yield self
36
- ensure
37
- teardown
28
+ super
38
29
  end
39
30
 
40
31
  def url
@@ -47,14 +38,6 @@ module Gitlab
47
38
  @name ||= "ssh-tunnel-#{SecureRandom.hex(4)}"
48
39
  end
49
40
 
50
- def prepare
51
- @docker.pull(DOCKER_IMAGE, DOCKER_IMAGE_TAG)
52
-
53
- return if @docker.network_exists?(network)
54
-
55
- @docker.network_create(network)
56
- end
57
-
58
41
  def tunnel_server_hostname
59
42
  ENV.fetch("TUNNEL_SERVER_HOSTNAME")
60
43
  end
@@ -77,15 +60,9 @@ module Gitlab
77
60
  end
78
61
  end
79
62
 
80
- def restart
81
- @docker.restart(name)
82
- end
83
-
84
63
  def teardown
85
- raise 'Invalid instance name!' unless name
64
+ super
86
65
 
87
- @docker.stop(name)
88
- @docker.remove(name)
89
66
  @ssh_key.unlink
90
67
  end
91
68
  end
@@ -1,50 +1,22 @@
1
1
  module Gitlab
2
2
  module QA
3
3
  module Component
4
- class Jira
5
- include Scenario::Actable
6
-
7
- JIRA_IMAGE = 'registry.gitlab.com/gitlab-org/gitlab-qa/jira-gitlab'.freeze
8
- JIRA_IMAGE_TAG = '8.8-project-and-issue'.freeze
9
-
10
- attr_reader :docker
11
- attr_accessor :environment, :network
12
- attr_writer :name
13
-
14
- def initialize
15
- @docker = Docker::Engine.new
16
- @environment = {}
17
- end
4
+ class Jira < Base
5
+ DOCKER_IMAGE = 'registry.gitlab.com/gitlab-org/gitlab-qa/jira-gitlab'.freeze
6
+ DOCKER_IMAGE_TAG = '8.8-project-and-issue'.freeze
18
7
 
19
8
  def name
20
9
  @name ||= "jira"
21
10
  end
22
11
 
23
- def hostname
24
- "#{name}.#{network}"
25
- end
26
-
27
12
  def instance
28
13
  raise 'Please provide a block!' unless block_given?
29
14
 
30
- prepare
31
- start
32
-
33
- yield self
34
- ensure
35
- teardown
36
- end
37
-
38
- def prepare
39
- @docker.pull(JIRA_IMAGE, JIRA_IMAGE_TAG)
40
-
41
- return if @docker.network_exists?(network)
42
-
43
- @docker.network_create(network)
15
+ super
44
16
  end
45
17
 
46
18
  def start
47
- docker.run(JIRA_IMAGE, JIRA_IMAGE_TAG) do |command|
19
+ docker.run(image, tag) do |command|
48
20
  command << '-d '
49
21
  command << "--name #{name}"
50
22
  command << "--net #{network}"
@@ -53,17 +25,6 @@ module Gitlab
53
25
  end
54
26
  end
55
27
 
56
- def restart
57
- @docker.restart(name)
58
- end
59
-
60
- def teardown
61
- raise 'Invalid instance name!' unless name
62
-
63
- @docker.stop(name)
64
- @docker.remove(name)
65
- end
66
-
67
28
  def set_jira_hostname
68
29
  ::Gitlab::QA::Runtime::Env.jira_hostname = hostname
69
30
  end
@@ -15,25 +15,16 @@ require 'securerandom'
15
15
  module Gitlab
16
16
  module QA
17
17
  module Component
18
- class LDAP
19
- include Scenario::Actable
20
-
21
- LDAP_IMAGE = 'osixia/openldap'.freeze
22
- LDAP_IMAGE_TAG = 'latest'.freeze
18
+ class LDAP < Base
19
+ DOCKER_IMAGE = 'osixia/openldap'.freeze
20
+ DOCKER_IMAGE_TAG = 'latest'.freeze
23
21
  LDAP_USER = 'tanuki'.freeze
24
22
  LDAP_PASSWORD = 'password'.freeze
25
23
  BOOTSTRAP_LDIF = '/container/service/slapd/assets/config/bootstrap/ldif/custom'.freeze
26
24
  FIXTURE_PATH = File.expand_path('../../../../fixtures/ldap'.freeze, __dir__)
27
25
 
28
- attr_reader :docker
29
- attr_accessor :volumes, :network, :environment
30
- attr_writer :name
31
-
32
26
  def initialize
33
- @docker = Docker::Engine.new
34
- @environment = {}
35
- @volumes = {}
36
- @network_aliases = []
27
+ super
37
28
 
38
29
  @volumes[FIXTURE_PATH] = BOOTSTRAP_LDIF
39
30
  end
@@ -58,41 +49,21 @@ module Gitlab
58
49
  LDAP_PASSWORD
59
50
  end
60
51
 
61
- def add_network_alias(name)
62
- @network_aliases.push(name)
63
- end
64
-
65
52
  def name
66
53
  @name ||= "openldap-#{SecureRandom.hex(4)}"
67
54
  end
68
55
 
69
- def hostname
70
- "#{name}.#{network}"
71
- end
72
-
73
56
  def instance
74
57
  raise 'Please provide a block!' unless block_given?
75
58
 
76
- prepare
77
- start
78
-
79
- yield self
80
- ensure
81
- teardown
82
- end
83
-
84
- def prepare
85
- @docker.pull(LDAP_IMAGE, LDAP_IMAGE_TAG)
86
-
87
- return if @docker.network_exists?(network)
88
-
89
- @docker.network_create(network)
59
+ super
90
60
  end
91
61
 
62
+ # rubocop:disable Metrics/AbcSize
92
63
  def start
93
64
  # copy-service needed for bootstraping LDAP user:
94
65
  # https://github.com/osixia/docker-openldap#seed-ldap-database-with-ldif
95
- docker.run(LDAP_IMAGE, LDAP_IMAGE_TAG, '--copy-service') do |command|
66
+ docker.run(image, tag, '--copy-service') do |command|
96
67
  command << '-d '
97
68
  command << "--name #{name}"
98
69
  command << "--net #{network}"
@@ -111,21 +82,7 @@ module Gitlab
111
82
  end
112
83
  end
113
84
  end
114
-
115
- def restart
116
- @docker.restart(name)
117
- end
118
-
119
- def teardown
120
- raise 'Invalid instance name!' unless name
121
-
122
- @docker.stop(name)
123
- @docker.remove(name)
124
- end
125
-
126
- def pull
127
- @docker.pull(LDAP_IMAGE, LDAP_IMAGE_TAG)
128
- end
85
+ # rubocop:enable Metrics/AbcSize
129
86
 
130
87
  def set_gitlab_credentials
131
88
  ::Gitlab::QA::Runtime::Env.ldap_username = username
@@ -4,50 +4,22 @@
4
4
  module Gitlab
5
5
  module QA
6
6
  module Component
7
- class MailHog
8
- include Scenario::Actable
9
-
10
- MAILHOG_IMAGE = 'mailhog/mailhog'.freeze
11
- MAILHOG_IMAGE_TAG = 'v1.0.0'.freeze
12
-
13
- attr_reader :docker
14
- attr_accessor :environment, :network
15
- attr_writer :name
16
-
17
- def initialize
18
- @docker = Docker::Engine.new
19
- @environment = {}
20
- end
7
+ class MailHog < Base
8
+ DOCKER_IMAGE = 'mailhog/mailhog'.freeze
9
+ DOCKER_IMAGE_TAG = 'v1.0.0'.freeze
21
10
 
22
11
  def name
23
12
  @name ||= "mailhog"
24
13
  end
25
14
 
26
- def hostname
27
- "#{name}.#{network}"
28
- end
29
-
30
15
  def instance
31
16
  raise 'Please provide a block!' unless block_given?
32
17
 
33
- prepare
34
- start
35
-
36
- yield self
37
- ensure
38
- teardown
39
- end
40
-
41
- def prepare
42
- @docker.pull(MAILHOG_IMAGE, MAILHOG_IMAGE_TAG)
43
-
44
- return if @docker.network_exists?(network)
45
-
46
- @docker.network_create(network)
18
+ super
47
19
  end
48
20
 
49
21
  def start
50
- docker.run(MAILHOG_IMAGE, MAILHOG_IMAGE_TAG) do |command|
22
+ docker.run(image, tag) do |command|
51
23
  command << '-d '
52
24
  command << "--name #{name}"
53
25
  command << "--net #{network}"
@@ -57,17 +29,6 @@ module Gitlab
57
29
  end
58
30
  end
59
31
 
60
- def restart
61
- @docker.restart(name)
62
- end
63
-
64
- def teardown
65
- raise 'Invalid instance name!' unless name
66
-
67
- @docker.stop(name)
68
- @docker.remove(name)
69
- end
70
-
71
32
  def set_mailhog_hostname
72
33
  ::Gitlab::QA::Runtime::Env.mailhog_hostname = hostname
73
34
  end
@@ -6,23 +6,18 @@ require 'fileutils'
6
6
  module Gitlab
7
7
  module QA
8
8
  module Component
9
- class Minio
10
- include Scenario::Actable
11
-
12
- MINIO_IMAGE = 'minio/minio'.freeze
13
- MINIO_IMAGE_TAG = 'latest'.freeze
9
+ class Minio < Base
10
+ DOCKER_IMAGE = 'minio/minio'.freeze
11
+ DOCKER_IMAGE_TAG = 'latest'.freeze
14
12
  # These are secrets used in a local Minio container, they're not used for any online S3 server.
15
13
  AWS_ACCESS_KEY = 'AKIAIOSFODNN7EXAMPLE'.freeze
16
14
  AWS_SECRET_KEY = 'wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY'.freeze
17
15
  DATA_DIR = '/data'.freeze
18
16
  DEFAULT_PORT = 9000
19
17
 
20
- attr_reader :docker
21
- attr_accessor :volumes, :network, :environment
22
- attr_writer :name
23
-
24
18
  def initialize
25
- @docker = Docker::Engine.new
19
+ super
20
+
26
21
  @environment = { MINIO_ACCESS_KEY: AWS_ACCESS_KEY, MINIO_SECRET_KEY: AWS_SECRET_KEY }
27
22
  @volumes = { host_data_dir => DATA_DIR }
28
23
  @buckets = []
@@ -31,12 +26,7 @@ module Gitlab
31
26
  def instance
32
27
  raise 'Please provide a block!' unless block_given?
33
28
 
34
- prepare
35
- start
36
-
37
- yield self
38
- ensure
39
- teardown
29
+ super
40
30
  end
41
31
 
42
32
  def add_bucket(name)
@@ -70,16 +60,12 @@ module Gitlab
70
60
  @name ||= "minio-#{SecureRandom.hex(4)}"
71
61
  end
72
62
 
73
- def hostname
74
- "#{name}.#{network}"
75
- end
76
-
77
63
  def port
78
64
  DEFAULT_PORT
79
65
  end
80
66
 
81
67
  def prepare
82
- @docker.pull(MINIO_IMAGE, MINIO_IMAGE_TAG)
68
+ super
83
69
 
84
70
  FileUtils.mkdir_p(host_data_dir)
85
71
 
@@ -87,16 +73,12 @@ module Gitlab
87
73
  puts "Creating Minio bucket: #{bucket}"
88
74
  FileUtils.mkdir_p(File.join(host_data_dir, bucket))
89
75
  end
90
-
91
- return if @docker.network_exists?(network)
92
-
93
- @docker.network_create(network)
94
76
  end
95
77
 
96
- def start
78
+ def start # rubocop:disable Metrics/AbcSize
97
79
  # --compat needed until https://gitlab.com/gitlab-org/gitlab-workhorse/issues/210
98
80
  # is resolved
99
- docker.run(MINIO_IMAGE, MINIO_IMAGE_TAG, "server", "--compat", DATA_DIR) do |command|
81
+ docker.run(image, tag, "server", "--compat", DATA_DIR) do |command|
100
82
  command << '-d '
101
83
  command << "--name #{name}"
102
84
  command << "--net #{network}"
@@ -115,13 +97,6 @@ module Gitlab
115
97
  end
116
98
  end
117
99
  end
118
-
119
- def teardown
120
- raise 'Invalid instance name!' unless name
121
-
122
- @docker.stop(name)
123
- @docker.remove(name)
124
- end
125
100
  end
126
101
  end
127
102
  end
@@ -1,43 +1,16 @@
1
1
  module Gitlab
2
2
  module QA
3
3
  module Component
4
- class PostgreSQL
5
- include Scenario::Actable
6
-
7
- POSTGRES_IMAGE = 'postgres'.freeze
8
- POSTGRES_IMAGE_TAG = '11'.freeze
9
-
10
- attr_reader :docker
11
- attr_accessor :environment, :network
12
- attr_writer :name
13
-
14
- def initialize
15
- @docker = Docker::Engine.new
16
- @environment = {}
17
- end
4
+ class PostgreSQL < Base
5
+ DOCKER_IMAGE = 'postgres'.freeze
6
+ DOCKER_IMAGE_TAG = '11'.freeze
18
7
 
19
8
  def name
20
9
  @name ||= "postgres"
21
10
  end
22
11
 
23
- def instance
24
- prepare
25
- start
26
- wait_until_ready
27
- yield self
28
- ensure
29
- teardown
30
- end
31
-
32
- def prepare
33
- @docker.pull(POSTGRES_IMAGE, POSTGRES_IMAGE_TAG)
34
- return if @docker.network_exists?(network)
35
-
36
- @docker.network_create(network)
37
- end
38
-
39
12
  def start
40
- @docker.run(POSTGRES_IMAGE, POSTGRES_IMAGE_TAG) do |command|
13
+ @docker.run(image, tag) do |command|
41
14
  command << "-d"
42
15
  command << "--name #{name}"
43
16
  command << "--net #{network}"
@@ -46,11 +19,6 @@ module Gitlab
46
19
  end
47
20
  end
48
21
 
49
- def teardown
50
- @docker.stop(name)
51
- @docker.remove(name)
52
- end
53
-
54
22
  def run_psql(command)
55
23
  @docker.exec(name, %(psql -U postgres #{command}))
56
24
  end