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  }