runtime-tools
runtime-tools copied to clipboard
Hooks validation tests cannot pass
Running the validation/hooks/hooks.t tests should pass, but they always fail.
For example, using runc:
RUNTIME=runc ./validation/hooks/hooks.t
TAP version 13
---
{
"error": "Hooks MUST be called in the listed order\nRefer to: https://github.com/opencontainers/runtime-spec/blob/v1.1.0/config.md#posix-platform-hooks\nThe runtime MUST run the user-specified program, as specified by `process`\nRefer to: https://github.com/opencontainers/runtime-spec/blob/v1.1.0/runtime.md#lifecycle"
}
...
1..0
Seems to be two issues here:
- The bundle directory (where the output file is stored) is deleted (in
RuntimeLifecycleValidate) before the output file is read for comparison: https://github.com/opencontainers/runtime-tools/blob/f7e3563b0271e5cd52d5c915684ea11ef2779572/validation/hooks/hooks.go#L77-L78 Because of this:- The content of
outputDatais always empty. - We don't see the 'file not found' error from
os.ReadFilebecause it's ignored.
- The content of
- Even if
outputDatawas populated per the specified hooks, the comparison of its content will always fail: https://github.com/opencontainers/runtime-tools/blob/f7e3563b0271e5cd52d5c915684ea11ef2779572/validation/hooks/hooks.go#L79- Actual content:
pre-start1 called\npre-start2 called\npost-start1 called\npost-start2 called\npost-stop1 called\npost-stop2 called\n - Asserted content:
pre-start1 called\npre-start2 called\npost-start1\npost-start2\npost-stop1\npost-stop2\n - Note the lack of
calledpostfix forpost-startxandpost-stopxhooks.
- Actual content:
PR with proposed fix: #782
Running the
validation/hooks/hooks.ttests should pass, but they always fail.For example, using
runc:RUNTIME=runc ./validation/hooks/hooks.t TAP version 13 --- { "error": "Hooks MUST be called in the listed order\nRefer to: https://github.com/opencontainers/runtime-spec/blob/v1.1.0/config.md#posix-platform-hooks\nThe runtime MUST run the user-specified program, as specified by `process`\nRefer to: https://github.com/opencontainers/runtime-spec/blob/v1.1.0/runtime.md#lifecycle" } ... 1..0Seems to be two issues here:
The bundle directory (where the output file is stored) is deleted (in
RuntimeLifecycleValidate) before the output file is read for comparison: https://github.com/opencontainers/runtime-tools/blob/f7e3563b0271e5cd52d5c915684ea11ef2779572/validation/hooks/hooks.go#L77-L78 Because of this:
- The content of
outputDatais always empty.- We don't see the 'file not found' error from
os.ReadFilebecause it's ignored.Even if
outputDatawas populated per the specified hooks, the comparison of its content will always fail: https://github.com/opencontainers/runtime-tools/blob/f7e3563b0271e5cd52d5c915684ea11ef2779572/validation/hooks/hooks.go#L79
- Actual content:
pre-start1 called\npre-start2 called\npost-start1 called\npost-start2 called\npost-stop1 called\npost-stop2 called\n- Asserted content:
pre-start1 called\npre-start2 called\npost-start1\npost-start2\npost-stop1\npost-stop2\n- Note the lack of
calledpostfix forpost-startxandpost-stopxhooks.
https://github.com/opencontainers/runtime-tools/issues/781#issue-2697274422