Skip to content

Commit

Permalink
e2e: add verify to e2e setup
Browse files Browse the repository at this point in the history
  • Loading branch information
burgerdev committed Mar 1, 2024
1 parent ff59192 commit 4928d38
Show file tree
Hide file tree
Showing 2 changed files with 50 additions and 2 deletions.
3 changes: 3 additions & 0 deletions e2e/internal/kubeclient/kubeclient.go
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,9 @@ type Kubeclient struct {

// Below fields are only populated by Setup().

// verifyDir holds the results of calling nunki verify
verifyDir string

namespace string
}

Expand Down
49 changes: 47 additions & 2 deletions e2e/internal/kubeclient/setup.go
Original file line number Diff line number Diff line change
Expand Up @@ -15,14 +15,59 @@ import (
)

func (k *Kubeclient) Setup() error {
ctx, cancel := context.WithTimeout(context.Background(), time.Minute)
defer cancel()

// TODO(burgerdev): this needs to be generated by Setup as soon as we moved apply logic here.
k.namespace = os.Getenv("K8S_NAMESPACE")
if k.namespace == "" {
return fmt.Errorf("environment variable K8S_NAMESPACE must be set")
}
return nil

output, err := os.MkdirTemp("", "nunki-verify.*")
if err != nil {
return fmt.Errorf("could not create temp dir: %w", err)
}
k.verifyDir = output

coordinator, cancelPortforward, err := k.PortForwardPod(ctx, "port-forwarder-coordinator", "1313")
if err != nil {
return fmt.Errorf("could not forward coordinator port: %w", err)
}
defer cancelPortforward()

verify := cmd.NewVerifyCmd()
verify.SetArgs([]string{
"--output", output,
"--coordinator-policy-hash=", // TODO(burgerdev): enable policy checking
"--coordinator", coordinator,
})
verify.SetOut(io.Discard)
errBuf := &bytes.Buffer{}
verify.SetErr(errBuf)

if err := verify.Execute(); err != nil {
log.Fatalf("could not verify coordinator: %v\nnunki verify logs:\n%s", err, string(errBuf.Bytes()))
}

var errs []error
for _, expected := range []string{"manifest.0.json", "coordinator-root.pem", "mesh-root.pem"} {
_, err := os.Stat(path.Join(output, expected))
if err != nil {
errs = append(errs, fmt.Errorf("expected verify output to contain file %q", expected))
}
// TODO(burgerdev): check the content of output files once generate and set are included here.
}
return errors.Join(errs...)
}

func (k *Kubeclient) Teardown() error {
return nil
var errs []error
if k.verifyDir != "" {
errs = append(errs, os.RemoveAll(k.verifyDir))
}

// TODO: tear down Kubernetes resources here once we moved apply logic to Setup()

return errors.Join(errs...)
}

0 comments on commit 4928d38

Please sign in to comment.