gitlab-qa 8.6.0 → 8.8.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: cedbc28c7349c22c56af141445b79d1c7c29444f66d191f465a91e8d0fc244ae
4
- data.tar.gz: 9b857df0ad9502c59aa081fb7b1ebb2865bc7c4339c49c6f37a356c08eb1740a
3
+ metadata.gz: e89c4046779c498fad14fac05a4cc8ab68deb9d4ccb62e8eabaaace6af8be17d
4
+ data.tar.gz: a0c72ba4f7278b82f59678133578e11f23cb7e39449a82c21ec7beb967a524cc
5
5
  SHA512:
6
- metadata.gz: 4231efbe843158613694938667c8402d5dcbddeb918fb19cf00743839c80c5bc05917c264474d48e3558dd33978e9973baecad229a041873473faa1ce376122c
7
- data.tar.gz: 7a9c4a7efd9b4759c6c487e8872ca76cfb35cc6b91cebc90e2c77b61d742b5ed2f68acd044f6b86cbfce30d822423ddd4e09cae2b5c26dd4ea2a26a72364c5e9
6
+ metadata.gz: 7847ac077692217f68224ca9fdd31bcdadb833aa4aca0ab16113caf1efe6e1013689bca536d2b4c2b5fb3cd5d6e77a58f36b31e2b7c62d00f49abc66c2d0e683
7
+ data.tar.gz: 97e98ce591bb8a7cc2a804b1d1326605df8f68e0561cff27e235ddc48420be385794d8dd02ce635adafabd443b1e3f8ab9f4e4d194949b0fb91aedc06e243f32
@@ -0,0 +1,22 @@
1
+ ee:chaos:
2
+ extends:
3
+ - .rules:ee-never-when-triggered-by-feature-flag-definition-change
4
+ - .test
5
+ - .high-capacity
6
+ - .ee-variables
7
+ - .rspec-report-opts
8
+ variables:
9
+ QA_SCENARIO: "Test::Integration::Chaos"
10
+ QA_RSPEC_TAGS: "--tag chaos"
11
+
12
+ ee:chaos-quarantine:
13
+ extends:
14
+ - .rules:ee-never-when-triggered-by-feature-flag-definition-change
15
+ - .test
16
+ - .high-capacity
17
+ - .ee-variables
18
+ - .quarantine
19
+ - .rspec-report-opts
20
+ variables:
21
+ QA_SCENARIO: "Test::Integration::Chaos"
22
+ QA_RSPEC_TAGS: "--tag quarantine --tag chaos"
@@ -4,7 +4,7 @@ ce:sanity-framework:
4
4
  QA_GENERATE_ALLURE_REPORT: "false"
5
5
  QA_EXPORT_TEST_METRICS: "false"
6
6
  script:
7
- - ./bin/expect_exit_code_and_text "bundle exec exe/gitlab-qa Test::Instance::Image ${RELEASE:=CE} -- --tag framework" 1 "2 examples, 1 failure"
7
+ - ./bin/expect_exit_code_and_text "bundle exec exe/gitlab-qa Test::Instance::Image ${RELEASE:=CE} -- --tag framework" 1 "1 failure"
8
8
  extends:
9
9
  - .rules:ce-never-when-triggered-by-feature-flag-definition-change
10
10
  - .test
@@ -16,7 +16,7 @@ ee:sanity-framework:
16
16
  QA_GENERATE_ALLURE_REPORT: "false"
17
17
  QA_EXPORT_TEST_METRICS: "false"
18
18
  script:
19
- - ./bin/expect_exit_code_and_text "bundle exec exe/gitlab-qa Test::Instance::Image ${RELEASE:=EE} -- --tag framework" 1 "2 examples, 1 failure"
19
+ - ./bin/expect_exit_code_and_text "bundle exec exe/gitlab-qa Test::Instance::Image ${RELEASE:=EE} -- --tag framework" 1 "1 failure"
20
20
  extends:
21
21
  - .rules:ee-never-when-triggered-by-feature-flag-definition-change
22
22
  - .test
