Skip to content

Commit f44a0e0

Browse files
authored
add get node status method (#351)
* add get node status method * add unittests
1 parent 02fd27e commit f44a0e0

File tree

12 files changed

+1538
-1294
lines changed

12 files changed

+1538
-1294
lines changed

cluster/calcium/status.go

+6
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,12 @@ func (c *Calcium) SetNodeStatus(ctx context.Context, nodename string, ttl int64)
5959
return logger.Err(errors.WithStack(c.store.SetNodeStatus(ctx, node, ttl)))
6060
}
6161

62+
// GetNodeStatus set status of a node
63+
// it's used to report whether a node is still alive
64+
func (c *Calcium) GetNodeStatus(ctx context.Context, nodename string) (*types.NodeStatus, error) {
65+
return c.store.GetNodeStatus(ctx, nodename)
66+
}
67+
6268
// NodeStatusStream returns a stream of node status for subscribing
6369
func (c *Calcium) NodeStatusStream(ctx context.Context) chan *types.NodeStatus {
6470
return c.store.NodeStatusStream(ctx)

cluster/calcium/status_test.go

+23
Original file line numberDiff line numberDiff line change
@@ -113,6 +113,29 @@ func TestSetNodeStatus(t *testing.T) {
113113
assert.NoError(c.SetNodeStatus(ctx, node.Name, 10))
114114
}
115115

116+
func TestGetNodeStatus(t *testing.T) {
117+
assert := assert.New(t)
118+
c := NewTestCluster()
119+
ctx := context.Background()
120+
store := c.store.(*storemocks.Store)
121+
122+
ns := &types.NodeStatus{
123+
Nodename: "test",
124+
Podname: "test",
125+
Alive: true,
126+
}
127+
// failed
128+
store.On("GetNodeStatus", mock.Anything, mock.Anything).Return(nil, types.ErrBadCount).Once()
129+
_, err := c.GetNodeStatus(ctx, "test")
130+
assert.Error(err)
131+
132+
store.On("GetNodeStatus", mock.Anything, mock.Anything).Return(ns, nil)
133+
s, err := c.GetNodeStatus(ctx, "test")
134+
assert.NoError(err)
135+
assert.Equal(s.Nodename, "test")
136+
assert.True(s.Alive)
137+
}
138+
116139
func TestNodeStatusStream(t *testing.T) {
117140
assert := assert.New(t)
118141
c := NewTestCluster()

cluster/cluster.go

+1
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,7 @@ type Cluster interface {
5252
GetNode(ctx context.Context, nodename string) (*types.Node, error)
5353
SetNode(ctx context.Context, opts *types.SetNodeOptions) (*types.Node, error)
5454
SetNodeStatus(ctx context.Context, nodename string, ttl int64) error
55+
GetNodeStatus(ctx context.Context, nodename string) (*types.NodeStatus, error)
5556
NodeStatusStream(ctx context.Context) chan *types.NodeStatus
5657
// node resource
5758
NodeResource(ctx context.Context, nodename string, fix bool) (*types.NodeResource, error)

cluster/mocks/Cluster.go

+23
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

rpc/errors.go

+2
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,8 @@ const (
3636
SetNode codes.Code = 1035
3737
// SetNodeStatus .
3838
SetNodeStatus codes.Code = 1036
39+
// GetNodeStatus .
40+
GetNodeStatus codes.Code = 1038
3941
// GetNodeResource .
4042
GetNodeResource codes.Code = 1037
4143

0 commit comments

Comments
 (0)