github.com/tilt-dev/tilt@v0.36.0/integration/disable_test.go (about)

     1  //go:build integration
     2  // +build integration
     3  
     4  package integration
     5  
     6  import (
     7  	"context"
     8  	"fmt"
     9  	"strconv"
    10  	"testing"
    11  	"time"
    12  
    13  	"github.com/stretchr/testify/require"
    14  )
    15  
    16  func TestDisableK8s(t *testing.T) {
    17  	f := newK8sFixture(t, "disable")
    18  
    19  	f.TiltUp()
    20  
    21  	ctx, cancel := context.WithTimeout(f.ctx, time.Minute)
    22  	defer cancel()
    23  	f.WaitForAllPodsReady(ctx, "app=disabletest")
    24  
    25  	setDisabled(f.fixture, "disabletest", true)
    26  
    27  	f.WaitUntil(ctx, "pod gone", func() (string, error) {
    28  		out, err := f.runCommand("kubectl", "get", "pod", namespaceFlag, "-lapp=disabletest", "--no-headers")
    29  		return out.String(), err
    30  	}, "No resources found")
    31  
    32  	setDisabled(f.fixture, "disabletest", false)
    33  
    34  	f.WaitForAllPodsReady(ctx, "app=disabletest")
    35  }
    36  
    37  func TestDisableDC(t *testing.T) {
    38  	f := newDCFixture(t, "disable")
    39  
    40  	f.dockerKillAll("tilt")
    41  	f.TiltUp("-f", "Tiltfile.dc")
    42  
    43  	ctx, cancel := context.WithTimeout(f.ctx, time.Minute)
    44  	defer cancel()
    45  
    46  	f.WaitUntil(ctx, "uiresource available", func() (string, error) {
    47  		out, err := f.tilt.Get(ctx, "uiresource")
    48  		return string(out), err
    49  	}, "disabletest")
    50  
    51  	f.runOrFail(f.tilt.cmd(ctx, []string{"wait", "--for=condition=Ready", "uiresource/disabletest"}, nil), "wait")
    52  
    53  	psArgs := []string{
    54  		"ps", "-f", "name=disabletest", "--format", "{{.Image}}",
    55  	}
    56  
    57  	out, err := f.dockerCmdOutput(psArgs)
    58  	require.NoError(t, err)
    59  	require.Contains(t, out, "disabletest")
    60  
    61  	f.WaitUntil(ctx, "disable configmap available", func() (string, error) {
    62  		out, err := f.tilt.Get(ctx, "configmap")
    63  		return string(out), err
    64  	}, "disabletest-disable")
    65  
    66  	setDisabled(f.fixture, "disabletest", true)
    67  
    68  	require.Eventually(t, func() bool {
    69  		out, _ := f.dockerCmdOutput(psArgs)
    70  		return len(out) == 0
    71  	}, time.Minute, 15*time.Millisecond, "dc service stopped")
    72  
    73  	setDisabled(f.fixture, "disabletest", false)
    74  
    75  	f.WaitUntil(ctx, "service up", func() (string, error) {
    76  		return f.dockerCmdOutput(psArgs)
    77  	}, "disabletest")
    78  }
    79  
    80  func setDisabled(f *fixture, resourceName string, isDisabled bool) {
    81  	err := f.tilt.Patch(
    82  		f.ctx,
    83  		"configmap",
    84  		fmt.Sprintf("{\"data\": {\"isDisabled\": \"%s\"}}", strconv.FormatBool(isDisabled)),
    85  		fmt.Sprintf("%s-disable", resourceName),
    86  	)
    87  
    88  	require.NoErrorf(f.t, err, "setting disable state for %s to %v", resourceName, isDisabled)
    89  }