github.com/kardianos/nomad@v0.1.3-0.20151022182107-b13df73ee850/command/agent/agent_endpoint_test.go (about) 1 package agent 2 3 import ( 4 "fmt" 5 "net/http" 6 "net/http/httptest" 7 "strings" 8 "testing" 9 ) 10 11 func TestHTTP_AgentSelf(t *testing.T) { 12 httpTest(t, nil, func(s *TestServer) { 13 // Make the HTTP request 14 req, err := http.NewRequest("GET", "/v1/agent/self", nil) 15 if err != nil { 16 t.Fatalf("err: %v", err) 17 } 18 respW := httptest.NewRecorder() 19 20 // Make the request 21 obj, err := s.Server.AgentSelfRequest(respW, req) 22 if err != nil { 23 t.Fatalf("err: %v", err) 24 } 25 26 // Check the job 27 self := obj.(agentSelf) 28 if self.Config == nil { 29 t.Fatalf("bad: %#v", self) 30 } 31 if len(self.Stats) == 0 { 32 t.Fatalf("bad: %#v", self) 33 } 34 }) 35 } 36 37 func TestHTTP_AgentJoin(t *testing.T) { 38 httpTest(t, nil, func(s *TestServer) { 39 // Determine the join address 40 member := s.Agent.Server().LocalMember() 41 addr := fmt.Sprintf("%s:%d", member.Addr, member.Port) 42 43 // Make the HTTP request 44 req, err := http.NewRequest("PUT", 45 fmt.Sprintf("/v1/agent/join?address=%s&address=%s", addr, addr), nil) 46 if err != nil { 47 t.Fatalf("err: %v", err) 48 } 49 respW := httptest.NewRecorder() 50 51 // Make the request 52 obj, err := s.Server.AgentJoinRequest(respW, req) 53 if err != nil { 54 t.Fatalf("err: %v", err) 55 } 56 57 // Check the job 58 join := obj.(joinResult) 59 if join.NumJoined != 2 { 60 t.Fatalf("bad: %#v", join) 61 } 62 if join.Error != "" { 63 t.Fatalf("bad: %#v", join) 64 } 65 }) 66 } 67 68 func TestHTTP_AgentMembers(t *testing.T) { 69 httpTest(t, nil, func(s *TestServer) { 70 // Make the HTTP request 71 req, err := http.NewRequest("GET", "/v1/agent/members", nil) 72 if err != nil { 73 t.Fatalf("err: %v", err) 74 } 75 respW := httptest.NewRecorder() 76 77 // Make the request 78 obj, err := s.Server.AgentMembersRequest(respW, req) 79 if err != nil { 80 t.Fatalf("err: %v", err) 81 } 82 83 // Check the job 84 members := obj.([]Member) 85 if len(members) != 1 { 86 t.Fatalf("bad: %#v", members) 87 } 88 }) 89 } 90 91 func TestHTTP_AgentForceLeave(t *testing.T) { 92 httpTest(t, nil, func(s *TestServer) { 93 // Make the HTTP request 94 req, err := http.NewRequest("PUT", "/v1/agent/force-leave?node=foo", nil) 95 if err != nil { 96 t.Fatalf("err: %v", err) 97 } 98 respW := httptest.NewRecorder() 99 100 // Make the request 101 _, err = s.Server.AgentForceLeaveRequest(respW, req) 102 if err != nil { 103 t.Fatalf("err: %v", err) 104 } 105 }) 106 } 107 108 func TestHTTP_AgentSetServers(t *testing.T) { 109 httpTest(t, nil, func(s *TestServer) { 110 // Create the request 111 req, err := http.NewRequest("PUT", "/v1/agent/servers", nil) 112 if err != nil { 113 t.Fatalf("err: %s", err) 114 } 115 116 // Send the request 117 respW := httptest.NewRecorder() 118 _, err = s.Server.AgentServersRequest(respW, req) 119 if err == nil || !strings.Contains(err.Error(), "missing server address") { 120 t.Fatalf("expected missing servers error, got: %#v", err) 121 } 122 123 // Create a valid request 124 req, err = http.NewRequest("PUT", "/v1/agent/servers?address=foo&address=bar", nil) 125 if err != nil { 126 t.Fatalf("err: %s", err) 127 } 128 129 // Send the request 130 respW = httptest.NewRecorder() 131 _, err = s.Server.AgentServersRequest(respW, req) 132 if err != nil { 133 t.Fatalf("err: %s", err) 134 } 135 136 // Retrieve the servers again 137 req, err = http.NewRequest("GET", "/v1/agent/servers", nil) 138 if err != nil { 139 t.Fatalf("err: %s", err) 140 } 141 respW = httptest.NewRecorder() 142 143 // Make the request and check the result 144 out, err := s.Server.AgentServersRequest(respW, req) 145 if err != nil { 146 t.Fatalf("err: %s", err) 147 } 148 servers := out.([]string) 149 if n := len(servers); n != 2 { 150 t.Fatalf("expected 2 servers, got: %d", n) 151 } 152 if servers[0] != "foo" || servers[1] != "bar" { 153 t.Fatalf("bad servers result: %v", servers) 154 } 155 }) 156 }