mirror of
https://github.com/kemko/nomad.git
synced 2026-01-06 02:15:43 +03:00
Test http
This commit is contained in:
@@ -1,28 +1,82 @@
|
||||
package agent
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"net/http"
|
||||
"net/http/httptest"
|
||||
"testing"
|
||||
|
||||
"github.com/docker/distribution/uuid"
|
||||
"github.com/hashicorp/nomad/acl"
|
||||
"github.com/hashicorp/nomad/nomad"
|
||||
"github.com/hashicorp/nomad/nomad/mock"
|
||||
"github.com/hashicorp/nomad/nomad/structs"
|
||||
"github.com/hashicorp/nomad/testutil"
|
||||
"github.com/stretchr/testify/assert"
|
||||
"github.com/stretchr/testify/require"
|
||||
)
|
||||
|
||||
func TestClientStatsRequest(t *testing.T) {
|
||||
t.Parallel()
|
||||
require := require.New(t)
|
||||
httpTest(t, nil, func(s *TestAgent) {
|
||||
req, err := http.NewRequest("GET", "/v1/client/stats/?since=foo", nil)
|
||||
if err != nil {
|
||||
t.Fatalf("err: %v", err)
|
||||
|
||||
// Local node, local resp
|
||||
{
|
||||
req, err := http.NewRequest("GET", "/v1/client/stats/?since=foo", nil)
|
||||
if err != nil {
|
||||
t.Fatalf("err: %v", err)
|
||||
}
|
||||
|
||||
respW := httptest.NewRecorder()
|
||||
_, err = s.Server.ClientStatsRequest(respW, req)
|
||||
if err != nil {
|
||||
t.Fatalf("unexpected err: %v", err)
|
||||
}
|
||||
}
|
||||
|
||||
respW := httptest.NewRecorder()
|
||||
_, err = s.Server.ClientStatsRequest(respW, req)
|
||||
if err != nil {
|
||||
t.Fatalf("unexpected err: %v", err)
|
||||
// Local node, server resp
|
||||
{
|
||||
srv := s.server
|
||||
s.server = nil
|
||||
|
||||
req, err := http.NewRequest("GET", fmt.Sprintf("/v1/client/stats?node_id=%s", uuid.Generate()), nil)
|
||||
require.Nil(err)
|
||||
|
||||
respW := httptest.NewRecorder()
|
||||
_, err = s.Server.ClientStatsRequest(respW, req)
|
||||
require.NotNil(err)
|
||||
require.Contains(err.Error(), "Unknown node")
|
||||
|
||||
s.server = srv
|
||||
}
|
||||
|
||||
// no client, server resp
|
||||
{
|
||||
c := s.client
|
||||
s.client = nil
|
||||
|
||||
testutil.WaitForResult(func() (bool, error) {
|
||||
n, err := s.server.State().NodeByID(nil, c.NodeID())
|
||||
if err != nil {
|
||||
return false, err
|
||||
}
|
||||
return n != nil, nil
|
||||
}, func(err error) {
|
||||
t.Fatalf("should have client: %v", err)
|
||||
})
|
||||
|
||||
req, err := http.NewRequest("GET", fmt.Sprintf("/v1/client/stats?node_id=%s", c.NodeID()), nil)
|
||||
require.Nil(err)
|
||||
|
||||
respW := httptest.NewRecorder()
|
||||
_, err = s.Server.ClientStatsRequest(respW, req)
|
||||
require.NotNil(err)
|
||||
|
||||
// The dev agent uses in-mem RPC so just assert the no route error
|
||||
require.Contains(err.Error(), nomad.ErrNoNodeConn.Error())
|
||||
|
||||
s.client = c
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user