github.com/kardianos/nomad@v0.1.3-0.20151022182107-b13df73ee850/api/agent_test.go (about) 1 package api 2 3 import ( 4 "testing" 5 6 "github.com/hashicorp/nomad/testutil" 7 ) 8 9 func TestAgent_Self(t *testing.T) { 10 c, s := makeClient(t, nil, nil) 11 defer s.Stop() 12 13 // Get a handle on the Agent endpoints 14 a := c.Agent() 15 16 // Query the endpoint 17 res, err := a.Self() 18 if err != nil { 19 t.Fatalf("err: %s", err) 20 } 21 22 // Check that we got a valid response 23 if name, ok := res["member"]["Name"]; !ok || name == "" { 24 t.Fatalf("bad member name in response: %#v", res) 25 } 26 27 // Local cache was populated 28 if a.nodeName == "" || a.datacenter == "" || a.region == "" { 29 t.Fatalf("cache should be populated, got: %#v", a) 30 } 31 } 32 33 func TestAgent_NodeName(t *testing.T) { 34 c, s := makeClient(t, nil, nil) 35 defer s.Stop() 36 a := c.Agent() 37 38 // Query the agent for the node name 39 res, err := a.NodeName() 40 if err != nil { 41 t.Fatalf("err: %s", err) 42 } 43 if res == "" { 44 t.Fatalf("expected node name, got nothing") 45 } 46 } 47 48 func TestAgent_Datacenter(t *testing.T) { 49 c, s := makeClient(t, nil, nil) 50 defer s.Stop() 51 a := c.Agent() 52 53 // Query the agent for the datacenter 54 dc, err := a.Datacenter() 55 if err != nil { 56 t.Fatalf("err: %s", err) 57 } 58 if dc != "dc1" { 59 t.Fatalf("expected dc1, got: %q", dc) 60 } 61 } 62 63 func TestAgent_Join(t *testing.T) { 64 c1, s1 := makeClient(t, nil, nil) 65 defer s1.Stop() 66 a1 := c1.Agent() 67 68 _, s2 := makeClient(t, nil, func(c *testutil.TestServerConfig) { 69 c.Server.BootstrapExpect = 0 70 }) 71 defer s2.Stop() 72 73 // Attempting to join a non-existent host returns error 74 n, err := a1.Join("nope") 75 if err == nil { 76 t.Fatalf("expected error, got nothing") 77 } 78 if n != 0 { 79 t.Fatalf("expected 0 nodes, got: %d", n) 80 } 81 82 // Returns correctly if join succeeds 83 n, err = a1.Join(s2.SerfAddr) 84 if err != nil { 85 t.Fatalf("err: %s", err) 86 } 87 if n != 1 { 88 t.Fatalf("expected 1 node, got: %d", n) 89 } 90 } 91 92 func TestAgent_Members(t *testing.T) { 93 c, s := makeClient(t, nil, nil) 94 defer s.Stop() 95 a := c.Agent() 96 97 // Query nomad for all the known members 98 mem, err := a.Members() 99 if err != nil { 100 t.Fatalf("err: %s", err) 101 } 102 103 // Check that we got the expected result 104 if n := len(mem); n != 1 { 105 t.Fatalf("expected 1 member, got: %d", n) 106 } 107 if m := mem[0]; m.Name == "" || m.Addr == "" || m.Port == 0 { 108 t.Fatalf("bad member: %#v", m) 109 } 110 } 111 112 func TestAgent_ForceLeave(t *testing.T) { 113 c, s := makeClient(t, nil, nil) 114 defer s.Stop() 115 a := c.Agent() 116 117 // Force-leave on a non-existent node does not error 118 if err := a.ForceLeave("nope"); err != nil { 119 t.Fatalf("err: %s", err) 120 } 121 122 // TODO: test force-leave on an existing node 123 } 124 125 func TestAgent_SetServers(t *testing.T) { 126 c, s := makeClient(t, nil, func(c *testutil.TestServerConfig) { 127 c.Client.Enabled = true 128 c.Server.BootstrapExpect = 0 129 }) 130 defer s.Stop() 131 a := c.Agent() 132 133 // Attempting to set an empty list errors 134 err := a.SetServers([]string{}) 135 if err == nil { 136 t.Fatalf("expected error, got nothing") 137 } 138 139 // Setting a valid list works 140 err = a.SetServers([]string{"foo", "bar"}) 141 if err != nil { 142 t.Fatalf("err: %s", err) 143 } 144 145 // Returns the proper list of servers 146 out, err := a.Servers() 147 if err != nil { 148 t.Fatalf("err: %s", err) 149 } 150 if n := len(out); n != 2 { 151 t.Fatalf("expected 2 servers, got: %d", n) 152 } 153 if out[0] != "foo" || out[1] != "bar" { 154 t.Fatalf("bad server list: %v", out) 155 } 156 }