Skip to content
This repository has been archived by the owner on Oct 17, 2018. It is now read-only.

Commit

Permalink
Nil out encoder errors in reset()
Browse files Browse the repository at this point in the history
  • Loading branch information
xichen2020 committed Jan 3, 2017
1 parent 937189e commit 598112c
Show file tree
Hide file tree
Showing 3 changed files with 28 additions and 1 deletion.
10 changes: 10 additions & 0 deletions protocol/msgpack/aggregated_encoder_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -105,3 +105,13 @@ func TestAggregatedEncodeError(t *testing.T) {
// Assert re-encoding doesn't change the error
require.Equal(t, errTestVarint, testAggregatedEncode(t, encoder, testMetric, testPolicy))
}

func TestAggregatedEncoderReset(t *testing.T) {
encoder := testAggregatedEncoder(t).(*aggregatedEncoder)
baseEncoder := encoder.encoderBase.(*baseEncoder)
baseEncoder.encodeErr = errTestVarint
require.Equal(t, errTestVarint, testAggregatedEncode(t, encoder, testMetric, testPolicy))

encoder.Reset(newBufferedEncoder())
require.NoError(t, testAggregatedEncode(t, encoder, testMetric, testPolicy))
}
6 changes: 5 additions & 1 deletion protocol/msgpack/base_encoder.go
Original file line number Diff line number Diff line change
Expand Up @@ -61,7 +61,6 @@ func newBaseEncoder(encoder BufferedEncoder) encoderBase {

func (enc *baseEncoder) encoder() BufferedEncoder { return enc.bufEncoder }
func (enc *baseEncoder) err() error { return enc.encodeErr }
func (enc *baseEncoder) reset(encoder BufferedEncoder) { enc.bufEncoder = encoder }
func (enc *baseEncoder) resetData() { enc.bufEncoder.Reset() }
func (enc *baseEncoder) encodePolicy(p policy.Policy) { enc.encodePolicyFn(p) }
func (enc *baseEncoder) encodeVersion(version int) { enc.encodeVarint(int64(version)) }
Expand All @@ -74,6 +73,11 @@ func (enc *baseEncoder) encodeFloat64(value float64) { enc.encodeFloat64
func (enc *baseEncoder) encodeBytes(value []byte) { enc.encodeBytesFn(value) }
func (enc *baseEncoder) encodeArrayLen(value int) { enc.encodeArrayLenFn(value) }

func (enc *baseEncoder) reset(encoder BufferedEncoder) {
enc.bufEncoder = encoder
enc.encodeErr = nil
}

func (enc *baseEncoder) encodePolicyInternal(p policy.Policy) {
enc.encodeNumObjectFields(numFieldsForType(policyType))
enc.encodeResolution(p.Resolution)
Expand Down
13 changes: 13 additions & 0 deletions protocol/msgpack/unaggregated_encoder_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -268,3 +268,16 @@ func TestUnaggregatedEncodeArrayLenError(t *testing.T) {
// Assert re-encoding doesn't change the error
require.Equal(t, errTestArrayLen, testUnaggregatedEncode(t, encoder, gauge, policies))
}

func TestUnaggregatedEncoderReset(t *testing.T) {
metric := testCounter
policies := policy.DefaultVersionedPolicies

encoder := testUnaggregatedEncoder(t).(*unaggregatedEncoder)
baseEncoder := encoder.encoderBase.(*baseEncoder)
baseEncoder.encodeErr = errTestVarint
require.Equal(t, errTestVarint, testUnaggregatedEncode(t, encoder, metric, policies))

encoder.Reset(newBufferedEncoder())
require.NoError(t, testUnaggregatedEncode(t, encoder, metric, policies))
}

0 comments on commit 598112c

Please sign in to comment.