Use actual ATVM runtime flow steps in watcher output
This commit is contained in:
@@ -295,7 +295,7 @@ Status-report expectations:
|
|||||||
- In `TEST FLOW:`, show the template-specific numbered run flow once for the whole test, not per host.
|
- In `TEST FLOW:`, show the template-specific numbered run flow once for the whole test, not per host.
|
||||||
- For `TEST FLOW:`, treat the generated host spec from the actual run as the source of truth whenever it exists.
|
- For `TEST FLOW:`, treat the generated host spec from the actual run as the source of truth whenever it exists.
|
||||||
- Extract the numbered flow steps from the generated `.ts` spec referenced by that run's `specPattern`.
|
- Extract the numbered flow steps from the generated `.ts` spec referenced by that run's `specPattern`.
|
||||||
- When the generated spec contains runtime-gated plugin branches such as `if(useFCPlugin)` and `if(useIscsiPlugin)`, only include the steps for the plugin path actually selected for that run.
|
- When the generated spec contains runtime-gated plugin branches such as `if(useFCPlugin)`, `if(useIscsiPlugin)`, `if(usePureFCPlugin)`, or `if(usePureIscsiPlugin)`, only include the steps for the plugin path actually selected for that run.
|
||||||
- Do not prefer a static template flow list over a generated spec from the actual run.
|
- Do not prefer a static template flow list over a generated spec from the actual run.
|
||||||
- Use template-level or static fallback flow only when the generated spec cannot be found or parsed.
|
- Use template-level or static fallback flow only when the generated spec cannot be found or parsed.
|
||||||
- If fallback is required, resolve it from the run template name before using any generic default flow.
|
- If fallback is required, resolve it from the run template name before using any generic default flow.
|
||||||
|
|||||||
@@ -535,3 +535,12 @@ This file stores run-specific examples only when a run produced a new learning r
|
|||||||
- Plan `cmc-systemOS` template commands without plugin-selection or integration-type arguments.
|
- Plan `cmc-systemOS` template commands without plugin-selection or integration-type arguments.
|
||||||
- When watcher-backed execution is used for `cmc-systemOS`, omit watcher integration/plugin metadata too.
|
- When watcher-backed execution is used for `cmc-systemOS`, omit watcher integration/plugin metadata too.
|
||||||
- Keep plugin defaults scoped to templates that actually use plugin selection.
|
- Keep plugin defaults scoped to templates that actually use plugin selection.
|
||||||
|
|
||||||
|
## Run Learning: 2026-04-14 (Plugin-gated `TEST FLOW` filtering must match reboot and other template gate names too)
|
||||||
|
- Observed failure mode:
|
||||||
|
- A Pure FC `cmc-reboot` run still posted the combined FC+iSCSI step count even after the earlier `cmc-e2e` fix.
|
||||||
|
- The watcher only recognized `if(useFCPlugin)` / `if(useIscsiPlugin)` gates, while the reboot templates use names such as `if(usePureFCPlugin)` / `if(usePureIscsiPlugin)`.
|
||||||
|
- Action for future runs:
|
||||||
|
- Match plugin-gated generated-spec branches generically by plugin-bearing gate variable name instead of hardcoding only one template's variable names.
|
||||||
|
- Apply the same plugin-branch filtering logic across ATVM templates so new templates do not need one-off watcher fixes.
|
||||||
|
- Validate generated-spec `TEST FLOW` against the selected runtime plugin path for reboot and other templates before assuming the generic fix is complete.
|
||||||
|
|||||||
@@ -1282,10 +1282,13 @@ def extract_test_flow_from_generated_spec(
|
|||||||
|
|
||||||
def evaluate_gate_line(line: str, allowed_plugins: Optional[set[str]]) -> Tuple[bool, Optional[bool]]:
|
def evaluate_gate_line(line: str, allowed_plugins: Optional[set[str]]) -> Tuple[bool, Optional[bool]]:
|
||||||
normalized = re.sub(r"\s+", "", line)
|
normalized = re.sub(r"\s+", "", line)
|
||||||
if normalized.startswith("if(useFCPlugin)"):
|
plugin_gate_match = re.match(r"if\((use[A-Za-z]+Plugin)\)", normalized)
|
||||||
return True, allowed_plugins is None or "fc" in allowed_plugins
|
if plugin_gate_match:
|
||||||
if normalized.startswith("if(useIscsiPlugin)"):
|
variable_name = plugin_gate_match.group(1).lower()
|
||||||
return True, allowed_plugins is None or "iscsi" in allowed_plugins
|
if "iscsi" in variable_name:
|
||||||
|
return True, allowed_plugins is None or "iscsi" in allowed_plugins
|
||||||
|
if "fc" in variable_name:
|
||||||
|
return True, allowed_plugins is None or "fc" in allowed_plugins
|
||||||
if normalized.startswith('if(Cypress.env("test-unaligned-fio")==true)'):
|
if normalized.startswith('if(Cypress.env("test-unaligned-fio")==true)'):
|
||||||
value = runtime_settings.get("test-unaligned-fio")
|
value = runtime_settings.get("test-unaligned-fio")
|
||||||
return True, value if isinstance(value, bool) else None
|
return True, value if isinstance(value, bool) else None
|
||||||
|
|||||||
Reference in New Issue
Block a user