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
|
// 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 (
"encoding/json"
"testing"
)
func TestIndicesRolloverBuildURL(t *testing.T) {
client := setupTestClient(t)
tests := []struct {
Alias string
NewIndex string
Expected string
}{
{
"logs_write",
"",
"/logs_write/_rollover",
},
{
"logs_write",
"my_new_index_name",
"/logs_write/_rollover/my_new_index_name",
},
}
for i, test := range tests {
path, _, err := client.RolloverIndex(test.Alias).NewIndex(test.NewIndex).buildURL()
if err != nil {
t.Errorf("case #%d: %v", i+1, err)
continue
}
if path != test.Expected {
t.Errorf("case #%d: expected %q; got: %q", i+1, test.Expected, path)
}
}
}
func TestIndicesRolloverBodyConditions(t *testing.T) {
client := setupTestClient(t)
svc := NewIndicesRolloverService(client).
Conditions(map[string]interface{}{
"max_age": "7d",
"max_docs": 1000,
})
data, err := json.Marshal(svc.getBody())
if err != nil {
t.Fatalf("marshaling to JSON failed: %v", err)
}
got := string(data)
expected := `{"conditions":{"max_age":"7d","max_docs":1000}}`
if got != expected {
t.Errorf("expected\n%s\n,got:\n%s", expected, got)
}
}
func TestIndicesRolloverBodyAddCondition(t *testing.T) {
client := setupTestClient(t)
svc := NewIndicesRolloverService(client).
AddCondition("max_age", "7d").
AddCondition("max_docs", 1000)
data, err := json.Marshal(svc.getBody())
if err != nil {
t.Fatalf("marshaling to JSON failed: %v", err)
}
got := string(data)
expected := `{"conditions":{"max_age":"7d","max_docs":1000}}`
if got != expected {
t.Errorf("expected\n%s\n,got:\n%s", expected, got)
}
}
func TestIndicesRolloverBodyAddPredefinedConditions(t *testing.T) {
client := setupTestClient(t)
svc := NewIndicesRolloverService(client).
AddMaxIndexAgeCondition("2d").
AddMaxIndexDocsCondition(1000000)
data, err := json.Marshal(svc.getBody())
if err != nil {
t.Fatalf("marshaling to JSON failed: %v", err)
}
got := string(data)
expected := `{"conditions":{"max_age":"2d","max_docs":1000000}}`
if got != expected {
t.Errorf("expected\n%s\n,got:\n%s", expected, got)
}
}
func TestIndicesRolloverBodyComplex(t *testing.T) {
client := setupTestClient(t)
svc := NewIndicesRolloverService(client).
AddMaxIndexAgeCondition("2d").
AddMaxIndexDocsCondition(1000000).
AddSetting("index.number_of_shards", 2).
AddMapping("doc", map[string]interface{}{
"properties": map[string]interface{}{
"user": map[string]interface{}{
"type": "keyword",
},
},
})
data, err := json.Marshal(svc.getBody())
if err != nil {
t.Fatalf("marshaling to JSON failed: %v", err)
}
got := string(data)
expected := `{"conditions":{"max_age":"2d","max_docs":1000000},"mappings":{"doc":{"properties":{"user":{"type":"keyword"}}}},"settings":{"index.number_of_shards":2}}`
if got != expected {
t.Errorf("expected\n%s\n,got:\n%s", expected, got)
}
}
|