schrodinger.seam.testing.stateful module

Hypothesis Stateful tests for Beam pipelines using random core transforms. Useful for stress testing the SeamRunner with a large variety of pipelines.

Can be used in two ways.

  1. Run as a standalone script:

    $SCHRODINGER/run python3 -m schrodinger.seam.testing.stateful --max-examples 1000 --stateful-step-count 10
    
  2. Decorate a class with the StatefulBeamPipelineMachineTestCase decorator:

    @StatefulBeamPipelineMachineTestCase
    class TestSeamRunnerStateful:
        pass
    
class schrodinger.seam.testing.stateful.StatefulBeamPipelineMachine

Bases: hypothesis.stateful.RuleBasedStateMachine

Stateful test that builds up a Beam pipeline and then runs it with Seam at teardown.

Currently uses only numeric pcollections to keep the logic simple.

pcolls = Bundle(name='pcolls')
__init__()
runPipeline()
teardown()

Called after a run has finished executing to clean up any necessary state.

Does nothing by default.

applyCreate(new_elements: List[int])
applySideInput(pcoll: apache_beam.pvalue.PCollection)
applyTop(pcoll: apache_beam.pvalue.PCollection)
applySample(pcoll: apache_beam.pvalue.PCollection)
filterAll(pcoll: apache_beam.pvalue.PCollection)
applyReshuffle(pcoll: apache_beam.pvalue.PCollection)
applyDistinct(pcoll: apache_beam.pvalue.PCollection)
applyFlatten(pcolls: List[apache_beam.pvalue.PCollection])
applyMap(pcoll: apache_beam.pvalue.PCollection)
applyFlatMap(pcoll: apache_beam.pvalue.PCollection)
applyCount(pcoll: apache_beam.pvalue.PCollection)
applySum(pcoll: apache_beam.pvalue.PCollection)
applyGBK(pcoll: apache_beam.pvalue.PCollection)
schrodinger.seam.testing.stateful.StatefulBeamPipelineMachineTestCase(hypothesis_settings: hypothesis.settings = None)

Decorator to turn a class into a StatefulBeamPipelineMachine test case.

Example usage:

@StatefulBeamPipelineMachineTestCase
class TestSeamRunnerStateful:
    pass