Module materialize.data_ingest.transaction_def
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.
import random
import time
from collections.abc import Iterator
from enum import Enum
from materialize.data_ingest.definition import Definition
from materialize.data_ingest.field import Field
from materialize.data_ingest.rowlist import RowList
from materialize.data_ingest.transaction import Transaction
from materialize.mzcompose.composition import Composition
class TransactionSize(Enum):
SINGLE_OPERATION = 1
HUGE = 1_000_000_000
class TransactionDef:
operations: list[Definition]
size: TransactionSize
def __init__(
self,
operations: list[Definition],
size: TransactionSize = TransactionSize.SINGLE_OPERATION,
):
self.operations = operations
self.size = size
def generate(self, fields: list[Field]) -> Iterator[Transaction | None]:
full_rowlist: list[RowList] = []
for definition in self.operations:
for i, rowlist in enumerate(definition.generate(fields)):
full_rowlist.append(rowlist)
if i + 1 == self.size.value:
yield Transaction(full_rowlist)
full_rowlist = []
if full_rowlist:
yield Transaction(full_rowlist)
class RestartMz(TransactionDef):
composition: Composition
probability: float
def __init__(self, composition: Composition, probability: float):
self.composition = composition
self.probability = probability
def generate(self, fields: list[Field]) -> Iterator[Transaction | None]:
if random.random() < self.probability:
self.composition.kill("materialized")
time.sleep(1)
self.composition.up("materialized")
yield None
Classes
class RestartMz (composition: Composition, probability: float)
-
Expand source code Browse git
class RestartMz(TransactionDef): composition: Composition probability: float def __init__(self, composition: Composition, probability: float): self.composition = composition self.probability = probability def generate(self, fields: list[Field]) -> Iterator[Transaction | None]: if random.random() < self.probability: self.composition.kill("materialized") time.sleep(1) self.composition.up("materialized") yield None
Ancestors
Class variables
var composition : Composition
var probability : float
Methods
def generate(self, fields: list[Field]) ‑> collections.abc.Iterator[Transaction | None]
-
Expand source code Browse git
def generate(self, fields: list[Field]) -> Iterator[Transaction | None]: if random.random() < self.probability: self.composition.kill("materialized") time.sleep(1) self.composition.up("materialized") yield None
class TransactionDef (operations: list[Definition], size: TransactionSize = TransactionSize.SINGLE_OPERATION)
-
Expand source code Browse git
class TransactionDef: operations: list[Definition] size: TransactionSize def __init__( self, operations: list[Definition], size: TransactionSize = TransactionSize.SINGLE_OPERATION, ): self.operations = operations self.size = size def generate(self, fields: list[Field]) -> Iterator[Transaction | None]: full_rowlist: list[RowList] = [] for definition in self.operations: for i, rowlist in enumerate(definition.generate(fields)): full_rowlist.append(rowlist) if i + 1 == self.size.value: yield Transaction(full_rowlist) full_rowlist = [] if full_rowlist: yield Transaction(full_rowlist)
Subclasses
Class variables
var operations : list[Definition]
var size : TransactionSize
Methods
def generate(self, fields: list[Field]) ‑> collections.abc.Iterator[Transaction | None]
-
Expand source code Browse git
def generate(self, fields: list[Field]) -> Iterator[Transaction | None]: full_rowlist: list[RowList] = [] for definition in self.operations: for i, rowlist in enumerate(definition.generate(fields)): full_rowlist.append(rowlist) if i + 1 == self.size.value: yield Transaction(full_rowlist) full_rowlist = [] if full_rowlist: yield Transaction(full_rowlist)
class TransactionSize (*args, **kwds)
-
Create a collection of name/value pairs.
Example enumeration:
>>> class Color(Enum): ... RED = 1 ... BLUE = 2 ... GREEN = 3
Access them by:
- attribute access::
>>> Color.RED <Color.RED: 1>
- value lookup:
>>> Color(1) <Color.RED: 1>
- name lookup:
>>> Color['RED'] <Color.RED: 1>
Enumerations can be iterated over, and know how many members they have:
>>> len(Color) 3
>>> list(Color) [<Color.RED: 1>, <Color.BLUE: 2>, <Color.GREEN: 3>]
Methods can be added to enumerations, and members can have their own attributes – see the documentation for details.
Expand source code Browse git
class TransactionSize(Enum): SINGLE_OPERATION = 1 HUGE = 1_000_000_000
Ancestors
- enum.Enum
Class variables
var HUGE
var SINGLE_OPERATION