Merge pull request #615 from vmarmol/default

Return all stats by default.
This commit is contained in:
Rohit Jnagal 2015-03-25 13:33:24 -07:00
commit fd9f7e0e82
4 changed files with 21 additions and 7 deletions

View File

@ -164,11 +164,7 @@ func streamResults(results chan *events.Event, w http.ResponseWriter, r *http.Re
} }
func getContainerInfoRequest(body io.ReadCloser) (*info.ContainerInfoRequest, error) { func getContainerInfoRequest(body io.ReadCloser) (*info.ContainerInfoRequest, error) {
var query info.ContainerInfoRequest query := info.DefaultContainerInfoRequest()
// Default stats and samples is 64.
query.NumStats = 64
decoder := json.NewDecoder(body) decoder := json.NewDecoder(body)
err := decoder.Decode(&query) err := decoder.Decode(&query)
if err != nil && err != io.EOF { if err != nil && err != io.EOF {

View File

@ -81,7 +81,9 @@ func (self ContainerReferenceSlice) Less(i, j int) bool { return self[i].Name <
// ContainerInfoQuery is used when users check a container info from the REST api. // ContainerInfoQuery is used when users check a container info from the REST api.
// It specifies how much data users want to get about a container // It specifies how much data users want to get about a container
type ContainerInfoRequest struct { type ContainerInfoRequest struct {
// Max number of stats to return. // Max number of stats to return. Specify -1 for all stats currently available.
// If start and end time are specified this limit is ignored.
// Default: 60
NumStats int `json:"num_stats,omitempty"` NumStats int `json:"num_stats,omitempty"`
// Start time for which to query information. // Start time for which to query information.
@ -93,6 +95,13 @@ type ContainerInfoRequest struct {
End time.Time `json:"end,omitempty"` End time.Time `json:"end,omitempty"`
} }
// Returns a ContainerInfoRequest with all default values specified.
func DefaultContainerInfoRequest() ContainerInfoRequest {
return ContainerInfoRequest{
NumStats: 60,
}
}
func (self *ContainerInfoRequest) Equals(other ContainerInfoRequest) bool { func (self *ContainerInfoRequest) Equals(other ContainerInfoRequest) bool {
return self.NumStats == other.NumStats && return self.NumStats == other.NumStats &&
self.Start.Equal(other.Start) && self.Start.Equal(other.Start) &&

View File

@ -47,13 +47,19 @@ func (self *StatsBuffer) Add(item *info.ContainerStats) {
} }
// Returns up to maxResult elements in the specified time period (inclusive). // Returns up to maxResult elements in the specified time period (inclusive).
// Results are from first to last. maxResults of -1 means no limit. // Results are from first to last. maxResults of -1 means no limit. When first
// and last are specified, maxResults is ignored.
func (self *StatsBuffer) InTimeRange(start, end time.Time, maxResults int) []*info.ContainerStats { func (self *StatsBuffer) InTimeRange(start, end time.Time, maxResults int) []*info.ContainerStats {
// No stats, return empty. // No stats, return empty.
if self.size == 0 { if self.size == 0 {
return []*info.ContainerStats{} return []*info.ContainerStats{}
} }
// Return all results in a time range if specified.
if !start.IsZero() && !end.IsZero() {
maxResults = -1
}
// NOTE: Since we store the elments in descending timestamp order "start" will // NOTE: Since we store the elments in descending timestamp order "start" will
// be a higher index than "end". // be a higher index than "end".

View File

@ -161,6 +161,9 @@ func TestInTimeRange(t *testing.T) {
expectElements(t, sb.InTimeRange(createTime(3), createTime(5), 10), []int32{3, 4}) expectElements(t, sb.InTimeRange(createTime(3), createTime(5), 10), []int32{3, 4})
assert.Empty(sb.InTimeRange(createTime(5), createTime(5), 10)) assert.Empty(sb.InTimeRange(createTime(5), createTime(5), 10))
// Start and end time ignores maxResults.
expectElements(t, sb.InTimeRange(createTime(1), createTime(5), 1), []int32{1, 2, 3, 4})
// No start time. // No start time.
expectElements(t, sb.InTimeRange(empty, createTime(5), 10), []int32{1, 2, 3, 4}) expectElements(t, sb.InTimeRange(empty, createTime(5), 10), []int32{1, 2, 3, 4})
expectElements(t, sb.InTimeRange(empty, createTime(4), 10), []int32{1, 2, 3, 4}) expectElements(t, sb.InTimeRange(empty, createTime(4), 10), []int32{1, 2, 3, 4})