diff options
Diffstat (limited to 'tests/test_helpers')
| -rw-r--r-- | tests/test_helpers/helpers.go | 31 | 
1 files changed, 31 insertions, 0 deletions
diff --git a/tests/test_helpers/helpers.go b/tests/test_helpers/helpers.go index aec1f7c..1bbfdf3 100644 --- a/tests/test_helpers/helpers.go +++ b/tests/test_helpers/helpers.go @@ -3,15 +3,19 @@ package test_helpers  import (  	"crypto/md5"  	"encoding/hex" +	"encoding/json"  	"fmt"  	"io/ioutil" +	"net"  	"os"  	"os/exec"  	"path/filepath"  	"runtime"  	"syscall"  	"testing" +	"time" +	"github.com/rfjakob/gocryptfs/internal/ctlsock"  	"github.com/rfjakob/gocryptfs/internal/nametransform"  ) @@ -323,3 +327,30 @@ func Du(t *testing.T, fd int) (nBytes int64) {  	// st.Blocks = number of 512-byte blocks  	return st.Blocks * 512  } + +// QueryCtlSock sends a request to the control socket at "socketPath" and +// returns the response. +func QueryCtlSock(t *testing.T, socketPath string, req ctlsock.RequestStruct) (response ctlsock.ResponseStruct) { +	conn, err := net.DialTimeout("unix", socketPath, 1*time.Second) +	if err != nil { +		t.Fatal(err) +	} +	defer conn.Close() +	conn.SetDeadline(time.Now().Add(time.Second)) +	msg, err := json.Marshal(req) +	if err != nil { +		t.Fatal(err) +	} +	_, err = conn.Write(msg) +	if err != nil { +		t.Fatal(err) +	} +	buf := make([]byte, 2*syscall.PathMax) +	n, err := conn.Read(buf) +	if err != nil { +		t.Fatal(err) +	} +	buf = buf[:n] +	json.Unmarshal(buf, &response) +	return response +}  | 