data/Gemfile.lock CHANGED
@@ -1,14 +1,15 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- gitlab-qa (8.6.0)
4
+ gitlab-qa (8.8.0)
5
5
  activesupport (~> 6.1)
6
6
  gitlab (~> 4.18.0)
7
7
  http (~> 5.0)
8
8
  nokogiri (~> 1.10)
9
- rainbow (~> 3.0.0)
9
+ rainbow (>= 3, < 4)
10
10
  table_print (= 1.5.7)
11
- zeitwerk (~> 2.4)
11
+ toxiproxy (~> 2.0.2)
12
+ zeitwerk (>= 2, < 3)
12
13
 
13
14
  GEM
14
15
  remote: https://rubygems.org/
@@ -216,6 +217,7 @@ GEM
216
217
  unicode-display_width (>= 1.1.1, < 3)
217
218
  thor (1.2.1)
218
219
  tilt (2.0.11)
220
+ toxiproxy (2.0.2)
219
221
  tzinfo (2.0.5)
220
222
  concurrent-ruby (~> 1.0)
221
223
  unf (0.1.4)
@@ -26,7 +26,7 @@ else
26
26
  if [ "$?" -eq "0" ]; then
27
27
  echo "'$SCRIPT' outputted '$EXPECTED_TEXT', as expected!"
28
28
  else
29
- echo "'$SCRIPT' was expected to output '$EXPECTED_TEXT', but did not!"
29
+ echo "'$SCRIPT' was expected to match output '$EXPECTED_TEXT', but did not!"
30
30
  exit 1
31
31
  fi
32
32
  else
@@ -1035,6 +1035,33 @@ $ export GITLAB_PASSWORD="$GITLAB_QA_PASSWORD"
1035
1035
 
1036
1036
  $ gitlab-qa Test::Instance::Geo EE https://primary.gitlab.com https://secondary.gitlab.com
