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 TestTasksListBuildURL(t *testing.T) {
13	client := setupTestClient(t)
14
15	tests := []struct {
16		TaskId   []int64
17		Expected string
18	}{
19		{
20			[]int64{},
21			"/_tasks",
22		},
23		{
24			[]int64{42},
25			"/_tasks/42",
26		},
27		{
28			[]int64{42, 37},
29			"/_tasks/42%2C37",
30		},
31	}
32
33	for i, test := range tests {
34		path, _, err := client.TasksList().TaskId(test.TaskId...).buildURL()
35		if err != nil {
36			t.Errorf("case #%d: %v", i+1, err)
37			continue
38		}
39		if path != test.Expected {
40			t.Errorf("case #%d: expected %q; got: %q", i+1, test.Expected, path)
41		}
42	}
43}
44
45func TestTasksList(t *testing.T) {
46	client := setupTestClientAndCreateIndexAndAddDocs(t) //, SetTraceLog(log.New(os.Stdout, "", 0)))
47	esversion, err := client.ElasticsearchVersion(DefaultURL)
48	if err != nil {
49		t.Fatal(err)
50	}
51	if esversion < "2.3.0" {
52		t.Skipf("Elasticsearch %v does not support Tasks Management API yet", esversion)
53	}
54
55	res, err := client.TasksList().Pretty(true).Do(context.TODO())
56	if err != nil {
57		t.Fatal(err)
58	}
59	if res == nil {
60		t.Fatal("response is nil")
61	}
62	if len(res.Nodes) == 0 {
63		t.Fatalf("expected at least 1 node; got: %d", len(res.Nodes))
64	}
65}
66