tests: record AFP file fork I/O smoke success
This commit is contained in:
23
TODO.md
23
TODO.md
@@ -637,3 +637,26 @@ AFP Get/Scan AccessPrivileges convergence:
|
||||
NetWare namespace/basehandles, but regular files currently keep nwatalk or
|
||||
fallback AFP IDs because the existing directory-number reverse mapper is not
|
||||
a reliable file-entry reverse mapper on DOS namespace volumes.
|
||||
|
||||
### Final AFP endpoint audit before declaring compatibility slice complete
|
||||
|
||||
After the current AFP smoke-covered endpoint set is otherwise complete, perform
|
||||
one final endpoint-by-endpoint audit against the WebSDK archive and the Novell
|
||||
NWAFP headers. The goal is not to add new semantics, but to verify that every
|
||||
implemented AFP call number, request layout, reply layout, bitmap, completion
|
||||
code, and unsupported-operation response still matches the published wire
|
||||
interfaces.
|
||||
|
||||
Checklist for that final audit:
|
||||
|
||||
- compare the `nwconn.c` AFP dispatch table with the WebSDK/NWAFP endpoint list;
|
||||
- verify legacy and AFP 2.0 variants separately;
|
||||
- re-check Get/Set/Scan File Information record offsets, lengths, and bitmaps;
|
||||
- re-check Create, Delete, Rename, Open Fork, and Entry-ID resolver request
|
||||
layouts;
|
||||
- confirm Resource Fork behaviour remains intentionally unsupported and returns
|
||||
the documented completion code used by the smoke tests;
|
||||
- confirm all NetWare-semantic data still routes through mars_nwe paths
|
||||
(trustees, attributes, timestamps, namespace, create/open/rename/delete), and
|
||||
only AFP-only metadata stays in `org.mars-nwe.afp.*` xattrs;
|
||||
- keep the result as the final AFP compatibility report in `tests/afp/README.md`.
|
||||
|
||||
@@ -1210,3 +1210,42 @@ AFP 2.0 Set File Information: vol=0 request_vol=0 entry=0x05aaace0 mask=0x0100 p
|
||||
Directory Entry IDs continue to use the existing namespace/basehandle path.
|
||||
Regular file Entry IDs continue to be AFP metadata IDs stored in
|
||||
`user.org.mars-nwe.afp.entry-id`.
|
||||
|
||||
## AFP File Fork I/O smoke success
|
||||
|
||||
AFP Open File Fork returns a normal mars_nwe/NetWare file handle for the data
|
||||
fork. The AFP smoke suite now verifies that the returned handle works with the
|
||||
existing NetWare read/write paths rather than introducing any AFP-private POSIX
|
||||
I/O path.
|
||||
|
||||
Verified smoke run:
|
||||
|
||||
```text
|
||||
AFP File Fork Read via NetWare handle
|
||||
AFP File Fork I/O read path=SYS:PUBLIC/pmdflts.ini entry_id=0x00000000 offset=0 requested=16 read=16 fork_len=8161
|
||||
|
||||
AFP File Fork Read by Entry ID via NetWare handle
|
||||
AFP File Fork I/O read path=SYS:PUBLIC/pmdflts.ini entry_id=0x05aaace0 offset=0 requested=16 read=16 fork_len=8161 entry-id-only
|
||||
|
||||
AFP File Fork Write via NetWare handle
|
||||
AFP File Fork I/O write path=SYS:PUBLIC/atst3 entry_id=0x00000000 offset=0 size=8 verified
|
||||
|
||||
AFP File Fork Write by Entry ID via NetWare handle
|
||||
AFP File Fork I/O write path=SYS:PUBLIC/atst3 entry_id=0x0edc380e offset=0 size=11 verified entry-id-only
|
||||
|
||||
Summary: failures=0
|
||||
```
|
||||
|
||||
The write probes create the test file through AFP Create File, open the data
|
||||
fork through AFP Open File Fork, perform I/O through the existing NetWare file
|
||||
handle read/write operations, and clean up through AFP Delete. Resource Fork
|
||||
opens remain covered by the separate negative smoke and continue to return the
|
||||
unsupported completion.
|
||||
|
||||
## Final AFP endpoint audit TODO
|
||||
|
||||
Before the AFP compatibility slice is marked complete, do one last audit of all
|
||||
implemented AFP endpoints against the WebSDK archive and Novell NWAFP headers.
|
||||
That final check should compare call numbers, request/reply layouts, legacy vs.
|
||||
AFP 2.0 variants, bitmaps, record lengths, and unsupported completion codes for
|
||||
the complete smoke-covered endpoint set.
|
||||
|
||||
Reference in New Issue
Block a user