Module materialize.checks.scenarios_platform_v2
Expand source code Browse git
# Copyright Materialize, Inc. and contributors. All rights reserved.
#
# Use of this software is governed by the Business Source License
# included in the LICENSE file at the root of this repository.
#
# As of the Change Date specified in that file, in accordance with
# the Business Source License, use of this software will be governed
# by the Apache License, Version 2.0.
from materialize.checks.actions import Action, Initialize, Manipulate, Validate
from materialize.checks.mzcompose_actions import Down, KillMz, StartMz
from materialize.checks.scenarios import Scenario
class PersistTxnToggle(Scenario):
"""Toggle persist_txn_tables between `off` and `eager`"""
def actions(self) -> list[Action]:
return [
StartMz(
self, additional_system_parameter_defaults={"persist_txn_tables": "off"}
),
Initialize(self),
KillMz(capture_logs=True),
StartMz(
self,
additional_system_parameter_defaults={"persist_txn_tables": "eager"},
),
Manipulate(self, phase=1),
KillMz(capture_logs=True),
StartMz(
self, additional_system_parameter_defaults={"persist_txn_tables": "off"}
),
Manipulate(self, phase=2),
KillMz(capture_logs=True),
StartMz(
self,
additional_system_parameter_defaults={"persist_txn_tables": "eager"},
),
Validate(self),
KillMz(capture_logs=True),
StartMz(
self, additional_system_parameter_defaults={"persist_txn_tables": "off"}
),
Validate(self),
]
class PersistTxnFencing(Scenario):
"""Switch between two instances with different persist_txn_tables settings.
Fencing should kick in to prevent data corruption."""
def actions(self) -> list[Action]:
return [
StartMz(self, mz_service="mz_txn_tables_default"),
Initialize(self, mz_service="mz_txn_tables_default"),
StartMz(
self,
additional_system_parameter_defaults={"persist_txn_tables": "off"},
mz_service="mz_txn_tables_off",
),
Manipulate(self, phase=1, mz_service="mz_txn_tables_off"),
StartMz(
self,
additional_system_parameter_defaults={"persist_txn_tables": "eager"},
mz_service="mz_txn_tables_eager",
),
Manipulate(self, phase=2, mz_service="mz_txn_tables_eager"),
Validate(self, mz_service="mz_txn_tables_eager"),
StartMz(self, mz_service="mz_txn_tables_default"),
Validate(self, mz_service="mz_txn_tables_default"),
# Since we are creating Mz instances with a non-default name,
# we need to perform explicit cleanup here. Some Mz instances
# are dead by now, but we still need to capture their logs.
KillMz(mz_service="mz_txn_tables_eager", capture_logs=True),
KillMz(mz_service="mz_txn_tables_off", capture_logs=True),
KillMz(mz_service="mz_txn_tables_default", capture_logs=True),
Down(),
]
Classes
class PersistTxnFencing (checks: list[type[Check]], executor: Executor, seed: str | None = None)
-
Switch between two instances with different persist_txn_tables settings. Fencing should kick in to prevent data corruption.
Expand source code Browse git
class PersistTxnFencing(Scenario): """Switch between two instances with different persist_txn_tables settings. Fencing should kick in to prevent data corruption.""" def actions(self) -> list[Action]: return [ StartMz(self, mz_service="mz_txn_tables_default"), Initialize(self, mz_service="mz_txn_tables_default"), StartMz( self, additional_system_parameter_defaults={"persist_txn_tables": "off"}, mz_service="mz_txn_tables_off", ), Manipulate(self, phase=1, mz_service="mz_txn_tables_off"), StartMz( self, additional_system_parameter_defaults={"persist_txn_tables": "eager"}, mz_service="mz_txn_tables_eager", ), Manipulate(self, phase=2, mz_service="mz_txn_tables_eager"), Validate(self, mz_service="mz_txn_tables_eager"), StartMz(self, mz_service="mz_txn_tables_default"), Validate(self, mz_service="mz_txn_tables_default"), # Since we are creating Mz instances with a non-default name, # we need to perform explicit cleanup here. Some Mz instances # are dead by now, but we still need to capture their logs. KillMz(mz_service="mz_txn_tables_eager", capture_logs=True), KillMz(mz_service="mz_txn_tables_off", capture_logs=True), KillMz(mz_service="mz_txn_tables_default", capture_logs=True), Down(), ]
Ancestors
Methods
def actions(self) ‑> list[Action]
-
Expand source code Browse git
def actions(self) -> list[Action]: return [ StartMz(self, mz_service="mz_txn_tables_default"), Initialize(self, mz_service="mz_txn_tables_default"), StartMz( self, additional_system_parameter_defaults={"persist_txn_tables": "off"}, mz_service="mz_txn_tables_off", ), Manipulate(self, phase=1, mz_service="mz_txn_tables_off"), StartMz( self, additional_system_parameter_defaults={"persist_txn_tables": "eager"}, mz_service="mz_txn_tables_eager", ), Manipulate(self, phase=2, mz_service="mz_txn_tables_eager"), Validate(self, mz_service="mz_txn_tables_eager"), StartMz(self, mz_service="mz_txn_tables_default"), Validate(self, mz_service="mz_txn_tables_default"), # Since we are creating Mz instances with a non-default name, # we need to perform explicit cleanup here. Some Mz instances # are dead by now, but we still need to capture their logs. KillMz(mz_service="mz_txn_tables_eager", capture_logs=True), KillMz(mz_service="mz_txn_tables_off", capture_logs=True), KillMz(mz_service="mz_txn_tables_default", capture_logs=True), Down(), ]
class PersistTxnToggle (checks: list[type[Check]], executor: Executor, seed: str | None = None)
-
Toggle persist_txn_tables between
off
andeager
Expand source code Browse git
class PersistTxnToggle(Scenario): """Toggle persist_txn_tables between `off` and `eager`""" def actions(self) -> list[Action]: return [ StartMz( self, additional_system_parameter_defaults={"persist_txn_tables": "off"} ), Initialize(self), KillMz(capture_logs=True), StartMz( self, additional_system_parameter_defaults={"persist_txn_tables": "eager"}, ), Manipulate(self, phase=1), KillMz(capture_logs=True), StartMz( self, additional_system_parameter_defaults={"persist_txn_tables": "off"} ), Manipulate(self, phase=2), KillMz(capture_logs=True), StartMz( self, additional_system_parameter_defaults={"persist_txn_tables": "eager"}, ), Validate(self), KillMz(capture_logs=True), StartMz( self, additional_system_parameter_defaults={"persist_txn_tables": "off"} ), Validate(self), ]
Ancestors
Methods
def actions(self) ‑> list[Action]
-
Expand source code Browse git
def actions(self) -> list[Action]: return [ StartMz( self, additional_system_parameter_defaults={"persist_txn_tables": "off"} ), Initialize(self), KillMz(capture_logs=True), StartMz( self, additional_system_parameter_defaults={"persist_txn_tables": "eager"}, ), Manipulate(self, phase=1), KillMz(capture_logs=True), StartMz( self, additional_system_parameter_defaults={"persist_txn_tables": "off"} ), Manipulate(self, phase=2), KillMz(capture_logs=True), StartMz( self, additional_system_parameter_defaults={"persist_txn_tables": "eager"}, ), Validate(self), KillMz(capture_logs=True), StartMz( self, additional_system_parameter_defaults={"persist_txn_tables": "off"} ), Validate(self), ]