|
1 | 1 | package transport |
2 | 2 |
|
3 | 3 | import ( |
| 4 | + "log" |
4 | 5 | "net" |
| 6 | + "net/url" |
5 | 7 | "testing" |
6 | 8 | ) |
7 | 9 |
|
8 | 10 | func TestPipe(t *testing.T) { |
9 | | - listener, _, err := NewListener() |
| 11 | + listener, addrURL, err := NewListener() |
10 | 12 | if err != nil { |
11 | | - panic(err) |
| 13 | + t.Fatalf("failed to create listener: %v", err) |
12 | 14 | } |
13 | 15 | defer listener.Close() |
14 | 16 |
|
| 17 | + urlParsed, err := url.Parse(addrURL) |
| 18 | + if err != nil { |
| 19 | + t.Fatalf("failed to parse address URL: %v", err) |
| 20 | + } |
| 21 | + |
| 22 | + var family string |
| 23 | + if urlParsed.Scheme == "unix" { |
| 24 | + family = "unix" |
| 25 | + } else if urlParsed.Scheme == "dns" { |
| 26 | + family = "tcp" |
| 27 | + } else { |
| 28 | + t.Fatalf("unsupported address URL scheme: %s", urlParsed.Scheme) |
| 29 | + } |
| 30 | + |
15 | 31 | go func() { |
16 | | - conn, err := net.Dial("unix", listener.Addr().String()) |
| 32 | + conn, err := net.Dial(family, listener.Addr().String()) |
17 | 33 | if err != nil { |
18 | | - panic(err) |
| 34 | + log.Panicf("failed to dial listener: %v", err) |
| 35 | + } |
| 36 | + if _, err := conn.Write([]byte("test")); err != nil { |
| 37 | + log.Panicf("failed to write to listener: %v", err) |
19 | 38 | } |
20 | | - conn.Write([]byte("test")) |
21 | 39 | conn.Close() |
22 | 40 | }() |
23 | 41 |
|
24 | 42 | accepted, err := listener.Accept() |
25 | 43 | if err != nil { |
26 | | - panic(err) |
| 44 | + t.Fatalf("failed to accept listener: %v", err) |
27 | 45 | } |
28 | 46 | var buf [1024]byte |
29 | 47 | n, err := accepted.Read(buf[:]) |
30 | 48 | if err != nil { |
31 | | - panic(err) |
| 49 | + t.Fatalf("failed to read from listener: %v", err) |
32 | 50 | } |
33 | 51 | if string(buf[:n]) != "test" { |
34 | | - panic("expected test, got " + string(buf[:n])) |
| 52 | + t.Fatalf("expected test, got %s", string(buf[:n])) |
35 | 53 | } |
36 | 54 | accepted.Write([]byte("test")) |
37 | 55 | accepted.Close() |
|
0 commit comments