github.com/annwntech/go-micro/v2@v2.9.5/client/options_test.go (about)

     1  package client
     2  
     3  import (
     4  	"testing"
     5  	"time"
     6  
     7  	"github.com/annwntech/go-micro/v2/transport"
     8  )
     9  
    10  func TestCallOptions(t *testing.T) {
    11  	testData := []struct {
    12  		set      bool
    13  		retries  int
    14  		rtimeout time.Duration
    15  		dtimeout time.Duration
    16  	}{
    17  		{false, DefaultRetries, DefaultRequestTimeout, transport.DefaultDialTimeout},
    18  		{true, 10, time.Second, time.Second * 2},
    19  	}
    20  
    21  	for _, d := range testData {
    22  		var opts Options
    23  		var cl Client
    24  
    25  		if d.set {
    26  			opts = NewOptions(
    27  				Retries(d.retries),
    28  				RequestTimeout(d.rtimeout),
    29  				DialTimeout(d.dtimeout),
    30  			)
    31  
    32  			cl = NewClient(
    33  				Retries(d.retries),
    34  				RequestTimeout(d.rtimeout),
    35  				DialTimeout(d.dtimeout),
    36  			)
    37  		} else {
    38  			opts = NewOptions()
    39  			cl = NewClient()
    40  		}
    41  
    42  		// test options and those set in client
    43  		for _, o := range []Options{opts, cl.Options()} {
    44  			if o.CallOptions.Retries != d.retries {
    45  				t.Fatalf("Expected retries %v got %v", d.retries, o.CallOptions.Retries)
    46  			}
    47  
    48  			if o.CallOptions.RequestTimeout != d.rtimeout {
    49  				t.Fatalf("Expected request timeout %v got %v", d.rtimeout, o.CallOptions.RequestTimeout)
    50  			}
    51  
    52  			if o.CallOptions.DialTimeout != d.dtimeout {
    53  				t.Fatalf("Expected %v got %v", d.dtimeout, o.CallOptions.DialTimeout)
    54  			}
    55  
    56  			// copy CallOptions
    57  			callOpts := o.CallOptions
    58  
    59  			// create new opts
    60  			cretries := WithRetries(o.CallOptions.Retries * 10)
    61  			crtimeout := WithRequestTimeout(o.CallOptions.RequestTimeout * (time.Second * 10))
    62  			cdtimeout := WithDialTimeout(o.CallOptions.DialTimeout * (time.Second * 10))
    63  
    64  			// set call options
    65  			for _, opt := range []CallOption{cretries, crtimeout, cdtimeout} {
    66  				opt(&callOpts)
    67  			}
    68  
    69  			// check call options
    70  			if e := o.CallOptions.Retries * 10; callOpts.Retries != e {
    71  				t.Fatalf("Expected retries %v got %v", e, callOpts.Retries)
    72  			}
    73  
    74  			if e := o.CallOptions.RequestTimeout * (time.Second * 10); callOpts.RequestTimeout != e {
    75  				t.Fatalf("Expected request timeout %v got %v", e, callOpts.RequestTimeout)
    76  			}
    77  
    78  			if e := o.CallOptions.DialTimeout * (time.Second * 10); callOpts.DialTimeout != e {
    79  				t.Fatalf("Expected %v got %v", e, callOpts.DialTimeout)
    80  			}
    81  
    82  		}
    83  
    84  	}
    85  }