1package api
2
3import (
4	"github.com/stretchr/testify/require"
5	"testing"
6)
7
8func TestAPI_StatusLeader(t *testing.T) {
9	t.Parallel()
10	c, s := makeClient(t)
11	defer s.Stop()
12	s.WaitForSerfCheck(t)
13
14	status := c.Status()
15
16	leader, err := status.Leader()
17	if err != nil {
18		t.Fatalf("err: %v", err)
19	}
20	if leader == "" {
21		t.Fatalf("Expected leader, found empty string")
22	}
23}
24
25func TestAPI_StatusLeaderWithQueryOptions(t *testing.T) {
26	t.Parallel()
27	c, s := makeClient(t)
28	defer s.Stop()
29	s.WaitForSerfCheck(t)
30
31	status := c.Status()
32
33	opts := QueryOptions{
34		Datacenter: "dc1",
35	}
36
37	leader, err := status.LeaderWithQueryOptions(&opts)
38	if err != nil {
39		t.Fatalf("err: %v", err)
40	}
41	if leader == "" {
42		t.Fatalf("Expected leader, found empty string")
43	}
44}
45
46func TestAPI_StatusPeers(t *testing.T) {
47	t.Parallel()
48	c, s := makeClient(t)
49	defer s.Stop()
50	s.WaitForSerfCheck(t)
51
52	status := c.Status()
53
54	peers, err := status.Peers()
55	if err != nil {
56		t.Fatalf("err: %v", err)
57	}
58	if len(peers) == 0 {
59		t.Fatalf("Expected peers, found %d", len(peers))
60	}
61}
62
63func TestAPI_StatusPeersWithQueryOptions(t *testing.T) {
64	t.Parallel()
65	c, s := makeClient(t)
66	defer s.Stop()
67	s.WaitForSerfCheck(t)
68
69	status := c.Status()
70
71	opts := QueryOptions{
72		Datacenter: "dc1",
73	}
74
75	peers, err := status.PeersWithQueryOptions(&opts)
76	if err != nil {
77		t.Fatalf("err: %v", err)
78	}
79	if len(peers) == 0 {
80		t.Fatalf("Expected peers, found %d", len(peers))
81	}
82}
83
84func TestAPI_StatusLeader_WrongDC(t *testing.T) {
85	t.Parallel()
86	require := require.New(t)
87
88	c, s := makeClient(t)
89	defer s.Stop()
90	s.WaitForSerfCheck(t)
91
92	status := c.Status()
93
94	opts := QueryOptions{
95		Datacenter: "wrong_dc1",
96	}
97
98	_, err := status.LeaderWithQueryOptions(&opts)
99	require.Error(err)
100	require.Contains(err.Error(), "No path to datacenter")
101}
102
103func TestAPI_StatusPeers_WrongDC(t *testing.T) {
104	t.Parallel()
105	require := require.New(t)
106
107	c, s := makeClient(t)
108	defer s.Stop()
109	s.WaitForSerfCheck(t)
110
111	status := c.Status()
112
113	opts := QueryOptions{
114		Datacenter: "wrong_dc1",
115	}
116	_, err := status.PeersWithQueryOptions(&opts)
117	require.Error(err)
118	require.Contains(err.Error(), "No path to datacenter")
119}
120