tests: record AFP delete smoke success
This commit is contained in:
32
TODO.md
32
TODO.md
@@ -332,15 +332,18 @@ Current status:
|
||||
NetWare volume, not transport-level AFP proxy calls to `afpd`.
|
||||
- AFP Get DOS Name From Entry ID (0x12) is implemented as a conservative
|
||||
read-only reverse lookup that first uses the existing mars_nwe
|
||||
`map_directory_number_to_path()` namespace/basehandle path. The old
|
||||
`nwatalk_get_entry_id()` volume scan remains only as a legacy fallback for
|
||||
cached AFP IDs. The latest smoke run confirmed `entry_id=0x00000004`
|
||||
resolving to `PUBLIC/PMDFLTS.INI`.
|
||||
`map_directory_number_to_path()` namespace/basehandle path for directory
|
||||
objects. Regular file Entry IDs stay on the cached AFP/fallback path until a
|
||||
reliable file-object reverse mapper is available. The legacy
|
||||
`nwatalk_get_entry_id()` volume scan remains as the fallback for cached AFP
|
||||
file IDs.
|
||||
|
||||
Follow-up:
|
||||
|
||||
- Implement the NetWare AFP NCP calls locally, using libatalk helpers rather
|
||||
than proxying requests to `afpd`.
|
||||
than proxying requests to `afpd`. Create Directory, Create File, and AFP
|
||||
Delete are now implemented through existing mars_nwe create/remove helpers
|
||||
and covered by Linux smoke tests.
|
||||
- Candidate libatalk pieces include the new AppleDouble/Finder Info/resource
|
||||
fork helper wrappers, plus future CNID/directory-id helpers, attribute
|
||||
mapping, and filename conversion.
|
||||
@@ -352,15 +355,18 @@ Follow-up:
|
||||
future libatalk/CNID backend may still provide Apple-native identity, but AFP
|
||||
must not grow a second mars_nwe object-id resolver in parallel to the existing
|
||||
namespace machinery.
|
||||
- The full smoke suite verifies namespace-derived identity end to end:
|
||||
- The full smoke suite verifies path-backed file identity end to end:
|
||||
Entry ID From Path Name, Entry ID From NetWare Handle, Get File Information,
|
||||
Scan File Information, Set File Information verification, and Get DOS Name
|
||||
From Entry ID all returned or consumed `entry_id=0x00000004` for the sample
|
||||
`SYS:PUBLIC/pmdflts.ini` path, with `failures=0`. AFP directory-scan
|
||||
continuation remains directory iteration based: `last_seen` skips past the
|
||||
previously returned object, but the next returned Entry ID is not required to
|
||||
be numerically greater than the continuation token. FinderInfo plus the
|
||||
Finder Hidden/System/Archive AFP attributes now have
|
||||
Set File Information verification, and Get DOS Name From Entry ID all returned
|
||||
or consumed a cached AFP/fallback file ID for the sample
|
||||
`SYS:PUBLIC/pmdflts.ini` path, while directory-scan entries continue to use
|
||||
the existing namespace/basehandle identity. AFP directory-scan continuation
|
||||
remains directory iteration based: `last_seen` skips past the previously
|
||||
returned object, but the next returned Entry ID is not required to be
|
||||
numerically greater than the continuation token. The latest full smoke run
|
||||
also verified AFP Delete cleanup for Create Directory and Create File and
|
||||
ended with `failures=0`. FinderInfo plus the Finder Hidden/System/Archive
|
||||
AFP attributes now have
|
||||
deliberately narrow write paths through AFP Set File Information `0x09` and
|
||||
AFP 2.0 Set File Information `0x10`; CNID
|
||||
allocation and broader AFP metadata writes still need a deliberate write-safe
|
||||
|
||||
@@ -215,12 +215,11 @@ Example:
|
||||
```
|
||||
|
||||
The full smoke suite creates temporary directories under the tested parent using
|
||||
fresh short DOS-compatible leaf names by default. Local removal is best-effort:
|
||||
AFP Delete is not implemented yet, and the script often runs as an unprivileged
|
||||
Unix user while the server created the directory under its own identity. Use
|
||||
`--create-dir-name NAME` to override the default temporary leaf name, knowing
|
||||
that rerunning with the same explicit name may fail if a previous directory still
|
||||
exists.
|
||||
fresh short DOS-compatible leaf names by default. It now uses the AFP Delete
|
||||
endpoint for both pre-test cleanup and post-create cleanup, so the smoke no
|
||||
longer depends on local Unix `rmdir` permissions when the server created the
|
||||
directory under its own identity. Use `--create-dir-name NAME` to override the
|
||||
default temporary leaf name.
|
||||
|
||||
|
||||
## AFP Create File smoke test
|
||||
@@ -247,19 +246,45 @@ Example:
|
||||
```
|
||||
|
||||
The full smoke suite creates temporary files under the tested parent with fresh
|
||||
short DOS-compatible leaf names by default. Local removal is best-effort, just
|
||||
like the create-directory smoke, because the suite usually runs as an
|
||||
unprivileged Unix user while mars_nwe creates the file as the server-side
|
||||
identity. Use `--create-file-name NAME` to override the default leaf name;
|
||||
rerunning with the same explicit name may fail if a previous file still exists.
|
||||
short DOS-compatible leaf names by default. It now uses AFP Delete for both
|
||||
pre-test cleanup and post-create cleanup, avoiding local Unix `rm` permission
|
||||
assumptions when mars_nwe creates the file as the server-side identity. Use
|
||||
`--create-file-name NAME` to override the default leaf name.
|
||||
|
||||
Runtime status: the build-server smoke run verified both create-file variants.
|
||||
Legacy AFP Create File (`0x02`) created `SYS:PUBLIC/atst0` and returned
|
||||
`0x333bee1c`; AFP 2.0 Create File (`0x0e`) created `SYS:PUBLIC/atst02` and
|
||||
returned `0x4e329102`. Both IDs were re-read through AFP Entry ID From Path
|
||||
Name. The overall run still reported `failures=2`, but those failures were the
|
||||
pre-existing create-directory names `AFPTST0` and `AFPTST02`; the create-file
|
||||
checks themselves succeeded.
|
||||
Runtime status: the build-server smoke run verified both create-file variants
|
||||
with AFP Delete cleanup enabled. Legacy AFP Create File (`0x02`) created
|
||||
`SYS:PUBLIC/atst0` and returned `0x77ba6113`; AFP 2.0 Create File (`0x0e`)
|
||||
created `SYS:PUBLIC/atst02` and returned `0x3cd55515`. Both IDs were re-read
|
||||
through AFP Entry ID From Path Name and then removed through AFP Delete.
|
||||
|
||||
|
||||
## AFP Delete smoke test
|
||||
|
||||
`afp_delete_smoke` sends the WebSDK/nwafp.h AFP Delete request through
|
||||
libncp:
|
||||
|
||||
```text
|
||||
NCP 0x2222/35/03 AFP Delete
|
||||
```
|
||||
|
||||
The helper derives the parent Entry ID with AFP Entry ID From Path Name, sends
|
||||
only the leaf name to AFP Delete, and verifies that a follow-up Entry ID lookup
|
||||
for the deleted path no longer succeeds. The server implementation routes
|
||||
directory removal through the existing mars_nwe directory remove path and file
|
||||
removal through the existing NetWare delete-file path; it does not use local
|
||||
Unix `unlink`/`rmdir` calls from the test process.
|
||||
|
||||
Example:
|
||||
|
||||
```sh
|
||||
./tests/linux/afp_delete_smoke -S MARS -U SUPERVISOR -P secret SYS:PUBLIC/afpfile
|
||||
```
|
||||
|
||||
Runtime status: the smoke suite now uses AFP Delete for pre-test cleanup and
|
||||
post-create cleanup around both Create Directory variants and both Create File
|
||||
variants. The verified run deleted stale `afptst0`, `afptst02`, `atst0`, and
|
||||
`atst02` paths, recreated the directory and file pairs, deleted all four
|
||||
created objects again through AFP Delete, and ended with `failures=0`.
|
||||
|
||||
## AFP Entry ID smoke test
|
||||
|
||||
|
||||
Reference in New Issue
Block a user