armi.operators.tests.test_operators module

Tests for operators.

class armi.operators.tests.test_operators.InterfaceA(r, cs)[source]

Bases: Interface

Construct an interface.

The r and cs arguments are required, but may be None, where appropriate for the specific Interface implementation.

Parameters:
  • r (Reactor) – A reactor to attach to

  • cs (Settings) – Settings object to use

Raises:

RuntimeError – Interfaces derived from Interface must define their name

function = 'A'

The function performed by an Interface. This is not required be be defined by implementations of Interface, but is used to form categories of interfaces.

name: Optional[str] = 'First'

The name of the interface. This is undefined for the base class, and must be overridden by any concrete class that extends this one.

class armi.operators.tests.test_operators.InterfaceB(r, cs)[source]

Bases: InterfaceA

Dummy Interface that extends A.

Construct an interface.

The r and cs arguments are required, but may be None, where appropriate for the specific Interface implementation.

Parameters:
  • r (Reactor) – A reactor to attach to

  • cs (Settings) – Settings object to use

Raises:

RuntimeError – Interfaces derived from Interface must define their name

function = 'A'

The function performed by an Interface. This is not required be be defined by implementations of Interface, but is used to form categories of interfaces.

name: Optional[str] = 'Second'

The name of the interface. This is undefined for the base class, and must be overridden by any concrete class that extends this one.

class armi.operators.tests.test_operators.InterfaceC(r, cs)[source]

Bases: Interface

Construct an interface.

The r and cs arguments are required, but may be None, where appropriate for the specific Interface implementation.

Parameters:
  • r (Reactor) – A reactor to attach to

  • cs (Settings) – Settings object to use

Raises:

RuntimeError – Interfaces derived from Interface must define their name

function = 'A'

The function performed by an Interface. This is not required be be defined by implementations of Interface, but is used to form categories of interfaces.

name: Optional[str] = 'Third'

The name of the interface. This is undefined for the base class, and must be overridden by any concrete class that extends this one.

class armi.operators.tests.test_operators.OperatorTests(methodName='runTest')[source]

Bases: TestCase

Create an instance of the class that will use the named test method when executed. Raises a ValueError if the instance does not have a method with the specified name.

test_operatorData()[source]

Test that the operator has input data, a reactor model.

test_orderedInterfaces(interactAll)[source]

Test the default interfaces are in an ordered list, looped over at each time step.

test_addInterfaceSubclassCollision()[source]
test_interfaceIsActive()[source]
test_getActiveInterfaces()[source]

Ensure that the right interfaces are returned for a given interaction state.

test_loadStateError()[source]

The loadTestReactor() test tool does not have any history in the DB to load from.

test_setStateToDefault()[source]
test_snapshotRequest(fakeDirList, fakeCopy)[source]
class armi.operators.tests.test_operators.TestCreateOperator(methodName='runTest')[source]

Bases: TestCase

Create an instance of the class that will use the named test method when executed. Raises a ValueError if the instance does not have a method with the specified name.

test_createOperator()[source]

Test that an operator can be created from settings.

class armi.operators.tests.test_operators.TestTightCoupling(methodName='runTest')[source]

Bases: TestCase

Create an instance of the class that will use the named test method when executed. Raises a ValueError if the instance does not have a method with the specified name.

test_getStepLengths()[source]

Test the step lengths are correctly calculated, based on settings.

test_couplingIsActive()[source]

Ensure that cs[CONF_TIGHT_COUPLING] controls couplingIsActive.

test_performTightCoupling_Inactive()[source]

Ensures no action by _performTightCoupling if cs[CONF_TIGHT_COUPLING] = false.

test_performTightCoupling_skip()[source]

Ensure that cycles within cs[CONF_CYCLES_SKIP_TIGHT_COUPLING_INTERACTION] are skipped.

test_performTightCoupling_notConverged()[source]

Ensure that the appropriate runLog.warning is addressed in tight coupling reaches max num of iters.

test_performTightCoupling_WriteDB()[source]

Ensure a tight coupling iteration accours and that a DB WILL be written if requested.

test_performTightCoupling_NoWriteDB()[source]

Ensure a tight coupling iteration accours and that a DB WILL NOT be written if requested.

dbWriteForCoupling(writeDB: bool)[source]
test_computeTightCouplingConvergence()[source]

Ensure that tight coupling convergence can be computed and checked.

Notes

  • Assertion #1: ensure that the convergence of Keff, eps, is greater than 1e-5 (the prescribed convergence criteria)

  • Assertion #2: ensure that eps is (prevIterKeff - currIterKeff)

class armi.operators.tests.test_operators.CyclesSettingsTests(methodName='runTest')[source]

Bases: TestCase

Check that we can correctly access the various cycle settings from the operator.

Create an instance of the class that will use the named test method when executed. Raises a ValueError if the instance does not have a method with the specified name.

detailedCyclesSettings = '\nmetadata:\n  version: uncontrolled\nsettings:\n  power: 1000000000.0\n  nCycles: 3\n  cycles:\n    - name: startup sequence\n      cumulative days: [1, 2, 3]\n      power fractions: [0.1, 0.2, 0.3]\n      availability factor: 0.1\n    - cycle length: 10\n      burn steps: 5\n      power fractions: [0.2, 0.2, 0.2, 0.2, 0]\n      availability factor: 0.5\n    - name: prepare for shutdown\n      step days: [3, R4]\n      power fractions: [0.3, R4]\n  runType: Standard\n'
powerFractionsSolution = [[0.1, 0.2, 0.3], [0.2, 0.2, 0.2, 0.2, 0], [0.3, 0.3, 0.3, 0.3, 0.3]]
cycleNamesSolution = ['startup sequence', None, 'prepare for shutdown']
availabilityFactorsSolution = [0.1, 0.5, 1]
stepLengthsSolution = [[1, 1, 1], [1.0, 1.0, 1.0, 1.0, 1.0], [3, 3, 3, 3, 3]]
cycleLengthsSolution = [30, 10, 15]
burnStepsSolution = [3, 5, 5]
maxBurnStepsSolution = 5
test_getPowerFractions()[source]

Test that the power fractions are calculated correctly.

test_getCycleNames()[source]
test_getAvailabilityFactors()[source]
test_getStepLengths()[source]

Test that the manually-set, detailed time steps are retrievable.

test_getCycleLengths()[source]
test_getBurnSteps()[source]
test_getMaxBurnSteps()[source]
class armi.operators.tests.test_operators.TestInterfaceAndEventHeaders(methodName='runTest')[source]

Bases: TestCase

Create an instance of the class that will use the named test method when executed. Raises a ValueError if the instance does not have a method with the specified name.

test_expandCycleAndTimeNodeArgs_Empty()[source]

When *args are empty, cycleNodeInfo should be an empty string.

test_expandCycleAndTimeNodeArgs_OneArg()[source]

When *args is a single value, cycleNodeInfo should return the right string.

test_expandCycleAndTimeNodeArgs_TwoArg()[source]

When *args is two values, cycleNodeInfo should return the right string.