github.com/Racer159/jackal@v0.32.7-0.20240401174413-0bd2339e4f2e/src/test/e2e/28_wait_test.go (about)

     1  // SPDX-License-Identifier: Apache-2.0
     2  // SPDX-FileCopyrightText: 2021-Present The Jackal Authors
     3  
     4  // Package test provides e2e tests for Jackal.
     5  package test
     6  
     7  import (
     8  	"fmt"
     9  	"time"
    10  
    11  	"testing"
    12  
    13  	"github.com/Racer159/jackal/src/test"
    14  	"github.com/stretchr/testify/require"
    15  )
    16  
    17  type jackalCommandResult struct {
    18  	stdOut string
    19  	stdErr string
    20  	err    error
    21  }
    22  
    23  func jackalCommandWStruct(e2e test.JackalE2ETest, path string) (result jackalCommandResult) {
    24  	result.stdOut, result.stdErr, result.err = e2e.Jackal("package", "deploy", path, "--confirm")
    25  	return result
    26  }
    27  
    28  func TestNoWait(t *testing.T) {
    29  	t.Log("E2E: Helm Wait")
    30  	e2e.SetupWithCluster(t)
    31  
    32  	stdOut, stdErr, err := e2e.Jackal("package", "create", "src/test/packages/28-helm-no-wait", "-o=build", "--confirm")
    33  	require.NoError(t, err, stdOut, stdErr)
    34  
    35  	path := fmt.Sprintf("build/jackal-package-helm-no-wait-%s.tar.zst", e2e.Arch)
    36  
    37  	jackalChannel := make(chan jackalCommandResult, 1)
    38  	go func() {
    39  		jackalChannel <- jackalCommandWStruct(e2e, path)
    40  	}()
    41  
    42  	stdOut = ""
    43  	stdErr = ""
    44  	err = nil
    45  
    46  	select {
    47  	case res := <-jackalChannel:
    48  		stdOut = res.stdOut
    49  		stdErr = res.stdErr
    50  		err = res.err
    51  	case <-time.After(30 * time.Second):
    52  		t.Error("Timeout waiting for jackal deploy (it tried to wait)")
    53  		t.Log("Removing hanging namespace...")
    54  		_, _, _ = e2e.Kubectl("delete", "namespace", "no-wait", "--force=true", "--wait=false", "--grace-period=0")
    55  	}
    56  	require.NoError(t, err, stdOut, stdErr)
    57  
    58  	stdOut, stdErr, err = e2e.Jackal("package", "remove", "helm-no-wait", "--confirm")
    59  	require.NoError(t, err, stdOut, stdErr)
    60  }