Skip to content

Commit

Permalink
improve test coverage
Browse files Browse the repository at this point in the history
  • Loading branch information
huyan0 committed Aug 12, 2020
1 parent e6c5533 commit f0ab533
Show file tree
Hide file tree
Showing 6 changed files with 39 additions and 12 deletions.
3 changes: 2 additions & 1 deletion exporter/prometheusremotewriteexporter/exporter.go
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,7 @@ type prwExporter struct {

// newPrwExporter initializes a new prwExporter instance and sets fields accordingly.
// client parameter cannot be nil.
func newPrwExporter(namespace string, endpoint string, client *http.Client) (*prwExporter, error) {
func newPrwExporter(namespace string, endpoint string, client *http.Client, headers map[string]string) (*prwExporter, error) {

if client == nil {
return nil, errors.Errorf("http client cannot be nil")
Expand All @@ -65,6 +65,7 @@ func newPrwExporter(namespace string, endpoint string, client *http.Client) (*pr
namespace: namespace,
endpointURL: endpointURL,
client: client,
headers: headers,
wg: new(sync.WaitGroup),
closeChan: make(chan struct{}),
}, nil
Expand Down
6 changes: 3 additions & 3 deletions exporter/prometheusremotewriteexporter/exporter_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -356,7 +356,7 @@ func Test_newPrwExporter(t *testing.T) {

for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
prwe, err := newPrwExporter(tt.namespace, tt.endpoint, tt.client)
prwe, err := newPrwExporter(tt.namespace, tt.endpoint, tt.client, testHeaders)
if tt.returnError {
assert.Error(t, err)
return
Expand Down Expand Up @@ -493,7 +493,7 @@ func runExportPipeline(t *testing.T, ts *prompb.TimeSeries, endpoint *url.URL) e

HTTPClient := http.DefaultClient
//after this, instantiate a CortexExporter with the current HTTP client and endpoint set to passed in endpoint
prwe, err := newPrwExporter("test", endpoint.String(), HTTPClient)
prwe, err := newPrwExporter("test", endpoint.String(), HTTPClient, testHeaders)
if err != nil {
return err
}
Expand Down Expand Up @@ -722,7 +722,7 @@ func Test_pushMetrics(t *testing.T) {
// c, err := config.HTTPClientSettings.ToClient()
// assert.Nil(t, err)
c := http.DefaultClient
prwe, nErr := newPrwExporter(config.Namespace, serverURL.String(), c)
prwe, nErr := newPrwExporter(config.Namespace, serverURL.String(), c, testHeaders)
require.NoError(t, nErr)
numDroppedTimeSeries, err := prwe.pushMetrics(context.Background(), *tt.md)
assert.Equal(t, tt.numDroppedTimeSeries, numDroppedTimeSeries)
Expand Down
9 changes: 7 additions & 2 deletions exporter/prometheusremotewriteexporter/factory.go
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,8 @@ package prometheusremotewriteexporter
import (
"context"

"github.com/pkg/errors"

"go.opentelemetry.io/collector/component"
"go.opentelemetry.io/collector/config/confighttp"
"go.opentelemetry.io/collector/config/configmodels"
Expand All @@ -39,15 +41,18 @@ func NewFactory() component.ExporterFactory {
func createMetricsExporter(_ context.Context, _ component.ExporterCreateParams,
cfg configmodels.Exporter) (component.MetricsExporter, error) {

cCfg := cfg.(*Config)
cCfg, ok := cfg.(*Config)
if !ok {
return nil, errors.Errorf("invalid configuration")
}

client, err := cCfg.HTTPClientSettings.ToClient()

if err != nil {
return nil, err
}

prwe, err := newPrwExporter(cCfg.Namespace, cCfg.HTTPClientSettings.Endpoint, client)
prwe, err := newPrwExporter(cCfg.Namespace, cCfg.HTTPClientSettings.Endpoint, client, cCfg.Headers)

if err != nil {
return nil, err
Expand Down
23 changes: 18 additions & 5 deletions exporter/prometheusremotewriteexporter/factory_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@ package prometheusremotewriteexporter

import (
"context"
"go.opentelemetry.io/collector/config/confighttp"
"testing"

"github.com/stretchr/testify/assert"
Expand All @@ -27,31 +28,43 @@ import (

//Tests whether or not the default Exporter factory can instantiate a properly interfaced Exporter with default conditions
func TestCreateDefaultConfig(t *testing.T) {
factory := NewFactory()
cfg := factory.CreateDefaultConfig()
cfg := createDefaultConfig()
assert.NotNil(t, cfg, "failed to create default config")
assert.NoError(t, configcheck.ValidateConfig(cfg))
}

//Tests whether or not a correct Metrics Exporter from the default Config parameters
func TestCreateMetricsExporter(t *testing.T) {
factory := NewFactory()

invalidConfig := createDefaultConfig().(*Config)
invalidConfig.HTTPClientSettings = confighttp.HTTPClientSettings{}

tests := []struct {
name string
cfg configmodels.Exporter
params component.ExporterCreateParams
returnError bool
}{
{"success_case",
factory.CreateDefaultConfig(),
createDefaultConfig(),
component.ExporterCreateParams{},
false,
},
{"fail_case",
nil,
component.ExporterCreateParams{},
true,
},
{"invalid_config_case",
invalidConfig,
component.ExporterCreateParams{},
true,
},
}
// run tests
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
_, err := factory.CreateMetricsExporter(context.Background(), tt.params, tt.cfg)
_, err := createMetricsExporter(context.Background(), tt.params, tt.cfg)
if tt.returnError {
assert.Error(t, err)
return
Expand Down
8 changes: 7 additions & 1 deletion exporter/prometheusremotewriteexporter/helper_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -205,11 +205,17 @@ func Test_createLabelSet(t *testing.T) {
getPromLabels(label11+"_", value11, "key_"+label12, value12, label31+"_", value31, label32, value32),
},
{
"no_extras_case",
"no_original_case",
nil,
[]string{label31, value31, label32, value32},
getPromLabels(label31, value31, label32, value32),
},
{
"empty_extra_case",
lbs1,
[]string{"", ""},
getPromLabels(label11, value11, label12, value12, "", ""),
},
{
"single_left_over_case",
lbs1,
Expand Down
2 changes: 2 additions & 0 deletions exporter/prometheusremotewriteexporter/testutil_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,8 @@ var (
time1 = uint64(time.Now().UnixNano())
time2 = uint64(time.Date(1970, 1, 0, 0, 0, 0, 0, time.UTC).UnixNano())

testHeaders = map[string]string{"headerOne": "value1"}

typeInt64 = "INT64"
typeMonotonicInt64 = "MONOTONIC_INT64"
typeMonotonicDouble = "MONOTONIC_DOUBLE"
Expand Down

0 comments on commit f0ab533

Please sign in to comment.