vitess.io/vitess@v0.16.2/go/vt/hook/hook_test.go (about) 1 package hook 2 3 import ( 4 "context" 5 "os" 6 "os/exec" 7 "path" 8 "testing" 9 "time" 10 11 "github.com/stretchr/testify/assert" 12 "github.com/stretchr/testify/require" 13 14 vtenv "vitess.io/vitess/go/vt/env" 15 ) 16 17 func TestExecuteContext(t *testing.T) { 18 vtroot, err := vtenv.VtRoot() 19 require.NoError(t, err) 20 21 sleep, err := exec.LookPath("sleep") 22 require.NoError(t, err) 23 24 sleepHookPath := path.Join(vtroot, "vthook", "sleep") 25 require.NoError(t, os.Symlink(sleep, sleepHookPath)) 26 defer func() { 27 require.NoError(t, os.Remove(sleepHookPath)) 28 }() 29 30 h := NewHook("sleep", []string{"5"}) 31 ctx, cancel := context.WithTimeout(context.Background(), time.Millisecond*10) 32 defer cancel() 33 34 hr := h.ExecuteContext(ctx) 35 assert.Equal(t, HOOK_TIMEOUT_ERROR, hr.ExitStatus) 36 37 h.Parameters = []string{"0.1"} 38 hr = h.Execute() 39 assert.Equal(t, HOOK_SUCCESS, hr.ExitStatus) 40 }