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 17from collections import OrderedDict 18 19 20def 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 30def get_release_tags(lang): 31 """Returns list of known releases for given language.""" 32 return list(LANG_RELEASE_MATRIX[lang].keys()) 33 34 35def 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 44def should_build_docker_interop_image_from_release_tag(lang): 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 54LANG_RUNTIME_MATRIX = { 55 "cxx": ["cxx"], # This is actually debian8. 56 "go": ["go1.x"], 57 "java": ["java"], 58 "python": ["python", "pythonasyncio"], 59 "node": ["node"], 60 "ruby": ["ruby"], 61 "php": ["php7"], 62 "csharp": ["csharp", "csharpcoreclr"], 63} 64 65 66class ReleaseInfo: 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. 76LANG_RELEASE_MATRIX = { 77 "cxx": OrderedDict( 78 [ 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 ("v1.47.1", ReleaseInfo()), 123 ("v1.48.3", ReleaseInfo()), 124 ("v1.49.1", ReleaseInfo()), 125 ("v1.52.0", ReleaseInfo()), 126 ("v1.53.0", ReleaseInfo()), 127 ("v1.54.0", ReleaseInfo()), 128 ("v1.55.0", ReleaseInfo()), 129 ("v1.56.0", ReleaseInfo()), 130 ("v1.57.0", ReleaseInfo()), 131 ("v1.58.0", ReleaseInfo()), 132 ("v1.60.0", ReleaseInfo()), 133 ("v1.61.0", ReleaseInfo()), 134 ("v1.62.0", ReleaseInfo()), 135 ("v1.63.1", ReleaseInfo()), 136 ("v1.64.1", ReleaseInfo()), 137 ("v1.65.0", ReleaseInfo()), 138 ("v1.66.0", ReleaseInfo()), 139 ("v1.67.0", ReleaseInfo()), 140 ] 141 ), 142 "go": OrderedDict( 143 [ 144 ( 145 "v1.0.5", 146 ReleaseInfo(runtimes=["go1.8"], testcases_file="go__v1.0.5"), 147 ), 148 ( 149 "v1.2.1", 150 ReleaseInfo(runtimes=["go1.8"], testcases_file="go__v1.0.5"), 151 ), 152 ( 153 "v1.3.0", 154 ReleaseInfo(runtimes=["go1.8"], testcases_file="go__v1.0.5"), 155 ), 156 ( 157 "v1.4.2", 158 ReleaseInfo(runtimes=["go1.8"], testcases_file="go__v1.0.5"), 159 ), 160 ( 161 "v1.5.2", 162 ReleaseInfo(runtimes=["go1.8"], testcases_file="go__v1.0.5"), 163 ), 164 ( 165 "v1.6.0", 166 ReleaseInfo(runtimes=["go1.8"], testcases_file="go__v1.0.5"), 167 ), 168 ( 169 "v1.7.4", 170 ReleaseInfo(runtimes=["go1.8"], testcases_file="go__v1.0.5"), 171 ), 172 ( 173 "v1.8.2", 174 ReleaseInfo(runtimes=["go1.8"], testcases_file="go__v1.0.5"), 175 ), 176 ( 177 "v1.9.2", 178 ReleaseInfo(runtimes=["go1.8"], testcases_file="go__v1.0.5"), 179 ), 180 ( 181 "v1.10.1", 182 ReleaseInfo(runtimes=["go1.8"], testcases_file="go__v1.0.5"), 183 ), 184 ( 185 "v1.11.3", 186 ReleaseInfo(runtimes=["go1.8"], testcases_file="go__v1.0.5"), 187 ), 188 ( 189 "v1.12.2", 190 ReleaseInfo(runtimes=["go1.8"], testcases_file="go__v1.0.5"), 191 ), 192 ( 193 "v1.13.0", 194 ReleaseInfo(runtimes=["go1.8"], testcases_file="go__v1.0.5"), 195 ), 196 ( 197 "v1.14.0", 198 ReleaseInfo(runtimes=["go1.8"], testcases_file="go__v1.0.5"), 199 ), 200 ( 201 "v1.15.0", 202 ReleaseInfo(runtimes=["go1.8"], testcases_file="go__v1.0.5"), 203 ), 204 ( 205 "v1.16.0", 206 ReleaseInfo(runtimes=["go1.8"], testcases_file="go__v1.0.5"), 207 ), 208 ( 209 "v1.17.0", 210 ReleaseInfo(runtimes=["go1.11"], testcases_file="go__v1.0.5"), 211 ), 212 ( 213 "v1.18.0", 214 ReleaseInfo(runtimes=["go1.11"], testcases_file="go__v1.0.5"), 215 ), 216 ( 217 "v1.19.0", 218 ReleaseInfo(runtimes=["go1.11"], testcases_file="go__v1.0.5"), 219 ), 220 ( 221 "v1.20.0", 222 ReleaseInfo(runtimes=["go1.11"], testcases_file="go__v1.20.0"), 223 ), 224 ( 225 "v1.21.3", 226 ReleaseInfo(runtimes=["go1.11"], testcases_file="go__v1.20.0"), 227 ), 228 ( 229 "v1.22.3", 230 ReleaseInfo(runtimes=["go1.11"], testcases_file="go__v1.20.0"), 231 ), 232 ( 233 "v1.23.1", 234 ReleaseInfo(runtimes=["go1.11"], testcases_file="go__v1.20.0"), 235 ), 236 ( 237 "v1.24.0", 238 ReleaseInfo(runtimes=["go1.11"], testcases_file="go__v1.20.0"), 239 ), 240 ( 241 "v1.25.0", 242 ReleaseInfo(runtimes=["go1.11"], testcases_file="go__v1.20.0"), 243 ), 244 ( 245 "v1.26.0", 246 ReleaseInfo(runtimes=["go1.11"], testcases_file="go__v1.20.0"), 247 ), 248 ( 249 "v1.27.1", 250 ReleaseInfo(runtimes=["go1.11"], testcases_file="go__v1.20.0"), 251 ), 252 ( 253 "v1.28.0", 254 ReleaseInfo(runtimes=["go1.11"], testcases_file="go__v1.20.0"), 255 ), 256 ( 257 "v1.29.0", 258 ReleaseInfo(runtimes=["go1.11"], testcases_file="go__v1.20.0"), 259 ), 260 ( 261 "v1.30.0", 262 ReleaseInfo(runtimes=["go1.11"], testcases_file="go__v1.20.0"), 263 ), 264 ( 265 "v1.31.1", 266 ReleaseInfo(runtimes=["go1.11"], testcases_file="go__v1.20.0"), 267 ), 268 ( 269 "v1.32.0", 270 ReleaseInfo(runtimes=["go1.11"], testcases_file="go__v1.20.0"), 271 ), 272 ( 273 "v1.33.1", 274 ReleaseInfo(runtimes=["go1.11"], testcases_file="go__v1.20.0"), 275 ), 276 ("v1.34.0", ReleaseInfo(runtimes=["go1.11"])), 277 ("v1.35.0", ReleaseInfo(runtimes=["go1.11"])), 278 ("v1.36.0", ReleaseInfo(runtimes=["go1.11"])), 279 ("v1.37.0", ReleaseInfo(runtimes=["go1.11"])), 280 # NOTE: starting from release v1.38.0, use runtimes=['go1.16'] 281 ("v1.38.1", ReleaseInfo(runtimes=["go1.16"])), 282 ("v1.39.1", ReleaseInfo(runtimes=["go1.16"])), 283 ("v1.40.0", ReleaseInfo(runtimes=["go1.16"])), 284 ("v1.41.0", ReleaseInfo(runtimes=["go1.16"])), 285 ("v1.42.0", ReleaseInfo(runtimes=["go1.16"])), 286 ("v1.43.0", ReleaseInfo(runtimes=["go1.16"])), 287 ("v1.44.0", ReleaseInfo(runtimes=["go1.16"])), 288 ("v1.45.0", ReleaseInfo(runtimes=["go1.16"])), 289 ("v1.46.0", ReleaseInfo(runtimes=["go1.16"])), 290 ("v1.47.0", ReleaseInfo(runtimes=["go1.16"])), 291 ("v1.48.0", ReleaseInfo(runtimes=["go1.16"])), 292 ("v1.49.0", ReleaseInfo(runtimes=["go1.16"])), 293 ("v1.50.1", ReleaseInfo(runtimes=["go1.16"])), 294 ("v1.51.0", ReleaseInfo(runtimes=["go1.16"])), 295 ("v1.52.3", ReleaseInfo(runtimes=["go1.19"])), 296 ("v1.53.0", ReleaseInfo(runtimes=["go1.19"])), 297 ("v1.54.1", ReleaseInfo(runtimes=["go1.19"])), 298 ("v1.55.0", ReleaseInfo(runtimes=["go1.19"])), 299 ("v1.56.3", ReleaseInfo(runtimes=["go1.19"])), 300 ("v1.57.2", ReleaseInfo(runtimes=["go1.19"])), 301 ("v1.58.3", ReleaseInfo(runtimes=["go1.19"])), 302 ("v1.59.0", ReleaseInfo(runtimes=["go1.19"])), 303 ("v1.60.1", ReleaseInfo(runtimes=["go1.19"])), 304 ("v1.61.2", ReleaseInfo(runtimes=["go1.19"])), 305 ("v1.62.2", ReleaseInfo(runtimes=["go1.19"])), 306 ("v1.63.3", ReleaseInfo()), 307 ("v1.64.1", ReleaseInfo()), 308 ("v1.65.1", ReleaseInfo()), 309 ("v1.66.3", ReleaseInfo()), 310 ("v1.67.3", ReleaseInfo()), 311 ("v1.68.2", ReleaseInfo()), 312 ("v1.69.2", ReleaseInfo()), 313 ] 314 ), 315 "java": OrderedDict( 316 [ 317 ( 318 "v1.0.3", 319 ReleaseInfo( 320 runtimes=["java_oracle8"], testcases_file="java__v1.0.3" 321 ), 322 ), 323 ( 324 "v1.1.2", 325 ReleaseInfo( 326 runtimes=["java_oracle8"], testcases_file="java__v1.0.3" 327 ), 328 ), 329 ( 330 "v1.2.0", 331 ReleaseInfo( 332 runtimes=["java_oracle8"], testcases_file="java__v1.0.3" 333 ), 334 ), 335 ( 336 "v1.3.1", 337 ReleaseInfo( 338 runtimes=["java_oracle8"], testcases_file="java__v1.0.3" 339 ), 340 ), 341 ( 342 "v1.4.0", 343 ReleaseInfo( 344 runtimes=["java_oracle8"], testcases_file="java__v1.0.3" 345 ), 346 ), 347 ( 348 "v1.5.0", 349 ReleaseInfo( 350 runtimes=["java_oracle8"], testcases_file="java__v1.0.3" 351 ), 352 ), 353 ( 354 "v1.6.1", 355 ReleaseInfo( 356 runtimes=["java_oracle8"], testcases_file="java__v1.0.3" 357 ), 358 ), 359 ("v1.7.1", ReleaseInfo(testcases_file="java__v1.0.3")), 360 ( 361 "v1.8.0", 362 ReleaseInfo( 363 runtimes=["java_oracle8"], testcases_file="java__v1.0.3" 364 ), 365 ), 366 ( 367 "v1.9.1", 368 ReleaseInfo( 369 runtimes=["java_oracle8"], testcases_file="java__v1.0.3" 370 ), 371 ), 372 ( 373 "v1.10.1", 374 ReleaseInfo( 375 runtimes=["java_oracle8"], testcases_file="java__v1.0.3" 376 ), 377 ), 378 ( 379 "v1.11.0", 380 ReleaseInfo( 381 runtimes=["java_oracle8"], testcases_file="java__v1.0.3" 382 ), 383 ), 384 ("v1.12.1", ReleaseInfo(testcases_file="java__v1.0.3")), 385 ("v1.13.2", ReleaseInfo(testcases_file="java__v1.0.3")), 386 ( 387 "v1.14.0", 388 ReleaseInfo( 389 runtimes=["java_oracle8"], testcases_file="java__v1.0.3" 390 ), 391 ), 392 ("v1.15.1", ReleaseInfo(testcases_file="java__v1.0.3")), 393 ( 394 "v1.16.1", 395 ReleaseInfo( 396 runtimes=["java_oracle8"], testcases_file="java__v1.0.3" 397 ), 398 ), 399 ("v1.17.2", ReleaseInfo(testcases_file="java__v1.0.3")), 400 ( 401 "v1.18.0", 402 ReleaseInfo( 403 runtimes=["java_oracle8"], testcases_file="java__v1.0.3" 404 ), 405 ), 406 ( 407 "v1.19.0", 408 ReleaseInfo( 409 runtimes=["java_oracle8"], testcases_file="java__v1.0.3" 410 ), 411 ), 412 ("v1.20.0", ReleaseInfo(runtimes=["java_oracle8"])), 413 ("v1.21.1", ReleaseInfo()), 414 ("v1.22.2", ReleaseInfo()), 415 ("v1.23.0", ReleaseInfo()), 416 ("v1.24.0", ReleaseInfo()), 417 ("v1.25.0", ReleaseInfo()), 418 ("v1.26.1", ReleaseInfo()), 419 ("v1.27.2", ReleaseInfo()), 420 ("v1.28.1", ReleaseInfo()), 421 ("v1.29.0", ReleaseInfo()), 422 ("v1.30.2", ReleaseInfo()), 423 ("v1.31.2", ReleaseInfo()), 424 ("v1.32.3", ReleaseInfo()), 425 ("v1.33.1", ReleaseInfo()), 426 ("v1.34.1", ReleaseInfo()), 427 ("v1.35.1", ReleaseInfo()), 428 ("v1.36.3", ReleaseInfo()), 429 ("v1.37.1", ReleaseInfo()), 430 ("v1.38.1", ReleaseInfo()), 431 ("v1.39.0", ReleaseInfo()), 432 ("v1.40.2", ReleaseInfo()), 433 ("v1.41.3", ReleaseInfo()), 434 ("v1.42.3", ReleaseInfo()), 435 ("v1.43.3", ReleaseInfo()), 436 ("v1.44.2", ReleaseInfo()), 437 ("v1.45.4", ReleaseInfo()), 438 ("v1.46.1", ReleaseInfo()), 439 ("v1.47.1", ReleaseInfo()), 440 ("v1.48.2", ReleaseInfo()), 441 ("v1.49.2", ReleaseInfo()), 442 ("v1.50.3", ReleaseInfo()), 443 ("v1.51.3", ReleaseInfo()), 444 ("v1.52.1", ReleaseInfo()), 445 ("v1.53.0", ReleaseInfo()), 446 ("v1.54.0", ReleaseInfo()), 447 ("v1.55.1", ReleaseInfo()), 448 ("v1.56.0", ReleaseInfo()), 449 ("v1.57.2", ReleaseInfo()), 450 ("v1.58.0", ReleaseInfo()), 451 ("v1.59.1", ReleaseInfo()), 452 ("v1.60.1", ReleaseInfo()), 453 ("v1.61.0", ReleaseInfo()), 454 ("v1.63.2", ReleaseInfo()), 455 ("v1.64.2", ReleaseInfo()), 456 ("v1.65.1", ReleaseInfo()), 457 ("v1.66.0", ReleaseInfo()), 458 ("v1.67.1", ReleaseInfo()), 459 ("v1.68.2", ReleaseInfo()), 460 ("v1.69.0", ReleaseInfo()), 461 ] 462 ), 463 "python": OrderedDict( 464 [ 465 ( 466 "v1.0.x", 467 ReleaseInfo( 468 runtimes=["python"], testcases_file="python__v1.0.x" 469 ), 470 ), 471 ( 472 "v1.1.4", 473 ReleaseInfo( 474 runtimes=["python"], testcases_file="python__v1.0.x" 475 ), 476 ), 477 ( 478 "v1.2.5", 479 ReleaseInfo( 480 runtimes=["python"], testcases_file="python__v1.0.x" 481 ), 482 ), 483 ( 484 "v1.3.9", 485 ReleaseInfo( 486 runtimes=["python"], testcases_file="python__v1.0.x" 487 ), 488 ), 489 ( 490 "v1.4.2", 491 ReleaseInfo( 492 runtimes=["python"], testcases_file="python__v1.0.x" 493 ), 494 ), 495 ( 496 "v1.6.6", 497 ReleaseInfo( 498 runtimes=["python"], testcases_file="python__v1.0.x" 499 ), 500 ), 501 ( 502 "v1.7.2", 503 ReleaseInfo( 504 runtimes=["python"], testcases_file="python__v1.0.x" 505 ), 506 ), 507 ( 508 "v1.8.1", 509 ReleaseInfo( 510 runtimes=["python"], testcases_file="python__v1.0.x" 511 ), 512 ), 513 ( 514 "v1.9.1", 515 ReleaseInfo( 516 runtimes=["python"], testcases_file="python__v1.0.x" 517 ), 518 ), 519 ( 520 "v1.10.1", 521 ReleaseInfo( 522 runtimes=["python"], testcases_file="python__v1.0.x" 523 ), 524 ), 525 ( 526 "v1.11.1", 527 ReleaseInfo( 528 runtimes=["python"], testcases_file="python__v1.11.1" 529 ), 530 ), 531 ( 532 "v1.12.0", 533 ReleaseInfo( 534 runtimes=["python"], testcases_file="python__v1.11.1" 535 ), 536 ), 537 ( 538 "v1.13.0", 539 ReleaseInfo( 540 runtimes=["python"], testcases_file="python__v1.11.1" 541 ), 542 ), 543 ( 544 "v1.14.1", 545 ReleaseInfo( 546 runtimes=["python"], testcases_file="python__v1.11.1" 547 ), 548 ), 549 ( 550 "v1.15.0", 551 ReleaseInfo( 552 runtimes=["python"], testcases_file="python__v1.11.1" 553 ), 554 ), 555 ( 556 "v1.16.0", 557 ReleaseInfo( 558 runtimes=["python"], testcases_file="python__v1.11.1" 559 ), 560 ), 561 ( 562 "v1.17.1", 563 ReleaseInfo( 564 runtimes=["python"], testcases_file="python__v1.11.1" 565 ), 566 ), 567 ( 568 "v1.18.0", 569 ReleaseInfo( 570 runtimes=["python"], testcases_file="python__v1.18.0" 571 ), 572 ), 573 ( 574 "v1.19.0", 575 ReleaseInfo( 576 runtimes=["python"], testcases_file="python__v1.18.0" 577 ), 578 ), 579 ( 580 "v1.20.0", 581 ReleaseInfo( 582 runtimes=["python"], testcases_file="python__v1.18.0" 583 ), 584 ), 585 ( 586 "v1.21.4", 587 ReleaseInfo( 588 runtimes=["python"], testcases_file="python__v1.18.0" 589 ), 590 ), 591 ( 592 "v1.22.0", 593 ReleaseInfo( 594 runtimes=["python"], testcases_file="python__v1.18.0" 595 ), 596 ), 597 ( 598 "v1.22.1", 599 ReleaseInfo( 600 runtimes=["python"], testcases_file="python__v1.18.0" 601 ), 602 ), 603 ( 604 "v1.23.0", 605 ReleaseInfo( 606 runtimes=["python"], testcases_file="python__v1.18.0" 607 ), 608 ), 609 ( 610 "v1.24.0", 611 ReleaseInfo( 612 runtimes=["python"], testcases_file="python__v1.18.0" 613 ), 614 ), 615 ( 616 "v1.25.0", 617 ReleaseInfo( 618 runtimes=["python"], testcases_file="python__v1.18.0" 619 ), 620 ), 621 ( 622 "v1.26.0", 623 ReleaseInfo( 624 runtimes=["python"], testcases_file="python__v1.18.0" 625 ), 626 ), 627 ( 628 "v1.27.3", 629 ReleaseInfo( 630 runtimes=["python"], testcases_file="python__v1.18.0" 631 ), 632 ), 633 ( 634 "v1.30.0", 635 ReleaseInfo( 636 runtimes=["python"], testcases_file="python__v1.18.0" 637 ), 638 ), 639 ( 640 "v1.31.1", 641 ReleaseInfo( 642 runtimes=["python"], testcases_file="python__v1.18.0" 643 ), 644 ), 645 ( 646 "v1.32.0", 647 ReleaseInfo( 648 runtimes=["python"], testcases_file="python__v1.18.0" 649 ), 650 ), 651 ( 652 "v1.33.2", 653 ReleaseInfo( 654 runtimes=["python"], testcases_file="python__v1.18.0" 655 ), 656 ), 657 ( 658 "v1.34.0", 659 ReleaseInfo( 660 runtimes=["python"], testcases_file="python__v1.18.0" 661 ), 662 ), 663 ( 664 "v1.35.0", 665 ReleaseInfo( 666 runtimes=["python"], testcases_file="python__v1.18.0" 667 ), 668 ), 669 ( 670 "v1.36.3", 671 ReleaseInfo( 672 runtimes=["python"], testcases_file="python__v1.18.0" 673 ), 674 ), 675 ( 676 "v1.37.0", 677 ReleaseInfo( 678 runtimes=["python"], testcases_file="python__v1.18.0" 679 ), 680 ), 681 ( 682 "v1.38.0", 683 ReleaseInfo( 684 runtimes=["python"], testcases_file="python__v1.18.0" 685 ), 686 ), 687 ( 688 "v1.39.0", 689 ReleaseInfo( 690 runtimes=["python"], testcases_file="python__v1.18.0" 691 ), 692 ), 693 ( 694 "v1.41.1", 695 ReleaseInfo( 696 runtimes=["python"], testcases_file="python__v1.41.1" 697 ), 698 ), 699 ( 700 "v1.42.0", 701 ReleaseInfo( 702 runtimes=["python"], testcases_file="python__v1.41.1" 703 ), 704 ), 705 ( 706 "v1.43.2", 707 ReleaseInfo( 708 runtimes=["python"], testcases_file="python__v1.41.1" 709 ), 710 ), 711 ( 712 "v1.44.0", 713 ReleaseInfo( 714 runtimes=["python"], testcases_file="python__master" 715 ), 716 ), 717 ( 718 "v1.46.2", 719 ReleaseInfo( 720 runtimes=["python"], testcases_file="python__master" 721 ), 722 ), 723 ( 724 "v1.47.1", 725 ReleaseInfo( 726 runtimes=["python"], testcases_file="python__master" 727 ), 728 ), 729 ( 730 "v1.48.3", 731 ReleaseInfo( 732 runtimes=["python"], testcases_file="python__master" 733 ), 734 ), 735 ( 736 "v1.49.1", 737 ReleaseInfo( 738 runtimes=["python"], testcases_file="python__master" 739 ), 740 ), 741 ( 742 "v1.52.0", 743 ReleaseInfo( 744 runtimes=["python"], testcases_file="python__master" 745 ), 746 ), 747 ( 748 "v1.53.0", 749 ReleaseInfo( 750 runtimes=["python"], testcases_file="python__master" 751 ), 752 ), 753 ( 754 "v1.54.0", 755 ReleaseInfo( 756 runtimes=["python"], testcases_file="python__master" 757 ), 758 ), 759 ( 760 "v1.55.0", 761 ReleaseInfo( 762 runtimes=["python"], testcases_file="python__master" 763 ), 764 ), 765 ( 766 "v1.56.0", 767 ReleaseInfo( 768 runtimes=["python"], testcases_file="python__master" 769 ), 770 ), 771 ( 772 "v1.57.0", 773 ReleaseInfo( 774 runtimes=["python"], testcases_file="python__master" 775 ), 776 ), 777 ( 778 "v1.58.0", 779 ReleaseInfo( 780 runtimes=["python"], testcases_file="python__master" 781 ), 782 ), 783 ( 784 "v1.60.0", 785 ReleaseInfo( 786 runtimes=["python"], testcases_file="python__master" 787 ), 788 ), 789 ( 790 "v1.61.0", 791 ReleaseInfo( 792 runtimes=["python"], testcases_file="python__master" 793 ), 794 ), 795 ( 796 "v1.62.0", 797 ReleaseInfo( 798 runtimes=["python"], testcases_file="python__master" 799 ), 800 ), 801 ( 802 "v1.63.0", 803 ReleaseInfo( 804 runtimes=["python"], testcases_file="python__master" 805 ), 806 ), 807 ( 808 "v1.64.1", 809 ReleaseInfo( 810 runtimes=["python"], testcases_file="python__master" 811 ), 812 ), 813 ( 814 "v1.65.0", 815 ReleaseInfo( 816 runtimes=["python"], testcases_file="python__master" 817 ), 818 ), 819 ( 820 "v1.66.0", 821 ReleaseInfo( 822 runtimes=["python"], testcases_file="python__master" 823 ), 824 ), 825 ( 826 "v1.67.0", 827 ReleaseInfo( 828 runtimes=["python"], testcases_file="python__master" 829 ), 830 ), 831 ] 832 ), 833 "node": OrderedDict( 834 [ 835 ("v1.0.1", ReleaseInfo(testcases_file="node__v1.0.1")), 836 ("v1.1.4", ReleaseInfo(testcases_file="node__v1.1.4")), 837 ("v1.2.5", ReleaseInfo(testcases_file="node__v1.1.4")), 838 ("v1.3.9", ReleaseInfo(testcases_file="node__v1.1.4")), 839 ("v1.4.2", ReleaseInfo(testcases_file="node__v1.1.4")), 840 ("v1.6.6", ReleaseInfo(testcases_file="node__v1.1.4")), 841 # TODO: https://github.com/grpc/grpc-node/issues/235. 842 # ('v1.7.2', ReleaseInfo()), 843 ("v1.8.4", ReleaseInfo()), 844 ("v1.9.1", ReleaseInfo()), 845 ("v1.10.0", ReleaseInfo()), 846 ("v1.11.3", ReleaseInfo()), 847 ("v1.12.4", ReleaseInfo()), 848 ] 849 ), 850 "ruby": OrderedDict( 851 [ 852 ( 853 "v1.0.1", 854 ReleaseInfo( 855 patch=[ 856 "tools/dockerfile/interoptest/grpc_interop_ruby/Dockerfile", 857 "tools/dockerfile/interoptest/grpc_interop_ruby/build_interop.sh", 858 ], 859 testcases_file="ruby__v1.0.1", 860 ), 861 ), 862 ("v1.1.4", ReleaseInfo(testcases_file="ruby__v1.1.4")), 863 ("v1.2.5", ReleaseInfo(testcases_file="ruby__v1.1.4")), 864 ("v1.3.9", ReleaseInfo(testcases_file="ruby__v1.1.4")), 865 ("v1.4.2", ReleaseInfo(testcases_file="ruby__v1.1.4")), 866 ("v1.6.6", ReleaseInfo(testcases_file="ruby__v1.1.4")), 867 ("v1.7.2", ReleaseInfo(testcases_file="ruby__v1.1.4")), 868 ("v1.8.0", ReleaseInfo(testcases_file="ruby__v1.1.4")), 869 ("v1.9.1", ReleaseInfo(testcases_file="ruby__v1.1.4")), 870 ("v1.10.1", ReleaseInfo(testcases_file="ruby__v1.1.4")), 871 ("v1.11.1", ReleaseInfo(testcases_file="ruby__v1.1.4")), 872 ("v1.12.0", ReleaseInfo(testcases_file="ruby__v1.1.4")), 873 ("v1.13.0", ReleaseInfo(testcases_file="ruby__v1.1.4")), 874 ("v1.14.1", ReleaseInfo(testcases_file="ruby__v1.1.4")), 875 ("v1.15.0", ReleaseInfo(testcases_file="ruby__v1.1.4")), 876 ("v1.16.0", ReleaseInfo(testcases_file="ruby__v1.1.4")), 877 ("v1.17.1", ReleaseInfo(testcases_file="ruby__v1.1.4")), 878 ( 879 "v1.18.0", 880 ReleaseInfo( 881 patch=[ 882 "tools/dockerfile/interoptest/grpc_interop_ruby/build_interop.sh", 883 ] 884 ), 885 ), 886 ("v1.19.0", ReleaseInfo()), 887 ("v1.20.0", ReleaseInfo()), 888 ("v1.21.4", ReleaseInfo()), 889 ("v1.22.0", ReleaseInfo()), 890 ("v1.22.1", ReleaseInfo()), 891 ("v1.23.0", ReleaseInfo()), 892 ("v1.24.0", ReleaseInfo()), 893 ("v1.25.0", ReleaseInfo()), 894 # TODO: https://github.com/grpc/grpc/issues/18262. 895 # If you are not encountering the error in above issue 896 # go ahead and upload the docker image for new releases. 897 ("v1.26.0", ReleaseInfo()), 898 ("v1.27.3", ReleaseInfo()), 899 ("v1.30.0", ReleaseInfo()), 900 ("v1.31.1", ReleaseInfo()), 901 ("v1.32.0", ReleaseInfo()), 902 ("v1.33.2", ReleaseInfo()), 903 ("v1.34.0", ReleaseInfo()), 904 ("v1.35.0", ReleaseInfo()), 905 ("v1.36.3", ReleaseInfo()), 906 ("v1.37.0", ReleaseInfo()), 907 ("v1.38.0", ReleaseInfo()), 908 ("v1.39.0", ReleaseInfo()), 909 ("v1.41.1", ReleaseInfo()), 910 ("v1.42.0", ReleaseInfo()), 911 ("v1.43.0", ReleaseInfo()), 912 ("v1.44.0", ReleaseInfo()), 913 ("v1.46.2", ReleaseInfo()), 914 ("v1.47.1", ReleaseInfo()), 915 ("v1.48.3", ReleaseInfo()), 916 ("v1.49.1", ReleaseInfo()), 917 ("v1.52.0", ReleaseInfo()), 918 ("v1.53.0", ReleaseInfo()), 919 ("v1.54.0", ReleaseInfo()), 920 ("v1.55.0", ReleaseInfo()), 921 ("v1.56.0", ReleaseInfo()), 922 ("v1.57.0", ReleaseInfo()), 923 ("v1.58.0", ReleaseInfo()), 924 ("v1.60.0", ReleaseInfo()), 925 ("v1.61.0", ReleaseInfo()), 926 ("v1.62.0", ReleaseInfo()), 927 ("v1.63.0", ReleaseInfo()), 928 ("v1.64.0", ReleaseInfo()), 929 ("v1.65.0", ReleaseInfo()), 930 ("v1.66.0", ReleaseInfo()), 931 ("v1.67.0", ReleaseInfo()), 932 ] 933 ), 934 "php": OrderedDict( 935 [ 936 ("v1.0.1", ReleaseInfo(testcases_file="php__v1.0.1")), 937 ("v1.1.4", ReleaseInfo(testcases_file="php__v1.0.1")), 938 ("v1.2.5", ReleaseInfo(testcases_file="php__v1.0.1")), 939 ("v1.3.9", ReleaseInfo(testcases_file="php__v1.0.1")), 940 ("v1.4.2", ReleaseInfo(testcases_file="php__v1.0.1")), 941 ("v1.6.6", ReleaseInfo(testcases_file="php__v1.0.1")), 942 ("v1.7.2", ReleaseInfo(testcases_file="php__v1.0.1")), 943 ("v1.8.0", ReleaseInfo(testcases_file="php__v1.0.1")), 944 ("v1.9.1", ReleaseInfo(testcases_file="php__v1.0.1")), 945 ("v1.10.1", ReleaseInfo(testcases_file="php__v1.0.1")), 946 ("v1.11.1", ReleaseInfo(testcases_file="php__v1.0.1")), 947 ("v1.12.0", ReleaseInfo(testcases_file="php__v1.0.1")), 948 ("v1.13.0", ReleaseInfo(testcases_file="php__v1.0.1")), 949 ("v1.14.1", ReleaseInfo(testcases_file="php__v1.0.1")), 950 ("v1.15.0", ReleaseInfo(testcases_file="php__v1.0.1")), 951 ("v1.16.0", ReleaseInfo(testcases_file="php__v1.0.1")), 952 ("v1.17.1", ReleaseInfo(testcases_file="php__v1.0.1")), 953 ("v1.18.0", ReleaseInfo()), 954 # v1.19 and v1.20 were deliberately omitted here because of an issue. 955 # See https://github.com/grpc/grpc/issues/18264 956 ("v1.21.4", ReleaseInfo()), 957 ("v1.22.0", ReleaseInfo()), 958 ("v1.22.1", ReleaseInfo()), 959 ("v1.23.0", ReleaseInfo()), 960 ("v1.24.0", ReleaseInfo()), 961 ("v1.25.0", ReleaseInfo()), 962 ("v1.26.0", ReleaseInfo()), 963 ("v1.27.3", ReleaseInfo()), 964 ("v1.30.0", ReleaseInfo()), 965 ("v1.31.1", ReleaseInfo()), 966 ("v1.32.0", ReleaseInfo()), 967 ("v1.33.2", ReleaseInfo()), 968 ("v1.34.0", ReleaseInfo()), 969 ("v1.35.0", ReleaseInfo()), 970 ("v1.36.3", ReleaseInfo()), 971 ("v1.37.0", ReleaseInfo()), 972 ("v1.38.0", ReleaseInfo()), 973 ("v1.39.0", ReleaseInfo()), 974 ("v1.41.1", ReleaseInfo()), 975 ("v1.42.0", ReleaseInfo()), 976 ("v1.43.0", ReleaseInfo()), 977 ("v1.44.0", ReleaseInfo()), 978 ("v1.46.2", ReleaseInfo()), 979 ("v1.47.1", ReleaseInfo()), 980 ("v1.48.3", ReleaseInfo()), 981 ("v1.49.1", ReleaseInfo()), 982 ("v1.52.0", ReleaseInfo()), 983 ("v1.53.0", ReleaseInfo()), 984 ("v1.54.0", ReleaseInfo()), 985 ("v1.55.0", ReleaseInfo()), 986 ("v1.56.0", ReleaseInfo()), 987 ("v1.57.0", ReleaseInfo()), 988 ("v1.58.0", ReleaseInfo()), 989 ("v1.60.0", ReleaseInfo()), 990 ("v1.61.0", ReleaseInfo()), 991 ("v1.62.0", ReleaseInfo()), 992 ("v1.63.0", ReleaseInfo()), 993 ("v1.64.0", ReleaseInfo()), 994 ("v1.65.0", ReleaseInfo()), 995 ("v1.66.0", ReleaseInfo()), 996 ("v1.67.0", ReleaseInfo()), 997 ] 998 ), 999 "csharp": OrderedDict( 1000 [ 1001 ( 1002 "v1.0.1", 1003 ReleaseInfo( 1004 patch=[ 1005 "tools/dockerfile/interoptest/grpc_interop_csharp/Dockerfile", 1006 "tools/dockerfile/interoptest/grpc_interop_csharpcoreclr/Dockerfile", 1007 ], 1008 testcases_file="csharp__v1.1.4", 1009 ), 1010 ), 1011 ("v1.1.4", ReleaseInfo(testcases_file="csharp__v1.1.4")), 1012 ("v1.2.5", ReleaseInfo(testcases_file="csharp__v1.1.4")), 1013 ("v1.3.9", ReleaseInfo(testcases_file="csharp__v1.3.9")), 1014 ("v1.4.2", ReleaseInfo(testcases_file="csharp__v1.3.9")), 1015 ("v1.6.6", ReleaseInfo(testcases_file="csharp__v1.3.9")), 1016 ("v1.7.2", ReleaseInfo(testcases_file="csharp__v1.3.9")), 1017 ("v1.8.0", ReleaseInfo(testcases_file="csharp__v1.3.9")), 1018 ("v1.9.1", ReleaseInfo(testcases_file="csharp__v1.3.9")), 1019 ("v1.10.1", ReleaseInfo(testcases_file="csharp__v1.3.9")), 1020 ("v1.11.1", ReleaseInfo(testcases_file="csharp__v1.3.9")), 1021 ("v1.12.0", ReleaseInfo(testcases_file="csharp__v1.3.9")), 1022 ("v1.13.0", ReleaseInfo(testcases_file="csharp__v1.3.9")), 1023 ("v1.14.1", ReleaseInfo(testcases_file="csharp__v1.3.9")), 1024 ("v1.15.0", ReleaseInfo(testcases_file="csharp__v1.3.9")), 1025 ("v1.16.0", ReleaseInfo(testcases_file="csharp__v1.3.9")), 1026 ("v1.17.1", ReleaseInfo(testcases_file="csharp__v1.3.9")), 1027 ("v1.18.0", ReleaseInfo(testcases_file="csharp__v1.18.0")), 1028 ("v1.19.0", ReleaseInfo(testcases_file="csharp__v1.18.0")), 1029 ("v1.20.0", ReleaseInfo(testcases_file="csharp__v1.20.0")), 1030 ("v1.20.0", ReleaseInfo(testcases_file="csharp__v1.20.0")), 1031 ("v1.21.4", ReleaseInfo(testcases_file="csharp__v1.20.0")), 1032 ("v1.22.0", ReleaseInfo(testcases_file="csharp__v1.20.0")), 1033 ("v1.22.1", ReleaseInfo(testcases_file="csharp__v1.20.0")), 1034 ("v1.23.0", ReleaseInfo(testcases_file="csharp__v1.20.0")), 1035 ("v1.24.0", ReleaseInfo(testcases_file="csharp__v1.20.0")), 1036 ("v1.25.0", ReleaseInfo(testcases_file="csharp__v1.20.0")), 1037 ("v1.26.0", ReleaseInfo(testcases_file="csharp__v1.20.0")), 1038 ("v1.27.3", ReleaseInfo(testcases_file="csharp__v1.20.0")), 1039 ("v1.30.0", ReleaseInfo(testcases_file="csharp__v1.20.0")), 1040 ("v1.31.1", ReleaseInfo(testcases_file="csharp__v1.20.0")), 1041 ("v1.32.0", ReleaseInfo(testcases_file="csharp__v1.20.0")), 1042 ("v1.33.2", ReleaseInfo(testcases_file="csharp__v1.20.0")), 1043 ("v1.34.0", ReleaseInfo(testcases_file="csharp__v1.20.0")), 1044 ("v1.35.0", ReleaseInfo(testcases_file="csharp__v1.20.0")), 1045 ("v1.36.3", ReleaseInfo(testcases_file="csharp__v1.20.0")), 1046 ("v1.37.0", ReleaseInfo(testcases_file="csharp__v1.20.0")), 1047 ("v1.38.1", ReleaseInfo(testcases_file="csharp__v1.20.0")), 1048 ("v1.39.1", ReleaseInfo(testcases_file="csharp__v1.20.0")), 1049 ("v1.41.1", ReleaseInfo(testcases_file="csharp__v1.20.0")), 1050 ("v1.42.0", ReleaseInfo(testcases_file="csharp__v1.20.0")), 1051 ("v1.43.0", ReleaseInfo()), 1052 ("v1.44.0", ReleaseInfo()), 1053 ("v1.46.2", ReleaseInfo()), 1054 ] 1055 ), 1056} 1057