Skip to content

Commit 9d1d839

Browse files
authored
Merge pull request #34130 from def-/pr-orchestratord-upgrade2
orchestratord test: Fix upgrade tests and reenable authenticator kinds
2 parents 3a30dec + b9d6fba commit 9d1d839

File tree

1 file changed

+47
-32
lines changed

1 file changed

+47
-32
lines changed

test/orchestratord/mzcompose.py

Lines changed: 47 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,10 @@ def get_tag(tag: str | None = None) -> str:
6565
return tag or f"v{ci_util.get_mz_version()}--pr.g{git.rev_parse('HEAD')}"
6666

6767

68+
def get_version(tag: str | None = None) -> MzVersion:
69+
return MzVersion.parse_mz(get_tag(tag))
70+
71+
6872
def get_image(image: str, tag: str | None) -> str:
6973
return f'{image.rsplit(":", 1)[0]}:{get_tag(tag)}'
7074

@@ -136,7 +140,9 @@ class Modification:
136140
pick_by_default: bool = True
137141

138142
def __init__(self, value: Any):
139-
assert value in self.values(), f"Expected {value} to be in {self.values()}"
143+
assert value in self.values(
144+
get_version()
145+
), f"Expected {value} to be in {self.values(get_version())}"
140146
self.value = value
141147

142148
def to_dict(self) -> dict[str, Any]:
@@ -167,16 +173,16 @@ def from_dict(cls, data: dict[str, Any]) -> "Modification":
167173
return subclass(data["value"])
168174

169175
@classmethod
170-
def values(cls) -> list[Any]:
176+
def values(cls, version: MzVersion) -> list[Any]:
171177
raise NotImplementedError
172178

173179
@classmethod
174180
def bad_values(cls) -> list[Any]:
175181
return cls.failed_reconciliation_values()
176182

177183
@classmethod
178-
def good_values(cls) -> list[Any]:
179-
return [value for value in cls.values() if value not in cls.bad_values()]
184+
def good_values(cls, version: MzVersion) -> list[Any]:
185+
return [value for value in cls.values(version) if value not in cls.bad_values()]
180186

181187
@classmethod
182188
def failed_reconciliation_values(cls) -> list[Any]:
@@ -199,7 +205,7 @@ def all_modifications() -> list[type[Modification]]:
199205

200206
class LicenseKey(Modification):
201207
@classmethod
202-
def values(cls) -> list[Any]:
208+
def values(cls, version: MzVersion) -> list[Any]:
203209
return ["valid", "invalid", "del"]
204210

205211
@classmethod
@@ -220,7 +226,9 @@ def modify(self, definition: dict[str, Any]) -> None:
220226
elif self.value == "del":
221227
del definition["secret"]["stringData"]["license_key"]
222228
else:
223-
raise ValueError(f"Unknown value {self.value}, only know {self.values()}")
229+
raise ValueError(
230+
f"Unknown value {self.value}, only know {self.values(get_version())}"
231+
)
224232

