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 }