diff --git a/pkg/kubelet/kubelet_server_test.go b/pkg/kubelet/kubelet_server_test.go index 7166c58f663..0a93aca93a4 100644 --- a/pkg/kubelet/kubelet_server_test.go +++ b/pkg/kubelet/kubelet_server_test.go @@ -2,6 +2,7 @@ package kubelet import ( "bytes" + "encoding/json" "fmt" "io/ioutil" "net/http" @@ -134,3 +135,42 @@ func TestContainerInfo(t *testing.T) { t.Errorf("Expected: '%v', got: '%v'", expected, got) } } + +func TestContainerStats(t *testing.T) { + fw := makeServerTest() + expectedStats := &api.ContainerStats{ + MaxMemoryUsage: 1024001, + CpuUsagePercentiles: []api.Percentile{ + api.Percentile{50, 150}, + api.Percentile{80, 180}, + api.Percentile{90, 190}, + }, + MemoryUsagePercentiles: []api.Percentile{ + api.Percentile{50, 150}, + api.Percentile{80, 180}, + api.Percentile{90, 190}, + }, + } + expectedContainerName := "goodcontainer" + fw.fakeKubelet.statsFunc = func(name string) (*api.ContainerStats, error) { + if name != expectedContainerName { + return nil, fmt.Errorf("bad container name: %v", name) + } + return expectedStats, nil + } + + resp, err := http.Get(fw.testHttpServer.URL + fmt.Sprintf("/containerStats?container=%v", expectedContainerName)) + if err != nil { + t.Fatalf("Got error GETing: %v", err) + } + defer resp.Body.Close() + var receivedStats api.ContainerStats + decoder := json.NewDecoder(resp.Body) + err = decoder.Decode(&receivedStats) + if err != nil { + t.Fatalf("received invalid json data: %v", err) + } + if !reflect.DeepEqual(&receivedStats, expectedStats) { + t.Errorf("received wrong data: %#v", receivedStats) + } +}