added more UNIT test cases for covering all parts of the code
added debug statement for debugging OpenTSDB communication Closes #182
This commit is contained in:
parent
fc41cc9878
commit
9a0c0886ce
|
@ -17,6 +17,8 @@ type OpenTSDB struct {
|
||||||
|
|
||||||
Host string
|
Host string
|
||||||
Port int
|
Port int
|
||||||
|
|
||||||
|
Debug bool
|
||||||
}
|
}
|
||||||
|
|
||||||
var sampleConfig = `
|
var sampleConfig = `
|
||||||
|
@ -29,6 +31,9 @@ var sampleConfig = `
|
||||||
|
|
||||||
# Port of the OpenTSDB server in telnet mode
|
# Port of the OpenTSDB server in telnet mode
|
||||||
port = 4242
|
port = 4242
|
||||||
|
|
||||||
|
# Debug true - Prints OpenTSDB communication
|
||||||
|
debug = false
|
||||||
`
|
`
|
||||||
|
|
||||||
type MetricLine struct {
|
type MetricLine struct {
|
||||||
|
@ -70,15 +75,20 @@ func (o *OpenTSDB) Write(bp client.BatchPoints) error {
|
||||||
Metric: fmt.Sprintf("%s%s", o.Prefix, pt.Measurement),
|
Metric: fmt.Sprintf("%s%s", o.Prefix, pt.Measurement),
|
||||||
Timestamp: timeNow.Unix(),
|
Timestamp: timeNow.Unix(),
|
||||||
}
|
}
|
||||||
if metricValue, err := buildValue(bp, pt); err == nil {
|
metricValue, buildError := buildValue(bp, pt)
|
||||||
metric.Value = metricValue
|
if buildError != nil {
|
||||||
|
fmt.Printf("OpenTSDB: %s\n", buildError.Error())
|
||||||
|
continue
|
||||||
}
|
}
|
||||||
|
metric.Value = metricValue
|
||||||
|
|
||||||
tagsSlice := buildTags(bp.Tags, pt.Tags)
|
tagsSlice := buildTags(bp.Tags, pt.Tags)
|
||||||
metric.Tags = fmt.Sprint(strings.Join(tagsSlice, " "))
|
metric.Tags = fmt.Sprint(strings.Join(tagsSlice, " "))
|
||||||
|
|
||||||
messageLine := fmt.Sprintf("put %s %v %s %s\n", metric.Metric, metric.Timestamp, metric.Value, metric.Tags)
|
messageLine := fmt.Sprintf("put %s %v %s %s\n", metric.Metric, metric.Timestamp, metric.Value, metric.Tags)
|
||||||
|
if o.Debug {
|
||||||
fmt.Print(messageLine)
|
fmt.Print(messageLine)
|
||||||
|
}
|
||||||
_, err := connection.Write([]byte(messageLine))
|
_, err := connection.Write([]byte(messageLine))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
fmt.Errorf("OpenTSDB: Telnet writing error %s", err.Error())
|
fmt.Errorf("OpenTSDB: Telnet writing error %s", err.Error())
|
||||||
|
@ -115,7 +125,7 @@ func buildValue(bp client.BatchPoints, pt client.Point) (string, error) {
|
||||||
case float64:
|
case float64:
|
||||||
retv = FloatToString(float64(p))
|
retv = FloatToString(float64(p))
|
||||||
default:
|
default:
|
||||||
return retv, fmt.Errorf("undeterminable type for telegraf")
|
return retv, fmt.Errorf("unexpected type %T with value %v for OpenTSDB", v, v)
|
||||||
}
|
}
|
||||||
return retv, nil
|
return retv, nil
|
||||||
}
|
}
|
||||||
|
|
|
@ -3,7 +3,9 @@ package opentsdb
|
||||||
import (
|
import (
|
||||||
"reflect"
|
"reflect"
|
||||||
"testing"
|
"testing"
|
||||||
|
"time"
|
||||||
|
|
||||||
|
"github.com/influxdb/influxdb/client"
|
||||||
"github.com/influxdb/telegraf/testutil"
|
"github.com/influxdb/telegraf/testutil"
|
||||||
"github.com/stretchr/testify/require"
|
"github.com/stretchr/testify/require"
|
||||||
)
|
)
|
||||||
|
@ -60,4 +62,34 @@ func TestWrite(t *testing.T) {
|
||||||
// Verify that we can successfully write data to OpenTSDB
|
// Verify that we can successfully write data to OpenTSDB
|
||||||
err = o.Write(testutil.MockBatchPoints())
|
err = o.Write(testutil.MockBatchPoints())
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
|
|
||||||
|
// Verify postive and negative test cases of writing data
|
||||||
|
var bp client.BatchPoints
|
||||||
|
bp.Time = time.Now()
|
||||||
|
bp.Tags = map[string]string{"testkey": "testvalue"}
|
||||||
|
bp.Points = []client.Point{
|
||||||
|
{
|
||||||
|
Measurement: "justametric.float",
|
||||||
|
Fields: map[string]interface{}{"value": float64(1.0)},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
Measurement: "justametric.int",
|
||||||
|
Fields: map[string]interface{}{"value": int64(123456789)},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
Measurement: "justametric.uint",
|
||||||
|
Fields: map[string]interface{}{"value": uint64(123456789012345)},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
Measurement: "justametric.string",
|
||||||
|
Fields: map[string]interface{}{"value": "Lorem Ipsum"},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
Measurement: "justametric.anotherfloat",
|
||||||
|
Fields: map[string]interface{}{"value": float64(42.0)},
|
||||||
|
},
|
||||||
|
}
|
||||||
|
err = o.Write(bp)
|
||||||
|
require.NoError(t, err)
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue