1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124
|
// Copyright 2012-present Oliver Eilhard. All rights reserved.
// Use of this source code is governed by a MIT-license.
// See http://olivere.mit-license.org/license.txt for details.
package elastic
import (
"context"
"testing"
)
func TestIndexStatsBuildURL(t *testing.T) {
client := setupTestClientAndCreateIndex(t)
tests := []struct {
Indices []string
Metrics []string
Expected string
}{
{
[]string{},
[]string{},
"/_stats",
},
{
[]string{"index1"},
[]string{},
"/index1/_stats",
},
{
[]string{},
[]string{"metric1"},
"/_stats/metric1",
},
{
[]string{"index1"},
[]string{"metric1"},
"/index1/_stats/metric1",
},
{
[]string{"index1", "index2"},
[]string{"metric1"},
"/index1%2Cindex2/_stats/metric1",
},
{
[]string{"index1", "index2"},
[]string{"metric1", "metric2"},
"/index1%2Cindex2/_stats/metric1%2Cmetric2",
},
}
for i, test := range tests {
path, _, err := client.IndexStats().Index(test.Indices...).Metric(test.Metrics...).buildURL()
if err != nil {
t.Fatalf("case #%d: %v", i+1, err)
}
if path != test.Expected {
t.Errorf("case #%d: expected %q; got: %q", i+1, test.Expected, path)
}
}
}
func TestIndexStats(t *testing.T) {
client := setupTestClientAndCreateIndexAndAddDocs(t)
stats, err := client.IndexStats(testIndexName).Do(context.TODO())
if err != nil {
t.Fatalf("expected no error; got: %v", err)
}
if stats == nil {
t.Fatalf("expected response; got: %v", stats)
}
stat, found := stats.Indices[testIndexName]
if !found {
t.Fatalf("expected stats about index %q; got: %v", testIndexName, found)
}
if stat.Total == nil {
t.Fatalf("expected total to be != nil; got: %v", stat.Total)
}
if stat.Total.Docs == nil {
t.Fatalf("expected total docs to be != nil; got: %v", stat.Total.Docs)
}
if stat.Total.Docs.Count == 0 {
t.Fatalf("expected total docs count to be > 0; got: %d", stat.Total.Docs.Count)
}
}
func TestIndexStatsWithShards(t *testing.T) {
client := setupTestClientAndCreateIndexAndAddDocs(t)
stats, err := client.IndexStats(testIndexName).Level("shards").Do(context.TODO())
if err != nil {
t.Fatalf("expected no error; got: %v", err)
}
if stats == nil {
t.Fatalf("expected response; got: %v", stats)
}
stat, found := stats.Indices[testIndexName]
if !found {
t.Fatalf("expected stats about index %q; got: %v", testIndexName, found)
}
if stat.Total == nil {
t.Fatalf("expected total to be != nil; got: %v", stat.Total)
}
if stat.Total.Docs == nil {
t.Fatalf("expected total docs to be != nil; got: %v", stat.Total.Docs)
}
if stat.Total.Docs.Count == 0 {
t.Fatalf("expected total docs count to be > 0; got: %d", stat.Total.Docs.Count)
}
if stat.Shards == nil {
t.Fatalf("expected shard level information to be != nil; got: %v", stat.Shards)
}
shard, found := stat.Shards["0"]
if !found || shard == nil {
t.Fatalf("expected shard level information for shard 0; got: %v (found=%v)", shard, found)
}
if len(shard) != 1 {
t.Fatalf("expected shard level information array to be == 1; got: %v", len(shard))
}
if shard[0].Docs == nil {
t.Fatalf("expected docs to be != nil; got: %v", shard[0].Docs)
}
}
|