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

Commit

Permalink
Better test coverage
Browse files Browse the repository at this point in the history
  • Loading branch information
xichen2020 committed May 4, 2017
1 parent 86565e6 commit 83219f2
Show file tree
Hide file tree
Showing 7 changed files with 691 additions and 142 deletions.
133 changes: 133 additions & 0 deletions policy/policy_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -62,3 +62,136 @@ func TestStagedPoliciesHasCustomPolicies(t *testing.T) {
require.False(t, sp.hasDefaultPolicies())
require.Equal(t, policies, sp.Policies())
}

func TestStagedPoliciesSamePoliciesDefaultPolicies(t *testing.T) {
inputs := []struct {
sp [2]StagedPolicies
expected bool
}{
{
sp: [2]StagedPolicies{
NewStagedPolicies(0, false, nil),
NewStagedPolicies(0, true, []Policy{}),
},
expected: true,
},
{
sp: [2]StagedPolicies{
NewStagedPolicies(0, false, nil),
NewStagedPolicies(0, true, []Policy{
NewPolicy(10*time.Second, xtime.Second, 6*time.Hour),
NewPolicy(time.Minute, xtime.Minute, 12*time.Hour),
}),
},
expected: false,
},
{
sp: [2]StagedPolicies{
NewStagedPolicies(1000, false, []Policy{
NewPolicy(10*time.Second, xtime.Second, 6*time.Hour),
NewPolicy(time.Minute, xtime.Minute, 12*time.Hour),
}),
NewStagedPolicies(0, true, []Policy{
NewPolicy(10*time.Second, xtime.Second, 6*time.Hour),
NewPolicy(time.Minute, xtime.Minute, 12*time.Hour),
}),
},
expected: true,
},
{
sp: [2]StagedPolicies{
NewStagedPolicies(1000, false, []Policy{
NewPolicy(10*time.Second, xtime.Second, 6*time.Hour),
NewPolicy(time.Minute, xtime.Minute, 12*time.Hour),
}),
NewStagedPolicies(0, true, []Policy{
NewPolicy(10*time.Second, xtime.Second, 6*time.Hour),
NewPolicy(time.Minute, xtime.Minute, 12*time.Hour),
NewPolicy(10*time.Minute, xtime.Minute, 24*time.Hour),
}),
},
expected: false,
},
{
sp: [2]StagedPolicies{
NewStagedPolicies(0, true, []Policy{
NewPolicy(10*time.Second, xtime.Second, 6*time.Hour),
NewPolicy(time.Minute, xtime.Minute, 12*time.Hour),
NewPolicy(10*time.Minute, xtime.Minute, 24*time.Hour),
}),
NewStagedPolicies(1000, false, []Policy{
NewPolicy(10*time.Second, xtime.Second, 6*time.Hour),
NewPolicy(time.Minute, xtime.Minute, 12*time.Hour),
}),
},
expected: false,
},
}
for _, input := range inputs {
require.Equal(t, input.expected, input.sp[0].SamePolicies(input.sp[1]))
}
}

func TestStagedPoliciesIsEmpty(t *testing.T) {
inputs := []struct {
sp StagedPolicies
expected bool
}{
{
sp: NewStagedPolicies(0, false, nil),
expected: true,
},
{
sp: NewStagedPolicies(0, false, []Policy{}),
expected: true,
},
{
sp: NewStagedPolicies(100, false, nil),
expected: false,
},
{
sp: NewStagedPolicies(0, true, nil),
expected: false,
},
{
sp: NewStagedPolicies(0, true, []Policy{
NewPolicy(10*time.Second, xtime.Second, 6*time.Hour),
NewPolicy(time.Minute, xtime.Minute, 12*time.Hour),
}),
expected: false,
},
}
for _, input := range inputs {
require.Equal(t, input.expected, input.sp.isEmpty())
}
}

func TestPoliciesListIsDefault(t *testing.T) {
inputs := []struct {
pl PoliciesList
expected bool
}{
{
pl: DefaultPoliciesList,
expected: true,
},
{
pl: []StagedPolicies{},
expected: false,
},
{
pl: []StagedPolicies{NewStagedPolicies(0, true, []Policy{
NewPolicy(10*time.Second, xtime.Second, 6*time.Hour),
NewPolicy(time.Minute, xtime.Minute, 12*time.Hour),
})},
expected: false,
},
{
pl: []StagedPolicies{EmptyStagedPolicies, EmptyStagedPolicies},
expected: false,
},
}
for _, input := range inputs {
require.Equal(t, input.expected, input.pl.IsDefault())
}
}
51 changes: 31 additions & 20 deletions protocol/msgpack/unaggregated_encoder_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -40,55 +40,66 @@ var (
errTestArrayLen = errors.New("test array len error")
)

