No code yet. The README explains why one Redfish driver with vendor quirk modules beats a Supermicro-only IPMI driver, and keeps IPMI over LAN as a read-only fallback. docs/ holds a draft for a new ManagementController role base in napalm-device-types, the getter-to-resource map, the first test device (Supermicro X10DRL-i, Redfish firmware 3.91), the security points (IPMI RAKP hash disclosure, power control, credentials) and the test plan with DMTF mockups and fixtures to record.
48 lines
2.5 KiB
Markdown
48 lines
2.5 KiB
Markdown
# Testing
|
|
|
|
## Without hardware
|
|
|
|
- **DMTF mockups (DSP2043).** Complete Redfish service trees as static JSON, published by
|
|
the DMTF with each Redfish release (download from the Redfish standards page). They cover
|
|
the current schema: `ThermalSubsystem`, `PowerSubsystem`, `Sensors`, storage, logs, and
|
|
actions.
|
|
- **DMTF Redfish-Mockup-Server.** Serves a mockup over HTTP (`127.0.0.1:8000` by default),
|
|
also as a Docker image `dmtf/redfish-mockup-server`. Good for integration tests of the
|
|
transport (sessions, collections, actions).
|
|
- **OpenStack sushy-tools.** An emulator that serves mockups or drives libvirt VMs via Redfish,
|
|
so `set_power_state` can be tested against something that actually changes state.
|
|
- **DMTF Redfish-Mockup-Creator.** Records a live service into a mockup. It is the tool to
|
|
turn the X10DRL-i into a complete fixture set in one go.
|
|
|
|
Unit tests use recorded JSON responses directly; the mockup server is for a small set of
|
|
integration tests.
|
|
|
|
## Fixtures to record from the X10DRL-i
|
|
|
|
Store under `tests/fixtures/supermicro-x10drl-i-3.91/`, one file per request path, plus
|
|
`COMMANDS.txt` with the paths and the machine's state (powered on/off, fans present).
|
|
Scrub serial numbers, UUIDs, MACs and IPs before committing.
|
|
|
|
- [ ] `GET /redfish/v1/` (without login)
|
|
- [ ] `GET /redfish/v1/Systems` and each member
|
|
- [ ] `GET /redfish/v1/Systems/1/Processors` and each member
|
|
- [ ] `GET /redfish/v1/Systems/1/Memory` and each member
|
|
- [ ] `GET /redfish/v1/Systems/1/Storage` or `SimpleStorage`, whichever exists
|
|
- [ ] `GET /redfish/v1/Systems/1/EthernetInterfaces` and each member
|
|
- [ ] `GET /redfish/v1/Systems/1/LogServices` and the entries of each
|
|
- [ ] `GET /redfish/v1/Chassis` and each member
|
|
- [ ] `GET /redfish/v1/Chassis/1/Thermal`
|
|
- [ ] `GET /redfish/v1/Chassis/1/Power`
|
|
- [ ] `GET /redfish/v1/Managers/1`
|
|
- [ ] `GET /redfish/v1/Managers/1/EthernetInterfaces` and each member
|
|
- [ ] `GET /redfish/v1/Managers/1/NetworkProtocol`
|
|
- [ ] `GET /redfish/v1/Managers/1/LogServices` and the entries of each
|
|
- [ ] `GET /redfish/v1/AccountService` and `AccountService/Accounts`
|
|
- [ ] `GET /redfish/v1/UpdateService/FirmwareInventory` and each member
|
|
- [ ] `POST /redfish/v1/SessionService/Sessions` response headers (token redacted)
|
|
- [ ] the error body of a request without credentials and of a wrong path
|
|
- [ ] `ResetType@Redfish.AllowableValues` from `Systems/1`
|
|
- [ ] IPMI: FRU, sensor list, chassis status, SEL (via `ipmitool` for comparison with `pyghmi`)
|
|
|
|
Or run the Redfish-Mockup-Creator once against the BMC and keep its output.
|