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 }