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  }