@@ -7,11 +7,15 @@ package influxdb2
77import (
88 "context"
99 "fmt"
10+ "log"
1011 "net/http"
1112 "net/http/httptest"
13+ "runtime"
14+ "strings"
1215 "testing"
1316 "time"
1417
18+ ihttp "github.com/influxdata/influxdb-client-go/v2/api/http"
1519 "github.com/influxdata/influxdb-client-go/v2/domain"
1620 http2 "github.com/influxdata/influxdb-client-go/v2/internal/http"
1721 iwrite "github.com/influxdata/influxdb-client-go/v2/internal/write"
@@ -76,24 +80,76 @@ func TestWriteAPIManagement(t *testing.T) {
7680 assert .Len (t , c .syncWriteAPIs , 0 )
7781}
7882
83+ func TestUserAgentBase (t * testing.T ) {
84+ ua := fmt .Sprintf ("influxdb-client-go/%s (%s; %s)" , Version , runtime .GOOS , runtime .GOARCH )
85+ assert .Equal (t , ua , http2 .UserAgentBase )
86+
87+ }
88+
89+ type doer struct {
90+ userAgent string
91+ doer ihttp.Doer
92+ }
93+
94+ func (d * doer ) Do (req * http.Request ) (* http.Response , error ) {
95+ req .Header .Set ("User-Agent" , d .userAgent )
96+ return d .doer .Do (req )
97+ }
98+
7999func TestUserAgent (t * testing.T ) {
100+ ua := http2 .UserAgentBase
80101 server := httptest .NewServer (http .HandlerFunc (func (w http.ResponseWriter , r * http.Request ) {
81102 <- time .After (100 * time .Millisecond )
82- if r .Header .Get ("User-Agent" ) == http2 . UserAgent {
103+ if r .Header .Get ("User-Agent" ) == ua {
83104 w .WriteHeader (http .StatusNoContent )
84105 } else {
85106 w .WriteHeader (http .StatusNotFound )
86107 }
87108 }))
88109
89110 defer server .Close ()
111+ var sb strings.Builder
112+ log .SetOutput (& sb )
113+ log .SetFlags (0 )
90114 c := NewClient (server .URL , "x" )
115+ assert .True (t , strings .Contains (sb .String (), "Application name is not set" ))
91116 up , err := c .Ping (context .Background ())
92117 require .NoError (t , err )
93118 assert .True (t , up )
94119
95120 err = c .WriteAPIBlocking ("o" , "b" ).WriteRecord (context .Background (), "a,a=a a=1i" )
96121 assert .NoError (t , err )
122+
123+ c .Close ()
124+ sb .Reset ()
125+ // Test setting application name
126+ c = NewClientWithOptions (server .URL , "x" , DefaultOptions ().SetApplicationName ("Monitor/1.1" ))
127+ ua = fmt .Sprintf ("influxdb-client-go/%s (%s; %s) Monitor/1.1" , Version , runtime .GOOS , runtime .GOARCH )
128+ assert .False (t , strings .Contains (sb .String (), "Application name is not set" ))
129+ up , err = c .Ping (context .Background ())
130+ require .NoError (t , err )
131+ assert .True (t , up )
132+
133+ err = c .WriteAPIBlocking ("o" , "b" ).WriteRecord (context .Background (), "a,a=a a=1i" )
134+ assert .NoError (t , err )
135+ c .Close ()
136+
137+ ua = "Monitor/1.1"
138+ opts := DefaultOptions ()
139+ opts .HTTPOptions ().SetHTTPDoer (& doer {
140+ userAgent : ua ,
141+ doer : http .DefaultClient ,
142+ })
143+
144+ //Create client with custom user agent setter
145+ c = NewClientWithOptions (server .URL , "x" , opts )
146+ up , err = c .Ping (context .Background ())
147+ require .NoError (t , err )
148+ assert .True (t , up )
149+
150+ err = c .WriteAPIBlocking ("o" , "b" ).WriteRecord (context .Background (), "a,a=a a=1i" )
151+ assert .NoError (t , err )
152+ c .Close ()
97153}
98154
99155func TestServerError429 (t * testing.T ) {
0 commit comments