Fix ints being capped at 32-bits on 32-bit archs (#4054)

(cherry picked from commit fe4d3cd117)
This commit is contained in:
Daniel Nelson 2018-04-20 14:56:28 -07:00 committed by Daniel Nelson
parent 291a8f0252
commit 460a5ced87
No known key found for this signature in database
GPG Key ID: CAAD59C9444F6155
3 changed files with 18 additions and 4 deletions

View File

@ -282,7 +282,7 @@ var ptests = []struct {
"cpu",
map[string]string{},
map[string]interface{}{
"value": 9223372036854775807,
"value": int64(9223372036854775807),
},
time.Unix(42, 0),
),

View File

@ -12,7 +12,7 @@ import (
"github.com/influxdata/telegraf"
)
const MaxInt = int(^uint(0) >> 1)
const MaxInt64 = int64(^uint64(0) >> 1)
type FieldSortOrder int
@ -270,10 +270,10 @@ func (s *Serializer) appendFieldValue(buf []byte, value interface{}) ([]byte, er
if s.fieldTypeSupport&UintSupport != 0 {
return appendUintField(buf, v), nil
} else {
if v <= uint64(MaxInt) {
if v <= uint64(MaxInt64) {
return appendIntField(buf, int64(v)), nil
} else {
return appendIntField(buf, int64(MaxInt)), nil
return appendIntField(buf, int64(MaxInt64)), nil
}
}
case int64:

View File

@ -129,6 +129,20 @@ var tests = []struct {
),
output: []byte("cpu value=42i 0\n"),
},
{
name: "integer field 64-bit",
input: MustMetric(
metric.New(
"cpu",
map[string]string{},
map[string]interface{}{
"value": int64(123456789012345),
},
time.Unix(0, 0),
),
),
output: []byte("cpu value=123456789012345i 0\n"),
},
{
name: "uint field",
input: MustMetric(