github.com/cloud-foundations/dominator@v0.0.0-20221004181915-6e4fee580046/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  }