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 +4 -4
- data/.gitlab/ci/jobs/chaos.gitlab-ci.yml +22 -0
- data/.gitlab/ci/jobs/sanity_framework.gitlab-ci.yml +2 -2
- data/Gemfile.lock +5 -3
- data/bin/expect_exit_code_and_text +1 -1
- data/docs/what_tests_can_be_run.md +27 -0
- data/gitlab-qa.gemspec +3 -2
- data/lib/gitlab/qa/component/chaos.rb +79 -0
- data/lib/gitlab/qa/component/specs.rb +1 -1
- data/lib/gitlab/qa/scenario/test/integration/chaos.rb +39 -0
- data/lib/gitlab/qa/scenario/test/integration/gitaly_cluster.rb +44 -24
- data/lib/gitlab/qa/scenario/test/integration/praefect.rb +5 -5
- data/lib/gitlab/qa/scenario/test/omnibus/update_from_previous.rb +2 -0
- data/lib/gitlab/qa/version.rb +1 -1
- data/scripts/generate-qa-jobs.rb +1 -0
- metadata +38 -9
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: e89c4046779c498fad14fac05a4cc8ab68deb9d4ccb62e8eabaaace6af8be17d
|
4
|
+
data.tar.gz: a0c72ba4f7278b82f59678133578e11f23cb7e39449a82c21ec7beb967a524cc
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
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 "
|
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 "
|
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.
|
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 (
|
9
|
+
rainbow (>= 3, < 4)
|
10
10
|
table_print (= 1.5.7)
|
11
|
-
|
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', '
|
35
|
+
spec.add_runtime_dependency 'rainbow', '>= 3', '< 4'
|
36
36
|
spec.add_runtime_dependency 'table_print', '1.5.7'
|
37
|
-
spec.add_runtime_dependency '
|
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
|
@@ -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
|
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'] = '#{@
|
124
|
+
praefect['database_host'] = '#{@database_addr}';
|
105
125
|
praefect['database_user'] = 'postgres';
|
106
|
-
praefect['database_port'] =
|
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'] = '#{@
|
111
|
-
praefect['database_direct_port'] =
|
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://#{@
|
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://#{@
|
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://#{@
|
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
|
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://#{@
|
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
|
-
'#{@
|
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://#{@
|
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
|
-
'#{@
|
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
|
-
'#{@
|
57
|
-
'#{@
|
58
|
-
'#{@
|
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
|
data/lib/gitlab/qa/version.rb
CHANGED
data/scripts/generate-qa-jobs.rb
CHANGED
@@ -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.
|
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
|
+
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:
|
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
|
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:
|
216
|
+
name: toxiproxy
|
211
217
|
requirement: !ruby/object:Gem::Requirement
|
212
218
|
requirements:
|
213
219
|
- - "~>"
|
214
220
|
- !ruby/object:Gem::Version
|
215
|
-
version:
|
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:
|
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
|