1
1
package client
2
2
3
3
import (
4
- "github.com/firecracker-microvm/firecracker-go-sdk/client/operations"
5
- "github.com/go-openapi/runtime"
6
- "github.com/stretchr/testify/assert"
4
+ "context"
7
5
"net"
6
+ "net/http"
7
+ "os"
8
8
"testing"
9
9
"time"
10
+
11
+ "github.com/firecracker-microvm/firecracker-go-sdk/client/operations"
12
+ "github.com/go-openapi/runtime"
13
+ "github.com/stretchr/testify/assert"
10
14
)
11
15
16
+ const expectedEndpointPath = "/test-operation"
17
+
12
18
func TestNewUnixSocketTransport (t * testing.T ) {
13
19
done := make (chan bool )
14
20
15
- expectedMessage := "PUT /logger HTTP/1.1\r \n Host: localhost\r \n User-Agent: Go-http-client/1.1\r \n Content-Length: 0\r \n Accept: application/json\r \n Content-Type: application/json\r \n Accept-Encoding: gzip\r \n \r \n "
16
21
socketPath := "testingUnixSocket.sock"
17
- addr , _ := net .ResolveUnixAddr ("unix" , socketPath )
18
- listener , _ := net .ListenUnix ("unix" , addr )
19
- defer listener .Close ()
20
-
21
- go func () {
22
- conn , err := listener .AcceptUnix ()
23
- if err != nil {
24
- t .Error (err )
25
- }
26
-
27
- buf := make ([]byte , 512 )
28
- nr , err := conn .Read (buf )
29
- if err != nil {
30
- return
31
- }
32
-
33
- data := string (buf [0 :nr ])
34
- assert .Equal (t , expectedMessage , data , "expectedMessage received on socket is different than what was sent" )
35
- done <- true
22
+ listener , err := net .Listen ("unix" , socketPath )
23
+ if err != nil {
24
+ panic (err )
25
+ }
26
+
27
+ server := http.Server {
28
+ Handler : http .HandlerFunc (func (w http.ResponseWriter , req * http.Request ) {
29
+ assert .Equal (t , expectedEndpointPath , req .URL .String ())
30
+ w .WriteHeader (http .StatusOK )
31
+ close (done )
32
+ }),
33
+ }
34
+
35
+ go server .Serve (listener )
36
+ defer func () {
37
+ server .Shutdown (context .Background ())
38
+ listener .Close ()
39
+ os .Remove (socketPath )
36
40
}()
37
41
38
42
unixTransport := NewUnixSocketTransport (socketPath , nil , false )
39
-
40
43
unixTransport .Submit (testOperation ())
41
44
42
45
select {
@@ -50,9 +53,10 @@ func testOperation() *runtime.ClientOperation {
50
53
return & runtime.ClientOperation {
51
54
ID : "putLogger" ,
52
55
Method : "PUT" ,
53
- PathPattern : "/logger" ,
56
+ PathPattern : expectedEndpointPath ,
54
57
ProducesMediaTypes : []string {"application/json" },
55
58
Schemes : []string {"http" },
56
59
Params : operations .NewPutLoggerParams (),
60
+ Reader : & operations.PutLoggerReader {},
57
61
}
58
62
}
0 commit comments