1037
1037
  ```
1038
+
1039
+ ### `Test::Instance::Chaos`
1040
+
1041
+ This scenario will run a limited number of tests that are tagged with `:chaos`.
1042
+
1043
+ These tests are designed to verify that our systems can gracefully handle scenarios which may occur if
1044
+ networking or connectivity type issues occur in various Gitlab components.
1045
+ They make use of [toxiproxy(https://github.com/Shopify/toxiproxy)] to act as a proxy allowing us to introduce
1046
+ connectivity issues, via the [toxiproxy ruby client](https://github.com/Shopify/toxiproxy-ruby) in an E2E spec.
1047
+
1048
+ Sample Test:
1049
+
1050
+ ```ruby
1051
+ context 'when a gitaly node is experiencing high latency' do
1052
+ it 'can create a project' do
1053
+ Toxiproxy[:gitaly1].toxic(:latency, latency: 30000).apply do
1054
+ expect(create_a_project).to be true
1055
+ end
1056
+ end
1057
+ end
1058
+ ```
1059
+
1060
+ Example:
1061
+
1062
+ ```
1063
+ $ gitlab-qa Test::Instance::Chaos
1064
+ ```
1038
1065
  ----
1039
1066
 
1040
1067
  [Back to README.md](../README.md)
data/gitlab-qa.gemspec CHANGED
@@ -32,7 +32,8 @@ Gem::Specification.new do |spec|
32
32
  spec.add_runtime_dependency 'gitlab', '~> 4.18.0'
33
33
  spec.add_runtime_dependency 'http', '~> 5.0'
34
34
  spec.add_runtime_dependency 'nokogiri', '~> 1.10'
35
- spec.add_runtime_dependency 'rainbow', '~> 3.0.0'
35
+ spec.add_runtime_dependency 'rainbow', '>= 3', '< 4'
36
36
  spec.add_runtime_dependency 'table_print', '1.5.7'
37
- spec.add_runtime_dependency 'zeitwerk', '~> 2.4'
37
+ spec.add_runtime_dependency 'toxiproxy', '~> 2.0.2'
38
+ spec.add_runtime_dependency 'zeitwerk', '>= 2', '< 3'
38
39
  end
@@ -0,0 +1,79 @@
1
+ # frozen_string_literal: true
2
+ require 'toxiproxy'
3
+
4
+ module Gitlab
5
+ module QA
6
+ module Component
7
+ class Chaos < Base
8
+ DOCKER_IMAGE = 'ghcr.io/shopify/toxiproxy'
9
+ DOCKER_IMAGE_TAG = '2.5.0'
10
+
11
+ def initialize
12
+ super
13
+ @network = "test"
14
+ end
15
+
16
+ def name
17
+ @name ||= "chaos"
18
+ end
19
+
20
+ def start
21
+ prepare
22
+ docker.run(image: image, tag: tag) do |command|
23
+ command << '-d '
24
+ command << "--name #{name}"
25
+ command << "--network #{@network}"
26
+ command << "--publish 8474:8474"
27
+ end
28
+
29
+ Toxiproxy.host = "http://localhost:8474"
30
+
31
+ begin
32
+ attempts ||= 1
33
+ Toxiproxy.populate([
34
+ {
35
+ name: "postgres",
36
+ listen: "[::]:5432",
37
+ upstream: "postgres.test:5432",
38
+ "enabled": true
39
+ },
40
+ {
41
+ name: "praefect",
42
+ listen: "[::]:2305",
43
+ upstream: "praefect.test:2305",
44
+ "enabled": true
45
+ },
46
+ {
47
+ name: "gitaly1",
48
+ listen: "[::]:8076",
49
+ upstream: "gitaly1.test:8076",
50
+ "enabled": true
51
+ },
52
+ {
53
+ name: "gitaly2",
54
+ listen: "[::]:8077",
55
+ upstream: "gitaly2.test:8077",
56
+ "enabled": true
57
+ },
58
+ {
59
+ name: "gitaly3",
60
+ listen: "[::]:8078",
61
+ upstream: "gitaly3.test:8078",
62
+ "enabled": true
63
+ }
64
+ ])
65
+ rescue StandardError => e
66
+ Runtime::Logger.warn e.message
67
+
68
+ # This should resolve within seconds, but give some leeway for the toxiproxy container to start
69
+ if (attempts += 1) < 10
70
+ Runtime::Logger.info "Waiting #{attempts} seconds before retrying setting toxiproxy config"
71
+ sleep attempts
72
+ retry
73
+ end
74
+ end
75
+ end
76
+ end
77
+ end
78
+ end
79
+ end
@@ -61,7 +61,7 @@ module Gitlab
61
61
  command << hosts # override /etc/hosts in docker container when test runs
62
62
  end
63
63
 
64
- env.merge(Runtime::Env.variables).each do |key, value|
64
+ Runtime::Env.variables.merge(env).each do |key, value|
65
65
  command.env(key, value)
66
66
  end
67
67
 
@@ -0,0 +1,39 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Gitlab
4
+ module QA
5
+ module Scenario
6
+ module Test
7
+ module Integration
8
+ class Chaos < Praefect
9
+ def initialize
10
+ super
11
+
12
+ @praefect_addr = "chaos.test"
13
+ @database_addr = "chaos.test"
14
+ @primary_node_addr = "chaos.test"
15
+ @primary_node_port = 8076
16
+ @secondary_node_addr = "chaos.test"
17
+ @secondary_node_port = 8077
18
+ @tertiary_node_addr = "chaos.test"
19
+ @tertiary_node_port = 8078
20
+ end
21
+
22
+ def perform(release, *rspec_args)
23
+ @chaos_node = Component::Chaos.new.tap(&:start)
24
+
25
+ run_gitaly_cluster(release, rspec_args)
26
+ ensure
27
+ @chaos_node&.teardown
28
+ @praefect_node&.teardown
29
+ @sql_node&.teardown
30
+ @gitaly_primary_node&.teardown
31
+ @gitaly_secondary_node&.teardown
32
+ @gitaly_tertiary_node&.teardown
33
+ end
34
+ end
35
+ end
36
+ end
37
+ end
38
+ end
39
+ end
@@ -8,13 +8,29 @@ module Gitlab
8
8
  class GitalyCluster < Scenario::Template
9
9
  attr_reader :gitlab_name, :spec_suite
10
10
 
11
- def initialize
11
+ def initialize # rubocop:disable Metrics/AbcSize
12
12
  @gitlab_name = 'gitlab-gitaly-cluster'
13
+
13
14
  @primary_node_name = 'gitaly1'
15
+ @primary_node_addr = "#{@primary_node_name}.#{@network}"
16
+ @primary_node_port = 8075
17
+
14
18
  @secondary_node_name = 'gitaly2'
19
+ @secondary_node_addr = "#{@secondary_node_name}.#{@network}"
20
+ @secondary_node_port = 8075
21
+
15
22
  @tertiary_node_name = 'gitaly3'
23
+ @tertiary_node_addr = "#{@tertiary_node_name}.#{@network}"
24
+ @tertiary_node_port = 8075
25
+
16
26
  @praefect_node_name = 'praefect'
27
+ @praefect_port = 2305
28
+ @praefect_addr = "#{@praefect_node_name}.#{@network}"
29
+
17
30
  @database = 'postgres'
31
+ @database_port = 5432
32
+ @database_addr = "#{@database}.#{@network}"
33
+
18
34
  @spec_suite = 'Test::Instance::All'
19
35
  @network = 'test'
20
36
  @env = {}
@@ -22,6 +38,16 @@ module Gitlab
22
38
  end
23
39
 
24
40
  def perform(release, *rspec_args)
41
+ run_gitaly_cluster(release, rspec_args)
42
+ ensure
43
+ @praefect_node&.teardown
44
+ @sql_node&.teardown
45
+ @gitaly_primary_node&.teardown
46
+ @gitaly_secondary_node&.teardown
47
+ @gitaly_tertiary_node&.teardown
48
+ end
49
+
50
+ def run_gitaly_cluster(release, rspec_args) # rubocop:disable Metrics/AbcSize
25
51
  # The postgres container starts in seconds so not essential to parallelize it
26
52
  # This also ensure that the docker network is created here, avoiding any potential race conditions later
27
53
  # if the gitaly-cluster and GitLab containers attempt to create a network in parallel
@@ -57,21 +83,15 @@ module Gitlab
57
83
  end
58
84
  end
59
85
  end
60
- ensure
61
- @praefect_node&.teardown
62
- @sql_node&.teardown
63
- @gitaly_primary_node&.teardown
64
- @gitaly_secondary_node&.teardown
65
- @gitaly_tertiary_node&.teardown
66
86
  end
67
87
 
68
88
  private
69
89
 
70
90
  def start_gitaly_cluster(release)
71
91
  Runtime::Logger.info("Starting Gitaly Cluster")
72
- @gitaly_primary_node = gitaly(@primary_node_name, release)
73
- @gitaly_secondary_node = gitaly(@secondary_node_name, release)
74
- @gitaly_tertiary_node = gitaly(@tertiary_node_name, release)
92
+ @gitaly_primary_node = gitaly(@primary_node_name, @primary_node_port, release)
93
+ @gitaly_secondary_node = gitaly(@secondary_node_name, @secondary_node_port, release)
94
+ @gitaly_tertiary_node = gitaly(@tertiary_node_name, @tertiary_node_port, release)
75
95
 
76
96
  @praefect_node = praefect(@praefect_node_name, release)
77
97
  Runtime::Logger.info("Gitaly Cluster Ready")
@@ -97,31 +117,31 @@ module Gitlab
97
117
  #{disable_other_services}
98
118
  gitaly['enable'] = false;
99
119
  praefect['enable'] = true;
100
- praefect['listen_addr'] = '0.0.0.0:2305';
120
+ praefect['listen_addr'] = '0.0.0.0:#{@praefect_port}';
101
121
  praefect['prometheus_listen_addr'] = '0.0.0.0:9652';
102
122
  praefect['auth_token'] = 'PRAEFECT_EXTERNAL_TOKEN';
103
123
  praefect['reconciliation_scheduling_interval'] = '10s';
104
- praefect['database_host'] = '#{@database}.#{@network}';
124
+ praefect['database_host'] = '#{@database_addr}';
105
125
  praefect['database_user'] = 'postgres';
106
- praefect['database_port'] = 5432;
126
+ praefect['database_port'] = #{@database_port};
107
127
  praefect['database_password'] = 'SQL_PASSWORD';
108
128
  praefect['database_dbname'] = 'praefect_production';
109
129
  praefect['database_sslmode'] = 'disable';
110
- praefect['database_direct_host'] = '#{@database}.#{@network}';
111
- praefect['database_direct_port'] = 5432;
130
+ praefect['database_direct_host'] = '#{@database_addr}';
131
+ praefect['database_direct_port'] = #{@database_port};
112
132
  praefect['virtual_storages'] = {
113
133
  'default' => {
114
134
  'nodes' => {
115
135
  '#{@primary_node_name}' => {
116
- 'address' => 'tcp://#{@primary_node_name}.#{@network}:8075',
136
+ 'address' => 'tcp://#{@primary_node_addr}:#{@primary_node_port}',
117
137
  'token' => 'PRAEFECT_INTERNAL_TOKEN'
118
138
  },
119
139
  '#{@secondary_node_name}' => {
120
- 'address' => 'tcp://#{@secondary_node_name}.#{@network}:8075',
140
+ 'address' => 'tcp://#{@secondary_node_addr}:#{@secondary_node_port}',
121
141
  'token' => 'PRAEFECT_INTERNAL_TOKEN'
122
142
  },
123
143
  '#{@tertiary_node_name}' => {
124
- 'address' => 'tcp://#{@tertiary_node_name}.#{@network}:8075',
144
+ 'address' => 'tcp://#{@tertiary_node_addr}:#{@tertiary_node_port}',
125
145
  'token' => 'PRAEFECT_INTERNAL_TOKEN'
126
146
  }
127
147
  }
@@ -130,12 +150,12 @@ module Gitlab
130
150
  OMNIBUS
131
151
  end
132
152
 
133
- def gitaly_omnibus_configuration
153
+ def gitaly_omnibus_configuration(listen_port)
134
154
  <<~OMNIBUS
135
155
  #{disable_other_services.sub(/(prometheus\['enable'\]) = false/, '\1 = true')}
136
156
  prometheus_monitoring['enable'] = false;
137
157
  gitaly['enable'] = true;
138
- gitaly['listen_addr'] = '0.0.0.0:8075';
158
+ gitaly['listen_addr'] = '0.0.0.0:#{listen_port}';
139
159
  gitaly['prometheus_listen_addr'] = '0.0.0.0:9236';
140
160
  gitaly['auth_token'] = 'PRAEFECT_INTERNAL_TOKEN';
141
161
  gitlab_shell['secret_token'] = 'GITLAB_SHELL_SECRET_TOKEN';
@@ -160,7 +180,7 @@ module Gitlab
160
180
 
161
181
  git_data_dirs({
162
182
  'default' => {
163
- 'gitaly_address' => 'tcp://#{@praefect_node_name}.#{@network}:2305',
183
+ 'gitaly_address' => 'tcp://#{@praefect_addr}:#{@praefect_port}',
164
184
  'gitaly_token' => 'PRAEFECT_EXTERNAL_TOKEN'
165
185
  }
166
186
  });
@@ -171,7 +191,7 @@ module Gitlab
171
191
  'job_name' => 'praefect',
172
192
  'static_configs' => [
173
193
  'targets' => [
174
- '#{@praefect_node_name}.#{@network}:9652'
194
+ '#{@praefect_addr}:#{@praefect_port}'
175
195
  ]
176
196
  ]
177
197
  },
@@ -215,14 +235,14 @@ module Gitlab
215
235
  end
216
236
  end
217
237
 
218
- def gitaly(name, release)
238
+ def gitaly(name, port, release)
219
239
  Component::Gitlab.new.tap do |gitaly|
220
240
  gitaly.release = QA::Release.new(release)
221
241
  gitaly.name = name
222
242
  gitaly.network = @network
223
243
  gitaly.skip_availability_check = true
224
244
  gitaly.seed_admin_token = false
225
- gitaly.omnibus_configuration << gitaly_omnibus_configuration
245
+ gitaly.omnibus_configuration << gitaly_omnibus_configuration(port)
226
246
  gitaly.instance(skip_teardown: true)
227
247
  end
228
248
  end
@@ -21,7 +21,7 @@ module Gitlab
21
21
 
22
22
  git_data_dirs({
23
23
  'default' => {
24
- 'gitaly_address' => 'tcp://#{@praefect_node_name}.#{@network}:2305',
24
+ 'gitaly_address' => 'tcp://#{@praefect_addr}:#{@praefect_port}',
25
25
  'gitaly_token' => 'PRAEFECT_EXTERNAL_TOKEN'
26
26
  },
27
27
  'gitaly' => {
@@ -45,7 +45,7 @@ module Gitlab
45
45
  'job_name' => 'praefect',
46
46
  'static_configs' => [
47
47
  'targets' => [
48
- '#{@praefect_node_name}.#{@network}:9652'
48
+ '#{@praefect_addr}:9652'
49
49
  ]
50
50
  ]
51
51
  },
@@ -53,9 +53,9 @@ module Gitlab
53
53
  'job_name' => 'praefect-gitaly',
54
54
  'static_configs' => [
55
55
  'targets' => [
56
- '#{@primary_node_name}.#{@network}:9236',
57
- '#{@secondary_node_name}.#{@network}:9236',
58
- '#{@tertiary_node_name}.#{@network}:9236'
56
+ '#{@primary_node_addr}:9236',
57
+ '#{@secondary_node_addr}:9236',
58
+ '#{@tertiary_node_addr}:9236'
59
59
  ]
60
60
  ]
61
61
  }
@@ -93,6 +93,8 @@ module Gitlab
93
93
  specs.hostname = "qa-e2e-specs.#{gitlab.network}"
94
94
  specs.network = gitlab.network
95
95
  specs.args = [gitlab.address, *rspec_args]
96
+ # do not generate reports for non release runs
97
+ specs.env = { 'QA_GENERATE_ALLURE_REPORT' => false } unless release == current_release
96
98
  end
97
99
  rescue Support::ShellCommand::StatusError => e
98
100
  raise e if release == current_release # only fail on current release
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Gitlab
4
4
  module QA
5
- VERSION = '8.6.0'
5
+ VERSION = '8.8.0'
6
6
  end
7
7
  end
@@ -47,6 +47,7 @@ class GenerateQAJobs
47
47
  jobs.merge!(load_yml_contents('large_setup', should_automatically_run?('test_instance_all_can_use_large_setup')))
48
48
  jobs.merge!(load_yml_contents('cloud_activation', should_automatically_run?('test_instance_all_cloud_activation')))
49
49
  jobs.merge!(load_yml_contents('registry_with_cdn', should_automatically_run?('test_integration_registrywithcdn')))
50
+ jobs.merge!(load_yml_contents('chaos', should_automatically_run?('test_integration_chaos')))
50
51
  jobs.merge!(load_yml_contents('staging'))
51
52
  jobs.merge!(load_yml_contents('metrics', should_automatically_run?('test_instance_all_metrics')))
52
53
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: gitlab-qa
3
3
  version: !ruby/object:Gem::Version
4
- version: 8.6.0
4
+ version: 8.8.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - GitLab Quality
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2022-10-11 00:00:00.000000000 Z
11
+ date: 2022-10-19 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: climate_control
@@ -182,16 +182,22 @@ dependencies:
182
182
  name: rainbow
183
183
  requirement: !ruby/object:Gem::Requirement
184
184
  requirements:
185
- - - "~>"
185
+ - - ">="
186
+ - !ruby/object:Gem::Version
187
+ version: '3'
188
+ - - "<"
186
189
  - !ruby/object:Gem::Version
187
- version: 3.0.0
190
+ version: '4'
188
191
  type: :runtime
189
192
  prerelease: false
190
193
  version_requirements: !ruby/object:Gem::Requirement
191
194
  requirements:
192
- - - "~>"
195
+ - - ">="
193
196
  - !ruby/object:Gem::Version
194
- version: 3.0.0
197
+ version: '3'
198
+ - - "<"
199
+ - !ruby/object:Gem::Version
200
+ version: '4'
195
201
  - !ruby/object:Gem::Dependency
196
202
  name: table_print
197
203
  requirement: !ruby/object:Gem::Requirement
@@ -207,19 +213,39 @@ dependencies:
207
213
  - !ruby/object:Gem::Version
208
214
  version: 1.5.7
209
215
  - !ruby/object:Gem::Dependency
210
- name: zeitwerk
216
+ name: toxiproxy
211
217
  requirement: !ruby/object:Gem::Requirement
212
218
  requirements:
213
219
  - - "~>"
214
220
  - !ruby/object:Gem::Version
215
- version: '2.4'
221
+ version: 2.0.2
216
222
  type: :runtime
217
223
  prerelease: false
218
224
  version_requirements: !ruby/object:Gem::Requirement
219
225
  requirements:
220
226
  - - "~>"
221
227
  - !ruby/object:Gem::Version
222
- version: '2.4'
228
+ version: 2.0.2
229
+ - !ruby/object:Gem::Dependency
230
+ name: zeitwerk
231
+ requirement: !ruby/object:Gem::Requirement
232
+ requirements:
233
+ - - ">="
234
+ - !ruby/object:Gem::Version
235
+ version: '2'
236
+ - - "<"
237
+ - !ruby/object:Gem::Version
238
+ version: '3'
239
+ type: :runtime
240
+ prerelease: false
241
+ version_requirements: !ruby/object:Gem::Requirement
242
+ requirements:
243
+ - - ">="
244
+ - !ruby/object:Gem::Version
245
+ version: '2'
246
+ - - "<"
247
+ - !ruby/object:Gem::Version
248
+ version: '3'
223
249
  description:
224
250
  email:
225
251
  - gitlab-qa@gmail.com
@@ -233,6 +259,7 @@ files:
233
259
  - ".gitignore"
234
260
  - ".gitlab-ci.yml"
235
261
  - ".gitlab/ci/jobs/base.gitlab-ci.yml"
262
+ - ".gitlab/ci/jobs/chaos.gitlab-ci.yml"
236
263
  - ".gitlab/ci/jobs/cloud_activation.gitlab-ci.yml"
237
264
  - ".gitlab/ci/jobs/custom_parallel.gitlab-ci.yml"
238
265
  - ".gitlab/ci/jobs/decomposition_multiple_db.gitlab-ci.yml"
@@ -311,6 +338,7 @@ files:
311
338
  - gitlab-qa.gemspec
312
339
  - lib/gitlab/qa.rb
313
340
  - lib/gitlab/qa/component/base.rb
341
+ - lib/gitlab/qa/component/chaos.rb
314
342
  - lib/gitlab/qa/component/elasticsearch.rb
315
343
  - lib/gitlab/qa/component/gitlab.rb
316
344
  - lib/gitlab/qa/component/jira.rb
@@ -383,6 +411,7 @@ files:
383
411
  - lib/gitlab/qa/scenario/test/instance/staging_geo.rb
384
412
  - lib/gitlab/qa/scenario/test/instance/staging_ref.rb
385
413
  - lib/gitlab/qa/scenario/test/instance/staging_ref_geo.rb
414
+ - lib/gitlab/qa/scenario/test/integration/chaos.rb
386
415
  - lib/gitlab/qa/scenario/test/integration/client_ssl.rb
387
416
  - lib/gitlab/qa/scenario/test/integration/elasticsearch.rb
388
417
  - lib/gitlab/qa/scenario/test/integration/geo.rb