Skip to content

Hooks validation tests cannot pass #781

Description

@nixpig

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.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

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