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