package riak import ( "fmt" "net/http" "net/http/httptest" "net/url" "testing" "github.com/influxdata/telegraf/testutil" "github.com/stretchr/testify/require" ) func TestRiak(t *testing.T) { // Create a test server with the const response JSON ts := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { w.WriteHeader(http.StatusOK) fmt.Fprintln(w, response) })) defer ts.Close() // Parse the URL of the test server, used to verify the expected host u, err := url.Parse(ts.URL) require.NoError(t, err) // Create a new Riak instance with our given test server riak := NewRiak() riak.Servers = []string{ts.URL} // Create a test accumulator acc := &testutil.Accumulator{} // Gather data from the test server err = riak.Gather(acc) require.NoError(t, err) // Expect the correct values for all known keys expectFields := map[string]interface{}{ "cpu_avg1": int64(504), "cpu_avg15": int64(294), "cpu_avg5": int64(325), "memory_code": int64(12329143), "memory_ets": int64(17330176), "memory_processes": int64(58454730), "memory_system": int64(120401678), "memory_total": int64(178856408), "node_get_fsm_objsize_100": int64(73596), "node_get_fsm_objsize_95": int64(36663), "node_get_fsm_objsize_99": int64(51552), "node_get_fsm_objsize_mean": int64(13241), "node_get_fsm_objsize_median": int64(10365), "node_get_fsm_siblings_100": int64(1), "node_get_fsm_siblings_95": int64(1), "node_get_fsm_siblings_99": int64(1), "node_get_fsm_siblings_mean": int64(1), "node_get_fsm_siblings_median": int64(1), "node_get_fsm_time_100": int64(230445), "node_get_fsm_time_95": int64(24259), "node_get_fsm_time_99": int64(96653), "node_get_fsm_time_mean": int64(6851), "node_get_fsm_time_median": int64(2368), "node_gets": int64(1116), "node_gets_total": int64(1026058217), "node_put_fsm_time_100": int64(267390), "node_put_fsm_time_95": int64(38286), "node_put_fsm_time_99": int64(84422), "node_put_fsm_time_mean": int64(10832), "node_put_fsm_time_median": int64(4085), "read_repairs": int64(2), "read_repairs_total": int64(7918375), "node_puts": int64(1155), "node_puts_total": int64(444895769), "pbc_active": int64(360), "pbc_connects": int64(120), "pbc_connects_total": int64(66793268), "vnode_gets": int64(14629), "vnode_gets_total": int64(3748432761), "vnode_index_reads": int64(20), "vnode_index_reads_total": int64(3438296), "vnode_index_writes": int64(4293), "vnode_index_writes_total": int64(1515986619), "vnode_puts": int64(4308), "vnode_puts_total": int64(1519062272), } // Expect the correct values for all tags expectTags := map[string]string{ "nodename": "riak@127.0.0.1", "server": u.Host, } acc.AssertContainsTaggedFields(t, "riak", expectFields, expectTags) } var response = ` { "riak_kv_stat_ts": 1455908558, "vnode_gets": 14629, "vnode_gets_total": 3748432761, "vnode_puts": 4308, "vnode_puts_total": 1519062272, "vnode_index_refreshes": 0, "vnode_index_refreshes_total": 0, "vnode_index_reads": 20, "vnode_index_reads_total": 3438296, "vnode_index_writes": 4293, "vnode_index_writes_total": 1515986619, "vnode_index_writes_postings": 1, "vnode_index_writes_postings_total": 265613, "vnode_index_deletes": 0, "vnode_index_deletes_total": 0, "vnode_index_deletes_postings": 0, "vnode_index_deletes_postings_total": 1, "node_gets": 1116, "node_gets_total": 1026058217, "node_get_fsm_siblings_mean": 1, "node_get_fsm_siblings_median": 1, "node_get_fsm_siblings_95": 1, "node_get_fsm_siblings_99": 1, "node_get_fsm_siblings_100": 1, "node_get_fsm_objsize_mean": 13241, "node_get_fsm_objsize_median": 10365, "node_get_fsm_objsize_95": 36663, "node_get_fsm_objsize_99": 51552, "node_get_fsm_objsize_100": 73596, "node_get_fsm_time_mean": 6851, "node_get_fsm_time_median": 2368, "node_get_fsm_time_95": 24259, "node_get_fsm_time_99": 96653, "node_get_fsm_time_100": 230445, "node_puts": 1155, "node_puts_total": 444895769, "node_put_fsm_time_mean": 10832, "node_put_fsm_time_median": 4085, "node_put_fsm_time_95": 38286, "node_put_fsm_time_99": 84422, "node_put_fsm_time_100": 267390, "read_repairs": 2, "read_repairs_total": 7918375, "coord_redirs_total": 118238575, "executing_mappers": 0, "precommit_fail": 0, "postcommit_fail": 0, "index_fsm_create": 0, "index_fsm_create_error": 0, "index_fsm_active": 0, "list_fsm_create": 0, "list_fsm_create_error": 0, "list_fsm_active": 0, "pbc_active": 360, "pbc_connects": 120, "pbc_connects_total": 66793268, "late_put_fsm_coordinator_ack": 152, "node_get_fsm_active": 1, "node_get_fsm_active_60s": 1029, "node_get_fsm_in_rate": 21, "node_get_fsm_out_rate": 21, "node_get_fsm_rejected": 0, "node_get_fsm_rejected_60s": 0, "node_get_fsm_rejected_total": 0, "node_put_fsm_active": 69, "node_put_fsm_active_60s": 1053, "node_put_fsm_in_rate": 30, "node_put_fsm_out_rate": 31, "node_put_fsm_rejected": 0, "node_put_fsm_rejected_60s": 0, "node_put_fsm_rejected_total": 0, "read_repairs_primary_outofdate_one": 4, "read_repairs_primary_outofdate_count": 14761552, "read_repairs_primary_notfound_one": 0, "read_repairs_primary_notfound_count": 65879, "read_repairs_fallback_outofdate_one": 0, "read_repairs_fallback_outofdate_count": 23761, "read_repairs_fallback_notfound_one": 0, "read_repairs_fallback_notfound_count": 455697, "leveldb_read_block_error": 0, "riak_pipe_stat_ts": 1455908558, "pipeline_active": 0, "pipeline_create_count": 0, "pipeline_create_one": 0, "pipeline_create_error_count": 0, "pipeline_create_error_one": 0, "cpu_nprocs": 362, "cpu_avg1": 504, "cpu_avg5": 325, "cpu_avg15": 294, "mem_total": 33695432704, "mem_allocated": 33454874624, "nodename": "riak@127.0.0.1", "connected_nodes": [], "sys_driver_version": "2.0", "sys_global_heaps_size": 0, "sys_heap_type": "private", "sys_logical_processors": 8, "sys_otp_release": "R15B01", "sys_process_count": 2201, "sys_smp_support": true, "sys_system_version": "Erlang R15B01 (erts-5.9.1) [source] [64-bit] [smp:8:8] [async-threads:64] [kernel-poll:true]", "sys_system_architecture": "x86_64-unknown-linux-gnu", "sys_threads_enabled": true, "sys_thread_pool_size": 64, "sys_wordsize": 8, "ring_members": [ "riak@127.0.0.1" ], "ring_num_partitions": 256, "ring_ownership": "[{'riak@127.0.0.1',256}]", "ring_creation_size": 256, "storage_backend": "riak_kv_eleveldb_backend", "erlydtl_version": "0.7.0", "riak_control_version": "1.4.12-0-g964c5db", "cluster_info_version": "1.2.4", "riak_search_version": "1.4.12-0-g7fe0e00", "merge_index_version": "1.3.2-0-gcb38ee7", "riak_kv_version": "1.4.12-0-gc6bbd66", "sidejob_version": "0.2.0", "riak_api_version": "1.4.12-0-gd9e1cc8", "riak_pipe_version": "1.4.12-0-g986a226", "riak_core_version": "1.4.10", "bitcask_version": "1.6.8-0-gea14cb0", "basho_stats_version": "1.0.3", "webmachine_version": "1.10.4-0-gfcff795", "mochiweb_version": "1.5.1p6", "inets_version": "5.9", "erlang_js_version": "1.2.2", "runtime_tools_version": "1.8.8", "os_mon_version": "2.2.9", "riak_sysmon_version": "1.1.3", "ssl_version": "5.0.1", "public_key_version": "0.15", "crypto_version": "2.1", "sasl_version": "2.2.1", "lager_version": "2.0.1", "goldrush_version": "0.1.5", "compiler_version": "4.8.1", "syntax_tools_version": "1.6.8", "stdlib_version": "1.18.1", "kernel_version": "2.15.1", "memory_total": 178856408, "memory_processes": 58454730, "memory_processes_used": 58371238, "memory_system": 120401678, "memory_atom": 586345, "memory_atom_used": 563485, "memory_binary": 48677920, "memory_code": 12329143, "memory_ets": 17330176, "riak_core_stat_ts": 1455908559, "ignored_gossip_total": 0, "rings_reconciled_total": 5459, "rings_reconciled": 0, "gossip_received": 6, "rejected_handoffs": 94, "handoff_timeouts": 0, "dropped_vnode_requests_total": 0, "converge_delay_min": 0, "converge_delay_max": 0, "converge_delay_mean": 0, "converge_delay_last": 0, "rebalance_delay_min": 0, "rebalance_delay_max": 0, "rebalance_delay_mean": 0, "rebalance_delay_last": 0, "riak_kv_vnodes_running": 16, "riak_kv_vnodeq_min": 0, "riak_kv_vnodeq_median": 0, "riak_kv_vnodeq_mean": 0, "riak_kv_vnodeq_max": 0, "riak_kv_vnodeq_total": 0, "riak_pipe_vnodes_running": 16, "riak_pipe_vnodeq_min": 0, "riak_pipe_vnodeq_median": 0, "riak_pipe_vnodeq_mean": 0, "riak_pipe_vnodeq_max": 0, "riak_pipe_vnodeq_total": 0 } `