feat(nfc): Poll the NFC tag through the soak instead of sampling it once
nfc_polling.sh wraps blantons_nfc_validate.py in a background loop and keeps score: start/stop/status/tail/report/clear/fg. Script A takes a 30s baseline, Script B starts the poll for the soak, Script C stops it with the other monitors and reports. report only reads the log, so it can be run mid-soak without disturbing anything - and it says RUNNING so a snapshot is not read as the final answer. Each round appends a machine-readable RESULT line, which keeps the tally independent of the tool's wording. ERROR is counted apart from FAIL. A round where the tool printed neither [PASS] nor [FAIL] - crashed, missing, hung past the timeout - measured nothing, and that is a different fault from a tag that would not read. Rolling them together hides whichever one you are not looking for. Two habits from earlier bugs are baked in: tail does not follow (tail -f never returns and a macro waiting on the prompt hangs there), and the .py is called through python3 rather than ./ (it arrives mode 100644 and a USB copy carries no execute bit). Also fixes Script C copying "nfc_polling.log" to the job dir when the file is "nfc_poll.log". The cp failed, nothing checked it, and the run finished looking fine - you would find out at the desk, with a job archive that had no NFC log in it. Script A -> V1.1.2. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_014RetWKFZFG1ZHcitQAyhwM
This commit is contained in:
@@ -0,0 +1,63 @@
|
||||
# v1.1.2 — NFC tag reads are now watched for the whole soak, not sampled once
|
||||
|
||||
## ✨ New features
|
||||
|
||||
**Background NFC polling**
|
||||
* New `nfc_polling.sh` runs `blantons_nfc_validate.py` over and over in the background and keeps score. `start` / `stop` / `status` / `tail` / `report` / `clear` / `fg`.
|
||||
* **`report` works while the poll is still running.** It only reads the log, so it never disturbs the run — and it labels itself `RUNNING` so a mid-soak snapshot is not mistaken for the final answer:
|
||||
|
||||
```
|
||||
state : RUNNING (pid=2240323) -- this is a snapshot, the count is still moving
|
||||
rounds : 240
|
||||
PASS : 238
|
||||
FAIL : 2
|
||||
ERROR : 0 (tool did not produce a verdict)
|
||||
RESULT : FAIL
|
||||
|
||||
--- tags seen ---
|
||||
046F7BD2142290 238
|
||||
```
|
||||
* **`ERROR` is counted apart from `FAIL`.** A round where the tool printed neither `[PASS]` nor `[FAIL]` — it crashed, the file was missing, it hung past the timeout — did not measure anything. That is a different problem from a tag that would not read, and rolling the two together hides whichever one you are not looking for.
|
||||
* `report` also lists which NFCID1s were seen and how often, and the last ten failures with their timestamps and reasons.
|
||||
* `start` clears the log first, so a report always describes the run you just did rather than everything since the DUT was built.
|
||||
* Script A takes a 30-second NFC baseline, Script B starts the poll for the soak, Script C stops it with the other monitors and reports.
|
||||
|
||||
## 🐛 Bug fixes
|
||||
|
||||
**The NFC log never reached the USB stick**
|
||||
* Script C copied `nfc_polling.log`; the file is `nfc_poll.log`. The `cp` failed, nothing checked it, and the run finished looking fine — you would only notice back at the desk with a job archive that had no NFC log in it.
|
||||
|
||||
## 📦 Downloads
|
||||
|
||||
| File | Contents |
|
||||
|---|---|
|
||||
| `Script_ABC_Blanton_V1.1.2.zip` | The full Tera Term working directory, including `Blanton_Script/` to copy onto the DUT |
|
||||
|
||||
**After copying to the DUT:**
|
||||
|
||||
```bash
|
||||
chmod +x ~/Blanton_Script/*.sh # see below
|
||||
grep -rlU $'\r' ~/Blanton_Script # expect no output
|
||||
```
|
||||
|
||||
`blanton_ber.sh` and `nfc_polling.sh` are invoked by the macros through `./` or `~/`, so they need the execute bit along with `bmc_monitor.sh` and `usb_target.sh` — neither git nor a Windows/USB copy carries it reliably. `blantons_nfc_validate.py` does **not** need it: `nfc_polling.sh` calls it through `python3` precisely so one more `chmod` cannot be forgotten.
|
||||
|
||||
## ⚠️ Before you run
|
||||
|
||||
* **`nfc_polling.sh start` clears the log.** Script B starts a fresh poll for the soak, which wipes Script A's baseline log — the baseline numbers are already in the master console log by then, but the file is gone.
|
||||
* **NFC log path is `~/Blanton_Script/log/nfc_poll.log`** and it is copied into the job directory by Script C for the USB archive.
|
||||
* **These three tests cannot share the switch.** `blanton_ber.sh`, `blanton_tr518.sh` and `blanton_traffic_linespeed` all take over port loopback and L2 learning. Script C already orders BER after the traffic report.
|
||||
* **PRBS takes the links down** while `blanton_ber.sh` is armed. That is the test working, not a fault.
|
||||
* **`ce0` keeps running until you stop it.** An interrupted run leaves the 100G port saturated with nothing in `show interfaces status` to hint at it.
|
||||
* **Two numbers must stay in step**: Script C's `sleep 30` and `blanton_ber.sh`'s `BER_INTERVAL`.
|
||||
* **`FAN_SPEED` is 100** — the fans run flat out unless you change `config.ttl`.
|
||||
* **Declare the switch population** with `SWB_UNIT0` / `SWB_UNIT1`.
|
||||
* **PRBS on the two 100G uplinks (`port_prbs_monitor.sh`) is still not wired into the macros.**
|
||||
* **The three items listed as unverified in v1.1.0 are still unverified**: the `ce0` ingress mirror, the 120s settle in `blanton_tr518.sh`, and `test mode nr=no` on stop. See [v1.1.0](https://etgit.et-wen.com/etwen/Blanton_TTL_Script/releases/tag/V1.1.0) for the one-command check on each.
|
||||
|
||||
## 🔗 Links
|
||||
|
||||
* [ARCHITECTURE.md](https://etgit.et-wen.com/etwen/Blanton_TTL_Script/src/branch/main/ARCHITECTURE.md) — test flow, data models, constraints
|
||||
* [CLAUDE.md](https://etgit.et-wen.com/etwen/Blanton_TTL_Script/src/branch/main/CLAUDE.md) — commands and the bench gotchas
|
||||
|
||||
**Full changelog:** [V1.1.1...V1.1.2](https://etgit.et-wen.com/etwen/Blanton_TTL_Script/compare/V1.1.1...V1.1.2)
|
||||
Reference in New Issue
Block a user