STAR
Cal STAR — firmware, DAQ server, and engine design
Loading...
Searching...
No Matches
test_audit_regressions Namespace Reference

Functions

object _climbing_pipe (float rise=10.0)
None test_static_head_does_not_reverse_with_the_flow ()
None test_the_residual_is_zero_at_the_correct_reverse_state ()
None test_a_network_with_elevation_and_reverse_flow_is_consistent ()
None test_components_without_elevation_report_no_static_head ()
Fluid _measured_lox ()
None test_substance_constants_are_sought_along_the_whole_chain ()
None test_a_measured_fluid_still_drives_components ()
None test_a_chain_that_truly_cannot_report_constants_says_so ()
None test_a_part_can_carry_measured_flow_data (Path tmp_path)
None test_catalogued_curves_survive_a_round_trip (Path tmp_path)
None test_a_passed_curve_overrides_the_catalogued_one (Path tmp_path)
None test_the_canonical_unit_is_declared_not_inferred ()
None test_a_new_dimension_needs_its_canonical_unit_declared ()
None test_a_mistyped_unit_suggests_the_right_one ()
None test_a_mistyped_fluid_suggests_the_right_one ()
Network _stub_network ()
None test_dead_ended_ports_no_longer_refuse_to_solve ()
None test_a_stub_sits_at_its_plenum_pressure ()
None test_stubs_are_pruned_rather_than_iterated ()
None test_stubs_are_peeled_transitively ()
None test_an_indeterminate_stub_is_flagged ()
None test_a_leg_behind_a_shut_valve_is_flagged ()

Variables

 M = Provenance.MANUFACTURER
 WATER = FlowConditions(rho=1000.0, mu=1.0e-3, p_upstream=10.0e5)
 CATALOG

Detailed Description

Regressions from the Stage A audit.

Four defects found by probing Phases 00-04 after they were each "done". Three
of them had passing tests either side of the seam they broke, which is the
pattern worth noting: every one lived in the *join* between two phases, where
each side was tested alone and the pair was not.

* A static head that reversed sign with the flow (Phase 03 physics, exposed
  only through Phase 04 assembly).
* Substance constants asked of one backend instead of the chain, so putting
  measured data first -- the point of the feature -- broke every component
  evaluation (Phase 01 x Phase 03).
* A catalog that could not hold a curve, making the ``measured`` model
  unreachable from the parts database (Phase 02 x Phase 03).
* A canonical unit resolved by dictionary order rather than declaration.

Function Documentation

◆ _climbing_pipe()

object test_audit_regressions._climbing_pipe ( float rise = 10.0)
protected

◆ _measured_lox()

Fluid test_audit_regressions._measured_lox ( )
protected

◆ _stub_network()

Network test_audit_regressions._stub_network ( )
protected
A COPV feeding a manifold: PT-less plenum with a shut relief and a
capped fill quick-disconnect hanging off it, and a regulator downstream.

The shape of most real feed systems, and the one the Phase 04 validator
used to refuse outright.

Definition at line 292 of file test_audit_regressions.py.

Referenced by test_a_leg_behind_a_shut_valve_is_flagged(), test_a_stub_sits_at_its_plenum_pressure(), test_an_indeterminate_stub_is_flagged(), test_dead_ended_ports_no_longer_refuse_to_solve(), test_stubs_are_peeled_transitively(), and test_stubs_are_pruned_rather_than_iterated().

◆ test_a_chain_that_truly_cannot_report_constants_says_so()

None test_audit_regressions.test_a_chain_that_truly_cannot_report_constants_says_so ( )
With guidance, not a bare failure.

Definition at line 163 of file test_audit_regressions.py.

◆ test_a_leg_behind_a_shut_valve_is_flagged()

None test_audit_regressions.test_a_leg_behind_a_shut_valve_is_flagged ( )
A capped leg behind a shut valve holds what was trapped in it.

The check above asks the component for a drop at zero flow, and a shut ball
valve has none: its ``pressure_drop(0)`` is identically zero. So the leg
was back-filled from the manifold across the seat and reported as a
reading -- a transducer there followed the plenum it is shut off from
(docs/PHYSICS-BENCHMARK.md 3.2). Open, the same leg is an ordinary stub on
the manifold and reads it.

Definition at line 413 of file test_audit_regressions.py.

References _stub_network().

◆ test_a_measured_fluid_still_drives_components()

None test_audit_regressions.test_a_measured_fluid_still_drives_components ( )
The downstream consequence, checked where it actually mattered.

Definition at line 156 of file test_audit_regressions.py.

References _measured_lox().

◆ test_a_mistyped_fluid_suggests_the_right_one()

None test_audit_regressions.test_a_mistyped_fluid_suggests_the_right_one ( )

Definition at line 284 of file test_audit_regressions.py.

◆ test_a_mistyped_unit_suggests_the_right_one()

None test_audit_regressions.test_a_mistyped_unit_suggests_the_right_one ( )
Fifty units listed is what you read when you do not know what exists.
A typo is the commoner case and deserves a pointer.

Definition at line 277 of file test_audit_regressions.py.

◆ test_a_network_with_elevation_and_reverse_flow_is_consistent()

None test_audit_regressions.test_a_network_with_elevation_and_reverse_flow_is_consistent ( )
End to end: a branch running backwards up a climb still balances.

Definition at line 93 of file test_audit_regressions.py.

