diff --git a/elasticsearch_benchmark_test.go b/elasticsearch_benchmark_test.go index 24239fd79b..be275f4a7b 100644 --- a/elasticsearch_benchmark_test.go +++ b/elasticsearch_benchmark_test.go @@ -22,8 +22,6 @@ package elasticsearch_test import ( "context" - "github.com/elastic/go-elasticsearch/v9/typedapi/esdsl" - "github.com/elastic/go-elasticsearch/v9/typedapi/types" "io/ioutil" "net/http" "strconv" @@ -32,6 +30,8 @@ import ( "github.com/elastic/go-elasticsearch/v9" "github.com/elastic/go-elasticsearch/v9/esapi" + "github.com/elastic/go-elasticsearch/v9/typedapi/esdsl" + "github.com/elastic/go-elasticsearch/v9/typedapi/types" ) var defaultResponse = http.Response{ @@ -252,7 +252,7 @@ func (m mockTransp) RoundTrip(request *http.Request) (*http.Response, error) { func BenchmarkAllocsSearch(t *testing.B) { t.Run("struct search", func(b *testing.B) { - c, _ := elasticsearch.NewTypedClient(elasticsearch.Config{ + c, err := elasticsearch.NewTypedClient(elasticsearch.Config{ Transport: &mockTransp{ RoundTripFunc: func(request *http.Request) (*http.Response, error) { return &http.Response{ @@ -265,6 +265,10 @@ func BenchmarkAllocsSearch(t *testing.B) { }, }) + if err != nil { + b.Fatalf("Unexpected error when creating a client: %s", err) + } + for i := 0; i < b.N; i++ { s := c.Search() s.Index("foo") @@ -276,7 +280,7 @@ func BenchmarkAllocsSearch(t *testing.B) { }) t.Run("esdsl search", func(b *testing.B) { - c, _ := elasticsearch.NewTypedClient(elasticsearch.Config{ + c, err := elasticsearch.NewTypedClient(elasticsearch.Config{ Transport: &mockTransp{ RoundTripFunc: func(request *http.Request) (*http.Response, error) { return &http.Response{ @@ -289,6 +293,10 @@ func BenchmarkAllocsSearch(t *testing.B) { }, }) + if err != nil { + b.Fatalf("Unexpected error when creating a client: %s", err) + } + for i := 0; i < b.N; i++ { s := c.Search() s.Index("foo") diff --git a/elasticsearch_internal_test.go b/elasticsearch_internal_test.go index 3b23b353d3..c476fd21d0 100644 --- a/elasticsearch_internal_test.go +++ b/elasticsearch_internal_test.go @@ -27,8 +27,6 @@ import ( "crypto/x509" "encoding/base64" "errors" - "github.com/elastic/go-elasticsearch/v9/esapi" - "github.com/elastic/go-elasticsearch/v9/typedapi/types" "io" "io/ioutil" "net/http" @@ -42,6 +40,8 @@ import ( "testing" "github.com/elastic/elastic-transport-go/v8/elastictransport" + "github.com/elastic/go-elasticsearch/v9/esapi" + "github.com/elastic/go-elasticsearch/v9/typedapi/types" ) var metaHeaderReValidation = regexp.MustCompile(`^[a-z]{1,}=[a-z0-9\.\-]{1,}(?:,[a-z]{1,}=[a-z0-9\.\-]+)*$`) @@ -160,7 +160,10 @@ func TestClientConfiguration(t *testing.T) { if err == nil { t.Fatalf("Expected error, got: %v", err) } - match, _ := regexp.MatchString("both .* are set", err.Error()) + match, err := regexp.MatchString("both .* are set", err.Error()) + if err != nil { + t.Fatalf("Unexpected error: %s", err) + } if !match { t.Errorf("Expected error when addresses from environment and configuration are used together, got: %v", err) } @@ -290,7 +293,10 @@ func TestAddrsToURLs(t *testing.T) { if err == nil { t.Errorf("Expected error, got: %v", err) } - match, _ := regexp.MatchString(tc.err.Error(), err.Error()) + match, err := regexp.MatchString(tc.err.Error(), err.Error()) + if err != nil { + t.Fatalf("Unexpected error: %s", err) + } if !match { t.Errorf("Expected err [%s] to match: %s", err.Error(), tc.err.Error()) } @@ -357,7 +363,10 @@ func TestCloudID(t *testing.T) { if err == nil { t.Errorf("Expected error for input %q, got %v", input, err) } - match, _ := regexp.MatchString("unexpected format", err.Error()) + match, err := regexp.MatchString("unexpected format", err.Error()) + if err != nil { + t.Fatalf("Unexpected error: %s", err) + } if !match { t.Errorf("Unexpected error string: %s", err) } @@ -369,7 +378,10 @@ func TestCloudID(t *testing.T) { if err == nil { t.Errorf("Expected error for input %q, got %v", input, err) } - match, _ := regexp.MatchString("illegal base64 data", err.Error()) + match, err := regexp.MatchString("illegal base64 data", err.Error()) + if err != nil { + t.Fatalf("Unexpected error: %s", err) + } if !match { t.Errorf("Unexpected error string: %s", err) } @@ -383,7 +395,10 @@ func TestVersion(t *testing.T) { } func TestClientMetrics(t *testing.T) { - c, _ := NewClient(Config{EnableMetrics: true}) + c, err := NewClient(Config{EnableMetrics: true}) + if err != nil { + t.Fatalf("Unexpected error: %s", err) + } m, err := c.Metrics() if err != nil { @@ -480,12 +495,15 @@ func TestResponseCheckOnly(t *testing.T) { for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { - c, _ := NewClient(Config{ + c, err := NewClient(Config{ Transport: &mockTransp{RoundTripFunc: func(request *http.Request) (*http.Response, error) { return tt.response, tt.requestErr }}, }) - _, err := c.Cat.Indices() + if err != nil { + t.Fatalf("Unexpected error: %s", err) + } + _, err = c.Cat.Indices() if (err != nil) != tt.wantErr { t.Errorf("Unexpected error, got %v, wantErr %v", err, tt.wantErr) } @@ -509,7 +527,10 @@ func TestProductCheckError(t *testing.T) { })) defer server.Close() - c, _ := NewClient(Config{Addresses: []string{server.URL}, DisableRetry: true}) + c, err := NewClient(Config{Addresses: []string{server.URL}, DisableRetry: true}) + if err != nil { + t.Fatalf("Unexpected error: %s", err) + } if _, err := c.Cat.Indices(); err != nil { t.Fatalf("unexpected error: %s", err) } @@ -617,7 +638,10 @@ oftUHvkHS0Vv/LicMEOufFGslb4T9aPJ7oyhoSlz9CfAutDWk/q/ } defer res.Body.Close() - data, _ := ioutil.ReadAll(res.Body) + data, err := ioutil.ReadAll(res.Body) + if err != nil { + t.Fatalf("Unexpected error: %s", err) + } if !bytes.Equal(data, body) { t.Fatalf("unexpected payload returned: expected: %s, got: %s", body, data) } @@ -678,7 +702,7 @@ func TestCompatibilityHeader(t *testing.T) { t.Run(test.name, func(t *testing.T) { t.Setenv(esCompatHeader, strconv.FormatBool(test.compatibilityHeader)) - c, _ := NewClient(Config{ + c, err := NewClient(Config{ EnableCompatibilityMode: test.configVar, Addresses: []string{}, Transport: &mockTransp{ @@ -708,6 +732,10 @@ func TestCompatibilityHeader(t *testing.T) { }, }) + if err != nil { + t.Fatalf("Unexpected error: %s", err) + } + req := &http.Request{URL: &url.URL{}, Header: make(http.Header)} if test.bodyPresent { req.Body = ioutil.NopCloser(strings.NewReader("{}")) @@ -779,7 +807,7 @@ func TestBuildStrippedVersion(t *testing.T) { func TestMetaHeader(t *testing.T) { t.Run("MetaHeader with elastictransport", func(t *testing.T) { - tp, _ := elastictransport.New(elastictransport.Config{ + tp, err := elastictransport.New(elastictransport.Config{ URLs: []*url.URL{{Scheme: "http", Host: "foo"}}, Transport: &mockTransp{ RoundTripFunc: func(request *http.Request) (*http.Response, error) { @@ -797,15 +825,24 @@ func TestMetaHeader(t *testing.T) { }, }, }) + if err != nil { + t.Fatalf("Unexpected error: %s", err) + } - c, _ := NewDefaultClient() + c, err := NewDefaultClient() + if err != nil { + t.Fatalf("Unexpected error: %s", err) + } c.Transport = tp - _, _ = c.Info() + _, err = c.Info() + if err != nil { + t.Fatalf("Unexpected error: %s", err) + } }) t.Run("Metaheader with typedclient", func(t *testing.T) { - tp, _ := elastictransport.New(elastictransport.Config{ + tp, err := elastictransport.New(elastictransport.Config{ URLs: []*url.URL{{Scheme: "http", Host: "foo"}}, Transport: &mockTransp{ RoundTripFunc: func(request *http.Request) (*http.Response, error) { @@ -826,8 +863,14 @@ func TestMetaHeader(t *testing.T) { }, }, }) + if err != nil { + t.Fatalf("Unexpected error: %s", err) + } - c, _ := NewTypedClient(Config{}) + c, err := NewTypedClient(Config{}) + if err != nil { + t.Fatalf("Unexpected error: %s", err) + } c.Transport = tp _, _ = c.Info().Do(nil) @@ -835,7 +878,7 @@ func TestMetaHeader(t *testing.T) { } func TestNewTypedClient(t *testing.T) { - tp, _ := elastictransport.New(elastictransport.Config{ + tp, err := elastictransport.New(elastictransport.Config{ URLs: []*url.URL{{Scheme: "http", Host: "foo"}}, Transport: &mockTransp{ RoundTripFunc: func(request *http.Request) (*http.Response, error) { @@ -859,8 +902,14 @@ func TestNewTypedClient(t *testing.T) { }, }, }) + if err != nil { + t.Fatalf("Unexpected error: %s", err) + } - c, _ := NewTypedClient(Config{}) + c, err := NewTypedClient(Config{}) + if err != nil { + t.Fatalf("Unexpected error: %s", err) + } c.Transport = tp res, err := c.Info().Do(context.Background()) @@ -882,7 +931,7 @@ func TestContentTypeOverride(t *testing.T) { t.Run("default JSON Content-Type", func(t *testing.T) { contentType := "application/json" - tp, _ := elastictransport.New(elastictransport.Config{ + tp, err := elastictransport.New(elastictransport.Config{ URLs: []*url.URL{{Scheme: "http", Host: "foo"}}, Transport: &mockTransp{ RoundTripFunc: func(request *http.Request) (*http.Response, error) { @@ -900,16 +949,25 @@ func TestContentTypeOverride(t *testing.T) { }, }, }) + if err != nil { + t.Fatalf("Unexpected error: %s", err) + } - c, _ := NewDefaultClient() + c, err := NewDefaultClient() + if err != nil { + t.Fatalf("Unexpected error: %s", err) + } c.Transport = tp - _, _ = c.Search(c.Search.WithBody(strings.NewReader(""))) + _, err = c.Search(c.Search.WithBody(strings.NewReader(""))) + if err != nil { + t.Fatalf("Unexpected error: %s", err) + } }) t.Run("overriden CBOR Content-Type functional options style", func(t *testing.T) { contentType := "application/cbor" - tp, _ := elastictransport.New(elastictransport.Config{ + tp, err := elastictransport.New(elastictransport.Config{ URLs: []*url.URL{{Scheme: "http", Host: "foo"}}, Transport: &mockTransp{ RoundTripFunc: func(request *http.Request) (*http.Response, error) { @@ -927,8 +985,14 @@ func TestContentTypeOverride(t *testing.T) { }, }, }) + if err != nil { + t.Fatalf("Unexpected error: %s", err) + } - c, _ := NewDefaultClient() + c, err := NewDefaultClient() + if err != nil { + t.Fatalf("Unexpected error: %s", err) + } c.Transport = tp _, _ = c.Search( @@ -941,7 +1005,7 @@ func TestContentTypeOverride(t *testing.T) { t.Run("overriden CBOR Content-Type direct call style", func(t *testing.T) { contentType := "application/cbor" - tp, _ := elastictransport.New(elastictransport.Config{ + tp, err := elastictransport.New(elastictransport.Config{ URLs: []*url.URL{{Scheme: "http", Host: "foo"}}, Transport: &mockTransp{ RoundTripFunc: func(request *http.Request) (*http.Response, error) { @@ -959,8 +1023,14 @@ func TestContentTypeOverride(t *testing.T) { }, }, }) + if err != nil { + t.Fatalf("Unexpected error: %s", err) + } - c, _ := NewDefaultClient() + c, err := NewDefaultClient() + if err != nil { + t.Fatalf("Unexpected error: %s", err) + } c.Transport = tp search := esapi.SearchRequest{} @@ -1195,10 +1265,13 @@ func TestInstrumentation(t *testing.T) { instrument.BeforeRequestFunc = test.want.BeforeRequestFunc instrument.AfterRequestFunc = test.want.AfterRequestFunc - es, _ := NewTypedClient(Config{ + es, err := NewTypedClient(Config{ Transport: &mockTransp{RoundTripFunc: test.args.roundTripFunc}, Instrumentation: instrument, }) + if err != nil { + t.Fatalf("Unexpected error: %s", err) + } es.Search(). Index("foo"). Query(&types.Query{ @@ -1232,10 +1305,13 @@ func TestInstrumentation(t *testing.T) { instrument.BeforeRequestFunc = test.want.BeforeRequestFunc instrument.AfterRequestFunc = test.want.AfterRequestFunc - es, _ := NewClient(Config{ + es, err := NewClient(Config{ Transport: &mockTransp{RoundTripFunc: test.args.roundTripFunc}, Instrumentation: instrument, }) + if err != nil { + t.Fatalf("Unexpected error: %s", err) + } es.Search( es.Search.WithIndex("foo"), es.Search.WithBody(strings.NewReader("{\"query\":{\"match_all\":{}}}")), diff --git a/esutil/bulk_indexer_benchmark_test.go b/esutil/bulk_indexer_benchmark_test.go index d020423cf6..e04748041b 100644 --- a/esutil/bulk_indexer_benchmark_test.go +++ b/esutil/bulk_indexer_benchmark_test.go @@ -64,11 +64,17 @@ func BenchmarkBulkIndexer(b *testing.B) { b.Run("Basic", func(b *testing.B) { b.ResetTimer() - es, _ := elasticsearch.NewClient(elasticsearch.Config{Transport: &mockTransp{}}) - bi, _ := esutil.NewBulkIndexer(esutil.BulkIndexerConfig{ + es, err := elasticsearch.NewClient(elasticsearch.Config{Transport: &mockTransp{}}) + if err != nil { + b.Fatalf("Unexpected error: %s", err) + } + bi, err := esutil.NewBulkIndexer(esutil.BulkIndexerConfig{ Client: es, FlushBytes: 1024, }) + if err != nil { + b.Fatalf("Unexpected error: %s", err) + } defer bi.Close(context.Background()) docID := make([]byte, 0, 16) diff --git a/esutil/bulk_indexer_internal_test.go b/esutil/bulk_indexer_internal_test.go index 4db4fa38f1..16c8ccb6eb 100644 --- a/esutil/bulk_indexer_internal_test.go +++ b/esutil/bulk_indexer_internal_test.go @@ -91,7 +91,7 @@ func TestBulkIndexer(t *testing.T) { numItems = 6 ) - es, _ := tt.makeClient(elasticsearch.Config{Transport: &mockTransport{ + es, err := tt.makeClient(elasticsearch.Config{Transport: &mockTransport{ RoundTripFunc: func(*http.Request) (*http.Response, error) { countReqs++ switch countReqs { @@ -102,7 +102,10 @@ func TestBulkIndexer(t *testing.T) { case 3: testfile = "testdata/bulk_response_1c.json" } - bodyContent, _ := ioutil.ReadFile(testfile) + bodyContent, err := ioutil.ReadFile(testfile) + if err != nil { + t.Fatalf("Unexpected error: %s", err) + } return &http.Response{ Body: ioutil.NopCloser(bytes.NewBuffer(bodyContent)), Header: http.Header{"X-Elastic-Product": []string{"Elasticsearch"}}, @@ -110,6 +113,10 @@ func TestBulkIndexer(t *testing.T) { }, }}) + if err != nil { + t.Errorf("Unexpected error: %s", err) + } + cfg := BulkIndexerConfig{ NumWorkers: 1, FlushBytes: 39 * 2, // 38 bytes header + body, times 2 to match 2 responses per file in testdata @@ -119,7 +126,10 @@ func TestBulkIndexer(t *testing.T) { cfg.DebugLogger = log.New(os.Stdout, "", 0) } - bi, _ := NewBulkIndexer(cfg) + bi, err := NewBulkIndexer(cfg) + if err != nil { + t.Fatalf("Unexpected error: %s", err) + } for i := 1; i <= numItems; i++ { wg.Add(1) @@ -187,8 +197,14 @@ func TestBulkIndexer(t *testing.T) { }) t.Run("Add() Timeout", func(t *testing.T) { - es, _ := elasticsearch.NewClient(elasticsearch.Config{Transport: &mockTransport{}}) - bi, _ := NewBulkIndexer(BulkIndexerConfig{NumWorkers: 1, Client: es}) + es, err := elasticsearch.NewClient(elasticsearch.Config{Transport: &mockTransport{}}) + if err != nil { + t.Fatalf("Unexpected error: %s", err) + } + bi, err := NewBulkIndexer(BulkIndexerConfig{NumWorkers: 1, Client: es}) + if err != nil { + t.Fatalf("Unexpected error: %s", err) + } ctx, cancel := context.WithTimeout(context.Background(), time.Nanosecond) defer cancel() time.Sleep(100 * time.Millisecond) @@ -213,12 +229,18 @@ func TestBulkIndexer(t *testing.T) { }) t.Run("Close() Cancel", func(t *testing.T) { - es, _ := elasticsearch.NewClient(elasticsearch.Config{Transport: &mockTransport{}}) - bi, _ := NewBulkIndexer(BulkIndexerConfig{ + es, err := elasticsearch.NewClient(elasticsearch.Config{Transport: &mockTransport{}}) + if err != nil { + t.Fatalf("Unexpected error: %s", err) + } + bi, err := NewBulkIndexer(BulkIndexerConfig{ NumWorkers: 1, FlushBytes: 1, Client: es, }) + if err != nil { + t.Fatalf("Unexpected error: %s", err) + } for i := 0; i < 10; i++ { bi.Add(context.Background(), BulkIndexerItem{Action: "foo"}) @@ -247,7 +269,10 @@ func TestBulkIndexer(t *testing.T) { } } - es, _ := elasticsearch.NewClient(esCfg) + es, err := elasticsearch.NewClient(esCfg) + if err != nil { + t.Fatalf("Unexpected error: %s", err) + } var indexerError error biCfg := BulkIndexerConfig{ @@ -259,9 +284,12 @@ func TestBulkIndexer(t *testing.T) { biCfg.DebugLogger = log.New(os.Stdout, "", 0) } - bi, _ := NewBulkIndexer(biCfg) + bi, err := NewBulkIndexer(biCfg) + if err != nil { + t.Fatalf("Unexpected error: %s", err) + } - if err := bi.Add(context.Background(), BulkIndexerItem{ + if err = bi.Add(context.Background(), BulkIndexerItem{ Action: "foo", }); err != nil { t.Fatalf("Unexpected error: %s", err) @@ -287,7 +315,7 @@ func TestBulkIndexer(t *testing.T) { bodyContent, _ = ioutil.ReadFile("testdata/bulk_response_2.json") ) - es, _ := elasticsearch.NewClient(elasticsearch.Config{Transport: &mockTransport{ + es, err := elasticsearch.NewClient(elasticsearch.Config{Transport: &mockTransport{ RoundTripFunc: func(*http.Request) (*http.Response, error) { return &http.Response{ Body: ioutil.NopCloser(bytes.NewBuffer(bodyContent)), @@ -295,13 +323,19 @@ func TestBulkIndexer(t *testing.T) { }, nil }, }}) + if err != nil { + t.Fatalf("Unexpected error: %s", err) + } cfg := BulkIndexerConfig{NumWorkers: 1, Client: es} if os.Getenv("DEBUG") != "" { cfg.DebugLogger = log.New(os.Stdout, "", 0) } - bi, _ := NewBulkIndexer(cfg) + bi, err := NewBulkIndexer(cfg) + if err != nil { + t.Fatalf("Unexpected error: %s", err) + } successFunc := func(ctx context.Context, item BulkIndexerItem, res BulkIndexerResponseItem) { atomic.AddUint64(&countSuccessful, 1) @@ -417,8 +451,11 @@ func TestBulkIndexer(t *testing.T) { t.Run("OnFlush callbacks", func(t *testing.T) { type contextKey string - es, _ := elasticsearch.NewClient(elasticsearch.Config{Transport: &mockTransport{}}) - bi, _ := NewBulkIndexer(BulkIndexerConfig{ + es, err := elasticsearch.NewClient(elasticsearch.Config{Transport: &mockTransport{}}) + if err != nil { + t.Fatalf("Unexpected error: %s", err) + } + bi, err := NewBulkIndexer(BulkIndexerConfig{ Client: es, Index: "foo", OnFlushStart: func(ctx context.Context) context.Context { @@ -433,8 +470,10 @@ func TestBulkIndexer(t *testing.T) { fmt.Printf(">>> Flush finished (duration: %s)\n", duration) }, }) - - err := bi.Add(context.Background(), BulkIndexerItem{ + if err != nil { + t.Fatalf("Unexpected error: %s", err) + } + err = bi.Add(context.Background(), BulkIndexerItem{ Action: "index", Body: strings.NewReader(`{"title":"foo"}`), }) @@ -454,7 +493,7 @@ func TestBulkIndexer(t *testing.T) { }) t.Run("Automatic flush", func(t *testing.T) { - es, _ := elasticsearch.NewClient(elasticsearch.Config{Transport: &mockTransport{ + es, err := elasticsearch.NewClient(elasticsearch.Config{Transport: &mockTransport{ RoundTripFunc: func(*http.Request) (*http.Response, error) { return &http.Response{ StatusCode: http.StatusOK, @@ -464,6 +503,9 @@ func TestBulkIndexer(t *testing.T) { }, nil }, }}) + if err != nil { + t.Fatalf("Unexpected error: %s", err) + } cfg := BulkIndexerConfig{ NumWorkers: 1, @@ -474,10 +516,16 @@ func TestBulkIndexer(t *testing.T) { cfg.DebugLogger = log.New(os.Stdout, "", 0) } - bi, _ := NewBulkIndexer(cfg) + bi, err := NewBulkIndexer(cfg) + if err != nil { + t.Fatalf("Unexpected error: %s", err) + } - bi.Add(context.Background(), + err = bi.Add(context.Background(), BulkIndexerItem{Action: "index", Body: strings.NewReader(`{"title":"foo"}`)}) + if err != nil { + t.Fatalf("Unexpected error: %s", err) + } // Allow some time for auto-flush to kick in time.Sleep(250 * time.Millisecond) @@ -525,7 +573,10 @@ func TestBulkIndexer(t *testing.T) { Body: ioutil.NopCloser(strings.NewReader(`{"took":1}`)), }, nil } - bodyContent, _ := ioutil.ReadFile("testdata/bulk_response_1c.json") + bodyContent, err := ioutil.ReadFile("testdata/bulk_response_1c.json") + if err != nil { + t.Fatalf("Unexpected error: %s", err) + } return &http.Response{ StatusCode: http.StatusOK, Status: "200 OK", @@ -547,14 +598,20 @@ func TestBulkIndexer(t *testing.T) { if os.Getenv("DEBUG") != "" { esCfg.Logger = &elastictransport.ColorLogger{Output: os.Stdout} } - es, _ := elasticsearch.NewClient(esCfg) + es, err := elasticsearch.NewClient(esCfg) + if err != nil { + t.Fatalf("Unexpected error: %s", err) + } biCfg := BulkIndexerConfig{NumWorkers: 1, FlushBytes: 28 * 2, Client: es} if os.Getenv("DEBUG") != "" { biCfg.DebugLogger = log.New(os.Stdout, "", 0) } - bi, _ := NewBulkIndexer(biCfg) + bi, err := NewBulkIndexer(biCfg) + if err != nil { + t.Fatalf("Unexpected error: %s", err) + } for i := 1; i <= numItems; i++ { wg.Add(1) @@ -597,10 +654,16 @@ func TestBulkIndexer(t *testing.T) { }) t.Run("Custom JSON Decoder", func(t *testing.T) { - es, _ := elasticsearch.NewClient(elasticsearch.Config{Transport: &mockTransport{}}) - bi, _ := NewBulkIndexer(BulkIndexerConfig{Client: es, Decoder: customJSONDecoder{}}) + es, err := elasticsearch.NewClient(elasticsearch.Config{Transport: &mockTransport{}}) + if err != nil { + t.Fatalf("Unexpected error: %s", err) + } + bi, err := NewBulkIndexer(BulkIndexerConfig{Client: es, Decoder: customJSONDecoder{}}) + if err != nil { + t.Fatalf("Unexpected error: %s", err) + } - err := bi.Add(context.Background(), BulkIndexerItem{ + err = bi.Add(context.Background(), BulkIndexerItem{ Action: "index", DocumentID: "1", Body: strings.NewReader(`{"title":"foo"}`), diff --git a/esutil/json_reader_benchmark_test.go b/esutil/json_reader_benchmark_test.go index 86611e6268..bbdbf32689 100644 --- a/esutil/json_reader_benchmark_test.go +++ b/esutil/json_reader_benchmark_test.go @@ -71,7 +71,10 @@ func BenchmarkJSONReader(b *testing.B) { b.ResetTimer() for i := 0; i < b.N; i++ { - out, _ := ioutil.ReadAll(esutil.NewJSONReader(map[string]string{"foo": "bar"})) + out, err := ioutil.ReadAll(esutil.NewJSONReader(map[string]string{"foo": "bar"})) + if err != nil { + b.Fatalf("Unexpected error: %s", err) + } if string(out) != `{"foo":"bar"}`+"\n" { b.Fatalf("Unexpected output: %q", out) } @@ -95,7 +98,10 @@ func BenchmarkJSONReader(b *testing.B) { b.ResetTimer() for i := 0; i < b.N; i++ { - out, _ := ioutil.ReadAll(esutil.NewJSONReader(Foo{Bar: "baz"})) + out, err := ioutil.ReadAll(esutil.NewJSONReader(Foo{Bar: "baz"})) + if err != nil { + b.Fatalf("Unexpected error: %s", err) + } if string(out) != `{"bar":"BAZ"}`+"\n" { b.Fatalf("Unexpected output: %q", out) } diff --git a/esutil/json_reader_internal_test.go b/esutil/json_reader_internal_test.go index 6b3841f0c5..dd9438fed9 100644 --- a/esutil/json_reader_internal_test.go +++ b/esutil/json_reader_internal_test.go @@ -49,14 +49,20 @@ func (f Foo) EncodeJSON(w io.Writer) error { func TestJSONReader(t *testing.T) { t.Run("Default", func(t *testing.T) { - out, _ := ioutil.ReadAll(NewJSONReader(map[string]string{"foo": "bar"})) + out, err := ioutil.ReadAll(NewJSONReader(map[string]string{"foo": "bar"})) + if err != nil { + t.Fatalf("Unexpected error: %s", err) + } if string(out) != `{"foo":"bar"}`+"\n" { t.Fatalf("Unexpected output: %s", out) } }) t.Run("Custom", func(t *testing.T) { - out, _ := ioutil.ReadAll(NewJSONReader(Foo{Bar: "baz"})) + out, err := ioutil.ReadAll(NewJSONReader(Foo{Bar: "baz"})) + if err != nil { + t.Fatalf("Unexpected error: %s", err) + } if string(out) != `{"bar":"BAZ"}`+"\n" { t.Fatalf("Unexpected output: %s", out) } diff --git a/internal/testing/e2e/bulk_indexer_integration_test.go b/internal/testing/e2e/bulk_indexer_integration_test.go index 7e25c384f5..193ca049a6 100644 --- a/internal/testing/e2e/bulk_indexer_integration_test.go +++ b/internal/testing/e2e/bulk_indexer_integration_test.go @@ -90,7 +90,7 @@ func TestBulkIndexerIntegration(t *testing.T) { var countSuccessful uint64 indexName := "test-bulk-integration" - es, _ := elasticsearch.NewClient(elasticsearch.Config{ + es, err := elasticsearch.NewClient(elasticsearch.Config{ Addresses: tcCfg.Addresses, Username: tcCfg.Username, Password: tcCfg.Password, @@ -100,6 +100,9 @@ func TestBulkIndexerIntegration(t *testing.T) { PoolCompressor: tt.PoolCompressor, Logger: &elastictransport.ColorLogger{Output: os.Stdout}, }) + if err != nil { + t.Fatalf("Unexpected error: %s", err) + } es.Indices.Delete([]string{indexName}, es.Indices.Delete.WithIgnoreUnavailable(true)) es.Indices.Create( @@ -107,10 +110,13 @@ func TestBulkIndexerIntegration(t *testing.T) { es.Indices.Create.WithBody(strings.NewReader(`{"settings": {"number_of_shards": 1, "number_of_replicas": 0, "refresh_interval":"5s"}}`)), es.Indices.Create.WithWaitForActiveShards("1")) - bi, _ := esutil.NewBulkIndexer(esutil.BulkIndexerConfig{ + bi, err := esutil.NewBulkIndexer(esutil.BulkIndexerConfig{ Index: indexName, Client: es, }) + if err != nil { + t.Fatalf("Unexpected error: %s", err) + } numItems := 100000 start := time.Now().UTC() @@ -161,7 +167,7 @@ func TestBulkIndexerIntegration(t *testing.T) { }) t.Run("Multiple indices", func(t *testing.T) { - es, _ := elasticsearch.NewClient(elasticsearch.Config{ + es, err := elasticsearch.NewClient(elasticsearch.Config{ Addresses: tcCfg.Addresses, Username: tcCfg.Username, Password: tcCfg.Password, @@ -171,11 +177,17 @@ func TestBulkIndexerIntegration(t *testing.T) { PoolCompressor: tt.PoolCompressor, Logger: &elastictransport.ColorLogger{Output: os.Stdout}, }) + if err != nil { + t.Fatalf("Unexpected error: %s", err) + } - bi, _ := esutil.NewBulkIndexer(esutil.BulkIndexerConfig{ + bi, err := esutil.NewBulkIndexer(esutil.BulkIndexerConfig{ Index: "test-index-a", Client: es, }) + if err != nil { + t.Fatalf("Unexpected error: %s", err) + } // Default index for i := 1; i <= 10; i++ { @@ -235,7 +247,7 @@ func TestBulkIndexerIntegration(t *testing.T) { t.Run("External version", func(t *testing.T) { var index string = "test-index-a" - es, _ := elasticsearch.NewClient(elasticsearch.Config{ + es, err := elasticsearch.NewClient(elasticsearch.Config{ Addresses: tcCfg.Addresses, Username: tcCfg.Username, Password: tcCfg.Password, @@ -245,6 +257,9 @@ func TestBulkIndexerIntegration(t *testing.T) { PoolCompressor: tt.PoolCompressor, Logger: &elastictransport.ColorLogger{Output: os.Stdout}, }) + if err != nil { + t.Fatalf("Unexpected error: %s", err) + } es.Indices.Delete([]string{index}, es.Indices.Delete.WithIgnoreUnavailable(true)) es.Indices.Create(index, es.Indices.Create.WithWaitForActiveShards("1")) @@ -285,16 +300,22 @@ func TestBulkIndexerIntegration(t *testing.T) { } } - bi, _ := esutil.NewBulkIndexer(esutil.BulkIndexerConfig{ + bi, err := esutil.NewBulkIndexer(esutil.BulkIndexerConfig{ Index: index, Client: es, }) + if err != nil { + t.Fatalf("Unexpected error: %s", err) + } bulkIndex(bi, 500) - bi, _ = esutil.NewBulkIndexer(esutil.BulkIndexerConfig{ + bi, err = esutil.NewBulkIndexer(esutil.BulkIndexerConfig{ Index: index, Client: es, }) + if err != nil { + t.Fatalf("Unexpected error: %s", err) + } bulkIndex(bi, 900) }) @@ -302,7 +323,7 @@ func TestBulkIndexerIntegration(t *testing.T) { var index string = "test-index-a" var alias string = "test-alias-a" - es, _ := elasticsearch.NewClient(elasticsearch.Config{ + es, err := elasticsearch.NewClient(elasticsearch.Config{ Addresses: tcCfg.Addresses, Username: tcCfg.Username, Password: tcCfg.Password, @@ -312,14 +333,20 @@ func TestBulkIndexerIntegration(t *testing.T) { PoolCompressor: tt.PoolCompressor, Logger: &elastictransport.ColorLogger{Output: os.Stdout, EnableRequestBody: true, EnableResponseBody: true}, }) + if err != nil { + t.Fatalf("Unexpected error: %s", err) + } es.Indices.Delete([]string{index}, es.Indices.Delete.WithIgnoreUnavailable(true)) es.Indices.Create(index, es.Indices.Create.WithWaitForActiveShards("1")) es.Indices.PutAlias([]string{index}, alias) - bi, _ := esutil.NewBulkIndexer(esutil.BulkIndexerConfig{ + bi, err := esutil.NewBulkIndexer(esutil.BulkIndexerConfig{ Client: es, }) + if err != nil { + t.Fatalf("Unexpected error: %s", err) + } func(bulkIndexer esutil.BulkIndexer) { var countTotal int = 10 var countSuccessful uint64 diff --git a/internal/testing/e2e/elasticsearch_integration_test.go b/internal/testing/e2e/elasticsearch_integration_test.go index 90b84cb800..0e46dc2cb1 100644 --- a/internal/testing/e2e/elasticsearch_integration_test.go +++ b/internal/testing/e2e/elasticsearch_integration_test.go @@ -36,6 +36,7 @@ import ( "sync" "sync/atomic" "testing" + "testing/containertest" "time" "github.com/elastic/elastic-transport-go/v8/elastictransport" @@ -51,7 +52,6 @@ import ( "github.com/testcontainers/testcontainers-go" tces "github.com/testcontainers/testcontainers-go/modules/elasticsearch" - "testing/containertest" ) func TestElasticsearchIntegration(t *testing.T) { @@ -570,14 +570,20 @@ func TestElasticsearchInsecureIntegration(t *testing.T) { }) t.Run("Manual", func(t *testing.T) { - u, _ := url.Parse(elasticsearchContainer.Settings.Address) + u, err := url.Parse(elasticsearchContainer.Settings.Address) + if err != nil { + t.Fatalf("Unexpected error: %s", err) + } - tp, _ := elastictransport.New(elastictransport.Config{ + tp, err := elastictransport.New(elastictransport.Config{ URLs: []*url.URL{ u, }, Transport: http.DefaultTransport, }) + if err != nil { + t.Fatalf("Unexpected error: %s", err) + } es := elasticsearch.Client{ BaseClient: elasticsearch.BaseClient{