diff --git a/test/9pm b/test/9pm index 2b5dd6067..276451d44 160000 --- a/test/9pm +++ b/test/9pm @@ -1 +1 @@ -Subproject commit 2b5dd60678a7c70a34e8d6cc8d413fae8801c794 +Subproject commit 276451d440ceb5972b573607cce67f8e458f147c diff --git a/test/9pm-proj.yaml b/test/9pm-proj.yaml index 963e6f053..4c2b86b9a 100644 --- a/test/9pm-proj.yaml +++ b/test/9pm-proj.yaml @@ -2,3 +2,6 @@ PROJECT-NAME: "Infix" PROJECT-ROOT: "../../" PROJECT-TOPDOC: "../case/" + AGENT-HINTS: | + Read test/infix-test-skill.md first, it explains how the tests work + and where to look. diff --git a/test/infix-test-skill.md b/test/infix-test-skill.md new file mode 100644 index 000000000..a6a5f53a4 --- /dev/null +++ b/test/infix-test-skill.md @@ -0,0 +1,17 @@ +# Infix test skill + +Info about the Infix regression tests. + +- Tests live under `test/case/`, are written in Python and use the infamy + framework in `test/infamy/`. +- A test is a chain of `test.step()` blocks that configure one or more DUTs + over NETCONF or RESTCONF and verify the result with real traffic. The step + text in the failing TAP line is where to start reading. +- DUTs run Infix, either as virtual machines (Qeneth, `test/virt/`) or as real + hardware. The fault is often in the product rather than the test. Device code + is in `src/`, YANG models in `src/confd/yang/`. +- Each test has a logical `topology.dot` with names like `target:data`. Infamy + maps it onto the physical topology the test was given, honouring `requires` + and `provides` attributes, and prints the mapping in the log. A test is + skipped when no mapping fits. +- Logs: `test/.log//output/`. Full guide: `doc/testing.md`.