Skip to content

Hooks validation tests cannot pass #781

Open
@nixpig

Description

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:

  1. The bundle directory (where the output file is stored) is deleted (in RuntimeLifecycleValidate) before the output file is read for comparison:
    err := util.RuntimeLifecycleValidate(config)
    outputData, _ := os.ReadFile(output)
    Because of this:
    1. The content of outputData is always empty.
    2. We don't see the 'file not found' error from os.ReadFile because it's ignored.
  2. Even if outputData was populated per the specified hooks, the comparison of its content will always fail:
    if err == nil && string(outputData) != "pre-start1 called\npre-start2 called\npost-start1\npost-start2\npost-stop1\npost-stop2\n" {
    1. Actual content: pre-start1 called\npre-start2 called\npost-start1 called\npost-start2 called\npost-stop1 called\npost-stop2 called\n
    2. Asserted content: pre-start1 called\npre-start2 called\npost-start1\npost-start2\npost-stop1\npost-stop2\n
    3. Note the lack of called postfix for post-startx and post-stopx hooks.

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions