github.com/tilt-dev/tilt@v0.33.15-0.20240515162809-0a22ed45d8a0/internal/tiltfile/probe/probe_test.go (about) 1 package probe 2 3 import ( 4 "strings" 5 "testing" 6 7 "github.com/stretchr/testify/require" 8 9 "github.com/tilt-dev/tilt/internal/tiltfile/starkit" 10 ) 11 12 func TestProbeMetaOptions(t *testing.T) { 13 f := starkit.NewFixture(t, NewPlugin()) 14 15 f.File("Tiltfile", ` 16 p = probe(initial_delay_secs=123, 17 timeout_secs=456, 18 period_secs=789, 19 success_threshold=987, 20 failure_threshold=654, 21 exec=exec_action([]), 22 http_get=None) 23 24 print(p.initial_delay_secs) 25 print(p.timeout_secs) 26 print(p.period_secs) 27 print(p.success_threshold) 28 print(p.failure_threshold) 29 print("exec:", p.exec) 30 print("http_get:", p.http_get) 31 print("tcp_socket:", p.tcp_socket) 32 `) 33 34 _, err := f.ExecFile("Tiltfile") 35 require.NoError(t, err) 36 37 expectedOutput := strings.TrimSpace(` 38 123 39 456 40 789 41 987 42 654 43 exec: ExecAction(command = []) 44 http_get: None 45 tcp_socket: None 46 `) 47 48 require.Contains(t, f.PrintOutput(), expectedOutput) 49 } 50 51 func TestProbeActions_None(t *testing.T) { 52 f := starkit.NewFixture(t, NewPlugin()) 53 54 f.File("Tiltfile", `p = probe()`) 55 56 _, err := f.ExecFile("Tiltfile") 57 require.EqualError(t, err, `exactly one of exec, http_get, or tcp_socket must be specified`) 58 } 59 60 func TestProbeActions_Multiple(t *testing.T) { 61 f := starkit.NewFixture(t, NewPlugin()) 62 63 f.File("Tiltfile", ` 64 p = probe(exec=exec_action([]), http_get=http_get_action(8000), tcp_socket=None) 65 `) 66 67 _, err := f.ExecFile("Tiltfile") 68 require.EqualError(t, err, `exactly one of exec, http_get, or tcp_socket must be specified`) 69 } 70 71 func TestProbeActions_Exec(t *testing.T) { 72 f := starkit.NewFixture(t, NewPlugin()) 73 74 f.File("Tiltfile", ` 75 p = probe(exec=exec_action(command=["sleep", "60"])) 76 77 print(p.exec.command) 78 `) 79 80 _, err := f.ExecFile("Tiltfile") 81 require.NoError(t, err) 82 83 require.Contains(t, f.PrintOutput(), `["sleep", "60"]`) 84 } 85 86 func TestProbeActions_HTTPGet(t *testing.T) { 87 f := starkit.NewFixture(t, NewPlugin()) 88 89 f.File("Tiltfile", ` 90 p = probe(http_get=http_get_action(host="example.com", port=8888, scheme='https', path='/status')) 91 92 print(p.http_get.host) 93 print(p.http_get.port) 94 print(p.http_get.scheme) 95 print(p.http_get.path) 96 `) 97 98 _, err := f.ExecFile("Tiltfile") 99 require.NoError(t, err) 100 101 expectedOutput := strings.TrimSpace(` 102 example.com 103 8888 104 https 105 /status 106 `) 107 108 require.Contains(t, f.PrintOutput(), expectedOutput) 109 } 110 111 func TestProbeActions_HTTPGet_NoHost(t *testing.T) { 112 f := starkit.NewFixture(t, NewPlugin()) 113 114 f.File("Tiltfile", ` 115 p = probe(http_get=http_get_action(8888, scheme='https', path='/status')) 116 117 print(p.http_get.host) 118 print(p.http_get.port) 119 print(p.http_get.scheme) 120 print(p.http_get.path) 121 `) 122 123 _, err := f.ExecFile("Tiltfile") 124 require.NoError(t, err) 125 126 expectedOutput := strings.TrimSpace(` 127 8888 128 https 129 /status 130 `) 131 132 require.Contains(t, f.PrintOutput(), expectedOutput) 133 } 134 135 func TestProbeActions_TCPSocket(t *testing.T) { 136 f := starkit.NewFixture(t, NewPlugin()) 137 138 f.File("Tiltfile", ` 139 p = probe(tcp_socket=tcp_socket_action(1234, "localhost")) 140 141 print(p.tcp_socket.host) 142 print(p.tcp_socket.port) 143 `) 144 145 _, err := f.ExecFile("Tiltfile") 146 require.NoError(t, err) 147 148 expectedOutput := strings.TrimSpace(` 149 localhost 150 1234 151 `) 152 153 require.Contains(t, f.PrintOutput(), expectedOutput) 154 }