github.com/Cloud-Foundations/Dominator@v0.3.4/lib/srpc/managed_test.go (about) 1 package srpc 2 3 import ( 4 "os" 5 "testing" 6 ) 7 8 func TestGetCallCloseCall(t *testing.T) { 9 addr, err := makeListener(true, false) 10 if err != nil { 11 t.Fatal(err) 12 } 13 cr := NewClientResource("tcp", addr.String()) 14 client, err := cr.GetHTTP(nil, 0) 15 if err != nil { 16 t.Fatal(err) 17 } 18 if err := testDoCallPlain(t, client, "get+plain"); err != nil { 19 t.Fatal(err) 20 } 21 if err := client.Close(); err != nil { 22 t.Fatal(err) 23 } 24 defer func() { 25 if err := recover(); err == nil { 26 t.Fatal("call on closed client did not panic") 27 } 28 }() 29 if err := testDoCallPlain(t, client, "get+close+plain1"); err == nil { 30 t.Fatal("call on close client did not fail") 31 } 32 } 33 34 func TestGetCallPutCall(t *testing.T) { 35 addr, err := makeListener(true, false) 36 if err != nil { 37 t.Fatal(err) 38 } 39 cr := NewClientResource("tcp", addr.String()) 40 client, err := cr.GetHTTP(nil, 0) 41 if err != nil { 42 t.Fatal(err) 43 } 44 if err := testDoCallPlain(t, client, "get+plain"); err != nil { 45 t.Fatal(err) 46 } 47 client.Put() 48 defer func() { 49 if err := recover(); err == nil { 50 t.Fatal("call on put client did not panic") 51 } 52 }() 53 if err := testDoCallPlain(t, client, "get+put+plain0"); err != nil { 54 t.Fatal(err) 55 } 56 } 57 58 func TestGetCloseClose(t *testing.T) { 59 addr, err := makeListener(true, false) 60 if err != nil { 61 t.Fatal(err) 62 } 63 origNumOpenClients := numOpenClientConnections 64 cr := NewClientResource("tcp", addr.String()) 65 client, err := cr.GetHTTP(nil, 0) 66 if err != nil { 67 t.Fatal(err) 68 } 69 if !client.IsFromClientResource() { 70 t.Fatal("IsFromClientResource() returned false, should be true") 71 } 72 if numOpenClientConnections != origNumOpenClients+1 { 73 t.Fatalf("numOpenClientConnections: %d != %d", 74 numOpenClientConnections, origNumOpenClients+1) 75 } 76 if err := client.Close(); err != nil { 77 t.Fatal(err) 78 } 79 if numOpenClientConnections != origNumOpenClients { 80 t.Fatalf("numOpenClientConnections: %d != %d", 81 numOpenClientConnections, origNumOpenClients) 82 } 83 if err := client.Close(); err != nil && err != os.ErrClosed { 84 t.Fatal(err) 85 } 86 if numOpenClientConnections != origNumOpenClients { 87 t.Fatalf("numOpenClientConnections: %d != %d", 88 numOpenClientConnections, origNumOpenClients) 89 } 90 }