blob: 15b53d1716b082f2b13ae234e83d3fc6c25cf58c [file] [log] [blame]
Yong Nib2e4bfa2017-05-09 18:12:10 -07001#!/usr/bin/env python2.7
Jan Tattermusch7897ae92017-06-07 22:57:36 +02002# Copyright 2017 gRPC authors.
Yong Nib2e4bfa2017-05-09 18:12:10 -07003#
Jan Tattermusch7897ae92017-06-07 22:57:36 +02004# Licensed under the Apache License, Version 2.0 (the "License");
5# you may not use this file except in compliance with the License.
6# You may obtain a copy of the License at
Yong Nib2e4bfa2017-05-09 18:12:10 -07007#
Jan Tattermusch7897ae92017-06-07 22:57:36 +02008# http://www.apache.org/licenses/LICENSE-2.0
Yong Nib2e4bfa2017-05-09 18:12:10 -07009#
Jan Tattermusch7897ae92017-06-07 22:57:36 +020010# Unless required by applicable law or agreed to in writing, software
11# distributed under the License is distributed on an "AS IS" BASIS,
12# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13# See the License for the specific language governing permissions and
14# limitations under the License.
Yong Nib2e4bfa2017-05-09 18:12:10 -070015
16# Dictionaries used for client matrix testing.
17
ncteisene4bef082017-12-11 16:51:34 -080018
Yong Nib2e4bfa2017-05-09 18:12:10 -070019def get_github_repo(lang):
ncteisene4bef082017-12-11 16:51:34 -080020 return {
Jakob Roland Andersen3ebfe922018-03-06 16:39:27 +010021 'dart': 'https://github.com/grpc/grpc-dart.git',
Eric Gribkoffca455542018-02-15 15:24:17 -080022 'go': 'https://github.com/grpc/grpc-go.git',
23 'java': 'https://github.com/grpc/grpc-java.git',
24 'node': 'https://github.com/grpc/grpc-node.git',
ncteisene4bef082017-12-11 16:51:34 -080025 # all other languages use the grpc.git repo.
Mehrdad Afshari2de11952018-02-12 13:08:16 -080026 }.get(lang, 'https://github.com/grpc/grpc.git')
ncteisene4bef082017-12-11 16:51:34 -080027
Yong Nib2e4bfa2017-05-09 18:12:10 -070028
Alex Polcyn84263292017-11-15 00:32:50 +000029def get_release_tags(lang):
ncteisene4bef082017-12-11 16:51:34 -080030 return map(lambda r: get_release_tag_name(r), LANG_RELEASE_MATRIX[lang])
31
Alex Polcyn84263292017-11-15 00:32:50 +000032
33def get_release_tag_name(release_info):
ncteisene4bef082017-12-11 16:51:34 -080034 assert len(release_info.keys()) == 1
35 return release_info.keys()[0]
36
Alex Polcyn84263292017-11-15 00:32:50 +000037
38def should_build_docker_interop_image_from_release_tag(lang):
ncteisene4bef082017-12-11 16:51:34 -080039 if lang in ['go', 'java', 'node']:
40 return False
41 return True
42
Alex Polcyn84263292017-11-15 00:32:50 +000043
Yong Nib2e4bfa2017-05-09 18:12:10 -070044# Dictionary of runtimes per language
45LANG_RUNTIME_MATRIX = {
ncteisene4bef082017-12-11 16:51:34 -080046 'cxx': ['cxx'], # This is actually debian8.
Yong Nib2e4bfa2017-05-09 18:12:10 -070047 'go': ['go1.7', 'go1.8'],
Yong Nib92813b2017-05-31 12:07:09 -070048 'java': ['java_oracle8'],
Adele Zhoua00f9722017-11-15 15:12:02 -080049 'python': ['python'],
Adele Zhoubcd23cd2017-11-01 15:42:00 -070050 'node': ['node'],
Adele Zhou1487c9f2017-10-26 17:59:18 -070051 'ruby': ['ruby'],
Adele Zhou9fe79dc2017-11-02 14:08:29 -070052 'php': ['php', 'php7'],
Adele Zhouf7f38d12017-11-02 17:57:54 -070053 'csharp': ['csharp', 'csharpcoreclr'],
Yong Nib2e4bfa2017-05-09 18:12:10 -070054}
55
56# Dictionary of releases per language. For each language, we need to provide
Yong Nibbd348c2017-07-18 08:38:11 -070057# a release tag pointing to the latest build of the branch.
Yong Nib2e4bfa2017-05-09 18:12:10 -070058LANG_RELEASE_MATRIX = {
Yong Nibbd348c2017-07-18 08:38:11 -070059 'cxx': [
ncteisene4bef082017-12-11 16:51:34 -080060 {
61 'v1.0.1': None
62 },
63 {
64 'v1.1.4': None
65 },
66 {
67 'v1.2.5': None
68 },
69 {
70 'v1.3.9': None
71 },
72 {
73 'v1.4.2': None
74 },
75 {
76 'v1.6.6': None
77 },
78 {
79 'v1.7.2': None
80 },
Mehrdad Afsharia3cd72b2017-12-12 19:06:53 -080081 {
82 'v1.8.0': None
83 },
Mehrdad Afshari2de11952018-02-12 13:08:16 -080084 {
85 'v1.9.1': None
86 },
Mehrdad Afsharibaefff22018-03-21 21:28:13 -070087 {
Mehrdad Afshari979d1be2018-05-22 14:10:15 -070088 'v1.10.1': None
Mehrdad Afsharibaefff22018-03-21 21:28:13 -070089 },
Mehrdad Afshari3d0aab02018-04-18 20:04:33 -040090 {
Mehrdad Afshari979d1be2018-05-22 14:10:15 -070091 'v1.11.1': None
92 },
93 {
94 'v1.12.0': None
Mehrdad Afshari3d0aab02018-04-18 20:04:33 -040095 },
Srini Polavarapu98bf1a52018-06-28 16:54:33 -070096 {
97 'v1.13.0': None
98 },
Srini Polavarapu428c2572018-08-03 16:13:49 -070099 {
Srini Polavarapufc0b3072018-08-09 13:39:23 -0700100 'v1.14.1': None
Srini Polavarapu428c2572018-08-03 16:13:49 -0700101 },
Juanli Shen268733b2018-09-17 16:28:39 -0700102 {
103 'v1.15.0': None
104 },
Yong Nibbd348c2017-07-18 08:38:11 -0700105 ],
106 'go': [
ncteisene4bef082017-12-11 16:51:34 -0800107 {
108 'v1.0.5': None
109 },
110 {
111 'v1.2.1': None
112 },
113 {
114 'v1.3.0': None
115 },
116 {
117 'v1.4.2': None
118 },
119 {
120 'v1.5.2': None
121 },
122 {
123 'v1.6.0': None
124 },
125 {
126 'v1.7.4': None
127 },
128 {
Menghan Li5bbf9e52017-12-12 16:50:39 -0800129 'v1.8.2': None
ncteisene4bef082017-12-11 16:51:34 -0800130 },
Menghan Li2146b3a2018-01-04 14:57:27 -0800131 {
Menghan Li63efbc62018-01-19 13:19:39 -0800132 'v1.9.2': None
Menghan Li2146b3a2018-01-04 14:57:27 -0800133 },
Menghan Liea1fefe2018-02-15 15:22:31 -0800134 {
Doug Fawley9205bef2018-03-30 08:58:01 -0700135 'v1.10.1': None
Menghan Liea1fefe2018-02-15 15:22:31 -0800136 },
Menghan Li8ba39a92018-03-27 15:06:47 -0700137 {
Menghan Lie0ecd1d2018-04-04 14:52:37 -0700138 'v1.11.3': None
Menghan Li8ba39a92018-03-27 15:06:47 -0700139 },
Yuxuan Li39637d82018-05-08 15:27:27 -0700140 {
141 'v1.12.0': None
142 },
Yong Nibbd348c2017-07-18 08:38:11 -0700143 ],
144 'java': [
ncteisene4bef082017-12-11 16:51:34 -0800145 {
146 'v1.0.3': None
147 },
148 {
149 'v1.1.2': None
150 },
151 {
152 'v1.2.0': None
153 },
154 {
155 'v1.3.1': None
156 },
157 {
158 'v1.4.0': None
159 },
160 {
161 'v1.5.0': None
162 },
163 {
164 'v1.6.1': None
165 },
166 {
167 'v1.7.0': None
168 },
169 {
170 'v1.8.0': None
171 },
Kun Zhang07fb6b52018-01-11 14:27:25 -0800172 {
Eric Anderson540a1042018-02-09 16:28:16 -0800173 'v1.9.1': None
Kun Zhang07fb6b52018-01-11 14:27:25 -0800174 },
Eric Gribkoff6dc65d92018-02-15 15:37:19 -0800175 {
Eric Gribkoff2fd31eb2018-03-23 15:10:46 -0700176 'v1.10.1': None
Eric Gribkoff6dc65d92018-02-15 15:37:19 -0800177 },
Eric Anderson6ebafda2018-03-29 10:47:17 -0700178 {
179 'v1.11.0': None
180 },
Spencer Fang7d1009b2018-05-15 16:29:23 -0700181 {
182 'v1.12.0': None
183 },
ZHANG Dapeng4f0a4e92018-06-18 10:31:02 -0700184 {
ZHANG Dapengb607f712018-06-20 17:45:35 -0700185 'v1.13.1': None
ZHANG Dapeng4f0a4e92018-06-18 10:31:02 -0700186 },
Carl Mastrangelo5eb69622018-07-30 16:11:01 -0700187 {
188 'v1.14.0': None
189 },
Kun Zhang71e0ca92018-09-10 15:22:11 -0700190 {
191 'v1.15.0': None
192 },
Yong Nibbd348c2017-07-18 08:38:11 -0700193 ],
Adele Zhoua00f9722017-11-15 15:12:02 -0800194 'python': [
ncteisene4bef082017-12-11 16:51:34 -0800195 {
196 'v1.0.x': None
197 },
198 {
199 'v1.1.4': None
200 },
201 {
202 'v1.2.5': None
203 },
204 {
205 'v1.3.9': None
206 },
207 {
208 'v1.4.2': None
209 },
210 {
211 'v1.6.6': None
212 },
213 {
214 'v1.7.2': None
215 },
Mehrdad Afsharia3cd72b2017-12-12 19:06:53 -0800216 {
217 'v1.8.1': None # first python 1.8 release is 1.8.1
218 },
Mehrdad Afshari2de11952018-02-12 13:08:16 -0800219 {
220 'v1.9.1': None
221 },
Mehrdad Afsharibaefff22018-03-21 21:28:13 -0700222 {
Mehrdad Afshari979d1be2018-05-22 14:10:15 -0700223 'v1.10.1': None
Mehrdad Afsharibaefff22018-03-21 21:28:13 -0700224 },
Mehrdad Afshari3d0aab02018-04-18 20:04:33 -0400225 {
Mehrdad Afshari979d1be2018-05-22 14:10:15 -0700226 'v1.11.1': None
227 },
228 {
229 'v1.12.0': None
Mehrdad Afshari3d0aab02018-04-18 20:04:33 -0400230 },
Srini Polavarapu98bf1a52018-06-28 16:54:33 -0700231 {
232 'v1.13.0': None
233 },
Srini Polavarapu428c2572018-08-03 16:13:49 -0700234 {
Srini Polavarapufc0b3072018-08-09 13:39:23 -0700235 'v1.14.1': None
Srini Polavarapu428c2572018-08-03 16:13:49 -0700236 },
Juanli Shen268733b2018-09-17 16:28:39 -0700237 {
238 'v1.15.0': None
239 },
Adele Zhou4fba3782017-11-14 17:43:37 -0800240 ],
Adele Zhou1487c9f2017-10-26 17:59:18 -0700241 'node': [
murgatroid99993769d2018-03-16 12:11:59 -0700242 {
243 'v1.0.1': None
244 },
Adele Zhou0e702232018-03-21 13:37:47 -0700245 {
246 'v1.1.4': None
247 },
248 {
249 'v1.2.5': None
250 },
251 {
252 'v1.3.9': None
253 },
254 {
255 'v1.4.2': None
256 },
257 {
258 'v1.6.6': None
259 },
Adele Zhou5657cd52018-03-21 11:30:28 -0700260 # TODO: https://github.com/grpc/grpc-node/issues/235.
261 #{
262 # 'v1.7.2': None
263 #},
murgatroid99dfb41b62018-03-16 10:13:31 -0700264 {
265 'v1.8.4': None
266 },
267 {
268 'v1.9.1': None
Mehrdad Afsharibaefff22018-03-21 21:28:13 -0700269 },
270 {
271 'v1.10.0': None
272 },
murgatroid99ec4c06d2018-07-17 10:37:42 -0700273 {
274 'v1.11.3': None
275 },
276 {
277 'v1.12.4': None
278 },
Adele Zhou1487c9f2017-10-26 17:59:18 -0700279 ],
280 'ruby': [
ncteisene4bef082017-12-11 16:51:34 -0800281 {
282 'v1.0.1': {
283 'patch': [
284 'tools/dockerfile/interoptest/grpc_interop_ruby/Dockerfile',
285 'tools/dockerfile/interoptest/grpc_interop_ruby/build_interop.sh',
286 ]
287 }
288 },
289 {
290 'v1.1.4': None
291 },
292 {
293 'v1.2.5': None
294 },
295 {
296 'v1.3.9': None
297 },
298 {
299 'v1.4.2': None
300 },
301 {
302 'v1.6.6': None
303 },
304 {
305 'v1.7.2': None
306 },
Mehrdad Afsharia3cd72b2017-12-12 19:06:53 -0800307 {
308 'v1.8.0': None
309 },
Mehrdad Afshari2de11952018-02-12 13:08:16 -0800310 {
311 'v1.9.1': None
312 },
Mehrdad Afsharibaefff22018-03-21 21:28:13 -0700313 {
Mehrdad Afshari979d1be2018-05-22 14:10:15 -0700314 'v1.10.1': None
Mehrdad Afsharibaefff22018-03-21 21:28:13 -0700315 },
Mehrdad Afshari3d0aab02018-04-18 20:04:33 -0400316 {
Mehrdad Afshari979d1be2018-05-22 14:10:15 -0700317 'v1.11.1': None
318 },
319 {
320 'v1.12.0': None
Mehrdad Afshari3d0aab02018-04-18 20:04:33 -0400321 },
Srini Polavarapu98bf1a52018-06-28 16:54:33 -0700322 {
323 'v1.13.0': None
324 },
Srini Polavarapu428c2572018-08-03 16:13:49 -0700325 {
Srini Polavarapufc0b3072018-08-09 13:39:23 -0700326 'v1.14.1': None
Srini Polavarapu428c2572018-08-03 16:13:49 -0700327 },
Juanli Shen268733b2018-09-17 16:28:39 -0700328 {
329 'v1.15.0': None
330 },
Adele Zhou1487c9f2017-10-26 17:59:18 -0700331 ],
Adele Zhou9fe79dc2017-11-02 14:08:29 -0700332 'php': [
ncteisene4bef082017-12-11 16:51:34 -0800333 {
334 'v1.0.1': None
335 },
336 {
337 'v1.1.4': None
338 },
339 {
340 'v1.2.5': None
341 },
342 {
343 'v1.3.9': None
344 },
345 {
346 'v1.4.2': None
347 },
348 {
349 'v1.6.6': None
350 },
351 {
352 'v1.7.2': None
353 },
Mehrdad Afsharia3cd72b2017-12-12 19:06:53 -0800354 {
355 'v1.8.0': None
356 },
Mehrdad Afshari2de11952018-02-12 13:08:16 -0800357 {
358 'v1.9.1': None
359 },
Mehrdad Afsharibaefff22018-03-21 21:28:13 -0700360 {
Mehrdad Afshari979d1be2018-05-22 14:10:15 -0700361 'v1.10.1': None
Mehrdad Afsharibaefff22018-03-21 21:28:13 -0700362 },
Mehrdad Afshari3d0aab02018-04-18 20:04:33 -0400363 {
Mehrdad Afshari979d1be2018-05-22 14:10:15 -0700364 'v1.11.1': None
365 },
366 {
367 'v1.12.0': None
Mehrdad Afshari3d0aab02018-04-18 20:04:33 -0400368 },
Srini Polavarapu98bf1a52018-06-28 16:54:33 -0700369 {
370 'v1.13.0': None
371 },
Srini Polavarapu428c2572018-08-03 16:13:49 -0700372 {
Srini Polavarapufc0b3072018-08-09 13:39:23 -0700373 'v1.14.1': None
Srini Polavarapu428c2572018-08-03 16:13:49 -0700374 },
Juanli Shen268733b2018-09-17 16:28:39 -0700375 {
376 'v1.15.0': None
377 },
Adele Zhou9fe79dc2017-11-02 14:08:29 -0700378 ],
ncteisene4bef082017-12-11 16:51:34 -0800379 'csharp': [
Jan Tattermusch544dfcc2018-05-30 16:39:51 +0200380 {
381 'v1.0.1': {
382 'patch': [
383 'tools/dockerfile/interoptest/grpc_interop_csharp/Dockerfile',
384 'tools/dockerfile/interoptest/grpc_interop_csharpcoreclr/Dockerfile',
385 ]
386 }
387 },
ncteisene4bef082017-12-11 16:51:34 -0800388 {
389 'v1.1.4': None
390 },
391 {
392 'v1.2.5': None
393 },
394 {
395 'v1.3.9': None
396 },
397 {
398 'v1.4.2': None
399 },
400 {
401 'v1.6.6': None
402 },
403 {
404 'v1.7.2': None
405 },
Mehrdad Afsharia3cd72b2017-12-12 19:06:53 -0800406 {
407 'v1.8.0': None
408 },
Mehrdad Afshari2de11952018-02-12 13:08:16 -0800409 {
410 'v1.9.1': None
411 },
Mehrdad Afsharibaefff22018-03-21 21:28:13 -0700412 {
Mehrdad Afshari979d1be2018-05-22 14:10:15 -0700413 'v1.10.1': None
Mehrdad Afsharibaefff22018-03-21 21:28:13 -0700414 },
Mehrdad Afshari3d0aab02018-04-18 20:04:33 -0400415 {
Mehrdad Afshari979d1be2018-05-22 14:10:15 -0700416 'v1.11.1': None
417 },
418 {
419 'v1.12.0': None
Mehrdad Afshari3d0aab02018-04-18 20:04:33 -0400420 },
Srini Polavarapu98bf1a52018-06-28 16:54:33 -0700421 {
422 'v1.13.0': None
423 },
Srini Polavarapu428c2572018-08-03 16:13:49 -0700424 {
Srini Polavarapufc0b3072018-08-09 13:39:23 -0700425 'v1.14.1': None
Srini Polavarapu428c2572018-08-03 16:13:49 -0700426 },
Juanli Shen268733b2018-09-17 16:28:39 -0700427 {
428 'v1.15.0': None
429 },
Adele Zhouf7f38d12017-11-02 17:57:54 -0700430 ],
Yong Nib2e4bfa2017-05-09 18:12:10 -0700431}
Adele Zhou46fb1652018-03-19 15:33:46 -0700432
433# This matrix lists the version of testcases to use for a release. As new
434# releases come out, some older docker commands for running tests need to be
435# changed, hence the need for specifying which commands to use for a
436# particular version in some cases. If not specified, xxx__master file will be
437# used. For example, all java versions will run the commands in java__master.
438# The testcases files exist under the testcases directory.
439TESTCASES_VERSION_MATRIX = {
440 'node_v1.0.1': 'node__v1.0.1',
441 'node_v1.1.4': 'node__v1.1.4',
442 'node_v1.2.5': 'node__v1.1.4',
443 'node_v1.3.9': 'node__v1.1.4',
444 'node_v1.4.2': 'node__v1.1.4',
445 'node_v1.6.6': 'node__v1.1.4',
446 'ruby_v1.0.1': 'ruby__v1.0.1',
Jan Tattermusch544dfcc2018-05-30 16:39:51 +0200447 'csharp_v1.0.1': 'csharp__v1.1.4',
Adele Zhou46fb1652018-03-19 15:33:46 -0700448 'csharp_v1.1.4': 'csharp__v1.1.4',
449 'csharp_v1.2.5': 'csharp__v1.1.4',
Adele Zhou663a71b2018-04-23 23:01:40 -0700450 'python_v1.0.x': 'python__v1.0.x',
451 'python_v1.1.4': 'python__v1.0.x',
452 'python_v1.2.5': 'python__v1.0.x',
453 'python_v1.3.9': 'python__v1.0.x',
454 'python_v1.4.2': 'python__v1.0.x',
455 'python_v1.6.6': 'python__v1.0.x',
456 'python_v1.7.2': 'python__v1.0.x',
457 'python_v1.8.1': 'python__v1.0.x',
458 'python_v1.9.1': 'python__v1.0.x',
Mehrdad Afsharid7202c92018-05-25 11:45:59 -0700459 'python_v1.10.1': 'python__v1.0.x',
Adele Zhou46fb1652018-03-19 15:33:46 -0700460}