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  }