github.com/djenriquez/nomad-1@v0.8.1/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 := TestClient(t, nil) 18 19 req := &nstructs.NodeSpecificRequest{} 20 var resp structs.ClientStatsResponse 21 require.Nil(client.ClientRPC("ClientStats.Stats", &req, &resp)) 22 require.NotNil(resp.HostStats) 23 require.NotNil(resp.HostStats.AllocDirStats) 24 require.NotZero(resp.HostStats.Uptime) 25 } 26 27 func TestClientStats_Stats_ACL(t *testing.T) { 28 t.Parallel() 29 require := require.New(t) 30 server, addr, root := testACLServer(t, nil) 31 defer server.Shutdown() 32 33 client := TestClient(t, func(c *config.Config) { 34 c.Servers = []string{addr} 35 c.ACLEnabled = true 36 }) 37 defer client.Shutdown() 38 39 // Try request without a token and expect failure 40 { 41 req := &nstructs.NodeSpecificRequest{} 42 var resp structs.ClientStatsResponse 43 err := client.ClientRPC("ClientStats.Stats", &req, &resp) 44 require.NotNil(err) 45 require.EqualError(err, nstructs.ErrPermissionDenied.Error()) 46 } 47 48 // Try request with an invalid token and expect failure 49 { 50 token := mock.CreatePolicyAndToken(t, server.State(), 1005, "invalid", mock.NodePolicy(acl.PolicyDeny)) 51 req := &nstructs.NodeSpecificRequest{} 52 req.AuthToken = token.SecretID 53 54 var resp structs.ClientStatsResponse 55 err := client.ClientRPC("ClientStats.Stats", &req, &resp) 56 57 require.NotNil(err) 58 require.EqualError(err, nstructs.ErrPermissionDenied.Error()) 59 } 60 61 // Try request with a valid token 62 { 63 token := mock.CreatePolicyAndToken(t, server.State(), 1007, "valid", mock.NodePolicy(acl.PolicyRead)) 64 req := &nstructs.NodeSpecificRequest{} 65 req.AuthToken = token.SecretID 66 67 var resp structs.ClientStatsResponse 68 err := client.ClientRPC("ClientStats.Stats", &req, &resp) 69 70 require.Nil(err) 71 require.NotNil(resp.HostStats) 72 } 73 74 // Try request with a management token 75 { 76 req := &nstructs.NodeSpecificRequest{} 77 req.AuthToken = root.SecretID 78 79 var resp structs.ClientStatsResponse 80 err := client.ClientRPC("ClientStats.Stats", &req, &resp) 81 82 require.Nil(err) 83 require.NotNil(resp.HostStats) 84 } 85 }