github.com/Cloud-Foundations/Dominator@v0.3.4/lib/connpool/usage_test.go (about) 1 package connpool 2 3 import ( 4 "net" 5 "testing" 6 7 "github.com/Cloud-Foundations/Dominator/lib/resourcepool" 8 ) 9 10 var serverAddress string 11 12 func init() { 13 listener, err := net.Listen("tcp", "localhost:") 14 if err != nil { 15 panic(err) 16 } 17 serverAddress = listener.Addr().String() 18 //go http.Serve(listener, nil) 19 } 20 21 func TestGetUsePut(t *testing.T) { 22 cr := New("tcp", serverAddress) 23 conn, err := cr.Get(resourcepool.MakeImmediateCanceler(), 0) 24 if err != nil { 25 t.Error(err) 26 return 27 } 28 conn.LocalAddr() 29 conn.Put() 30 } 31 32 func TestGetClosePut(t *testing.T) { 33 cr := New("tcp", serverAddress) 34 conn, err := cr.Get(resourcepool.MakeImmediateCanceler(), 0) 35 if err != nil { 36 t.Error(err) 37 return 38 } 39 if err := conn.Close(); err != nil { 40 t.Error(err) 41 } 42 conn.Put() 43 } 44 45 func TestGetPutPut(t *testing.T) { 46 cr := New("tcp", serverAddress) 47 conn, err := cr.Get(resourcepool.MakeImmediateCanceler(), 0) 48 if err != nil { 49 t.Error(err) 50 return 51 } 52 conn.Put() 53 defer func() { 54 if err := recover(); err == nil { 55 t.Errorf("Multiple Put() did not panic") 56 } 57 }() 58 conn.Put() 59 } 60 61 func TestUseAfterPut(t *testing.T) { 62 cr := New("tcp", serverAddress) 63 conn, err := cr.Get(resourcepool.MakeImmediateCanceler(), 0) 64 if err != nil { 65 t.Error(err) 66 return 67 } 68 conn.Put() 69 defer func() { 70 if err := recover(); err == nil { 71 t.Errorf("Use after Put() did not panic") 72 } 73 }() 74 conn.LocalAddr() 75 } 76 77 func TestUseAfterClose(t *testing.T) { 78 cr := New("tcp", serverAddress) 79 conn, err := cr.Get(resourcepool.MakeImmediateCanceler(), 0) 80 if err != nil { 81 t.Error(err) 82 return 83 } 84 conn.Close() 85 defer func() { 86 if err := recover(); err == nil { 87 t.Errorf("Use after Close() did not panic") 88 } 89 }() 90 conn.LocalAddr() 91 }