test target: listenning events for terms
[src/xds/xds-server.git] / test / exec_test.go
index 8fb6519..5d4c106 100644 (file)
@@ -28,6 +28,17 @@ import (
        "github.com/stretchr/testify/assert"
 )
 
+/*flush channel with timeout*/
+func flushChannelExec(channel chan xsapiv1.ExecOutMsg, ms time.Duration) {
+       timeoutB := false
+       for !timeoutB {
+               select {
+               case <-channel:
+               case <-time.After(ms * time.Millisecond):
+                       timeoutB = true
+               }
+       }
+}
 func TestExec(t *testing.T) {
        cloneRepo := "https://github.com/iotbzh/helloworld-service.git"
        cloneDir := path.Join(os.Getenv(envRootCfgDir), "testExec")
@@ -71,10 +82,12 @@ func TestExec(t *testing.T) {
        var cfg xsapiv1.FolderConfig
        assert.Nil(t, HTTPCli.Post("/folders", fPrj, &cfg))
        assert.NotNil(t, cfg)
-       _, err = NewIoSocketClient(prefixURL, HTTPCli.GetClientID())
-       if err != nil {
-               t.Fatal(err)
-       }
+
+       chExec := make(chan xsapiv1.ExecOutMsg)
+       defer close(chExec)
+       sCli.Conn.On(xsapiv1.ExecOutEvent, func(ev xsapiv1.ExecOutMsg) {
+               chExec <- ev
+       })
 
        cmd := "export PKG_CONFIG_PATH=/usr/local/lib64/pkgconfig/"
        cmd = cmd + " && "
@@ -92,7 +105,7 @@ func TestExec(t *testing.T) {
        }
        var execRes xsapiv1.ExecArgs
        assert.Nil(t, HTTPCli.Post("/exec", exec, &execRes))
-       time.Sleep(3 * time.Second) //maybe waiting for an event would be better
+       flushChannelExec(chExec, 1000)
 
        cmd = "export PKG_CONFIG_PATH=/usr/local/lib64/pkgconfig/"
        cmd = cmd + "&&"
@@ -103,7 +116,7 @@ func TestExec(t *testing.T) {
        cmd = cmd + "make"
        exec.Cmd = cmd
        assert.Nil(t, HTTPCli.Post("/exec", exec, &execRes))
-       time.Sleep(3 * time.Second) //maybe waiting for an event would be better
+       flushChannelExec(chExec, 1000)
 
        /*check afb-helloworld.so exists*/
        _, err = os.Stat(path.Join(fPrj.ClientPath, "build/helloworld-afb/afb-helloworld.so"))