diff --git a/nomad/fsm_test.go b/nomad/fsm_test.go index a1c3d5e57ace..8b6511a29b82 100644 --- a/nomad/fsm_test.go +++ b/nomad/fsm_test.go @@ -88,8 +88,8 @@ func TestFSM_ApplyNodeEvent(t *testing.T) { } nodeEvent := &structs.NodeEvent{ - Message: "Registration failed", - Subsystem: "Server", + Message: "Heartbeating failed", + Subsystem: "Heartbeat", Timestamp: time.Now().Unix(), } @@ -108,9 +108,9 @@ func TestFSM_ApplyNodeEvent(t *testing.T) { actualNode, err := state.NodeByID(ws, node.ID) require.Nil(err) - require.Equal(1, len(actualNode.NodeEvents)) + require.Equal(2, len(actualNode.NodeEvents)) - first := actualNode.NodeEvents[0] + first := node.NodeEvents[1] require.Equal(uint64(1), first.CreateIndex) require.Equal("Registration failed", first.Message) } diff --git a/nomad/node_endpoint_test.go b/nomad/node_endpoint_test.go index f817dbc832b1..37d4d05cc3ff 100644 --- a/nomad/node_endpoint_test.go +++ b/nomad/node_endpoint_test.go @@ -83,10 +83,16 @@ func TestClientEndpoint_EmitEvent(t *testing.T) { require := require.New(t) s1 := TestServer(t, nil) + state := s1.fsm.State() defer s1.Shutdown() codec := rpcClient(t, s1) testutil.WaitForLeader(t, s1.RPC) + // create a node that we can register our event to + node := mock.Node() + err := state.UpsertNode(2, node) + require.Nil(err) + nodeEvent := &structs.NodeEvent{ Message: "Registration failed", Subsystem: "Server", @@ -99,7 +105,7 @@ func TestClientEndpoint_EmitEvent(t *testing.T) { } var resp structs.GenericResponse - err := msgpackrpc.CallWithCodec(codec, "Node.EmitEvent", &req, &resp) + err = msgpackrpc.CallWithCodec(codec, "Node.EmitEvent", &req, &resp) require.Nil(err) require.NotEqual(0, resp.Index) } diff --git a/nomad/structs/events.go b/nomad/structs/events.go index bc3a25539631..3457f41028b3 100644 --- a/nomad/structs/events.go +++ b/nomad/structs/events.go @@ -4,17 +4,17 @@ package structs type Subsystem string const ( - Drain Subsystem = "Drain" - Driver Subsystem = "Driver" - Heartbeating Subsystem = "Heartbeating" - Server Subsystem = "Server" + Drain Subsystem = "Drain" + Driver Subsystem = "Driver" + Heartbeat Subsystem = "Heartbeat" + Server Subsystem = "Server" + Cluster Subsystem = "Cluster" ) // NodeEvent is a single unit representing a node’s state change type NodeEvent struct { - NodeID string - Message string - Subsystem + Message string + Subsystem Subsystem Details map[string]string Timestamp int64 @@ -33,5 +33,5 @@ type EmitNodeEventRequest struct { // the node event source update. type EmitNodeEventResponse struct { Index uint64 - WriteRequest + WriteMeta }