Add unit test to verify compatibility code for node drains

This commit is contained in:
Preetha Appan
2018-05-30 17:14:53 -05:00
parent bcf34c3449
commit 44aef6567e

View File

@@ -302,6 +302,61 @@ func TestHTTP_NodeDrain(t *testing.T) {
})
}
// Tests backwards compatibility code to support pre 0.8 clients
func TestHTTP_NodeDrain_Compat(t *testing.T) {
t.Parallel()
require := require.New(t)
httpTest(t, nil, func(s *TestAgent) {
// Create the node
node := mock.Node()
args := structs.NodeRegisterRequest{
Node: node,
WriteRequest: structs.WriteRequest{Region: "global"},
}
var resp structs.NodeUpdateResponse
require.Nil(s.Agent.RPC("Node.Register", &args, &resp))
// Make the HTTP request
req, err := http.NewRequest("POST", "/v1/node/"+node.ID+"/drain?enable=true", nil)
require.Nil(err)
respW := httptest.NewRecorder()
// Make the request
obj, err := s.Server.NodeSpecificRequest(respW, req)
require.Nil(err)
// Check for the index
require.NotZero(respW.HeaderMap.Get("X-Nomad-Index"))
// Check the response
_, ok := obj.(structs.NodeDrainUpdateResponse)
require.True(ok)
// Check that the node has been updated
state := s.Agent.server.State()
out, err := state.NodeByID(nil, node.ID)
require.Nil(err)
require.True(out.Drain)
require.NotNil(out.DrainStrategy)
require.Equal(-1*time.Second, out.DrainStrategy.Deadline)
// Make the HTTP request to unset drain
req, err = http.NewRequest("POST", "/v1/node/"+node.ID+"/drain?enable=false", nil)
require.Nil(err)
respW = httptest.NewRecorder()
// Make the request
_, err = s.Server.NodeSpecificRequest(respW, req)
require.Nil(err)
out, err = state.NodeByID(nil, node.ID)
require.Nil(err)
require.False(out.Drain)
require.Nil(out.DrainStrategy)
require.Equal("eligible", out.SchedulingEligibility)
})
}
func TestHTTP_NodeEligible(t *testing.T) {
t.Parallel()
require := require.New(t)