1// Copyright 2012-present Oliver Eilhard. All rights reserved. 2// Use of this source code is governed by a MIT-license. 3// See http://olivere.mit-license.org/license.txt for details. 4 5package elastic 6 7import ( 8 "context" 9 "testing" 10) 11 12func TestIndicesSegments(t *testing.T) { 13 client := setupTestClientAndCreateIndex(t) 14 15 tests := []struct { 16 Indices []string 17 Expected string 18 }{ 19 { 20 []string{}, 21 "/_segments", 22 }, 23 { 24 []string{"index1"}, 25 "/index1/_segments", 26 }, 27 { 28 []string{"index1", "index2"}, 29 "/index1%2Cindex2/_segments", 30 }, 31 } 32 33 for i, test := range tests { 34 path, _, err := client.IndexSegments().Index(test.Indices...).buildURL() 35 if err != nil { 36 t.Errorf("case #%d: %v", i+1, err) 37 } 38 if path != test.Expected { 39 t.Errorf("case #%d: expected %q; got: %q", i+1, test.Expected, path) 40 } 41 } 42} 43 44func TestIndexSegments(t *testing.T) { 45 client := setupTestClientAndCreateIndexAndAddDocs(t) 46 //client := setupTestClientAndCreateIndexAndAddDocs(t, SetTraceLog(log.New(os.Stdout, "", 0))) 47 48 segments, err := client.IndexSegments(testIndexName).Pretty(true).Human(true).Do(context.TODO()) 49 if err != nil { 50 t.Fatalf("expected no error; got: %v", err) 51 } 52 if segments == nil { 53 t.Fatalf("expected response; got: %v", segments) 54 } 55 indices, found := segments.Indices[testIndexName] 56 if !found { 57 t.Fatalf("expected index information about index %v; got: %v", testIndexName, found) 58 } 59 shards, found := indices.Shards["0"] 60 if !found { 61 t.Fatalf("expected shard information about index %v", testIndexName) 62 } 63 if shards == nil { 64 t.Fatalf("expected shard information to be != nil for index %v", testIndexName) 65 } 66 shard := shards[0] 67 if shard == nil { 68 t.Fatalf("expected shard information to be != nil for shard 0 in index %v", testIndexName) 69 } 70 if shard.Routing == nil { 71 t.Fatalf("expected shard routing information to be != nil for index %v", testIndexName) 72 } 73 segmentDetail, found := shard.Segments["_0"] 74 if !found { 75 t.Fatalf("expected segment detail to be != nil for index %v", testIndexName) 76 } 77 if segmentDetail == nil { 78 t.Fatalf("expected segment detail to be != nil for index %v", testIndexName) 79 } 80 if segmentDetail.NumDocs == 0 { 81 t.Fatal("expected segment to contain >= 1 docs") 82 } 83 if len(segmentDetail.Attributes) == 0 { 84 t.Fatalf("expected segment attributes map to contain at least one key, value pair for index %v", testIndexName) 85 } 86} 87