github.com/etecs-ru/gnomock@v0.13.2/preset/elastic/preset_test.go (about) 1 package elastic_test 2 3 import ( 4 "encoding/json" 5 "fmt" 6 "testing" 7 8 "github.com/elastic/go-elasticsearch/v7" 9 "github.com/etecs-ru/gnomock" 10 "github.com/etecs-ru/gnomock/internal/israce" 11 "github.com/etecs-ru/gnomock/preset/elastic" 12 "github.com/stretchr/testify/require" 13 ) 14 15 // these tests have trouble running in parallel, probably due to limited 16 // resources 17 18 func TestPreset(t *testing.T) { 19 if israce.Enabled { 20 t.Skip("elastic tests can't run with race detector due to https://github.com/elastic/go-elasticsearch/issues/147") 21 } 22 23 for _, version := range []string{"7.9.3", "6.8.13", "5.6"} { 24 t.Run(version, testPreset(version)) 25 } 26 } 27 28 func testPreset(version string) func(t *testing.T) { 29 return func(t *testing.T) { 30 p := elastic.Preset( 31 elastic.WithVersion("7.9.2"), 32 elastic.WithInputFile("./testdata/titles"), 33 elastic.WithInputFile("./testdata/names"), 34 ) 35 36 c, err := gnomock.Start(p) 37 require.NoError(t, err) 38 39 defer func() { require.NoError(t, gnomock.Stop(c)) }() 40 41 cfg := elasticsearch.Config{ 42 Addresses: []string{fmt.Sprintf("http://%s", c.DefaultAddress())}, 43 DisableRetry: true, 44 } 45 46 client, err := elasticsearch.NewClient(cfg) 47 require.NoError(t, err) 48 49 res, err := client.Search( 50 client.Search.WithIndex("titles"), 51 client.Search.WithQuery("gnomock"), 52 ) 53 require.NoError(t, err) 54 require.False(t, res.IsError(), res.String()) 55 56 var out struct { 57 Hits struct { 58 Total struct { 59 Value int `json:"value"` 60 } `json:"total"` 61 } `json:"hits"` 62 } 63 64 require.NoError(t, json.NewDecoder(res.Body).Decode(&out)) 65 require.NoError(t, res.Body.Close()) 66 require.Equal(t, 1, out.Hits.Total.Value) 67 68 res, err = client.Search( 69 client.Search.WithIndex("titles"), 70 client.Search.WithQuery("unknown"), 71 ) 72 require.NoError(t, err) 73 require.False(t, res.IsError(), res.String()) 74 75 require.NoError(t, json.NewDecoder(res.Body).Decode(&out)) 76 require.NoError(t, res.Body.Close()) 77 require.Equal(t, 0, out.Hits.Total.Value) 78 } 79 } 80 81 func TestPreset_withDefaults(t *testing.T) { 82 if israce.Enabled { 83 t.Skip("elastic tests can't run with race detector due to https://github.com/elastic/go-elasticsearch/issues/147") 84 } 85 86 p := elastic.Preset() 87 c, err := gnomock.Start(p) 88 require.NoError(t, err) 89 90 defer func() { require.NoError(t, gnomock.Stop(c)) }() 91 92 cfg := elasticsearch.Config{ 93 Addresses: []string{fmt.Sprintf("http://%s", c.DefaultAddress())}, 94 DisableRetry: true, 95 } 96 97 _, err = elasticsearch.NewClient(cfg) 98 require.NoError(t, err) 99 }