github.com/Ilhicas/nomad@v1.0.4-0.20210304152020-e86851182bc3/client/client_stats_endpoint_test.go (about) 1 package client 2 3 import ( 4 "testing" 5 6 "github.com/hashicorp/nomad/acl" 7 "github.com/hashicorp/nomad/client/config" 8 "github.com/hashicorp/nomad/client/structs" 9 "github.com/hashicorp/nomad/nomad/mock" 10 nstructs "github.com/hashicorp/nomad/nomad/structs" 11 "github.com/stretchr/testify/require" 12 ) 13 14 func TestClientStats_Stats(t *testing.T) { 15 t.Parallel() 16 require := require.New(t) 17 client, cleanup := TestClient(t, nil) 18 defer cleanup() 19 20 req := &nstructs.NodeSpecificRequest{} 21 var resp structs.ClientStatsResponse 22 require.Nil(client.ClientRPC("ClientStats.Stats", &req, &resp)) 23 require.NotNil(resp.HostStats) 24 require.NotNil(resp.HostStats.AllocDirStats) 25 require.NotZero(resp.HostStats.Uptime) 26 } 27 28 func TestClientStats_Stats_ACL(t *testing.T) { 29 t.Parallel() 30 require := require.New(t) 31 32 server, addr, root, cleanupS := testACLServer(t, nil) 33 defer cleanupS() 34 35 client, cleanupC := TestClient(t, func(c *config.Config) { 36 c.Servers = []string{addr} 37 c.ACLEnabled = true 38 }) 39 defer cleanupC() 40 41 // Try request without a token and expect failure 42 { 43 req := &nstructs.NodeSpecificRequest{} 44 var resp structs.ClientStatsResponse 45 err := client.ClientRPC("ClientStats.Stats", &req, &resp) 46 require.NotNil(err) 47 require.EqualError(err, nstructs.ErrPermissionDenied.Error()) 48 } 49 50 // Try request with an invalid token and expect failure 51 { 52 token := mock.CreatePolicyAndToken(t, server.State(), 1005, "invalid", mock.NodePolicy(acl.PolicyDeny)) 53 req := &nstructs.NodeSpecificRequest{} 54 req.AuthToken = token.SecretID 55 56 var resp structs.ClientStatsResponse 57 err := client.ClientRPC("ClientStats.Stats", &req, &resp) 58 59 require.NotNil(err) 60 require.EqualError(err, nstructs.ErrPermissionDenied.Error()) 61 } 62 63 // Try request with a valid token 64 { 65 token := mock.CreatePolicyAndToken(t, server.State(), 1007, "valid", mock.NodePolicy(acl.PolicyRead)) 66 req := &nstructs.NodeSpecificRequest{} 67 req.AuthToken = token.SecretID 68 69 var resp structs.ClientStatsResponse 70 err := client.ClientRPC("ClientStats.Stats", &req, &resp) 71 72 require.Nil(err) 73 require.NotNil(resp.HostStats) 74 } 75 76 // Try request with a management token 77 { 78 req := &nstructs.NodeSpecificRequest{} 79 req.AuthToken = root.SecretID 80 81 var resp structs.ClientStatsResponse 82 err := client.ClientRPC("ClientStats.Stats", &req, &resp) 83 84 require.Nil(err) 85 require.NotNil(resp.HostStats) 86 } 87 }