gitlab-qa 5.13.2 → 5.13.7

Sign up to get free protection for your applications and to get access to all the features.
@@ -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