func TestReadsMetricsFromKafka(t *testing.T) { if testing.Short() { t.Skip("Skipping integration test in short mode") } brokerPeers := []string{testutil.GetLocalHost() + ":9092"} zkPeers := []string{testutil.GetLocalHost() + ":2181"} testTopic := fmt.Sprintf("telegraf_test_topic_%d", time.Now().Unix()) // Send a Kafka message to the kafka host msg := "cpu_load_short,direction=in,host=server01,region=us-west value=23422.0 1422568543702900257" producer, err := sarama.NewSyncProducer(brokerPeers, nil) require.NoError(t, err) _, _, err = producer.SendMessage( &sarama.ProducerMessage{ Topic: testTopic, Value: sarama.StringEncoder(msg), }) require.NoError(t, err) defer producer.Close() // Start the Kafka Consumer k := &Kafka{ ConsumerGroup: "telegraf_test_consumers", Topics: []string{testTopic}, ZookeeperPeers: zkPeers, PointBuffer: 100000, Offset: "oldest", } if err := k.Start(); err != nil { t.Fatal(err.Error()) } else { defer k.Stop() } waitForPoint(k, t) // Verify that we can now gather the sent message var acc testutil.Accumulator // Sanity check assert.Equal(t, 0, len(acc.Points), "There should not be any points") // Gather points err = k.Gather(&acc) require.NoError(t, err) if len(acc.Points) == 1 { point := acc.Points[0] assert.Equal(t, "cpu_load_short", point.Measurement) assert.Equal(t, map[string]interface{}{"value": 23422.0}, point.Fields) assert.Equal(t, map[string]string{ "host": "server01", "direction": "in", "region": "us-west", }, point.Tags) assert.Equal(t, time.Unix(0, 1422568543702900257).Unix(), point.Time.Unix()) } else { t.Errorf("No points found in accumulator, expected 1") } }
func TestMemcachedGeneratesMetrics(t *testing.T) { if testing.Short() { t.Skip("Skipping integration test in short mode") } m := &Memcached{ Servers: []string{testutil.GetLocalHost()}, } var acc testutil.Accumulator err := m.Gather(&acc) require.NoError(t, err) intMetrics := []string{"get_hits", "get_misses", "evictions", "limit_maxbytes", "bytes", "uptime", "curr_items", "total_items", "curr_connections", "total_connections", "connection_structures", "cmd_get", "cmd_set", "delete_hits", "delete_misses", "incr_hits", "incr_misses", "decr_hits", "decr_misses", "cas_hits", "cas_misses", "evictions", "bytes_read", "bytes_written", "threads", "conn_yields"} for _, metric := range intMetrics { assert.True(t, acc.HasIntField("memcached", metric), metric) } }
func TestZookeeperGeneratesMetrics(t *testing.T) { if testing.Short() { t.Skip("Skipping integration test in short mode") } z := &Zookeeper{ Servers: []string{testutil.GetLocalHost() + ":2181"}, } var acc testutil.Accumulator err := z.Gather(&acc) require.NoError(t, err) intMetrics := []string{ "avg_latency", "max_latency", "min_latency", "packets_received", "packets_sent", "outstanding_requests", "znode_count", "watch_count", "ephemerals_count", "approximate_data_size", "open_file_descriptor_count", "max_file_descriptor_count", } for _, metric := range intMetrics { assert.True(t, acc.HasIntField("zookeeper", metric), metric) } }
func TestPostgresqlDefaultsToAllDatabases(t *testing.T) { if testing.Short() { t.Skip("Skipping integration test in short mode") } p := &Postgresql{ Address: fmt.Sprintf("host=%s user=postgres sslmode=disable", testutil.GetLocalHost()), } var acc testutil.Accumulator err := p.Gather(&acc) require.NoError(t, err) var found bool for _, pnt := range acc.Points { if pnt.Measurement == "postgresql" { if pnt.Tags["db"] == "postgres" { found = true break } } } assert.True(t, found) }
func TestAerospikeStatistics(t *testing.T) { if testing.Short() { t.Skip("Skipping integration test in short mode") } a := &Aerospike{ Servers: []string{testutil.GetLocalHost() + ":3000"}, } var acc testutil.Accumulator err := a.Gather(&acc) require.NoError(t, err) // Only use a few of the metrics asMetrics := []string{ "transactions", "stat_write_errs", "stat_read_reqs", "stat_write_reqs", } for _, metric := range asMetrics { assert.True(t, acc.HasIntField("aerospike", metric), metric) } }
func TestRedisConnect(t *testing.T) { if testing.Short() { t.Skip("Skipping integration test in short mode") } addr := fmt.Sprintf(testutil.GetLocalHost() + ":6379") r := &Redis{ Servers: []string{addr}, } var acc testutil.Accumulator err := r.Gather(&acc) require.NoError(t, err) }
func TestMysqlDefaultsToLocal(t *testing.T) { if testing.Short() { t.Skip("Skipping integration test in short mode") } m := &Mysql{ Servers: []string{fmt.Sprintf("root@tcp(%s:3306)/", testutil.GetLocalHost())}, } var acc testutil.Accumulator err := m.Gather(&acc) require.NoError(t, err) assert.True(t, acc.HasMeasurement("mysql")) }
func TestConnectAndWrite(t *testing.T) { if testing.Short() { t.Skip("Skipping integration test in short mode") } url := testutil.GetLocalHost() + ":5555" r := &Riemann{ URL: url, Transport: "tcp", } err := r.Connect() require.NoError(t, err) err = r.Write(testutil.MockBatchPoints().Points()) require.NoError(t, err) }
func TestConnectAndWrite(t *testing.T) { if testing.Short() { t.Skip("Skipping integration test in short mode") } var url = testutil.GetLocalHost() + ":1883" m := &MQTT{ Servers: []string{url}, } // Verify that we can connect to the MQTT broker err := m.Connect() require.NoError(t, err) // Verify that we can successfully write data to the mqtt broker err = m.Write(testutil.MockBatchPoints().Points()) require.NoError(t, err) }
func TestConnectAndWrite(t *testing.T) { if testing.Short() { t.Skip("Skipping integration test in short mode") } brokers := []string{testutil.GetLocalHost() + ":9092"} k := &Kafka{ Brokers: brokers, Topic: "Test", } // Verify that we can connect to the Kafka broker err := k.Connect() require.NoError(t, err) // Verify that we can successfully write data to the kafka broker err = k.Write(testutil.MockBatchPoints().Points()) require.NoError(t, err) }
func TestConnectAndWrite(t *testing.T) { if testing.Short() { t.Skip("Skipping integration test in short mode") } server := []string{testutil.GetLocalHost() + ":4150"} n := &NSQ{ Server: server[0], Topic: "telegraf", } // Verify that we can connect to the NSQ daemon err := n.Connect() require.NoError(t, err) // Verify that we can successfully write data to the NSQ daemon err = n.Write(testutil.MockBatchPoints().Points()) require.NoError(t, err) }
func TestConnectAndWrite(t *testing.T) { if testing.Short() { t.Skip("Skipping integration test in short mode") } var url = "amqp://" + testutil.GetLocalHost() + ":5672/" q := &AMQP{ URL: url, Exchange: "telegraf_test", } // Verify that we can connect to the AMQP broker err := q.Connect() require.NoError(t, err) // Verify that we can successfully write data to the amqp broker err = q.Write(testutil.MockBatchPoints().Points()) require.NoError(t, err) }
func TestPostgresqlIgnoresUnwantedColumns(t *testing.T) { if testing.Short() { t.Skip("Skipping integration test in short mode") } p := &Postgresql{ Address: fmt.Sprintf("host=%s user=postgres sslmode=disable", testutil.GetLocalHost()), } var acc testutil.Accumulator err := p.Gather(&acc) require.NoError(t, err) for col := range p.IgnoredColumns() { assert.False(t, acc.HasMeasurement(col)) } }
func TestPostgresqlTagsMetricsWithDatabaseName(t *testing.T) { if testing.Short() { t.Skip("Skipping integration test in short mode") } p := &Postgresql{ Address: fmt.Sprintf("host=%s user=postgres sslmode=disable", testutil.GetLocalHost()), Databases: []string{"postgres"}, } var acc testutil.Accumulator err := p.Gather(&acc) require.NoError(t, err) point, ok := acc.Get("postgresql") require.True(t, ok) assert.Equal(t, "postgres", point.Tags["db"]) }
func TestPostgresqlGeneratesMetrics(t *testing.T) { if testing.Short() { t.Skip("Skipping integration test in short mode") } p := &Postgresql{ Address: fmt.Sprintf("host=%s user=postgres sslmode=disable", testutil.GetLocalHost()), Databases: []string{"postgres"}, } var acc testutil.Accumulator err := p.Gather(&acc) require.NoError(t, err) availableColumns := make(map[string]bool) for _, col := range p.OrderedColumns { availableColumns[col] = true } intMetrics := []string{ "xact_commit", "xact_rollback", "blks_read", "blks_hit", "tup_returned", "tup_fetched", "tup_inserted", "tup_updated", "tup_deleted", "conflicts", "temp_files", "temp_bytes", "deadlocks", "numbackends", } floatMetrics := []string{ "blk_read_time", "blk_write_time", } metricsCounted := 0 for _, metric := range intMetrics { _, ok := availableColumns[metric] if ok { assert.True(t, acc.HasIntField("postgresql", metric)) metricsCounted++ } } for _, metric := range floatMetrics { _, ok := availableColumns[metric] if ok { assert.True(t, acc.HasFloatField("postgresql", metric)) metricsCounted++ } } assert.True(t, metricsCounted > 0) assert.Equal(t, len(availableColumns)-len(p.IgnoredColumns()), metricsCounted) }