Skip to content

Commit fef9d6a

Browse files
committed
platform checks: Follow up to base_version
to address reviewer comments in #17849
1 parent 224f551 commit fef9d6a

7 files changed

Lines changed: 116 additions & 96 deletions

File tree

misc/python/materialize/checks/actions.py

Lines changed: 14 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -8,13 +8,12 @@
88
# by the Apache License, Version 2.0.
99

1010
import time
11-
from typing import TYPE_CHECKING, Any, List, Optional, Type
11+
from typing import TYPE_CHECKING, Any, Optional
1212

1313
from materialize.checks.executors import Executor
14-
from materialize.util import MzVersion
1514

1615
if TYPE_CHECKING:
17-
from materialize.checks.checks import Check
16+
from materialize.checks.scenarios import Scenario
1817

1918

2019
class Action:
@@ -51,8 +50,10 @@ def execute(self, e: Executor) -> None:
5150

5251

5352
class Initialize(Action):
54-
def __init__(self, checks: List[Type["Check"]], base_version: MzVersion) -> None:
55-
self.checks = [check_class(base_version) for check_class in checks]
53+
def __init__(self, scenario: "Scenario") -> None:
54+
self.checks = [
55+
check_class(scenario.base_version()) for check_class in scenario.checks()
56+
]
5657

5758
def execute(self, e: Executor) -> None:
5859
for check in self.checks:
@@ -66,14 +67,15 @@ def execute(self, e: Executor) -> None:
6667
class Manipulate(Action):
6768
def __init__(
6869
self,
69-
checks: List[Type["Check"]],
70-
base_version: MzVersion,
70+
scenario: "Scenario",
7171
phase: Optional[int] = None,
7272
) -> None:
7373
assert phase is not None
7474
self.phase = phase - 1
7575

76-
self.checks = [check_class(base_version) for check_class in checks]
76+
self.checks = [
77+
check_class(scenario.base_version()) for check_class in scenario.checks()
78+
]
7779
assert len(self.checks) >= self.phase
7880

7981
def execute(self, e: Executor) -> None:
@@ -87,8 +89,10 @@ def execute(self, e: Executor) -> None:
8789

8890

8991
class Validate(Action):
90-
def __init__(self, checks: List[Type["Check"]], base_version: MzVersion) -> None:
91-
self.checks = [check_class(base_version) for check_class in checks]
92+
def __init__(self, scenario: "Scenario") -> None:
93+
self.checks = [
94+
check_class(scenario.base_version()) for check_class in scenario.checks()
95+
]
9296

9397
def execute(self, e: Executor) -> None:
9498
for check in self.checks:

misc/python/materialize/checks/checks.py

Lines changed: 15 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,9 @@ def __init__(self, base_version: MzVersion) -> None:
2121
self._manipulate = self.manipulate()
2222
self._validate = self.validate()
2323

24+
def _can_run(self) -> bool:
25+
return True
26+
2427
def initialize(self) -> Testdrive:
2528
return Testdrive("")
2629

@@ -31,22 +34,28 @@ def validate(self) -> Testdrive:
3134
assert False
3235

3336
def start_initialize(self, e: Executor) -> None:
34-
self._initialize.execute(e)
37+
if self._can_run():
38+
self._initialize.execute(e)
3539

3640
def join_initialize(self, e: Executor) -> None:
37-
self._initialize.join(e)
41+
if self._can_run():
42+
self._initialize.join(e)
3843

3944
def start_manipulate(self, e: Executor, phase: int) -> None:
40-
self._manipulate[phase].execute(e)
45+
if self._can_run():
46+
self._manipulate[phase].execute(e)
4147

4248
def join_manipulate(self, e: Executor, phase: int) -> None:
43-
self._manipulate[phase].join(e)
49+
if self._can_run():
50+
self._manipulate[phase].join(e)
4451

4552
def start_validate(self, e: Executor) -> None:
46-
self._validate.execute(e)
53+
if self._can_run():
54+
self._validate.execute(e)
4755