225233
def validate(self, mods: dict[type[Modification], Any]) -> None:
226234
if MzVersion.parse_mz(mods[EnvironmentdImageRef]) < MzVersion.parse_mz(
@@ -251,7 +259,7 @@ def check() -> None:
251259

252260
class LicenseKeyCheck(Modification):
253261
@classmethod
254-
def values(cls) -> list[Any]:
262+
def values(cls, version: MzVersion) -> list[Any]:
255263
# TODO: Reenable False when fixed
256264
return [None, True]
257265

@@ -281,7 +289,7 @@ def validate(self, mods: dict[type[Modification], Any]) -> None:
281289

282290
class BalancerdEnabled(Modification):
283291
@classmethod
284-
def values(cls) -> list[Any]:
292+
def values(cls, version: MzVersion) -> list[Any]:
285293
return [True, False]
286294

287295
@classmethod
@@ -322,7 +330,7 @@ def check() -> None:
322330

323331
class BalancerdNodeSelector(Modification):
324332
@classmethod
325-
def values(cls) -> list[Any]:
333+
def values(cls, version: MzVersion) -> list[Any]:
326334
return [
327335
{},
328336
# TODO: Reenable when we create nodes with these labels
@@ -362,7 +370,7 @@ def check() -> None:
362370

363371
class ConsoleEnabled(Modification):
364372
@classmethod
365-
def values(cls) -> list[Any]:
373+
def values(cls, version: MzVersion) -> list[Any]:
366374
return [True, False]
367375

368376
@classmethod
@@ -404,7 +412,7 @@ def check() -> None:
404412

405413
class EnableRBAC(Modification):
406414
@classmethod
407-
def values(cls) -> list[Any]:
415+
def values(cls, version: MzVersion) -> list[Any]:
408416
return [True, False]
409417

410418
@classmethod
@@ -433,7 +441,7 @@ class EnvironmentdImageRef(Modification):
433441
pick_by_default = False
434442

435443
@classmethod
436-
def values(cls) -> list[Any]:
444+
def values(cls, version: MzVersion) -> list[Any]:
437445
return [str(version) for version in get_all_self_managed_versions()] + [
438446
get_tag()
439447
]
@@ -472,7 +480,7 @@ class NumMaterializeEnvironments(Modification):
472480
pick_by_default = False
473481

474482
@classmethod
475-
def values(cls) -> list[Any]:
483+
def values(cls, version: MzVersion) -> list[Any]:
476484
return [1, 2]
477485

478486
@classmethod
@@ -539,7 +547,7 @@ def check() -> None:
539547

540548
class TelemetryEnabled(Modification):
541549
@classmethod
542-
def values(cls) -> list[Any]:
550+
def values(cls, version: MzVersion) -> list[Any]:
543551
return [True, False]
544552

545553
@classmethod
@@ -565,7 +573,7 @@ def validate(self, mods: dict[type[Modification], Any]) -> None:
565573

566574
class TelemetrySegmentClientSide(Modification):
567575
@classmethod
568-
def values(cls) -> list[Any]:
576+
def values(cls, version: MzVersion) -> list[Any]:
569577
return [True, False]
570578

571579
@classmethod
@@ -591,7 +599,7 @@ def validate(self, mods: dict[type[Modification], Any]) -> None:
591599

592600
class ObservabilityEnabled(Modification):
593601
@classmethod
594-
def values(cls) -> list[Any]:
602+
def values(cls, version: MzVersion) -> list[Any]:
595603
return [True, False]
596604

597605
@classmethod
@@ -607,7 +615,7 @@ def validate(self, mods: dict[type[Modification], Any]) -> None:
607615

608616
class ObservabilityPodMetricsEnabled(Modification):
609617
@classmethod
610-
def values(cls) -> list[Any]:
618+
def values(cls, version: MzVersion) -> list[Any]:
611619
return [True, False]
612620

613621
@classmethod
@@ -635,7 +643,7 @@ def validate(self, mods: dict[type[Modification], Any]) -> None:
635643

636644
class ObservabilityPrometheusScrapeAnnotationsEnabled(Modification):
637645
@classmethod
638-
def values(cls) -> list[Any]:
646+
def values(cls, version: MzVersion) -> list[Any]:
639647
return [True, False]
640648

641649
@classmethod
@@ -664,7 +672,7 @@ def validate(self, mods: dict[type[Modification], Any]) -> None:
664672
# TODO: Fix in upgrade tests
665673
# class BalancerdReplicas(Modification):
666674
# @classmethod
667-
# def values(cls) -> list[Any]:
675+
# def values(cls, version: MzVersion) -> list[Any]:
668676
# return [None, 1, 2]
669677
#
670678
# @classmethod
@@ -692,7 +700,7 @@ def validate(self, mods: dict[type[Modification], Any]) -> None:
692700

693701
class ConsoleReplicas(Modification):
694702
@classmethod
695-
def values(cls) -> list[Any]:
703+
def values(cls, version: MzVersion) -> list[Any]:
696704
return [None, 1, 2]
697705

698706
@classmethod
@@ -764,7 +772,7 @@ def validate_container_resources(
764772

765773
class SwapEnabledGlobal(Modification):
766774
@classmethod
767-
def values(cls) -> list[Any]:
775+
def values(cls, version: MzVersion) -> list[Any]:
768776
return [True, False]
769777

770778
@classmethod
@@ -817,7 +825,7 @@ def check_pods() -> None:
817825

818826
class StorageClass(Modification):
819827
@classmethod
820-
def values(cls) -> list[Any]:
828+
def values(cls, version: MzVersion) -> list[Any]:
821829
return [True, False]
822830

823831
@classmethod
@@ -870,7 +878,7 @@ def check_pods() -> None:
870878

871879
class EnvironmentdResources(Modification):
872880
@classmethod
873-
def values(cls) -> list[Any]:
881+
def values(cls, version: MzVersion) -> list[Any]:
874882
return [
875883
None,
876884
{
@@ -920,7 +928,7 @@ def check_pods() -> None:
920928

921929
class BalancerdResources(Modification):
922930
@classmethod
923-
def values(cls) -> list[Any]:
931+
def values(cls, version: MzVersion) -> list[Any]:
924932
return [
925933
None,
926934
{
@@ -975,7 +983,7 @@ def check_pods() -> None:
975983

976984
class ConsoleResources(Modification):
977985
@classmethod
978-
def values(cls) -> list[Any]:
986+
def values(cls, version: MzVersion) -> list[Any]:
979987
return [
980988
None,
981989
{
@@ -1025,11 +1033,14 @@ def check_pods() -> None:
10251033

10261034
class AuthenticatorKind(Modification):
10271035
@classmethod
1028-
def values(cls) -> list[Any]:
1036+
def values(cls, version: MzVersion) -> list[Any]:
10291037
# Test None, Password (v0.147.7+), and Sasl (v0.147.16+)
1030-
return ["None"]
1031-
# TODO: Reenable when database-issues#9899 is fixed
1032-
# return ["None", "Password", "Sasl"]
1038+
result = ["None"]
1039+
if version >= MzVersion.parse_mz("v0.147.7"):
1040+
result.append("Password")
1041+
if version >= MzVersion.parse_mz("v0.147.16"):
1042+
result.append("Sasl")
1043+
return result
10331044

10341045
@classmethod
10351046
def default(cls) -> Any:
@@ -1526,6 +1537,7 @@ def workflow_default(c: Composition, parser: WorkflowArgumentParser) -> None:
15261537
definition["secret"] = materialize_setup[1]
15271538
definition["materialize"] = materialize_setup[2]
15281539

1540+
current_version = get_version(args.tag)
15291541
if args.orchestratord_override:
15301542
definition["operator"]["operator"]["image"]["tag"] = get_tag(args.tag)
15311543
# TODO: database-issues#9696, makes environmentd -> clusterd connections fail
@@ -1584,13 +1596,14 @@ def get_mods() -> Iterator[list[Modification]]:
15841596
yield [NumMaterializeEnvironments(2)]
15851597
elif properties == Properties.Individual:
15861598
for mod_class in mod_classes:
1587-
for value in mod_class.values():
1588-
yield [mod_class(value)]
1599+
for value in mod_class.values(current_version):
1600+
if value in mod_class.values(current_version):
1601+
yield [mod_class(value)]
15891602
elif properties == Properties.Combine:
15901603
assert args.runtime
15911604
while time.time() < end_time:
15921605
yield [
1593-
mod_class(rng.choice(mod_class.good_values()))
1606+
mod_class(rng.choice(mod_class.good_values(current_version)))
15941607
for mod_class in mod_classes
15951608
]
15961609
else:
@@ -1615,6 +1628,7 @@ def get_mods() -> Iterator[list[Modification]]:
16151628
versions = get_all_self_managed_versions()
16161629
while time.time() < end_time:
16171630
selected_versions = sorted(list(rng.sample(versions, 2)))
1631+
current_version = selected_versions[0]
16181632
try:
16191633
mod = next(mods_it)
16201634
except StopIteration:
@@ -1637,6 +1651,7 @@ def get_mods() -> Iterator[list[Modification]]:
16371651
while time.time() < end_time:
16381652
random.randint(2, len(versions))
16391653
selected_versions = sorted(list(rng.sample(versions, 2)))
1654+
current_version = selected_versions[0]
16401655
try:
16411656
mod = next(mods_it)
16421657
except StopIteration:

0 commit comments

Comments
 (0)