func TestUnaggregatedEncodeCounterWithDefaultPolicies(t *testing.T) {
policies := testDefaultStagedPolicies
func TestUnaggregatedEncodeCounterWithDefaultPoliciesList(t *testing.T) {
policies := testDefaultStagedPoliciesList
encoder, results := testCapturingUnaggregatedEncoder(t)
require.NoError(t, testUnaggregatedEncode(t, encoder, testCounter, policies))
expected := expectedResultsForUnaggregatedMetricWithPolicies(t, testCounter, policies)
expected := expectedResultsForUnaggregatedMetricWithPoliciesList(t, testCounter, policies)
require.Equal(t, expected, *results)
}

func TestUnaggregatedEncodeBatchTimerWithDefaultPolicies(t *testing.T) {
policies := testDefaultStagedPolicies
func TestUnaggregatedEncodeBatchTimerWithDefaultPoliciesList(t *testing.T) {
policies := testDefaultStagedPoliciesList
encoder, results := testCapturingUnaggregatedEncoder(t)
require.NoError(t, testUnaggregatedEncode(t, encoder, testBatchTimer, policies))
expected := expectedResultsForUnaggregatedMetricWithPolicies(t, testBatchTimer, policies)
expected := expectedResultsForUnaggregatedMetricWithPoliciesList(t, testBatchTimer, policies)
require.Equal(t, expected, *results)
}

func TestUnaggregatedEncodeGaugeWithDefaultPolicies(t *testing.T) {
policies := testDefaultStagedPolicies
func TestUnaggregatedEncodeGaugeWithDefaultPoliciesList(t *testing.T) {
policies := testDefaultStagedPoliciesList
encoder, results := testCapturingUnaggregatedEncoder(t)
require.NoError(t, testUnaggregatedEncode(t, encoder, testGauge, policies))
expected := expectedResultsForUnaggregatedMetricWithPolicies(t, testGauge, policies)
expected := expectedResultsForUnaggregatedMetricWithPoliciesList(t, testGauge, policies)
require.Equal(t, expected, *results)
}

func TestUnaggregatedEncodeAllTypesWithDefaultPolicies(t *testing.T) {
func TestUnaggregatedEncodeAllTypesWithDefaultPoliciesList(t *testing.T) {
var expected []interface{}
encoder, results := testCapturingUnaggregatedEncoder(t)
for _, input := range testInputWithAllTypesAndDefaultPolicies {
for _, input := range testInputWithAllTypesAndDefaultPoliciesList {
require.NoError(t, testUnaggregatedEncode(t, encoder, input.metric, input.policiesList))
expected = append(expected, expectedResultsForUnaggregatedMetricWithPolicies(t, input.metric, input.policiesList)...)
expected = append(expected, expectedResultsForUnaggregatedMetricWithPoliciesList(t, input.metric, input.policiesList)...)
}

require.Equal(t, expected, *results)
}

func TestUnaggregatedEncodeAllTypesWithSingleCustomPolicies(t *testing.T) {
func TestUnaggregatedEncodeAllTypesWithSingleCustomPoliciesList(t *testing.T) {
var expected []interface{}
encoder, results := testCapturingUnaggregatedEncoder(t)
for _, input := range testInputWithAllTypesAndSingleCustomPolicies {
for _, input := range testInputWithAllTypesAndSingleCustomPoliciesList {
require.NoError(t, testUnaggregatedEncode(t, encoder, input.metric, input.policiesList))
expected = append(expected, expectedResultsForUnaggregatedMetricWithPolicies(t, input.metric, input.policiesList)...)
expected = append(expected, expectedResultsForUnaggregatedMetricWithPoliciesList(t, input.metric, input.policiesList)...)
}

require.Equal(t, expected, *results)
}

func TestUnaggregatedEncodeAllTypesWithMultiCustomPolicies(t *testing.T) {
var expected []interface{}
encoder, results := testCapturingUnaggregatedEncoder(t)
for _, input := range testInputWithAllTypesAndMultiCustomPoliciesList {
require.NoError(t, testUnaggregatedEncode(t, encoder, input.metric, input.policiesList))
expected = append(expected, expectedResultsForUnaggregatedMetricWithPoliciesList(t, input.metric, input.policiesList)...)
}

require.Equal(t, expected, *results)
}

func TestUnaggregatedEncodeVarintError(t *testing.T) {
counter := testCounter
policies := testDefaultStagedPolicies
policies := testDefaultStagedPoliciesList

// Intentionally return an error when encoding varint.
encoder := testUnaggregatedEncoder(t).(*unaggregatedEncoder)
Expand All @@ -106,7 +117,7 @@ func TestUnaggregatedEncodeVarintError(t *testing.T) {

func TestUnaggregatedEncodeFloat64Error(t *testing.T) {
gauge := testGauge
policies := testDefaultStagedPolicies
policies := testDefaultStagedPoliciesList

// Intentionally return an error when encoding float64.
encoder := testUnaggregatedEncoder(t).(*unaggregatedEncoder)
Expand All @@ -124,7 +135,7 @@ func TestUnaggregatedEncodeFloat64Error(t *testing.T) {

func TestUnaggregatedEncodeBytesError(t *testing.T) {
timer := testBatchTimer
policies := testDefaultStagedPolicies
policies := testDefaultStagedPoliciesList

// Intentionally return an error when encoding array length.
encoder := testUnaggregatedEncoder(t).(*unaggregatedEncoder)
Expand Down Expand Up @@ -168,7 +179,7 @@ func TestUnaggregatedEncodeArrayLenError(t *testing.T) {

func TestUnaggregatedEncoderReset(t *testing.T) {
metric := testCounter
policies := testDefaultStagedPolicies
policies := testDefaultStagedPoliciesList

encoder := testUnaggregatedEncoder(t).(*unaggregatedEncoder)
baseEncoder := encoder.encoderBase.(*baseEncoder)
Expand Down Expand Up @@ -254,7 +265,7 @@ func expectedResultsForPoliciesList(t *testing.T, pl policy.PoliciesList) []inte
return results
}

func expectedResultsForUnaggregatedMetricWithPolicies(
func expectedResultsForUnaggregatedMetricWithPoliciesList(
t *testing.T,
m unaggregated.MetricUnion,
pl policy.PoliciesList,
Expand Down
Loading

0 comments on commit 83219f2

Please sign in to comment.