lazy initializing es client

Signed-off-by: huanggze <loganhuang@yunify.com>
This commit is contained in:
huanggze
2020-07-02 19:54:16 +08:00
parent 78159e9636
commit 4df7ae2636
5 changed files with 114 additions and 70 deletions

View File

@@ -14,7 +14,7 @@ import (
"testing"
)
func TestDetectVersionMajor(t *testing.T) {
func TestInitClient(t *testing.T) {
var tests = []struct {
fakeResp string
expected string
@@ -34,12 +34,13 @@ func TestDetectVersionMajor(t *testing.T) {
es := mockElasticsearchService("/", test.fakeResp, http.StatusOK)
defer es.Close()
result, err := detectVersionMajor(es.URL)
client := &Elasticsearch{host: es.URL}
err := client.loadClient()
if err != nil {
t.Fatal(err)
}
if diff := cmp.Diff(result, test.expected); diff != "" {
if diff := cmp.Diff(client.version, test.expected); diff != "" {
t.Fatalf("%T differ (-got, +want): %s", test.expected, diff)
}
})
@@ -222,15 +223,18 @@ func mockElasticsearchService(pattern, fakeResp string, fakeCode int) *httptest.
return httptest.NewServer(mux)
}
func newElasticsearchClient(srv *httptest.Server, version string) Elasticsearch {
var es Elasticsearch
func newElasticsearchClient(srv *httptest.Server, version string) *Elasticsearch {
var es *Elasticsearch
switch version {
case ElasticV5:
es = Elasticsearch{c: v5.New(srv.URL, "ks-logstash-log")}
client, _ := v5.New(srv.URL, "ks-logstash-log")
es = &Elasticsearch{c: client}
case ElasticV6:
es = Elasticsearch{c: v6.New(srv.URL, "ks-logstash-log")}
client, _ := v6.New(srv.URL, "ks-logstash-log")
es = &Elasticsearch{c: client}
case ElasticV7:
es = Elasticsearch{c: v7.New(srv.URL, "ks-logstash-log")}
client, _ := v7.New(srv.URL, "ks-logstash-log")
es = &Elasticsearch{c: client}
}
return es
}