@@ -12,6 +12,7 @@ import (
12
12
"github.com/stretchr/testify/require"
13
13
14
14
"github.com/influxdata/telegraf"
15
+ "github.com/influxdata/telegraf/config"
15
16
influxdb "github.com/influxdata/telegraf/plugins/outputs/influxdb_v2"
16
17
"github.com/influxdata/telegraf/testutil"
17
18
)
@@ -40,6 +41,13 @@ func TestNewHTTPClient(t *testing.T) {
40
41
URL : genURL ("unix://var/run/influxd.sock" ),
41
42
},
42
43
},
44
+ {
45
+ cfg : & influxdb.HTTPConfig {
46
+ URL : genURL ("unix://var/run/influxd.sock" ),
47
+ PingTimeout : config .Duration (15 * time .Second ),
48
+ ReadIdleTimeout : config .Duration (30 * time .Second ),
49
+ },
50
+ },
43
51
}
44
52
45
53
for i := range tests {
@@ -56,6 +64,66 @@ func TestNewHTTPClient(t *testing.T) {
56
64
}
57
65
}
58
66
67
+ func TestWrite (t * testing.T ) {
68
+ ts := httptest .NewServer (
69
+ http .HandlerFunc (func (w http.ResponseWriter , r * http.Request ) {
70
+ switch r .URL .Path {
71
+ case "/api/v2/write" :
72
+ err := r .ParseForm ()
73
+ require .NoError (t , err )
74
+ require .Equal (t , r .Form ["bucket" ], []string {"foobar" })
75
+
76
+ body , err := io .ReadAll (r .Body )
77
+ require .NoError (t , err )
78
+ require .Contains (t , string (body ), "cpu value=42.123" )
79
+
80
+ w .WriteHeader (http .StatusNoContent )
81
+ return
82
+ default :
83
+ w .WriteHeader (http .StatusNotFound )
84
+ return
85
+ }
86
+ }),
87
+ )
88
+ defer ts .Close ()
89
+
90
+ addr := & url.URL {
91
+ Scheme : "http" ,
92
+ Host : ts .Listener .Addr ().String (),
93
+ }
94
+
95
+ cfg := & influxdb.HTTPConfig {
96
+ URL : addr ,
97
+ Bucket : "telegraf" ,
98
+ BucketTag : "bucket" ,
99
+ ExcludeBucketTag : true ,
100
+ PingTimeout : config .Duration (15 * time .Second ),
101
+ ReadIdleTimeout : config .Duration (30 * time .Second ),
102
+ }
103
+
104
+ client , err := influxdb .NewHTTPClient (cfg )
105
+ require .NoError (t , err )
106
+
107
+ metrics := []telegraf.Metric {
108
+ testutil .MustMetric (
109
+ "cpu" ,
110
+ map [string ]string {
111
+ "bucket" : "foobar" ,
112
+ },
113
+ map [string ]interface {}{
114
+ "value" : 42.123 ,
115
+ },
116
+ time .Unix (0 , 0 ),
117
+ ),
118
+ }
119
+
120
+ ctx := context .Background ()
121
+ err = client .Write (ctx , metrics )
122
+ require .NoError (t , err )
123
+ err = client .Write (ctx , metrics )
124
+ require .NoError (t , err )
125
+ }
126
+
59
127
func TestWriteBucketTagWorksOnRetry (t * testing.T ) {
60
128
ts := httptest .NewServer (
61
129
http .HandlerFunc (func (w http.ResponseWriter , r * http.Request ) {
@@ -84,14 +152,14 @@ func TestWriteBucketTagWorksOnRetry(t *testing.T) {
84
152
Host : ts .Listener .Addr ().String (),
85
153
}
86
154
87
- config := & influxdb.HTTPConfig {
155
+ cfg := & influxdb.HTTPConfig {
88
156
URL : addr ,
89
157
Bucket : "telegraf" ,
90
158
BucketTag : "bucket" ,
91
159
ExcludeBucketTag : true ,
92
160
}
93
161
94
- client , err := influxdb .NewHTTPClient (config )
162
+ client , err := influxdb .NewHTTPClient (cfg )
95
163
require .NoError (t , err )
96
164
97
165
metrics := []telegraf.Metric {
0 commit comments