Skip to content

Commit d7b3bb3

Browse files
committed
Add IPC tests
1 parent e7533cc commit d7b3bb3

1 file changed

Lines changed: 64 additions & 0 deletions

File tree

internal/ipc/ipc_test.go

Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,64 @@
1+
package ipc
2+
3+
import (
4+
"github.com/alebeck/boring/internal/log"
5+
"net"
6+
"os"
7+
"reflect"
8+
"testing"
9+
"time"
10+
)
11+
12+
func TestMain(m *testing.M) {
13+
log.Init(os.Stdout, true, false)
14+
os.Exit(m.Run())
15+
}
16+
17+
func TestIPC(t *testing.T) {
18+
c1, c2 := net.Pipe()
19+
defer c1.Close()
20+
defer c2.Close()
21+
22+
// Avoid test hangs if something goes wrong
23+
c1.SetDeadline(time.Now().Add(1 * time.Second))
24+
c2.SetDeadline(time.Now().Add(1 * time.Second))
25+
26+
done := make(chan struct{})
27+
obj := map[string]string{"foo": "bar"}
28+
29+
go func() {
30+
defer close(done)
31+
var r map[string]string
32+
if err := Receive(&r, c2); err != nil {
33+
t.Errorf("receive failed: %v", err)
34+
}
35+
if !reflect.DeepEqual(obj, r) {
36+
t.Errorf("wrong data: %v != %v", obj, r)
37+
}
38+
}()
39+
40+
if err := Send(obj, c1); err != nil {
41+
t.Fatalf("send failed: %v", err)
42+
}
43+
<-done
44+
}
45+
46+
func TestSendError(t *testing.T) {
47+
obj := map[string]string{"foo": "bar"}
48+
c1, c2 := net.Pipe()
49+
defer c1.Close()
50+
c2.Close() // peer closed
51+
if err := Send(obj, c1); err == nil {
52+
t.Fatalf("did not get expected error")
53+
}
54+
}
55+
56+
func TestReceiveError(t *testing.T) {
57+
var obj map[string]string
58+
c1, c2 := net.Pipe()
59+
defer c1.Close()
60+
c2.Close() // peer closed
61+
if err := Receive(&obj, c1); err == nil {
62+
t.Fatalf("did not get expected error")
63+
}
64+
}

0 commit comments

Comments
 (0)