gitlab-qa 15.9.0 → 15.10.1
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.yml +0 -1
- data/Gemfile.lock +48 -56
- data/docs/configuring_omnibus.md +5 -5
- data/docs/what_tests_can_be_run.md +4 -58
- data/gitlab-qa.gemspec +1 -1
- data/lib/gitlab/qa/component/{minio.rb → silo.rb} +10 -11
- data/lib/gitlab/qa/runtime/omnibus_configurations/object_storage.rb +6 -6
- data/lib/gitlab/qa/version.rb +1 -1
- data/support/setup/gitlab_duo_setup.rb +3 -10
- metadata +5 -7
- data/lib/gitlab/qa/component/chaos.rb +0 -76
- data/lib/gitlab/qa/scenario/test/integration/chaos.rb +0 -39
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: e921902d91ded31ce0003274106b20236f6b71231508fe4236ae926cbae8db26
|
|
4
|
+
data.tar.gz: 23e8702dd725cd0f8cbd3d2105da4b5f6799f9eac1a19093f3d0c277cd957385
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: c599a048d4937a6f01c0b5a469f59c2377ead8e85cf301f8d2332efafdbc076779fd245afa74bd6b073fb8e9bd2a87e59c37c0a579e68d6461a509b4bffd6813
|
|
7
|
+
data.tar.gz: 55c98ba9302e97e8c2d1b4f269fe81d0de926be93840cb9b0b0c04389c8d3f8e632c3001eecb2de57060d41ad3e447c5fc81f53aeb75303cb9ec3739ae72255b
|
data/.gitlab-ci.yml
CHANGED
data/Gemfile.lock
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
PATH
|
|
2
2
|
remote: .
|
|
3
3
|
specs:
|
|
4
|
-
gitlab-qa (15.
|
|
4
|
+
gitlab-qa (15.10.1)
|
|
5
5
|
activesupport (>= 6.1, < 8)
|
|
6
6
|
ffi (~> 1.17)
|
|
7
7
|
gitlab (~> 4.19)
|
|
@@ -26,8 +26,8 @@ GEM
|
|
|
26
26
|
minitest (>= 5.1)
|
|
27
27
|
securerandom (>= 0.3)
|
|
28
28
|
tzinfo (~> 2.0, >= 2.0.5)
|
|
29
|
-
addressable (2.
|
|
30
|
-
public_suffix (>= 2.0.2, <
|
|
29
|
+
addressable (2.9.0)
|
|
30
|
+
public_suffix (>= 2.0.2, < 8.0)
|
|
31
31
|
ast (2.4.2)
|
|
32
32
|
backport (1.2.0)
|
|
33
33
|
base64 (0.3.0)
|
|
@@ -42,25 +42,27 @@ GEM
|
|
|
42
42
|
climate_control (1.0.1)
|
|
43
43
|
coderay (1.1.3)
|
|
44
44
|
colored2 (3.1.2)
|
|
45
|
-
concurrent-ruby (1.3.
|
|
45
|
+
concurrent-ruby (1.3.8)
|
|
46
46
|
connection_pool (2.5.4)
|
|
47
47
|
cork (0.3.0)
|
|
48
48
|
colored2 (~> 3.1)
|
|
49
49
|
crack (0.4.5)
|
|
50
50
|
rexml
|
|
51
|
-
|
|
51
|
+
csv (3.3.6)
|
|
52
|
+
danger (9.6.1)
|
|
53
|
+
base64 (~> 0.2)
|
|
52
54
|
claide (~> 1.0)
|
|
53
55
|
claide-plugins (>= 0.9.2)
|
|
54
|
-
colored2 (
|
|
56
|
+
colored2 (>= 3.1, < 5)
|
|
55
57
|
cork (~> 0.1)
|
|
56
|
-
faraday (>= 0.9.0, <
|
|
58
|
+
faraday (>= 0.9.0, < 3.0)
|
|
57
59
|
faraday-http-cache (~> 2.0)
|
|
58
|
-
git (
|
|
59
|
-
kramdown (
|
|
60
|
+
git (>= 1.13)
|
|
61
|
+
kramdown (>= 2.5.1, < 3.0)
|
|
60
62
|
kramdown-parser-gfm (~> 1.0)
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
terminal-table (>= 1, <
|
|
63
|
+
octokit (>= 4.0)
|
|
64
|
+
pstore (~> 0.1)
|
|
65
|
+
terminal-table (>= 1, < 5)
|
|
64
66
|
danger-gitlab (8.0.0)
|
|
65
67
|
danger
|
|
66
68
|
gitlab (~> 4.2, >= 4.2.0)
|
|
@@ -70,37 +72,22 @@ GEM
|
|
|
70
72
|
unf (>= 0.0.5, < 1.0.0)
|
|
71
73
|
drb (2.2.3)
|
|
72
74
|
e2mmap (0.1.0)
|
|
73
|
-
faraday (
|
|
74
|
-
faraday-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
faraday-httpclient (~> 1.0)
|
|
78
|
-
faraday-multipart (~> 1.0)
|
|
79
|
-
faraday-net_http (~> 1.0)
|
|
80
|
-
faraday-net_http_persistent (~> 1.0)
|
|
81
|
-
faraday-patron (~> 1.0)
|
|
82
|
-
faraday-rack (~> 1.0)
|
|
83
|
-
faraday-retry (~> 1.0)
|
|
84
|
-
ruby2_keywords (>= 0.0.4)
|
|
85
|
-
faraday-em_http (1.0.0)
|
|
86
|
-
faraday-em_synchrony (1.0.0)
|
|
87
|
-
faraday-excon (1.1.0)
|
|
75
|
+
faraday (2.14.4)
|
|
76
|
+
faraday-net_http (>= 2.0, < 3.5)
|
|
77
|
+
json
|
|
78
|
+
logger
|
|
88
79
|
faraday-http-cache (2.4.1)
|
|
89
80
|
faraday (>= 0.8)
|
|
90
|
-
faraday-
|
|
91
|
-
|
|
92
|
-
multipart-post (~> 2)
|
|
93
|
-
faraday-net_http (1.0.1)
|
|
94
|
-
faraday-net_http_persistent (1.2.0)
|
|
95
|
-
faraday-patron (1.0.0)
|
|
96
|
-
faraday-rack (1.0.0)
|
|
97
|
-
faraday-retry (1.0.3)
|
|
81
|
+
faraday-net_http (3.4.4)
|
|
82
|
+
net-http (~> 0.5)
|
|
98
83
|
ffi (1.17.0)
|
|
99
84
|
ffi-compiler (1.0.1)
|
|
100
85
|
ffi (>= 1.0.0)
|
|
101
86
|
rake
|
|
102
|
-
git (
|
|
87
|
+
git (2.3.3)
|
|
88
|
+
activesupport (>= 5.0)
|
|
103
89
|
addressable (~> 2.8)
|
|
90
|
+
process_executer (~> 1.1)
|
|
104
91
|
rchardet (~> 1.8)
|
|
105
92
|
gitlab (4.19.0)
|
|
106
93
|
httparty (~> 0.20)
|
|
@@ -123,15 +110,16 @@ GEM
|
|
|
123
110
|
http-cookie (1.0.5)
|
|
124
111
|
domain_name (~> 0.5)
|
|
125
112
|
http-form_data (2.3.0)
|
|
126
|
-
httparty (0.
|
|
127
|
-
|
|
113
|
+
httparty (0.24.3)
|
|
114
|
+
csv
|
|
115
|
+
mini_mime (>= 1.0.0)
|
|
128
116
|
multi_xml (>= 0.5.2)
|
|
129
117
|
i18n (1.14.7)
|
|
130
118
|
concurrent-ruby (~> 1.0)
|
|
131
119
|
jaro_winkler (1.5.6)
|
|
132
120
|
json (2.6.3)
|
|
133
|
-
kramdown (2.
|
|
134
|
-
rexml
|
|
121
|
+
kramdown (2.5.2)
|
|
122
|
+
rexml (>= 3.4.4)
|
|
135
123
|
kramdown-parser-gfm (1.1.0)
|
|
136
124
|
kramdown (~> 2.0)
|
|
137
125
|
lefthook (1.2.6)
|
|
@@ -140,17 +128,18 @@ GEM
|
|
|
140
128
|
rake (~> 13.0)
|
|
141
129
|
logger (1.7.0)
|
|
142
130
|
method_source (1.0.0)
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
mime-types-data (3.2022.0105)
|
|
146
|
-
mini_portile2 (2.8.0)
|
|
131
|
+
mini_mime (1.1.5)
|
|
132
|
+
mini_portile2 (2.8.9)
|
|
147
133
|
minitest (5.26.1)
|
|
148
134
|
multi_xml (0.6.0)
|
|
149
|
-
multipart-post (2.2.3)
|
|
150
135
|
nap (1.1.0)
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
136
|
+
net-http (0.10.0)
|
|
137
|
+
net-protocol (>= 0.3.0)
|
|
138
|
+
uri (>= 0.11.1)
|
|
139
|
+
net-protocol (0.4.0)
|
|
140
|
+
timeout
|
|
141
|
+
nokogiri (1.17.2)
|
|
142
|
+
mini_portile2 (~> 2.8.2)
|
|
154
143
|
racc (~> 1.4)
|
|
155
144
|
octokit (5.6.1)
|
|
156
145
|
faraday (>= 1, < 3)
|
|
@@ -159,23 +148,25 @@ GEM
|
|
|
159
148
|
parallel (1.22.1)
|
|
160
149
|
parser (3.2.2.1)
|
|
161
150
|
ast (~> 2.4.1)
|
|
151
|
+
process_executer (1.1.2)
|
|
162
152
|
pry (0.14.1)
|
|
163
153
|
coderay (~> 1.1)
|
|
164
154
|
method_source (~> 1.0)
|
|
165
155
|
pry-byebug (3.10.1)
|
|
166
156
|
byebug (~> 11.0)
|
|
167
157
|
pry (>= 0.13, < 0.15)
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
158
|
+
pstore (0.2.1)
|
|
159
|
+
public_suffix (6.0.2)
|
|
160
|
+
racc (1.8.1)
|
|
161
|
+
rack (3.2.7)
|
|
171
162
|
rainbow (3.1.1)
|
|
172
163
|
rake (13.0.6)
|
|
173
164
|
rbs (2.8.4)
|
|
174
|
-
rchardet (1.
|
|
165
|
+
rchardet (1.10.2)
|
|
175
166
|
regexp_parser (2.6.1)
|
|
176
167
|
reverse_markdown (2.1.1)
|
|
177
168
|
nokogiri
|
|
178
|
-
rexml (3.
|
|
169
|
+
rexml (3.4.4)
|
|
179
170
|
rspec (3.13.0)
|
|
180
171
|
rspec-core (~> 3.13.0)
|
|
181
172
|
rspec-expectations (~> 3.13.0)
|
|
@@ -219,7 +210,6 @@ GEM
|
|
|
219
210
|
rubocop-capybara (~> 2.17)
|
|
220
211
|
rubocop-factory_bot (~> 2.22)
|
|
221
212
|
ruby-progressbar (1.11.0)
|
|
222
|
-
ruby2_keywords (0.0.5)
|
|
223
213
|
sawyer (0.9.2)
|
|
224
214
|
addressable (>= 2.3.5)
|
|
225
215
|
faraday (>= 0.17.3, < 3)
|
|
@@ -228,7 +218,7 @@ GEM
|
|
|
228
218
|
docile (~> 1.1)
|
|
229
219
|
simplecov-html (~> 0.11)
|
|
230
220
|
simplecov_json_formatter (~> 0.1)
|
|
231
|
-
simplecov-cobertura (2.
|
|
221
|
+
simplecov-cobertura (3.2.0)
|
|
232
222
|
rexml
|
|
233
223
|
simplecov (~> 0.19)
|
|
234
224
|
simplecov-html (0.12.3)
|
|
@@ -255,12 +245,14 @@ GEM
|
|
|
255
245
|
thor (1.2.1)
|
|
256
246
|
tilt (2.0.11)
|
|
257
247
|
timecop (0.9.6)
|
|
248
|
+
timeout (0.6.1)
|
|
258
249
|
tzinfo (2.0.6)
|
|
259
250
|
concurrent-ruby (~> 1.0)
|
|
260
251
|
unf (0.1.4)
|
|
261
252
|
unf_ext
|
|
262
253
|
unf_ext (0.0.8.2)
|
|
263
254
|
unicode-display_width (2.4.2)
|
|
255
|
+
uri (1.1.2)
|
|
264
256
|
webmock (3.7.0)
|
|
265
257
|
addressable (>= 2.3.6)
|
|
266
258
|
crack (>= 0.3.2)
|
|
@@ -284,7 +276,7 @@ DEPENDENCIES
|
|
|
284
276
|
rake (~> 13.0)
|
|
285
277
|
rspec (~> 3.13)
|
|
286
278
|
simplecov (~> 0.22)
|
|
287
|
-
simplecov-cobertura (~>
|
|
279
|
+
simplecov-cobertura (~> 3.0)
|
|
288
280
|
solargraph (~> 0.41)
|
|
289
281
|
timecop (~> 0.9.5)
|
|
290
282
|
webmock (= 3.7.0)
|
data/docs/configuring_omnibus.md
CHANGED
|
@@ -137,9 +137,9 @@ Multiple Configurators may be specified and the order will be preserved in which
|
|
|
137
137
|
E.g., given the arguments:
|
|
138
138
|
|
|
139
139
|
```ruby
|
|
140
|
-
exe/gitlab-qa Test::Instance::Image EE --omnibus-config
|
|
140
|
+
exe/gitlab-qa Test::Instance::Image EE --omnibus-config github_oauth,registry_object_storage
|
|
141
141
|
# or
|
|
142
|
-
exe/gitlab-qa Test::Instance::Image EE --omnibus-config
|
|
142
|
+
exe/gitlab-qa Test::Instance::Image EE --omnibus-config github_oauth --omnibus-config registry_object_storage
|
|
143
143
|
```
|
|
144
144
|
|
|
145
145
|
Omnibus will be configured in the order they appear.
|
|
@@ -147,11 +147,11 @@ Omnibus will be configured in the order they appear.
|
|
|
147
147
|
```ruby
|
|
148
148
|
# /etc/gitlab/gitlab.rb
|
|
149
149
|
#=> Runtime::OmnibusConfiguration::Default#configuration
|
|
150
|
-
#=> Runtime::OmnibusConfiguration::
|
|
151
|
-
#=> Runtime::OmnibusConfiguration::
|
|
150
|
+
#=> Runtime::OmnibusConfiguration::GithubOauth#configuration
|
|
151
|
+
#=> Runtime::OmnibusConfiguration::RegistryObjectStorage#configuration
|
|
152
152
|
```
|
|
153
153
|
|
|
154
|
-
The order is also preserved for Sidecar containers. If the `
|
|
154
|
+
The order is also preserved for Sidecar containers. If the `GithubOauth` and `RegistryObjectStorage` Configurators each prepare a sidecar container, they will be spun up in order from first to last.
|
|
155
155
|
|
|
156
156
|
### Adding one-off configurations
|
|
157
157
|
|
|
@@ -636,41 +636,14 @@ $ export QA_1P_PASSWORD=1password_password
|
|
|
636
636
|
$ export QA_1P_SECRET=1password_secret
|
|
637
637
|
$ export QA_1P_GITHUB_UUID=1password_gitlab-qa-github_item_uuid
|
|
638
638
|
|
|
639
|
-
$ gitlab-qa Test::
|
|
639
|
+
$ gitlab-qa Test::Instance::Image CE --omnibus-config github_oauth
|
|
640
640
|
|
|
641
641
|
# For EE
|
|
642
642
|
$ export EE_LICENSE=$(cat /path/to/gitlab_license)
|
|
643
643
|
|
|
644
|
-
$ gitlab-qa Test::
|
|
644
|
+
$ gitlab-qa Test::Instance::Image EE --omnibus-config github_oauth
|
|
645
645
|
```
|
|
646
646
|
|
|
647
|
-
### `Test::Integration::Packages CE|EE|<full image address>`
|
|
648
|
-
|
|
649
|
-
**Note: This Scenario no longer exists. See https://gitlab.com/gitlab-org/gitlab-qa/-/merge_requests/662**
|
|
650
|
-
|
|
651
|
-
To run Packages tests, you may [configure Omnibus](configuring_omnibus.md) to use the [Packages](https://gitlab.com/gitlab-org/gitlab-qa/-/blob/master/lib/gitlab/qa/runtime/omnibus_configurations/packages.rb) configurator.
|
|
652
|
-
|
|
653
|
-
Example:
|
|
654
|
-
|
|
655
|
-
```shell
|
|
656
|
-
$ export EE_LICENSE=$(cat /path/to/Geo.gitlab_license)
|
|
657
|
-
|
|
658
|
-
$ gitlab-qa Test::Instance::Image EE --omnibus-config packages
|
|
659
|
-
```
|
|
660
|
-
|
|
661
|
-
This tests the GitLab Package Registry feature by setting
|
|
662
|
-
`gitlab_rails['packages_enabled'] = true` in the Omnibus configuration
|
|
663
|
-
before starting the GitLab container.
|
|
664
|
-
|
|
665
|
-
To run tests against the GitLab container, a GitLab QA (`gitlab/gitlab-qa`)
|
|
666
|
-
container is spun up and tests are run from it by running the
|
|
667
|
-
`Test::Instance::All` scenario with the `--tag packages` RSpec parameter,
|
|
668
|
-
which runs only the tests with `:packages` metadata.
|
|
669
|
-
|
|
670
|
-
**Required environment variables:**
|
|
671
|
-
|
|
672
|
-
- `EE_LICENSE`: A valid EE license.
|
|
673
|
-
|
|
674
647
|
### `Test::Integration::Praefect CE|EE|<full image address>`
|
|
675
648
|
|
|
676
649
|
This tests [Praefect](https://docs.gitlab.com/ee/administration/gitaly/praefect.html),
|
|
@@ -1046,7 +1019,7 @@ $ gitlab-qa Test::Instance::Airgapped EE -- --tag smoke
|
|
|
1046
1019
|
|
|
1047
1020
|
### `Test::Instance::Image CE|EE|<full image address> --omnibus-config object_storage`
|
|
1048
1021
|
|
|
1049
|
-
This orchestrated scenario runs tests from the test suite against a GitLab instance which has object storage configured instead of using local storage. The omnibus configuration `object_storage` ([configurator](configuring_omnibus.md)), uses
|
|
1022
|
+
This orchestrated scenario runs tests from the test suite against a GitLab instance which has object storage configured instead of using local storage. The omnibus configuration `object_storage` ([configurator](configuring_omnibus.md)), uses [Silo](https://github.com/pgsty/silo) (a MinIO fork) and `object_storage_aws` uses an AWS S3 account with credentials configured in the pipeline as CI Variables. To use Google Cloud Storage pass `--omnibus-config object_storage_gcs`. According to the storage selected it requires:
|
|
1050
1023
|
|
|
1051
1024
|
| Scenario | Variable | Description |
|
|
1052
1025
|
|-----------------------|---------------------|--------------------------------------|
|
|
@@ -1054,7 +1027,7 @@ This orchestrated scenario runs tests from the test suite against a GitLab insta
|
|
|
1054
1027
|
| AWS S3 Object Storage | AWS_S3_KEY_ID | AWS credentials |
|
|
1055
1028
|
| AWS S3 Object Storage | AWS_S3_ACCESS_KEY | AWS credentials |
|
|
1056
1029
|
| AWS S3 Object Storage | AWS_S3_BUCKET_NAME | Name of the bucket set in AWS |
|
|
1057
|
-
| GCP Object Storage | GCS_BUCKET_NAME | Name of the bucket set in
|
|
1030
|
+
| GCP Object Storage | GCS_BUCKET_NAME | Name of the bucket set in GCP |
|
|
1058
1031
|
| GCP Object Storage | GOOGLE_JSON_KEY | JSON key credential |
|
|
1059
1032
|
| GCP Object Storage | GOOGLE_CLIENT_EMAIL | Email address of the service account |
|
|
1060
1033
|
| GCP Object Storage | GOOGLE_PROJECT | GCP project name |
|
|
@@ -1139,33 +1112,6 @@ $ export GITLAB_PASSWORD="$GITLAB_QA_PASSWORD"
|
|
|
1139
1112
|
$ gitlab-qa Test::Instance::Geo EE https://primary.gitlab.com https://secondary.gitlab.com
|
|
1140
1113
|
```
|
|
1141
1114
|
|
|
1142
|
-
### `Test::Instance::Chaos`
|
|
1143
|
-
|
|
1144
|
-
This scenario will run a limited number of tests that are tagged with `:chaos`.
|
|
1145
|
-
|
|
1146
|
-
These tests are designed to verify that our systems can gracefully handle scenarios which may occur if
|
|
1147
|
-
networking or connectivity type issues occur in various Gitlab components.
|
|
1148
|
-
They make use of [toxiproxy](https://github.com/Shopify/toxiproxy) to act as a proxy allowing us to introduce
|
|
1149
|
-
connectivity issues, via the [toxiproxy ruby client](https://github.com/Shopify/toxiproxy-ruby) in an E2E spec.
|
|
1150
|
-
|
|
1151
|
-
Sample Test:
|
|
1152
|
-
|
|
1153
|
-
```ruby
|
|
1154
|
-
context 'when a gitaly node is experiencing high latency' do
|
|
1155
|
-
it 'can create a project' do
|
|
1156
|
-
Toxiproxy[:gitaly1].toxic(:latency, latency: 30000).apply do
|
|
1157
|
-
expect(create_a_project).to be true
|
|
1158
|
-
end
|
|
1159
|
-
end
|
|
1160
|
-
end
|
|
1161
|
-
```
|
|
1162
|
-
|
|
1163
|
-
Example:
|
|
1164
|
-
|
|
1165
|
-
```shell
|
|
1166
|
-
$ gitlab-qa Test::Instance::Chaos
|
|
1167
|
-
```
|
|
1168
|
-
|
|
1169
1115
|
### `Test::Integration::Import`
|
|
1170
1116
|
|
|
1171
1117
|
This scenario will run specs tagged with `:import` tags.
|
data/gitlab-qa.gemspec
CHANGED
|
@@ -36,7 +36,7 @@ Gem::Specification.new do |spec|
|
|
|
36
36
|
spec.add_development_dependency 'rake', '~> 13.0'
|
|
37
37
|
spec.add_development_dependency 'rspec', '~> 3.13'
|
|
38
38
|
spec.add_development_dependency 'simplecov', '~> 0.22'
|
|
39
|
-
spec.add_development_dependency 'simplecov-cobertura', '~>
|
|
39
|
+
spec.add_development_dependency 'simplecov-cobertura', '~> 3.0'
|
|
40
40
|
spec.add_development_dependency 'solargraph', '~> 0.41'
|
|
41
41
|
spec.add_development_dependency 'timecop', '~> 0.9.5'
|
|
42
42
|
spec.add_development_dependency 'webmock', '3.7.0'
|
|
@@ -4,15 +4,16 @@ require 'securerandom'
|
|
|
4
4
|
require 'fileutils'
|
|
5
5
|
require 'yaml'
|
|
6
6
|
|
|
7
|
-
# This component sets up
|
|
8
|
-
#
|
|
7
|
+
# This component sets up Silo (https://github.com/pgsty/silo), a community-maintained
|
|
8
|
+
# MinIO fork, with the proper configuration for GitLab users to use object storage.
|
|
9
|
+
# The public minio/minio Docker images are no longer published.
|
|
9
10
|
module Gitlab
|
|
10
11
|
module QA
|
|
11
12
|
module Component
|
|
12
|
-
class
|
|
13
|
-
DOCKER_IMAGE = '
|
|
13
|
+
class Silo < Base
|
|
14
|
+
DOCKER_IMAGE = 'pgsty/silo'
|
|
14
15
|
DOCKER_IMAGE_TAG = 'latest'
|
|
15
|
-
# These are secrets used in a local
|
|
16
|
+
# These are secrets used in a local Silo container, they're not used for any online S3 server.
|
|
16
17
|
AWS_ACCESS_KEY = 'AKIAIOSFODNN7EXAMPLE'
|
|
17
18
|
AWS_SECRET_KEY = 'wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY'
|
|
18
19
|
DATA_DIR = '/data'
|
|
@@ -47,11 +48,11 @@ module Gitlab
|
|
|
47
48
|
def host_data_dir
|
|
48
49
|
base_dir = ENV['CI_PROJECT_DIR'] || '/tmp'
|
|
49
50
|
|
|
50
|
-
File.join(base_dir, '
|
|
51
|
+
File.join(base_dir, 'silo')
|
|
51
52
|
end
|
|
52
53
|
|
|
53
54
|
def name
|
|
54
|
-
@name ||= "
|
|
55
|
+
@name ||= "silo-#{SecureRandom.hex(4)}"
|
|
55
56
|
end
|
|
56
57
|
|
|
57
58
|
def port
|
|
@@ -64,15 +65,13 @@ module Gitlab
|
|
|
64
65
|
FileUtils.mkdir_p(host_data_dir)
|
|
65
66
|
|
|
66
67
|
@buckets.each do |bucket|
|
|
67
|
-
Runtime::Logger.info("Creating
|
|
68
|
+
Runtime::Logger.info("Creating Silo bucket: #{bucket}")
|
|
68
69
|
FileUtils.mkdir_p(File.join(host_data_dir, bucket))
|
|
69
70
|
end
|
|
70
71
|
end
|
|
71
72
|
|
|
72
73
|
def start # rubocop:disable Metrics/AbcSize
|
|
73
|
-
|
|
74
|
-
# is resolved
|
|
75
|
-
docker.run(image: image, tag: tag, args: ["server", "--compat", DATA_DIR]) do |command|
|
|
74
|
+
docker.run(image: image, tag: tag, args: ["server", DATA_DIR]) do |command|
|
|
76
75
|
command << '-d '
|
|
77
76
|
command << "--name #{name}"
|
|
78
77
|
command << "--net #{network}"
|
|
@@ -16,18 +16,18 @@ module Gitlab
|
|
|
16
16
|
config << <<~OMNIBUS
|
|
17
17
|
gitlab_rails['object_store']['enabled'] = true
|
|
18
18
|
gitlab_rails['object_store']['proxy_download'] = true
|
|
19
|
-
gitlab_rails['object_store']['connection'] = #{
|
|
19
|
+
gitlab_rails['object_store']['connection'] = #{silo.to_config}
|
|
20
20
|
OMNIBUS
|
|
21
21
|
end
|
|
22
22
|
|
|
23
23
|
def prepare
|
|
24
|
-
|
|
24
|
+
silo.network = Runtime::Env.docker_network
|
|
25
25
|
|
|
26
26
|
TYPES.each do |bucket_name|
|
|
27
|
-
|
|
27
|
+
silo.add_bucket("#{bucket_name}-bucket")
|
|
28
28
|
end
|
|
29
29
|
|
|
30
|
-
|
|
30
|
+
silo
|
|
31
31
|
end
|
|
32
32
|
|
|
33
33
|
def exec_commands
|
|
@@ -36,8 +36,8 @@ module Gitlab
|
|
|
36
36
|
|
|
37
37
|
private
|
|
38
38
|
|
|
39
|
-
def
|
|
40
|
-
@
|
|
39
|
+
def silo
|
|
40
|
+
@silo ||= Component::Silo.new
|
|
41
41
|
end
|
|
42
42
|
end
|
|
43
43
|
end
|
data/lib/gitlab/qa/version.rb
CHANGED
|
@@ -83,20 +83,13 @@ class GitlabDuoSetup
|
|
|
83
83
|
ENV.fetch(key, default) == 'true'
|
|
84
84
|
end
|
|
85
85
|
|
|
86
|
-
|
|
87
|
-
GitlabSubscriptions::AddOnPurchase.find_by(add_on: add_on)
|
|
88
|
-
end
|
|
89
|
-
|
|
86
|
+
# AddOnPurchase#add_on is no longer an ActiveRecord association, so query through the model's scopes
|
|
90
87
|
def duo_pro_add_on
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
find_add_on_purchase(add_on: GitlabSubscriptions::AddOn.code_suggestions.last)
|
|
88
|
+
GitlabSubscriptions::AddOnPurchase.for_gitlab_duo_pro.last
|
|
94
89
|
end
|
|
95
90
|
|
|
96
91
|
def duo_enterprise_add_on
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
find_add_on_purchase(add_on: GitlabSubscriptions::AddOn.duo_enterprise.last)
|
|
92
|
+
GitlabSubscriptions::AddOnPurchase.for_duo_enterprise.last
|
|
100
93
|
end
|
|
101
94
|
|
|
102
95
|
def admin
|
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: 15.
|
|
4
|
+
version: 15.10.1
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- GitLab Quality
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: exe
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2026-
|
|
11
|
+
date: 2026-10-27 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: climate_control
|
|
@@ -142,14 +142,14 @@ dependencies:
|
|
|
142
142
|
requirements:
|
|
143
143
|
- - "~>"
|
|
144
144
|
- !ruby/object:Gem::Version
|
|
145
|
-
version: '
|
|
145
|
+
version: '3.0'
|
|
146
146
|
type: :development
|
|
147
147
|
prerelease: false
|
|
148
148
|
version_requirements: !ruby/object:Gem::Requirement
|
|
149
149
|
requirements:
|
|
150
150
|
- - "~>"
|
|
151
151
|
- !ruby/object:Gem::Version
|
|
152
|
-
version: '
|
|
152
|
+
version: '3.0'
|
|
153
153
|
- !ruby/object:Gem::Dependency
|
|
154
154
|
name: solargraph
|
|
155
155
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -402,7 +402,6 @@ files:
|
|
|
402
402
|
- lib/gitlab/qa/component/ai_gateway.rb
|
|
403
403
|
- lib/gitlab/qa/component/alpine.rb
|
|
404
404
|
- lib/gitlab/qa/component/base.rb
|
|
405
|
-
- lib/gitlab/qa/component/chaos.rb
|
|
406
405
|
- lib/gitlab/qa/component/duo_workflow_service.rb
|
|
407
406
|
- lib/gitlab/qa/component/elasticsearch.rb
|
|
408
407
|
- lib/gitlab/qa/component/gitaly.rb
|
|
@@ -412,7 +411,6 @@ files:
|
|
|
412
411
|
- lib/gitlab/qa/component/ldap.rb
|
|
413
412
|
- lib/gitlab/qa/component/license_ops.rb
|
|
414
413
|
- lib/gitlab/qa/component/mail_hog.rb
|
|
415
|
-
- lib/gitlab/qa/component/minio.rb
|
|
416
414
|
- lib/gitlab/qa/component/mock_server.rb
|
|
417
415
|
- lib/gitlab/qa/component/opensearch.rb
|
|
418
416
|
- lib/gitlab/qa/component/pipeline_ops.rb
|
|
@@ -425,6 +423,7 @@ files:
|
|
|
425
423
|
- lib/gitlab/qa/component/runner_ops.rb
|
|
426
424
|
- lib/gitlab/qa/component/saml.rb
|
|
427
425
|
- lib/gitlab/qa/component/selenoid.rb
|
|
426
|
+
- lib/gitlab/qa/component/silo.rb
|
|
428
427
|
- lib/gitlab/qa/component/specs.rb
|
|
429
428
|
- lib/gitlab/qa/component/staging.rb
|
|
430
429
|
- lib/gitlab/qa/component/staging_ref.rb
|
|
@@ -468,7 +467,6 @@ files:
|
|
|
468
467
|
- lib/gitlab/qa/scenario/test/integration/ai_gateway_no_add_on.rb
|
|
469
468
|
- lib/gitlab/qa/scenario/test/integration/ai_gateway_no_license.rb
|
|
470
469
|
- lib/gitlab/qa/scenario/test/integration/ai_gateway_no_seat_assigned.rb
|
|
471
|
-
- lib/gitlab/qa/scenario/test/integration/chaos.rb
|
|
472
470
|
- lib/gitlab/qa/scenario/test/integration/client_ssl.rb
|
|
473
471
|
- lib/gitlab/qa/scenario/test/integration/continuous_vulnerability_scanning.rb
|
|
474
472
|
- lib/gitlab/qa/scenario/test/integration/duo_agent_platform.rb
|
|
@@ -1,76 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
require 'json'
|
|
4
|
-
|
|
5
|
-
module Gitlab
|
|
6
|
-
module QA
|
|
7
|
-
module Component
|
|
8
|
-
class Chaos < Base
|
|
9
|
-
DOCKER_IMAGE = 'ghcr.io/shopify/toxiproxy'
|
|
10
|
-
DOCKER_IMAGE_TAG = '2.5.0'
|
|
11
|
-
|
|
12
|
-
def initialize
|
|
13
|
-
super
|
|
14
|
-
@network = Runtime::Env.docker_network
|
|
15
|
-
end
|
|
16
|
-
|
|
17
|
-
def name
|
|
18
|
-
@name ||= "chaos"
|
|
19
|
-
end
|
|
20
|
-
|
|
21
|
-
def start
|
|
22
|
-
prepare
|
|
23
|
-
docker.run(image: image, tag: tag) do |command|
|
|
24
|
-
command << '-d '
|
|
25
|
-
command << "--name #{name}"
|
|
26
|
-
command << "--network #{@network}"
|
|
27
|
-
command << "--publish 8474:8474"
|
|
28
|
-
end
|
|
29
|
-
|
|
30
|
-
QA::Support::Shellout.shell <<~CMD
|
|
31
|
-
docker run --network #{@network} --rm curlimages/curl:7.85.0 \
|
|
32
|
-
-i -s \
|
|
33
|
-
-X POST http://#{name}:8474/populate \
|
|
34
|
-
-H 'Content-Type: application/json' \
|
|
35
|
-
-d '#{proxies.to_json}'
|
|
36
|
-
CMD
|
|
37
|
-
end
|
|
38
|
-
|
|
39
|
-
def proxies
|
|
40
|
-
[
|
|
41
|
-
{
|
|
42
|
-
name: "postgres",
|
|
43
|
-
listen: "[::]:5432",
|
|
44
|
-
upstream: "postgres.test:5432",
|
|
45
|
-
enabled: true
|
|
46
|
-
},
|
|
47
|
-
{
|
|
48
|
-
name: "praefect",
|
|
49
|
-
listen: "[::]:2305",
|
|
50
|
-
upstream: "praefect.test:2305",
|
|
51
|
-
enabled: true
|
|
52
|
-
},
|
|
53
|
-
{
|
|
54
|
-
name: "gitaly1",
|
|
55
|
-
listen: "[::]:8076",
|
|
56
|
-
upstream: "gitaly1.test:8076",
|
|
57
|
-
enabled: true
|
|
58
|
-
},
|
|
59
|
-
{
|
|
60
|
-
name: "gitaly2",
|
|
61
|
-
listen: "[::]:8077",
|
|
62
|
-
upstream: "gitaly2.test:8077",
|
|
63
|
-
enabled: true
|
|
64
|
-
},
|
|
65
|
-
{
|
|
66
|
-
name: "gitaly3",
|
|
67
|
-
listen: "[::]:8078",
|
|
68
|
-
upstream: "gitaly3.test:8078",
|
|
69
|
-
enabled: true
|
|
70
|
-
}
|
|
71
|
-
]
|
|
72
|
-
end
|
|
73
|
-
end
|
|
74
|
-
end
|
|
75
|
-
end
|
|
76
|
-
end
|
|
@@ -1,39 +0,0 @@
|
|
|
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
|