package couchdb_test import ( "github.com/influxdata/telegraf/plugins/inputs/couchdb" "github.com/influxdata/telegraf/testutil" "github.com/stretchr/testify/require" "net/http" "net/http/httptest" "testing" ) func TestBasic(t *testing.T) { js := ` { "couchdb": { "auth_cache_misses": { "description": "number of authentication cache misses", "current": null, "sum": null, "mean": null, "stddev": null, "min": null, "max": null }, "database_writes": { "description": "number of times a database was changed", "current": null, "sum": null, "mean": null, "stddev": null, "min": null, "max": null }, "open_databases": { "description": "number of open databases", "current": null, "sum": null, "mean": null, "stddev": null, "min": null, "max": null }, "auth_cache_hits": { "description": "number of authentication cache hits", "current": null, "sum": null, "mean": null, "stddev": null, "min": null, "max": null }, "request_time": { "description": "length of a request inside CouchDB without MochiWeb", "current": 18.0, "sum": 18.0, "mean": 18.0, "stddev": null, "min": 18.0, "max": 18.0 }, "database_reads": { "description": "number of times a document was read from a database", "current": null, "sum": null, "mean": null, "stddev": null, "min": null, "max": null }, "open_os_files": { "description": "number of file descriptors CouchDB has open", "current": null, "sum": null, "mean": null, "stddev": null, "min": null, "max": null } }, "httpd_request_methods": { "PUT": { "description": "number of HTTP PUT requests", "current": null, "sum": null, "mean": null, "stddev": null, "min": null, "max": null }, "GET": { "description": "number of HTTP GET requests", "current": 2.0, "sum": 2.0, "mean": 0.25, "stddev": 0.70699999999999996181, "min": 0, "max": 2 }, "COPY": { "description": "number of HTTP COPY requests", "current": null, "sum": null, "mean": null, "stddev": null, "min": null, "max": null }, "DELETE": { "description": "number of HTTP DELETE requests", "current": null, "sum": null, "mean": null, "stddev": null, "min": null, "max": null }, "POST": { "description": "number of HTTP POST requests", "current": null, "sum": null, "mean": null, "stddev": null, "min": null, "max": null }, "HEAD": { "description": "number of HTTP HEAD requests", "current": null, "sum": null, "mean": null, "stddev": null, "min": null, "max": null } }, "httpd_status_codes": { "403": { "description": "number of HTTP 403 Forbidden responses", "current": null, "sum": null, "mean": null, "stddev": null, "min": null, "max": null }, "202": { "description": "number of HTTP 202 Accepted responses", "current": null, "sum": null, "mean": null, "stddev": null, "min": null, "max": null }, "401": { "description": "number of HTTP 401 Unauthorized responses", "current": null, "sum": null, "mean": null, "stddev": null, "min": null, "max": null }, "409": { "description": "number of HTTP 409 Conflict responses", "current": null, "sum": null, "mean": null, "stddev": null, "min": null, "max": null }, "200": { "description": "number of HTTP 200 OK responses", "current": 1.0, "sum": 1.0, "mean": 0.125, "stddev": 0.35399999999999998135, "min": 0, "max": 1 }, "405": { "description": "number of HTTP 405 Method Not Allowed responses", "current": null, "sum": null, "mean": null, "stddev": null, "min": null, "max": null }, "400": { "description": "number of HTTP 400 Bad Request responses", "current": null, "sum": null, "mean": null, "stddev": null, "min": null, "max": null }, "201": { "description": "number of HTTP 201 Created responses", "current": null, "sum": null, "mean": null, "stddev": null, "min": null, "max": null }, "404": { "description": "number of HTTP 404 Not Found responses", "current": null, "sum": null, "mean": null, "stddev": null, "min": null, "max": null }, "500": { "description": "number of HTTP 500 Internal Server Error responses", "current": null, "sum": null, "mean": null, "stddev": null, "min": null, "max": null }, "412": { "description": "number of HTTP 412 Precondition Failed responses", "current": null, "sum": null, "mean": null, "stddev": null, "min": null, "max": null }, "301": { "description": "number of HTTP 301 Moved Permanently responses", "current": null, "sum": null, "mean": null, "stddev": null, "min": null, "max": null }, "304": { "description": "number of HTTP 304 Not Modified responses", "current": null, "sum": null, "mean": null, "stddev": null, "min": null, "max": null } }, "httpd": { "clients_requesting_changes": { "description": "number of clients for continuous _changes", "current": null, "sum": null, "mean": null, "stddev": null, "min": null, "max": null }, "temporary_view_reads": { "description": "number of temporary view reads", "current": null, "sum": null, "mean": null, "stddev": null, "min": null, "max": null }, "requests": { "description": "number of HTTP requests", "current": 2.0, "sum": 2.0, "mean": 0.25, "stddev": 0.70699999999999996181, "min": 0, "max": 2 }, "bulk_requests": { "description": "number of bulk requests", "current": null, "sum": null, "mean": null, "stddev": null, "min": null, "max": null }, "view_reads": { "description": "number of view reads", "current": null, "sum": null, "mean": null, "stddev": null, "min": null, "max": null } } } ` fakeServer := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { if r.URL.Path == "/_stats" { _, _ = w.Write([]byte(js)) } else { w.WriteHeader(http.StatusNotFound) } })) defer fakeServer.Close() plugin := &couchdb.CouchDB{ HOSTs: []string{fakeServer.URL + "/_stats"}, } var acc testutil.Accumulator require.NoError(t, plugin.Gather(&acc)) }