1package command 2 3import ( 4 "strings" 5 "testing" 6 7 "github.com/mitchellh/cli" 8) 9 10func TestMembersCommandRun(t *testing.T) { 11 a1 := testAgent(t) 12 defer a1.Shutdown() 13 rpcAddr, ipc := testIPC(t, a1) 14 defer ipc.Shutdown() 15 16 ui := new(cli.MockUi) 17 c := &MembersCommand{Ui: ui} 18 args := []string{"-rpc-addr=" + rpcAddr} 19 20 code := c.Run(args) 21 if code != 0 { 22 t.Fatalf("bad: %d. %#v", code, ui.ErrorWriter.String()) 23 } 24 25 if !strings.Contains(ui.OutputWriter.String(), a1.SerfConfig().NodeName) { 26 t.Fatalf("bad: %#v", ui.OutputWriter.String()) 27 } 28} 29 30func TestMembersCommandRun_statusFilter(t *testing.T) { 31 a1 := testAgent(t) 32 defer a1.Shutdown() 33 rpcAddr, ipc := testIPC(t, a1) 34 defer ipc.Shutdown() 35 36 ui := new(cli.MockUi) 37 c := &MembersCommand{Ui: ui} 38 args := []string{ 39 "-rpc-addr=" + rpcAddr, 40 "-status=alive", 41 } 42 43 code := c.Run(args) 44 if code != 0 { 45 t.Fatalf("bad: %d. %#v", code, ui.ErrorWriter.String()) 46 } 47 48 if !strings.Contains(ui.OutputWriter.String(), a1.SerfConfig().NodeName) { 49 t.Fatalf("bad: %#v", ui.OutputWriter.String()) 50 } 51} 52 53func TestMembersCommandRun_statusFilter_failed(t *testing.T) { 54 a1 := testAgent(t) 55 defer a1.Shutdown() 56 rpcAddr, ipc := testIPC(t, a1) 57 defer ipc.Shutdown() 58 59 ui := new(cli.MockUi) 60 c := &MembersCommand{Ui: ui} 61 args := []string{ 62 "-rpc-addr=" + rpcAddr, 63 "-status=(failed|left)", 64 } 65 66 code := c.Run(args) 67 if code != 0 { 68 t.Fatalf("bad: %d. %#v", code, ui.ErrorWriter.String()) 69 } 70 71 if strings.Contains(ui.OutputWriter.String(), a1.SerfConfig().NodeName) { 72 t.Fatalf("bad: %#v", ui.OutputWriter.String()) 73 } 74} 75 76func TestMembersCommandRun_roleFilter(t *testing.T) { 77 a1 := testAgent(t) 78 defer a1.Shutdown() 79 rpcAddr, ipc := testIPC(t, a1) 80 defer ipc.Shutdown() 81 82 ui := new(cli.MockUi) 83 c := &MembersCommand{Ui: ui} 84 args := []string{ 85 "-rpc-addr=" + rpcAddr, 86 "-role=test", 87 } 88 89 code := c.Run(args) 90 if code != 0 { 91 t.Fatalf("bad: %d. %#v", code, ui.ErrorWriter.String()) 92 } 93 94 if !strings.Contains(ui.OutputWriter.String(), a1.SerfConfig().NodeName) { 95 t.Fatalf("bad: %#v", ui.OutputWriter.String()) 96 } 97} 98 99func TestMembersCommandRun_roleFilter_failed(t *testing.T) { 100 a1 := testAgent(t) 101 defer a1.Shutdown() 102 rpcAddr, ipc := testIPC(t, a1) 103 defer ipc.Shutdown() 104 105 ui := new(cli.MockUi) 106 c := &MembersCommand{Ui: ui} 107 args := []string{ 108 "-rpc-addr=" + rpcAddr, 109 "-role=primary", 110 } 111 112 code := c.Run(args) 113 if code != 0 { 114 t.Fatalf("bad: %d. %#v", code, ui.ErrorWriter.String()) 115 } 116 117 if strings.Contains(ui.OutputWriter.String(), a1.SerfConfig().NodeName) { 118 t.Fatalf("bad: %#v", ui.OutputWriter.String()) 119 } 120} 121 122func TestMembersCommandRun_tagFilter(t *testing.T) { 123 a1 := testAgent(t) 124 defer a1.Shutdown() 125 rpcAddr, ipc := testIPC(t, a1) 126 defer ipc.Shutdown() 127 128 ui := new(cli.MockUi) 129 c := &MembersCommand{Ui: ui} 130 args := []string{ 131 "-rpc-addr=" + rpcAddr, 132 "-tag=tag1=foo", 133 } 134 135 code := c.Run(args) 136 if code != 0 { 137 t.Fatalf("bad: %d. %#v", code, ui.ErrorWriter.String()) 138 } 139 140 if !strings.Contains(ui.OutputWriter.String(), a1.SerfConfig().NodeName) { 141 t.Fatalf("bad: %#v", ui.OutputWriter.String()) 142 } 143} 144 145func TestMembersCommandRun_tagFilter_failed(t *testing.T) { 146 a1 := testAgent(t) 147 defer a1.Shutdown() 148 rpcAddr, ipc := testIPC(t, a1) 149 defer ipc.Shutdown() 150 151 ui := new(cli.MockUi) 152 c := &MembersCommand{Ui: ui} 153 args := []string{ 154 "-rpc-addr=" + rpcAddr, 155 "-tag=tag1=nomatch", 156 } 157 158 code := c.Run(args) 159 if code != 0 { 160 t.Fatalf("bad: %d. %#v", code, ui.ErrorWriter.String()) 161 } 162 163 if strings.Contains(ui.OutputWriter.String(), a1.SerfConfig().NodeName) { 164 t.Fatalf("bad: %#v", ui.OutputWriter.String()) 165 } 166} 167func TestMembersCommandRun_mutliTagFilter(t *testing.T) { 168 a1 := testAgent(t) 169 defer a1.Shutdown() 170 rpcAddr, ipc := testIPC(t, a1) 171 defer ipc.Shutdown() 172 173 ui := new(cli.MockUi) 174 c := &MembersCommand{Ui: ui} 175 args := []string{ 176 "-rpc-addr=" + rpcAddr, 177 "-tag=tag1=foo", 178 "-tag=tag2=bar", 179 } 180 181 code := c.Run(args) 182 if code != 0 { 183 t.Fatalf("bad: %d. %#v", code, ui.ErrorWriter.String()) 184 } 185 186 if !strings.Contains(ui.OutputWriter.String(), a1.SerfConfig().NodeName) { 187 t.Fatalf("bad: %#v", ui.OutputWriter.String()) 188 } 189} 190 191func TestMembersCommandRun_multiTagFilter_failed(t *testing.T) { 192 a1 := testAgent(t) 193 defer a1.Shutdown() 194 rpcAddr, ipc := testIPC(t, a1) 195 defer ipc.Shutdown() 196 197 ui := new(cli.MockUi) 198 c := &MembersCommand{Ui: ui} 199 args := []string{ 200 "-rpc-addr=" + rpcAddr, 201 "-tag=tag1=foo", 202 "-tag=tag2=nomatch", 203 } 204 205 code := c.Run(args) 206 if code != 0 { 207 t.Fatalf("bad: %d. %#v", code, ui.ErrorWriter.String()) 208 } 209 210 if strings.Contains(ui.OutputWriter.String(), a1.SerfConfig().NodeName) { 211 t.Fatalf("bad: %#v", ui.OutputWriter.String()) 212 } 213} 214