References _climbing_pipe().

◆ test_a_new_dimension_needs_its_canonical_unit_declared()

None test_audit_regressions.test_a_new_dimension_needs_its_canonical_unit_declared ( )

Definition at line 272 of file test_audit_regressions.py.

◆ test_a_part_can_carry_measured_flow_data()

None test_audit_regressions.test_a_part_can_carry_measured_flow_data ( Path tmp_path)
The bug: the catalog held scalars only.

So a part with measured flow data could not be catalogued, the ``measured``
model was reachable from code but not from the parts database, and Phase 12
had nowhere to write a fitted curve back to.

Definition at line 204 of file test_audit_regressions.py.

◆ test_a_passed_curve_overrides_the_catalogued_one()

None test_audit_regressions.test_a_passed_curve_overrides_the_catalogued_one ( Path tmp_path)
A retest of this particular hose beats the part's stored curve.

Definition at line 236 of file test_audit_regressions.py.

◆ test_a_stub_sits_at_its_plenum_pressure()

None test_audit_regressions.test_a_stub_sits_at_its_plenum_pressure ( )
Zero flow means no friction, so a level stub reads the plenum exactly.

Definition at line 335 of file test_audit_regressions.py.

References _stub_network().

◆ test_an_indeterminate_stub_is_flagged()

None test_audit_regressions.test_an_indeterminate_stub_is_flagged ( )
A check valve behind its cracking pressure has no defined stub pressure.

Nothing is flowing, so nothing holds that drop; the honest report is the
live end's pressure as an upper bound, plus a note that it is one.

Definition at line 385 of file test_audit_regressions.py.

References _stub_network().

◆ test_catalogued_curves_survive_a_round_trip()

None test_audit_regressions.test_catalogued_curves_survive_a_round_trip ( Path tmp_path)

Definition at line 223 of file test_audit_regressions.py.

◆ test_components_without_elevation_report_no_static_head()

None test_audit_regressions.test_components_without_elevation_report_no_static_head ( )
The default is zero, so nothing else acquired a spurious head.

Definition at line 111 of file test_audit_regressions.py.

◆ test_dead_ended_ports_no_longer_refuse_to_solve()

None test_audit_regressions.test_dead_ended_ports_no_longer_refuse_to_solve ( )
The bug: a transducer port, a capped QD and a shut relief are dead ends,
and the validator treated every one as a malformed network.

They are correct hardware. Most ports on a real manifold carry no flow.

Definition at line 324 of file test_audit_regressions.py.

References _stub_network().

◆ test_static_head_does_not_reverse_with_the_flow()

None test_audit_regressions.test_static_head_does_not_reverse_with_the_flow ( )
The bug: elevation was signed along with friction.

``rho g dz`` is set by where the ends of the pipe are. Friction opposes the
flow and reverses with it; elevation does not. Conflating them put a
reversing branch out by exactly ``2 rho g dz`` -- while still converging and
still conserving mass, which is why nothing noticed.

Definition at line 54 of file test_audit_regressions.py.

References _climbing_pipe().

◆ test_stubs_are_peeled_transitively()

None test_audit_regressions.test_stubs_are_peeled_transitively ( )
A capped run two branches deep is still a stub.

Removing the outer branch is what makes the inner one a stub in turn, so
the peel has to iterate rather than scan once.

Definition at line 358 of file test_audit_regressions.py.

References _stub_network().

◆ test_stubs_are_pruned_rather_than_iterated()

None test_audit_regressions.test_stubs_are_pruned_rather_than_iterated ( )
They would otherwise sit on the derivative floor and be reported as
anomalies on every run of a perfectly ordinary system.

Definition at line 347 of file test_audit_regressions.py.

References _stub_network().

◆ test_substance_constants_are_sought_along_the_whole_chain()

None test_audit_regressions.test_substance_constants_are_sought_along_the_whole_chain ( )
The bug: only the head of the chain was asked.

A measured table has no critical point to report, so putting one in front --
which is the entire point of the feature -- made ``critical_pressure`` raise,
which made ``conditions_from_fluid`` raise, which broke every component
evaluation downstream of it.

Definition at line 142 of file test_audit_regressions.py.

References _measured_lox().

◆ test_the_canonical_unit_is_declared_not_inferred()

None test_audit_regressions.test_the_canonical_unit_is_declared_not_inferred ( )
K and degC differences are the same size, so factor 1.0 cannot decide.

Before, the answer came from dictionary insertion order -- stable in
practice, invisible in the source, and not something a reader could check.

Definition at line 261 of file test_audit_regressions.py.

◆ test_the_residual_is_zero_at_the_correct_reverse_state()

None test_audit_regressions.test_the_residual_is_zero_at_the_correct_reverse_state ( )
Stated as the solver sees it, which is where the bug actually bit.

Definition at line 76 of file test_audit_regressions.py.

References _climbing_pipe().

Variable Documentation

◆ CATALOG

test_audit_regressions.CATALOG
Initial value:
1= textwrap.dedent(
2
3)

Definition at line 175 of file test_audit_regressions.py.

◆ M

test_audit_regressions.M = Provenance.MANUFACTURER

Definition at line 33 of file test_audit_regressions.py.

◆ WATER

test_audit_regressions.WATER = FlowConditions(rho=1000.0, mu=1.0e-3, p_upstream=10.0e5)

Definition at line 34 of file test_audit_regressions.py.