type assertion fix

This commit is contained in:
Maksadbek 2016-07-24 12:58:41 +03:00
parent 6ef341193f
commit 7698ea3f86
2 changed files with 27 additions and 26 deletions

View File

@ -333,10 +333,6 @@ func (d *Downsampling) Sum(fields ...Aggregation) (telegraf.Metric, error) {
sums = make(map[string]interface{}) sums = make(map[string]interface{})
) )
for _, field := range fields {
sums[field.Alias] = 0
}
d.RLock() d.RLock()
for _, metric := range d.Metrics { for _, metric := range d.Metrics {
for _, field := range fields { for _, field := range fields {
@ -344,19 +340,24 @@ func (d *Downsampling) Sum(fields ...Aggregation) (telegraf.Metric, error) {
if !ok { if !ok {
continue continue
} }
oldVal := sums[field.Alias]
oldVal, ok := sums[field.Alias]
if !ok {
sums[field.Alias] = value
continue
}
switch value := value.(type) { switch value := value.(type) {
case int: case int:
sums[field.Alias] = oldVal.(int) + value
case int32:
sums[field.Alias] = oldVal.(int32) + value
case int64:
// TODO fix this
sums[field.Alias] = oldVal.(int) + int(value) sums[field.Alias] = oldVal.(int) + int(value)
case int32:
sums[field.Alias] = oldVal.(int32) + int32(value)
case int64:
sums[field.Alias] = oldVal.(int64) + int64(value)
case float32: case float32:
sums[field.Alias] = oldVal.(float32) + value sums[field.Alias] = oldVal.(float32) + float32(value)
case float64: case float64:
sums[field.Alias] = oldVal.(float64) + value sums[field.Alias] = oldVal.(float64) + float64(value)
default: default:
continue continue
} }
@ -381,11 +382,6 @@ func (d *Downsampling) Mean(fields ...Aggregation) (telegraf.Metric, error) {
size = len(d.Metrics) size = len(d.Metrics)
) )
// initialize sums map
for _, field := range fields {
sums[field.Alias] = 0
}
d.RLock() d.RLock()
for _, metric := range d.Metrics { for _, metric := range d.Metrics {
for _, field := range fields { for _, field := range fields {
@ -393,19 +389,24 @@ func (d *Downsampling) Mean(fields ...Aggregation) (telegraf.Metric, error) {
if !ok { if !ok {
continue continue
} }
oldVal := sums[field.Alias]
oldVal, ok := sums[field.Alias]
if !ok {
sums[field.Alias] = value
continue
}
switch value := value.(type) { switch value := value.(type) {
case int: case int:
sums[field.Alias] = oldVal.(int) + value
case int32:
sums[field.Alias] = oldVal.(int32) + value
case int64:
// TODO: fix this
sums[field.Alias] = oldVal.(int) + int(value) sums[field.Alias] = oldVal.(int) + int(value)
case int32:
sums[field.Alias] = oldVal.(int32) + int32(value)
case int64:
sums[field.Alias] = oldVal.(int64) + int64(value)
case float32: case float32:
sums[field.Alias] = oldVal.(float32) + value sums[field.Alias] = oldVal.(float32) + float32(value)
case float64: case float64:
sums[field.Alias] = oldVal.(float64) + value sums[field.Alias] = oldVal.(float64) + float64(value)
default: default:
continue continue
} }

View File

@ -63,7 +63,7 @@ func TestDownsampling_mean(t *testing.T) {
require.Equal(t, int64(100), aggr.Fields()["mean_value"]) require.Equal(t, int64(100), aggr.Fields()["mean_value"])
} }
func TestDownsamling_sum(t *testing.T) { func TestDownsampling_sum(t *testing.T) {
ds := &Downsampling{} ds := &Downsampling{}
err := ds.Add(testutil.TestMetric(120)) err := ds.Add(testutil.TestMetric(120))