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  }