@@ -7,11 +7,16 @@ package influxdb2
7
7
import (
8
8
"context"
9
9
"fmt"
10
+ ilog "github.com/influxdata/influxdb-client-go/v2/log"
11
+ "log"
10
12
"net/http"
11
13
"net/http/httptest"
14
+ "runtime"
15
+ "strings"
12
16
"testing"
13
17
"time"
14
18
19
+ ihttp "github.com/influxdata/influxdb-client-go/v2/api/http"
15
20
"github.com/influxdata/influxdb-client-go/v2/domain"
16
21
http2 "github.com/influxdata/influxdb-client-go/v2/internal/http"
17
22
iwrite "github.com/influxdata/influxdb-client-go/v2/internal/write"
@@ -76,24 +81,76 @@ func TestWriteAPIManagement(t *testing.T) {
76
81
assert .Len (t , c .syncWriteAPIs , 0 )
77
82
}
78
83
84
+ func TestUserAgentBase (t * testing.T ) {
85
+ ua := fmt .Sprintf ("influxdb-client-go/%s (%s; %s)" , Version , runtime .GOOS , runtime .GOARCH )
86
+ assert .Equal (t , ua , http2 .UserAgentBase )
87
+
88
+ }
89
+
90
+ type doer struct {
91
+ userAgent string
92
+ doer ihttp.Doer
93
+ }
94
+
95
+ func (d * doer ) Do (req * http.Request ) (* http.Response , error ) {
96
+ req .Header .Set ("User-Agent" , d .userAgent )
97
+ return d .doer .Do (req )
98
+ }
99
+
79
100
func TestUserAgent (t * testing.T ) {
101
+ ua := http2 .UserAgentBase
80
102
server := httptest .NewServer (http .HandlerFunc (func (w http.ResponseWriter , r * http.Request ) {
81
103
<- time .After (100 * time .Millisecond )
82
- if r .Header .Get ("User-Agent" ) == http2 . UserAgent {
104
+ if r .Header .Get ("User-Agent" ) == ua {
83
105
w .WriteHeader (http .StatusNoContent )
84
106
} else {
85
107
w .WriteHeader (http .StatusNotFound )
86
108
}
87
109
}))
88
110
89
111
defer server .Close ()
90
- c := NewClient (server .URL , "x" )
112
+ var sb strings.Builder
113
+ log .SetOutput (& sb )
114
+ log .SetFlags (0 )
115
+ c := NewClientWithOptions (server .URL , "x" , DefaultOptions ().SetLogLevel (ilog .WarningLevel ))
116
+ assert .True (t , strings .Contains (sb .String (), "Application name is not set" ))
91
117
up , err := c .Ping (context .Background ())
92
118
require .NoError (t , err )
93
119
assert .True (t , up )
94
120
95
121
err = c .WriteAPIBlocking ("o" , "b" ).WriteRecord (context .Background (), "a,a=a a=1i" )
96
122
assert .NoError (t , err )
123
+
124
+ c .Close ()
125
+ sb .Reset ()
126
+ // Test setting application name
127
+ c = NewClientWithOptions (server .URL , "x" , DefaultOptions ().SetApplicationName ("Monitor/1.1" ))
128
+ ua = fmt .Sprintf ("influxdb-client-go/%s (%s; %s) Monitor/1.1" , Version , runtime .GOOS , runtime .GOARCH )
129
+ assert .False (t , strings .Contains (sb .String (), "Application name is not set" ))
130
+ up , err = c .Ping (context .Background ())
131
+ require .NoError (t , err )
132
+ assert .True (t , up )
133
+
134
+ err = c .WriteAPIBlocking ("o" , "b" ).WriteRecord (context .Background (), "a,a=a a=1i" )
135
+ assert .NoError (t , err )
136
+ c .Close ()
137
+
138
+ ua = "Monitor/1.1"
139
+ opts := DefaultOptions ()
140
+ opts .HTTPOptions ().SetHTTPDoer (& doer {
141
+ userAgent : ua ,
142
+ doer : http .DefaultClient ,
143
+ })
144
+
145
+ //Create client with custom user agent setter
146
+ c = NewClientWithOptions (server .URL , "x" , opts )
147
+ up , err = c .Ping (context .Background ())
148
+ require .NoError (t , err )
149
+ assert .True (t , up )
150
+
151
+ err = c .WriteAPIBlocking ("o" , "b" ).WriteRecord (context .Background (), "a,a=a a=1i" )
152
+ assert .NoError (t , err )
153
+ c .Close ()
97
154
}
98
155
99
156
func TestServerError429 (t * testing.T ) {
0 commit comments