client_matrix.py
Go to the documentation of this file.
1 # Copyright 2017 gRPC authors.
2 #
3 # Licensed under the Apache License, Version 2.0 (the "License");
4 # you may not use this file except in compliance with the License.
5 # You may obtain a copy of the License at
6 #
7 # http://www.apache.org/licenses/LICENSE-2.0
8 #
9 # Unless required by applicable law or agreed to in writing, software
10 # distributed under the License is distributed on an "AS IS" BASIS,
11 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 # See the License for the specific language governing permissions and
13 # limitations under the License.
14 
15 # Defines languages, runtimes and releases for backward compatibility testing
16 
17 from collections import OrderedDict
18 
19 
20 def get_github_repo(lang):
21  return {
22  'dart': 'https://github.com/grpc/grpc-dart.git',
23  'go': 'https://github.com/grpc/grpc-go.git',
24  'java': 'https://github.com/grpc/grpc-java.git',
25  'node': 'https://github.com/grpc/grpc-node.git',
26  # all other languages use the grpc.git repo.
27  }.get(lang, 'https://github.com/grpc/grpc.git')
28 
29 
30 def get_release_tags(lang):
31  """Returns list of known releases for given language."""
32  return list(LANG_RELEASE_MATRIX[lang].keys())
33 
34 
35 def get_runtimes_for_lang_release(lang, release):
36  """Get list of valid runtimes for given release of lang."""
37  runtimes = list(LANG_RUNTIME_MATRIX[lang])
38  release_info = LANG_RELEASE_MATRIX[lang].get(release)
39  if release_info and release_info.runtimes:
40  runtimes = list(release_info.runtimes)
41  return runtimes
42 
43 
45  # All dockerfile definitions live in grpc/grpc repository.
46  # For language that have a separate repo, we need to use
47  # dockerfile definitions from head of grpc/grpc.
48  if lang in ['go', 'java', 'node']:
49  return False
50  return True
51 
52 
53 # Dictionary of default runtimes per language
54 LANG_RUNTIME_MATRIX = {
55  'cxx': ['cxx'], # This is actually debian8.
56  'go': ['go1.8', 'go1.11', 'go1.16'],
57  'java': ['java'],
58  'python': ['python', 'pythonasyncio'],
59  'node': ['node'],
60  'ruby': ['ruby'],
61  'php': ['php7'],
62  'csharp': ['csharp', 'csharpcoreclr'],
63 }
64 
65 
67  """Info about a single release of a language"""
68 
69  def __init__(self, patch=[], runtimes=[], testcases_file=None):
70  self.patch = patch
71  self.runtimes = runtimes
72  self.testcases_file = testcases_file
73 
74 
75 # Dictionary of known releases for given language.
76 LANG_RELEASE_MATRIX = {
77  'cxx':
78  OrderedDict([
79  ('v1.0.1', ReleaseInfo(testcases_file='cxx__v1.0.1')),
80  ('v1.1.4', ReleaseInfo(testcases_file='cxx__v1.0.1')),
81  ('v1.2.5', ReleaseInfo(testcases_file='cxx__v1.0.1')),
82  ('v1.3.9', ReleaseInfo(testcases_file='cxx__v1.0.1')),
83  ('v1.4.2', ReleaseInfo(testcases_file='cxx__v1.0.1')),
84  ('v1.6.6', ReleaseInfo(testcases_file='cxx__v1.0.1')),
85  ('v1.7.2', ReleaseInfo(testcases_file='cxx__v1.0.1')),
86  ('v1.8.0', ReleaseInfo(testcases_file='cxx__v1.0.1')),
87  ('v1.9.1', ReleaseInfo(testcases_file='cxx__v1.0.1')),
88  ('v1.10.1', ReleaseInfo(testcases_file='cxx__v1.0.1')),
89  ('v1.11.1', ReleaseInfo(testcases_file='cxx__v1.0.1')),
90  ('v1.12.0', ReleaseInfo(testcases_file='cxx__v1.0.1')),
91  ('v1.13.0', ReleaseInfo(testcases_file='cxx__v1.0.1')),
92  ('v1.14.1', ReleaseInfo(testcases_file='cxx__v1.0.1')),
93  ('v1.15.0', ReleaseInfo(testcases_file='cxx__v1.0.1')),
94  ('v1.16.0', ReleaseInfo(testcases_file='cxx__v1.0.1')),
95  ('v1.17.1', ReleaseInfo(testcases_file='cxx__v1.0.1')),
96  ('v1.18.0', ReleaseInfo(testcases_file='cxx__v1.0.1')),
97  ('v1.19.0', ReleaseInfo(testcases_file='cxx__v1.0.1')),
98  ('v1.20.0', ReleaseInfo(testcases_file='cxx__v1.31.1')),
99  ('v1.21.4', ReleaseInfo(testcases_file='cxx__v1.31.1')),
100  ('v1.22.0', ReleaseInfo(testcases_file='cxx__v1.31.1')),
101  ('v1.22.1', ReleaseInfo(testcases_file='cxx__v1.31.1')),
102  ('v1.23.0', ReleaseInfo(testcases_file='cxx__v1.31.1')),
103  ('v1.24.0', ReleaseInfo(testcases_file='cxx__v1.31.1')),
104  ('v1.25.0', ReleaseInfo(testcases_file='cxx__v1.31.1')),
105  ('v1.26.0', ReleaseInfo(testcases_file='cxx__v1.31.1')),
106  ('v1.27.3', ReleaseInfo(testcases_file='cxx__v1.31.1')),
107  ('v1.30.0', ReleaseInfo(testcases_file='cxx__v1.31.1')),
108  ('v1.31.1', ReleaseInfo(testcases_file='cxx__v1.31.1')),
109  ('v1.32.0', ReleaseInfo()),
110  ('v1.33.2', ReleaseInfo()),
111  ('v1.34.0', ReleaseInfo()),
112  ('v1.35.0', ReleaseInfo()),
113  ('v1.36.3', ReleaseInfo()),
114  ('v1.37.0', ReleaseInfo()),
115  ('v1.38.0', ReleaseInfo()),
116  ('v1.39.0', ReleaseInfo()),
117  ('v1.41.1', ReleaseInfo()),
118  ('v1.42.0', ReleaseInfo()),
119  ('v1.43.0', ReleaseInfo()),
120  ('v1.44.0', ReleaseInfo()),
121  ('v1.46.2', ReleaseInfo()),
122  ]),
123  'go':
124  OrderedDict([
125  ('v1.0.5',
126  ReleaseInfo(runtimes=['go1.8'], testcases_file='go__v1.0.5')),
127  ('v1.2.1',
128  ReleaseInfo(runtimes=['go1.8'], testcases_file='go__v1.0.5')),
129  ('v1.3.0',
130  ReleaseInfo(runtimes=['go1.8'], testcases_file='go__v1.0.5')),
131  ('v1.4.2',
132  ReleaseInfo(runtimes=['go1.8'], testcases_file='go__v1.0.5')),
133  ('v1.5.2',
134  ReleaseInfo(runtimes=['go1.8'], testcases_file='go__v1.0.5')),
135  ('v1.6.0',
136  ReleaseInfo(runtimes=['go1.8'], testcases_file='go__v1.0.5')),
137  ('v1.7.4',
138  ReleaseInfo(runtimes=['go1.8'], testcases_file='go__v1.0.5')),
139  ('v1.8.2',
140  ReleaseInfo(runtimes=['go1.8'], testcases_file='go__v1.0.5')),
141  ('v1.9.2',
142  ReleaseInfo(runtimes=['go1.8'], testcases_file='go__v1.0.5')),
143  ('v1.10.1',
144  ReleaseInfo(runtimes=['go1.8'], testcases_file='go__v1.0.5')),
145  ('v1.11.3',
146  ReleaseInfo(runtimes=['go1.8'], testcases_file='go__v1.0.5')),
147  ('v1.12.2',
148  ReleaseInfo(runtimes=['go1.8'], testcases_file='go__v1.0.5')),
149  ('v1.13.0',
150  ReleaseInfo(runtimes=['go1.8'], testcases_file='go__v1.0.5')),
151  ('v1.14.0',
152  ReleaseInfo(runtimes=['go1.8'], testcases_file='go__v1.0.5')),
153  ('v1.15.0',
154  ReleaseInfo(runtimes=['go1.8'], testcases_file='go__v1.0.5')),
155  ('v1.16.0',
156  ReleaseInfo(runtimes=['go1.8'], testcases_file='go__v1.0.5')),
157  ('v1.17.0',
158  ReleaseInfo(runtimes=['go1.11'], testcases_file='go__v1.0.5')),
159  ('v1.18.0',
160  ReleaseInfo(runtimes=['go1.11'], testcases_file='go__v1.0.5')),
161  ('v1.19.0',
162  ReleaseInfo(runtimes=['go1.11'], testcases_file='go__v1.0.5')),
163  ('v1.20.0',
164  ReleaseInfo(runtimes=['go1.11'], testcases_file='go__v1.20.0')),
165  ('v1.21.3',
166  ReleaseInfo(runtimes=['go1.11'], testcases_file='go__v1.20.0')),
167  ('v1.22.3',
168  ReleaseInfo(runtimes=['go1.11'], testcases_file='go__v1.20.0')),
169  ('v1.23.1',
170  ReleaseInfo(runtimes=['go1.11'], testcases_file='go__v1.20.0')),
171  ('v1.24.0',
172  ReleaseInfo(runtimes=['go1.11'], testcases_file='go__v1.20.0')),
173  ('v1.25.0',
174  ReleaseInfo(runtimes=['go1.11'], testcases_file='go__v1.20.0')),
175  ('v1.26.0',
176  ReleaseInfo(runtimes=['go1.11'], testcases_file='go__v1.20.0')),
177  ('v1.27.1',
178  ReleaseInfo(runtimes=['go1.11'], testcases_file='go__v1.20.0')),
179  ('v1.28.0',
180  ReleaseInfo(runtimes=['go1.11'], testcases_file='go__v1.20.0')),
181  ('v1.29.0',
182  ReleaseInfo(runtimes=['go1.11'], testcases_file='go__v1.20.0')),
183  ('v1.30.0',
184  ReleaseInfo(runtimes=['go1.11'], testcases_file='go__v1.20.0')),
185  ('v1.31.1',
186  ReleaseInfo(runtimes=['go1.11'], testcases_file='go__v1.20.0')),
187  ('v1.32.0',
188  ReleaseInfo(runtimes=['go1.11'], testcases_file='go__v1.20.0')),
189  ('v1.33.1',
190  ReleaseInfo(runtimes=['go1.11'], testcases_file='go__v1.20.0')),
191  ('v1.34.0', ReleaseInfo(runtimes=['go1.11'])),
192  ('v1.35.0', ReleaseInfo(runtimes=['go1.11'])),
193  ('v1.36.0', ReleaseInfo(runtimes=['go1.11'])),
194  ('v1.37.0', ReleaseInfo(runtimes=['go1.11'])),
195  # NOTE: starting from release v1.38.0, use runtimes=['go1.16']
196  ('v1.38.1', ReleaseInfo(runtimes=['go1.16'])),
197  ('v1.39.1', ReleaseInfo(runtimes=['go1.16'])),
198  ('v1.40.0', ReleaseInfo(runtimes=['go1.16'])),
199  ('v1.41.0', ReleaseInfo(runtimes=['go1.16'])),
200  ('v1.42.0', ReleaseInfo(runtimes=['go1.16'])),
201  ('v1.43.0', ReleaseInfo(runtimes=['go1.16'])),
202  ('v1.44.0', ReleaseInfo(runtimes=['go1.16'])),
203  ('v1.45.0', ReleaseInfo(runtimes=['go1.16'])),
204  ('v1.46.0', ReleaseInfo(runtimes=['go1.16'])),
205  ('v1.47.0', ReleaseInfo(runtimes=['go1.16'])),
206  ]),
207  'java':
208  OrderedDict([
209  ('v1.0.3',
210  ReleaseInfo(runtimes=['java_oracle8'],
211  testcases_file='java__v1.0.3')),
212  ('v1.1.2',
213  ReleaseInfo(runtimes=['java_oracle8'],
214  testcases_file='java__v1.0.3')),
215  ('v1.2.0',
216  ReleaseInfo(runtimes=['java_oracle8'],
217  testcases_file='java__v1.0.3')),
218  ('v1.3.1',
219  ReleaseInfo(runtimes=['java_oracle8'],
220  testcases_file='java__v1.0.3')),
221  ('v1.4.0',
222  ReleaseInfo(runtimes=['java_oracle8'],
223  testcases_file='java__v1.0.3')),
224  ('v1.5.0',
225  ReleaseInfo(runtimes=['java_oracle8'],
226  testcases_file='java__v1.0.3')),
227  ('v1.6.1',
228  ReleaseInfo(runtimes=['java_oracle8'],
229  testcases_file='java__v1.0.3')),
230  ('v1.7.1', ReleaseInfo(testcases_file='java__v1.0.3')),
231  ('v1.8.0',
232  ReleaseInfo(runtimes=['java_oracle8'],
233  testcases_file='java__v1.0.3')),
234  ('v1.9.1',
235  ReleaseInfo(runtimes=['java_oracle8'],
236  testcases_file='java__v1.0.3')),
237  ('v1.10.1',
238  ReleaseInfo(runtimes=['java_oracle8'],
239  testcases_file='java__v1.0.3')),
240  ('v1.11.0',
241  ReleaseInfo(runtimes=['java_oracle8'],
242  testcases_file='java__v1.0.3')),
243  ('v1.12.1', ReleaseInfo(testcases_file='java__v1.0.3')),
244  ('v1.13.2', ReleaseInfo(testcases_file='java__v1.0.3')),
245  ('v1.14.0',
246  ReleaseInfo(runtimes=['java_oracle8'],
247  testcases_file='java__v1.0.3')),
248  ('v1.15.1', ReleaseInfo(testcases_file='java__v1.0.3')),
249  ('v1.16.1',
250  ReleaseInfo(runtimes=['java_oracle8'],
251  testcases_file='java__v1.0.3')),
252  ('v1.17.2', ReleaseInfo(testcases_file='java__v1.0.3')),
253  ('v1.18.0',
254  ReleaseInfo(runtimes=['java_oracle8'],
255  testcases_file='java__v1.0.3')),
256  ('v1.19.0',
257  ReleaseInfo(runtimes=['java_oracle8'],
258  testcases_file='java__v1.0.3')),
259  ('v1.20.0', ReleaseInfo(runtimes=['java_oracle8'])),
260  ('v1.21.1', ReleaseInfo()),
261  ('v1.22.2', ReleaseInfo()),
262  ('v1.23.0', ReleaseInfo()),
263  ('v1.24.0', ReleaseInfo()),
264  ('v1.25.0', ReleaseInfo()),
265  ('v1.26.1', ReleaseInfo()),
266  ('v1.27.2', ReleaseInfo()),
267  ('v1.28.1', ReleaseInfo()),
268  ('v1.29.0', ReleaseInfo()),
269  ('v1.30.2', ReleaseInfo()),
270  ('v1.31.2', ReleaseInfo()),
271  ('v1.32.3', ReleaseInfo()),
272  ('v1.33.1', ReleaseInfo()),
273  ('v1.34.1', ReleaseInfo()),
274  ('v1.35.1', ReleaseInfo()),
275  ('v1.36.1', ReleaseInfo()),
276  ('v1.37.1', ReleaseInfo()),
277  ('v1.38.1', ReleaseInfo()),
278  ('v1.39.0', ReleaseInfo()),
279  ('v1.40.2', ReleaseInfo()),
280  ('v1.41.1', ReleaseInfo()),
281  ('v1.42.1', ReleaseInfo()),
282  ('v1.43.2', ReleaseInfo()),
283  ('v1.44.1', ReleaseInfo()),
284  ('v1.45.1', ReleaseInfo()),
285  ('v1.46.0', ReleaseInfo()),
286  ('v1.47.0', ReleaseInfo()),
287  ]),
288  'python':
289  OrderedDict(
290  [
291  ('v1.0.x',
292  ReleaseInfo(runtimes=['python'],
293  testcases_file='python__v1.0.x')),
294  ('v1.1.4',
295  ReleaseInfo(runtimes=['python'],
296  testcases_file='python__v1.0.x')),
297  ('v1.2.5',
298  ReleaseInfo(runtimes=['python'],
299  testcases_file='python__v1.0.x')),
300  ('v1.3.9',
301  ReleaseInfo(runtimes=['python'],
302  testcases_file='python__v1.0.x')),
303  ('v1.4.2',
304  ReleaseInfo(runtimes=['python'],
305  testcases_file='python__v1.0.x')),
306  ('v1.6.6',
307  ReleaseInfo(runtimes=['python'],
308  testcases_file='python__v1.0.x')),
309  ('v1.7.2',
310  ReleaseInfo(runtimes=['python'],
311  testcases_file='python__v1.0.x')),
312  ('v1.8.1',
313  ReleaseInfo(runtimes=['python'],
314  testcases_file='python__v1.0.x')),
315  ('v1.9.1',
316  ReleaseInfo(runtimes=['python'],
317  testcases_file='python__v1.0.x')),
318  ('v1.10.1',
319  ReleaseInfo(runtimes=['python'],
320  testcases_file='python__v1.0.x')),
321  ('v1.11.1',
322  ReleaseInfo(runtimes=['python'],
323  testcases_file='python__v1.11.1')),
324  ('v1.12.0',
325  ReleaseInfo(runtimes=['python'],
326  testcases_file='python__v1.11.1')),
327  ('v1.13.0',
328  ReleaseInfo(runtimes=['python'],
329  testcases_file='python__v1.11.1')),
330  ('v1.14.1',
331  ReleaseInfo(runtimes=['python'],
332  testcases_file='python__v1.11.1')),
333  ('v1.15.0',
334  ReleaseInfo(runtimes=['python'],
335  testcases_file='python__v1.11.1')),
336  ('v1.16.0',
337  ReleaseInfo(runtimes=['python'],
338  testcases_file='python__v1.11.1')),
339  ('v1.17.1',
340  ReleaseInfo(runtimes=['python'],
341  testcases_file='python__v1.11.1')),
342  ('v1.18.0',
343  ReleaseInfo(runtimes=['python'],
344  testcases_file='python__v1.18.0')),
345  ('v1.19.0',
346  ReleaseInfo(runtimes=['python'],
347  testcases_file='python__v1.18.0')),
348  ('v1.20.0',
349  ReleaseInfo(runtimes=['python'],
350  testcases_file='python__v1.18.0')),
351  ('v1.21.4',
352  ReleaseInfo(runtimes=['python'],
353  testcases_file='python__v1.18.0')),
354  ('v1.22.0',
355  ReleaseInfo(runtimes=['python'],
356  testcases_file='python__v1.18.0')),
357  ('v1.22.1',
358  ReleaseInfo(runtimes=['python'],
359  testcases_file='python__v1.18.0')),
360  ('v1.23.0',
361  ReleaseInfo(runtimes=['python'],
362  testcases_file='python__v1.18.0')),
363  ('v1.24.0',
364  ReleaseInfo(runtimes=['python'],
365  testcases_file='python__v1.18.0')),
366  ('v1.25.0',
367  ReleaseInfo(runtimes=['python'],
368  testcases_file='python__v1.18.0')),
369  ('v1.26.0',
370  ReleaseInfo(runtimes=['python'],
371  testcases_file='python__v1.18.0')),
372  ('v1.27.3',
373  ReleaseInfo(runtimes=['python'],
374  testcases_file='python__v1.18.0')),
375  ('v1.30.0',
376  ReleaseInfo(runtimes=['python'],
377  testcases_file='python__v1.18.0')),
378  ('v1.31.1',
379  ReleaseInfo(runtimes=['python'],
380  testcases_file='python__v1.18.0')),
381  ('v1.32.0',
382  ReleaseInfo(runtimes=['python'],
383  testcases_file='python__v1.18.0')),
384  ('v1.33.2',
385  ReleaseInfo(runtimes=['python'],
386  testcases_file='python__v1.18.0')),
387  ('v1.34.0',
388  ReleaseInfo(runtimes=['python'],
389  testcases_file='python__v1.18.0')),
390  ('v1.35.0',
391  ReleaseInfo(runtimes=['python'],
392  testcases_file='python__v1.18.0')),
393  ('v1.36.3',
394  ReleaseInfo(runtimes=['python'],
395  testcases_file='python__v1.18.0')),
396  ('v1.37.0',
397  ReleaseInfo(runtimes=['python'],
398  testcases_file='python__v1.18.0')),
399  ('v1.38.0',
400  ReleaseInfo(runtimes=['python'],
401  testcases_file='python__v1.18.0')),
402  ('v1.39.0',
403  ReleaseInfo(runtimes=['python'],
404  testcases_file='python__v1.18.0')),
405  ('v1.41.1',
406  ReleaseInfo(runtimes=['python'],
407  testcases_file='python__v1.41.1')),
408  ('v1.42.0',
409  ReleaseInfo(runtimes=['python'],
410  testcases_file='python__v1.41.1')),
411  ('v1.43.2',
412  ReleaseInfo(runtimes=['python'],
413  testcases_file='python__v1.41.1')),
414  ('v1.44.0',
415  ReleaseInfo(runtimes=['python'],
416  testcases_file='python__master')),
417  ('v1.46.2',
418  ReleaseInfo(runtimes=['python'],
419  testcases_file='python__master')),
420  ]),
421  'node':
422  OrderedDict([
423  ('v1.0.1', ReleaseInfo(testcases_file='node__v1.0.1')),
424  ('v1.1.4', ReleaseInfo(testcases_file='node__v1.1.4')),
425  ('v1.2.5', ReleaseInfo(testcases_file='node__v1.1.4')),
426  ('v1.3.9', ReleaseInfo(testcases_file='node__v1.1.4')),
427  ('v1.4.2', ReleaseInfo(testcases_file='node__v1.1.4')),
428  ('v1.6.6', ReleaseInfo(testcases_file='node__v1.1.4')),
429  # TODO: https://github.com/grpc/grpc-node/issues/235.
430  # ('v1.7.2', ReleaseInfo()),
431  ('v1.8.4', ReleaseInfo()),
432  ('v1.9.1', ReleaseInfo()),
433  ('v1.10.0', ReleaseInfo()),
434  ('v1.11.3', ReleaseInfo()),
435  ('v1.12.4', ReleaseInfo()),
436  ]),
437  'ruby':
438  OrderedDict([
439  ('v1.0.1',
440  ReleaseInfo(patch=[
441  'tools/dockerfile/interoptest/grpc_interop_ruby/Dockerfile',
442  'tools/dockerfile/interoptest/grpc_interop_ruby/build_interop.sh',
443  ],
444  testcases_file='ruby__v1.0.1')),
445  ('v1.1.4', ReleaseInfo(testcases_file='ruby__v1.1.4')),
446  ('v1.2.5', ReleaseInfo(testcases_file='ruby__v1.1.4')),
447  ('v1.3.9', ReleaseInfo(testcases_file='ruby__v1.1.4')),
448  ('v1.4.2', ReleaseInfo(testcases_file='ruby__v1.1.4')),
449  ('v1.6.6', ReleaseInfo(testcases_file='ruby__v1.1.4')),
450  ('v1.7.2', ReleaseInfo(testcases_file='ruby__v1.1.4')),
451  ('v1.8.0', ReleaseInfo(testcases_file='ruby__v1.1.4')),
452  ('v1.9.1', ReleaseInfo(testcases_file='ruby__v1.1.4')),
453  ('v1.10.1', ReleaseInfo(testcases_file='ruby__v1.1.4')),
454  ('v1.11.1', ReleaseInfo(testcases_file='ruby__v1.1.4')),
455  ('v1.12.0', ReleaseInfo(testcases_file='ruby__v1.1.4')),
456  ('v1.13.0', ReleaseInfo(testcases_file='ruby__v1.1.4')),
457  ('v1.14.1', ReleaseInfo(testcases_file='ruby__v1.1.4')),
458  ('v1.15.0', ReleaseInfo(testcases_file='ruby__v1.1.4')),
459  ('v1.16.0', ReleaseInfo(testcases_file='ruby__v1.1.4')),
460  ('v1.17.1', ReleaseInfo(testcases_file='ruby__v1.1.4')),
461  ('v1.18.0',
462  ReleaseInfo(patch=[
463  'tools/dockerfile/interoptest/grpc_interop_ruby/build_interop.sh',
464  ])),
465  ('v1.19.0', ReleaseInfo()),
466  ('v1.20.0', ReleaseInfo()),
467  ('v1.21.4', ReleaseInfo()),
468  ('v1.22.0', ReleaseInfo()),
469  ('v1.22.1', ReleaseInfo()),
470  ('v1.23.0', ReleaseInfo()),
471  ('v1.24.0', ReleaseInfo()),
472  ('v1.25.0', ReleaseInfo()),
473  # TODO: https://github.com/grpc/grpc/issues/18262.
474  # If you are not encountering the error in above issue
475  # go ahead and upload the docker image for new releases.
476  ('v1.26.0', ReleaseInfo()),
477  ('v1.27.3', ReleaseInfo()),
478  ('v1.30.0', ReleaseInfo()),
479  ('v1.31.1', ReleaseInfo()),
480  ('v1.32.0', ReleaseInfo()),
481  ('v1.33.2', ReleaseInfo()),
482  ('v1.34.0', ReleaseInfo()),
483  ('v1.35.0', ReleaseInfo()),
484  ('v1.36.3', ReleaseInfo()),
485  ('v1.37.0', ReleaseInfo()),
486  ('v1.38.0', ReleaseInfo()),
487  ('v1.39.0', ReleaseInfo()),
488  ('v1.41.1', ReleaseInfo()),
489  ('v1.42.0', ReleaseInfo()),
490  ('v1.43.0', ReleaseInfo()),
491  ('v1.44.0', ReleaseInfo()),
492  ('v1.46.2', ReleaseInfo()),
493  ]),
494  'php':
495  OrderedDict([
496  ('v1.0.1', ReleaseInfo(testcases_file='php__v1.0.1')),
497  ('v1.1.4', ReleaseInfo(testcases_file='php__v1.0.1')),
498  ('v1.2.5', ReleaseInfo(testcases_file='php__v1.0.1')),
499  ('v1.3.9', ReleaseInfo(testcases_file='php__v1.0.1')),
500  ('v1.4.2', ReleaseInfo(testcases_file='php__v1.0.1')),
501  ('v1.6.6', ReleaseInfo(testcases_file='php__v1.0.1')),
502  ('v1.7.2', ReleaseInfo(testcases_file='php__v1.0.1')),
503  ('v1.8.0', ReleaseInfo(testcases_file='php__v1.0.1')),
504  ('v1.9.1', ReleaseInfo(testcases_file='php__v1.0.1')),
505  ('v1.10.1', ReleaseInfo(testcases_file='php__v1.0.1')),
506  ('v1.11.1', ReleaseInfo(testcases_file='php__v1.0.1')),
507  ('v1.12.0', ReleaseInfo(testcases_file='php__v1.0.1')),
508  ('v1.13.0', ReleaseInfo(testcases_file='php__v1.0.1')),
509  ('v1.14.1', ReleaseInfo(testcases_file='php__v1.0.1')),
510  ('v1.15.0', ReleaseInfo(testcases_file='php__v1.0.1')),
511  ('v1.16.0', ReleaseInfo(testcases_file='php__v1.0.1')),
512  ('v1.17.1', ReleaseInfo(testcases_file='php__v1.0.1')),
513  ('v1.18.0', ReleaseInfo()),
514  # v1.19 and v1.20 were deliberately omitted here because of an issue.
515  # See https://github.com/grpc/grpc/issues/18264
516  ('v1.21.4', ReleaseInfo()),
517  ('v1.22.0', ReleaseInfo()),
518  ('v1.22.1', ReleaseInfo()),
519  ('v1.23.0', ReleaseInfo()),
520  ('v1.24.0', ReleaseInfo()),
521  ('v1.25.0', ReleaseInfo()),
522  ('v1.26.0', ReleaseInfo()),
523  ('v1.27.3', ReleaseInfo()),
524  ('v1.30.0', ReleaseInfo()),
525  ('v1.31.1', ReleaseInfo()),
526  ('v1.32.0', ReleaseInfo()),
527  ('v1.33.2', ReleaseInfo()),
528  ('v1.34.0', ReleaseInfo()),
529  ('v1.35.0', ReleaseInfo()),
530  ('v1.36.3', ReleaseInfo()),
531  ('v1.37.0', ReleaseInfo()),
532  ('v1.38.0', ReleaseInfo()),
533  ('v1.39.0', ReleaseInfo()),
534  ('v1.41.1', ReleaseInfo()),
535  ('v1.42.0', ReleaseInfo()),
536  ('v1.43.0', ReleaseInfo()),
537  ('v1.44.0', ReleaseInfo()),
538  ('v1.46.2', ReleaseInfo()),
539  ]),
540  'csharp':
541  OrderedDict([
542  ('v1.0.1',
543  ReleaseInfo(patch=[
544  'tools/dockerfile/interoptest/grpc_interop_csharp/Dockerfile',
545  'tools/dockerfile/interoptest/grpc_interop_csharpcoreclr/Dockerfile',
546  ],
547  testcases_file='csharp__v1.1.4')),
548  ('v1.1.4', ReleaseInfo(testcases_file='csharp__v1.1.4')),
549  ('v1.2.5', ReleaseInfo(testcases_file='csharp__v1.1.4')),
550  ('v1.3.9', ReleaseInfo(testcases_file='csharp__v1.3.9')),
551  ('v1.4.2', ReleaseInfo(testcases_file='csharp__v1.3.9')),
552  ('v1.6.6', ReleaseInfo(testcases_file='csharp__v1.3.9')),
553  ('v1.7.2', ReleaseInfo(testcases_file='csharp__v1.3.9')),
554  ('v1.8.0', ReleaseInfo(testcases_file='csharp__v1.3.9')),
555  ('v1.9.1', ReleaseInfo(testcases_file='csharp__v1.3.9')),
556  ('v1.10.1', ReleaseInfo(testcases_file='csharp__v1.3.9')),
557  ('v1.11.1', ReleaseInfo(testcases_file='csharp__v1.3.9')),
558  ('v1.12.0', ReleaseInfo(testcases_file='csharp__v1.3.9')),
559  ('v1.13.0', ReleaseInfo(testcases_file='csharp__v1.3.9')),
560  ('v1.14.1', ReleaseInfo(testcases_file='csharp__v1.3.9')),
561  ('v1.15.0', ReleaseInfo(testcases_file='csharp__v1.3.9')),
562  ('v1.16.0', ReleaseInfo(testcases_file='csharp__v1.3.9')),
563  ('v1.17.1', ReleaseInfo(testcases_file='csharp__v1.3.9')),
564  ('v1.18.0', ReleaseInfo(testcases_file='csharp__v1.18.0')),
565  ('v1.19.0', ReleaseInfo(testcases_file='csharp__v1.18.0')),
566  ('v1.20.0', ReleaseInfo(testcases_file='csharp__v1.20.0')),
567  ('v1.20.0', ReleaseInfo(testcases_file='csharp__v1.20.0')),
568  ('v1.21.4', ReleaseInfo(testcases_file='csharp__v1.20.0')),
569  ('v1.22.0', ReleaseInfo(testcases_file='csharp__v1.20.0')),
570  ('v1.22.1', ReleaseInfo(testcases_file='csharp__v1.20.0')),
571  ('v1.23.0', ReleaseInfo(testcases_file='csharp__v1.20.0')),
572  ('v1.24.0', ReleaseInfo(testcases_file='csharp__v1.20.0')),
573  ('v1.25.0', ReleaseInfo(testcases_file='csharp__v1.20.0')),
574  ('v1.26.0', ReleaseInfo(testcases_file='csharp__v1.20.0')),
575  ('v1.27.3', ReleaseInfo(testcases_file='csharp__v1.20.0')),
576  ('v1.30.0', ReleaseInfo(testcases_file='csharp__v1.20.0')),
577  ('v1.31.1', ReleaseInfo(testcases_file='csharp__v1.20.0')),
578  ('v1.32.0', ReleaseInfo(testcases_file='csharp__v1.20.0')),
579  ('v1.33.2', ReleaseInfo(testcases_file='csharp__v1.20.0')),
580  ('v1.34.0', ReleaseInfo(testcases_file='csharp__v1.20.0')),
581  ('v1.35.0', ReleaseInfo(testcases_file='csharp__v1.20.0')),
582  ('v1.36.3', ReleaseInfo(testcases_file='csharp__v1.20.0')),
583  ('v1.37.0', ReleaseInfo(testcases_file='csharp__v1.20.0')),
584  ('v1.38.1', ReleaseInfo(testcases_file='csharp__v1.20.0')),
585  ('v1.39.1', ReleaseInfo(testcases_file='csharp__v1.20.0')),
586  ('v1.41.1', ReleaseInfo(testcases_file='csharp__v1.20.0')),
587  ('v1.42.0', ReleaseInfo(testcases_file='csharp__v1.20.0')),
588  ('v1.43.0', ReleaseInfo()),
589  ('v1.44.0', ReleaseInfo()),
590  ('v1.46.2', ReleaseInfo()),
591  ]),
592 }
client_matrix.get_runtimes_for_lang_release
def get_runtimes_for_lang_release(lang, release)
Definition: client_matrix.py:35
get
absl::string_view get(const Cont &c)
Definition: abseil-cpp/absl/strings/str_replace_test.cc:185
keys
const void * keys
Definition: abseil-cpp/absl/random/internal/randen.cc:49
client_matrix.ReleaseInfo
Definition: client_matrix.py:66
client_matrix.ReleaseInfo.patch
patch
Definition: client_matrix.py:70
client_matrix.ReleaseInfo.__init__
def __init__(self, patch=[], runtimes=[], testcases_file=None)
Definition: client_matrix.py:69
client_matrix.get_github_repo
def get_github_repo(lang)
Definition: client_matrix.py:20
client_matrix.get_release_tags
def get_release_tags(lang)
Definition: client_matrix.py:30
client_matrix.ReleaseInfo.testcases_file
testcases_file
Definition: client_matrix.py:72
client_matrix.ReleaseInfo.runtimes
runtimes
Definition: client_matrix.py:71
client_matrix.should_build_docker_interop_image_from_release_tag
def should_build_docker_interop_image_from_release_tag(lang)
Definition: client_matrix.py:44


grpc
Author(s):
autogenerated on Thu Mar 13 2025 02:58:47