4856
def join_validate(self, e: Executor) -> None:
49-
self._validate.join(e)
57+
if self._can_run():
58+
self._validate.join(e)
5059

5160

5261
class CheckDisabled(Check):

misc/python/materialize/checks/scenarios.py

Lines changed: 43 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ def __init__(
4545
self._checks = checks
4646
self.executor = executor
4747
self.rng = None if seed is None else Random(seed)
48-
self.version_cargo = MzVersion.parse_cargo()
48+
self._base_version = MzVersion.parse_cargo()
4949

5050
def checks(self) -> List[Type[Check]]:
5151
if self.rng:
@@ -55,6 +55,9 @@ def checks(self) -> List[Type[Check]]:
5555
def actions(self) -> List[Action]:
5656
assert False
5757

58+
def base_version(self) -> MzVersion:
59+
return self._base_version
60+
5861
def run(self) -> None:
5962
for action in self.actions():
6063
action.execute(self.executor)
@@ -64,39 +67,39 @@ class NoRestartNoUpgrade(Scenario):
6467
def actions(self) -> List[Action]:
6568
return [
6669
StartMz(),
67-
Initialize(self.checks(), base_version=self.version_cargo),
68-
Manipulate(self.checks(), base_version=self.version_cargo, phase=1),
69-
Manipulate(self.checks(), base_version=self.version_cargo, phase=2),
70-
Validate(self.checks(), base_version=self.version_cargo),
70+
Initialize(self),
71+
Manipulate(self, phase=1),
72+
Manipulate(self, phase=2),
73+
Validate(self),
7174
]
7275

7376

7477
class RestartEntireMz(Scenario):
7578
def actions(self) -> List[Action]:
7679
return [
7780
StartMz(),
78-
Initialize(self.checks(), base_version=self.version_cargo),
81+
Initialize(self),
7982
KillMz(),
8083
StartMz(),
81-
Manipulate(self.checks(), base_version=self.version_cargo, phase=1),
84+
Manipulate(self, phase=1),
8285
KillMz(),
8386
StartMz(),
84-
Manipulate(self.checks(), base_version=self.version_cargo, phase=2),
87+
Manipulate(self, phase=2),
8588
KillMz(),
8689
StartMz(),
87-
Validate(self.checks(), base_version=self.version_cargo),
90+
Validate(self),
8891
]
8992

9093

9194
class DropCreateDefaultReplica(Scenario):
9295
def actions(self) -> List[Action]:
9396
return [
9497
StartMz(),
95-
Initialize(self.checks(), base_version=self.version_cargo),
96-
Manipulate(self.checks(), base_version=self.version_cargo, phase=1),
98+
Initialize(self),
99+
Manipulate(self, phase=1),
97100
DropCreateDefaultReplicaAction(),
98-
Manipulate(self.checks(), base_version=self.version_cargo, phase=2),
99-
Validate(self.checks(), base_version=self.version_cargo),
101+
Manipulate(self, phase=2),
102+
Validate(self),
100103
]
101104

102105

@@ -107,17 +110,17 @@ def actions(self) -> List[Action]:
107110
return [
108111
StartMz(),
109112
StartClusterdCompute(),
110-
UseClusterdCompute(base_version=self.version_cargo),
111-
Initialize(self.checks(), base_version=self.version_cargo),
113+
UseClusterdCompute(base_version=self.base_version()),
114+
Initialize(self),
112115
KillClusterdCompute(),
113116
StartClusterdCompute(),
114-
Manipulate(self.checks(), base_version=self.version_cargo, phase=1),
117+
Manipulate(self, phase=1),
115118
KillClusterdCompute(),
116119
StartClusterdCompute(),
117-
Manipulate(self.checks(), base_version=self.version_cargo, phase=2),
120+
Manipulate(self, phase=2),
118121
KillClusterdCompute(),
119122
StartClusterdCompute(),
120-
Validate(self.checks(), base_version=self.version_cargo),
123+
Validate(self),
121124
]
122125

123126

@@ -128,17 +131,17 @@ def actions(self) -> List[Action]:
128131
return [
129132
StartMz(),
130133
StartClusterdCompute(),
131-
UseClusterdCompute(base_version=self.version_cargo),
132-
Initialize(self.checks(), base_version=self.version_cargo),
134+
UseClusterdCompute(base_version=self.base_version()),
135+
Initialize(self),
133136
KillMz(),
134137
StartMz(),
135-
Manipulate(self.checks(), base_version=self.version_cargo, phase=1),
138+
Manipulate(self, phase=1),
136139
KillMz(),
137140
StartMz(),
138-
Manipulate(self.checks(), base_version=self.version_cargo, phase=2),
141+
Manipulate(self, phase=2),
139142
KillMz(),
140143
StartMz(),
141-
Validate(self.checks(), base_version=self.version_cargo),
144+
Validate(self),
142145
]
143146

144147

@@ -149,54 +152,54 @@ def actions(self) -> List[Action]:
149152
return [
150153
StartMz(),
151154
StartClusterdCompute(),
152-
UseClusterdCompute(base_version=self.version_cargo),
153-
Initialize(self.checks(), base_version=self.version_cargo),
155+
UseClusterdCompute(base_version=self.base_version()),
156+
Initialize(self),
154157
KillClusterdStorageAction(),
155-
Manipulate(self.checks(), base_version=self.version_cargo, phase=1),
158+
Manipulate(self, phase=1),
156159
KillClusterdStorageAction(),
157-
Manipulate(self.checks(), base_version=self.version_cargo, phase=2),
160+
Manipulate(self, phase=2),
158161
KillClusterdStorageAction(),
159-
Validate(self.checks(), base_version=self.version_cargo),
162+
Validate(self),
160163
]
161164

162165

163166
class RestartCockroach(Scenario):
164167
def actions(self) -> List[Action]:
165168
return [
166169
StartMz(),
167-
Initialize(self.checks(), base_version=self.version_cargo),
170+
Initialize(self),
168171
RestartCockroachAction(),
169-
Manipulate(self.checks(), base_version=self.version_cargo, phase=1),
172+
Manipulate(self, phase=1),
170173
RestartCockroachAction(),
171-
Manipulate(self.checks(), base_version=self.version_cargo, phase=2),
174+
Manipulate(self, phase=2),
172175
RestartCockroachAction(),
173-
Validate(self.checks(), base_version=self.version_cargo),
176+
Validate(self),
174177
]
175178

176179

177180
class RestartSourcePostgres(Scenario):
178181
def actions(self) -> List[Action]:
179182
return [
180183
StartMz(),
181-
Initialize(self.checks(), base_version=self.version_cargo),
184+
Initialize(self),
182185
RestartSourcePostgresAction(),
183-
Manipulate(self.checks(), base_version=self.version_cargo, phase=1),
186+
Manipulate(self, phase=1),
184187
RestartSourcePostgresAction(),
185-
Manipulate(self.checks(), base_version=self.version_cargo, phase=2),
188+
Manipulate(self, phase=2),
186189
RestartSourcePostgresAction(),
187-
Validate(self.checks(), base_version=self.version_cargo),
190+
Validate(self),
188191
]
189192

190193

191194
class RestartRedpandaDebezium(Scenario):
192195
def actions(self) -> List[Action]:
193196
return [
194197
StartMz(),
195-
Initialize(self.checks(), base_version=self.version_cargo),
198+
Initialize(self),
196199
RestartRedpandaDebeziumAction(),
197-
Manipulate(self.checks(), base_version=self.version_cargo, phase=1),
200+
Manipulate(self, phase=1),
198201
RestartRedpandaDebeziumAction(),
199-
Manipulate(self.checks(), base_version=self.version_cargo, phase=2),
202+
Manipulate(self, phase=2),
200203
RestartRedpandaDebeziumAction(),
201-
Validate(self.checks(), base_version=self.version_cargo),
204+
Validate(self),
202205
]

0 commit comments

Comments
 (0)