func TestClusterSearch(t *testing.T) { expected := es.SearchResponse{Took: 134} server := newServer(func(e *json.Encoder) { e.Encode(expected) }) defer server.Close() cluster := newCluster(clusterSpec(server.URL, "cluster1", "on")) defer cluster.Shutdown() got, err := cluster.Search(es.SearchRequest{ es.SearchParams{}, es.MatchAllQuery(), }) if err != nil { t.Fatal(err) } if !reflect.DeepEqual(expected, got) { t.Fatal("got != epxected") } }
func TestMultiClusterSearchDarkMode(t *testing.T) { expected := es.SearchResponse{Took: 134} cluster1 := newServer(func(e *json.Encoder) { time.Sleep(10 * time.Millisecond) e.Encode(expected) }) defer cluster1.Close() cluster2 := newServer(func(e *json.Encoder) { e.Encode(es.SearchResponse{Took: 1340}) }) defer cluster2.Close() mc := esmc.MultiCluster{ newCluster(clusterSpec(cluster1.URL, "cluster1", "on")), newCluster(clusterSpec(cluster2.URL, "cluster2", "dark")), } defer func() { for _, c := range mc { c.Shutdown() } }() got, err := mc.Search(es.SearchRequest{ es.SearchParams{}, es.MatchAllQuery(), }) if err != nil { t.Fatal(err) } if !reflect.DeepEqual(expected, got) { t.Fatal("got != epxected") } }
func TestMultiSearch(t *testing.T) { indices := []string{"index1", "index2"} c := newCluster(t, indices, map[string]interface{}{ "/index1/foo/1": map[string]string{ "user": "******", "description": "index=index1 type=foo id=1 user=alice", }, "/index2/bar/2": map[string]string{ "user": "******", "description": "index=index2 type=bar id=2 user=bob", }, }) defer c.Shutdown() defer deleteIndices(t, indices) // comment out to leave data after test q1 := es.QueryWrapper(es.TermQuery(es.TermQueryParams{ Query: &es.Wrapper{ Name: "user", Wrapped: "alice", }, })) q2 := es.QueryWrapper(es.TermQuery(es.TermQueryParams{ Query: &es.Wrapper{ Name: "user", Wrapped: "bob", }, })) q3 := es.QueryWrapper(es.MatchAllQuery()) request := es.MultiSearchRequest{ Requests: []es.SearchRequest{ es.SearchRequest{ es.SearchParams{ Indices: []string{"index1"}, Types: []string{"foo"}, }, q1, }, es.SearchRequest{ es.SearchParams{ Indices: []string{"index2"}, Types: []string{"bar"}, }, q2, }, es.SearchRequest{ es.SearchParams{ Indices: []string{}, // "index1", "index2" is not supported (!) Types: []string{}, // "type1", "type2" is not supported (!) }, q3, }, }, } response, err := c.MultiSearch(request) if err != nil { t.Fatal(err) } if expected, got := 3, len(response.Responses); expected != got { t.Fatalf("expected %d response(s), got %d", expected, got) } r1 := response.Responses[0] if r1.Error != "" { t.Fatalf("response 1: %s", r1.Error) } if expected, got := 1, r1.HitsWrapper.Total; expected != got { t.Fatalf("response 1: expected %d hit(s), got %d", expected, got) } buf, _ := json.Marshal(r1) t.Logf("response 1 OK: %s", buf) r2 := response.Responses[1] if r2.Error != "" { t.Fatalf("response 2: %s", r1.Error) } if expected, got := 1, r2.HitsWrapper.Total; expected != got { t.Fatalf("response 2: expected %d hit(s), got %d", expected, got) } buf, _ = json.Marshal(r2) t.Logf("response 2 OK: %s", buf) r3 := response.Responses[2] if r3.Error != "" { t.Fatalf("response 3: %s", r1.Error) } if expected, got := 2, r3.HitsWrapper.Total; expected != got { t.Fatalf("response 3: expected %d hit(s), got %d", expected, got) } buf, _ = json.Marshal(r3) t.Logf("response 3 OK: %s", buf) }