From 08186b629743dc82cae4c8c6215f44f718fe8b4b Mon Sep 17 00:00:00 2001 From: Victor Marmol Date: Thu, 23 Apr 2015 11:12:09 -0700 Subject: [PATCH] Rename StatsBuffer to TimedStore in utils --- storage/memory/memory.go | 5 +++-- .../stats_buffer.go => utils/timed_store.go | 18 +++++++++--------- .../timed_store_test.go | 14 +++++++------- 3 files changed, 19 insertions(+), 18 deletions(-) rename storage/memory/stats_buffer.go => utils/timed_store.go (89%) rename storage/memory/stats_buffer_test.go => utils/timed_store_test.go (95%) diff --git a/storage/memory/memory.go b/storage/memory/memory.go index 7e7e7c94..a0a8f1cf 100644 --- a/storage/memory/memory.go +++ b/storage/memory/memory.go @@ -22,13 +22,14 @@ import ( "github.com/golang/glog" info "github.com/google/cadvisor/info/v1" "github.com/google/cadvisor/storage" + "github.com/google/cadvisor/utils" ) // TODO(vmarmol): See about refactoring this class, we have an unecessary redirection of containerStorage and InMemoryStorage. // containerStorage is used to store per-container information type containerStorage struct { ref info.ContainerReference - recentStats *StatsBuffer + recentStats *utils.TimedStore maxAge time.Duration lock sync.RWMutex } @@ -51,7 +52,7 @@ func (self *containerStorage) RecentStats(start, end time.Time, maxStats int) ([ func newContainerStore(ref info.ContainerReference, maxAge time.Duration) *containerStorage { return &containerStorage{ ref: ref, - recentStats: NewStatsBuffer(maxAge), + recentStats: utils.NewTimedStore(maxAge), maxAge: maxAge, } } diff --git a/storage/memory/stats_buffer.go b/utils/timed_store.go similarity index 89% rename from storage/memory/stats_buffer.go rename to utils/timed_store.go index 4fee8911..8582a3e2 100644 --- a/storage/memory/stats_buffer.go +++ b/utils/timed_store.go @@ -12,7 +12,7 @@ // See the License for the specific language governing permissions and // limitations under the License. -package memory +package utils import ( "sort" @@ -22,21 +22,21 @@ import ( ) // A time-based buffer for ContainerStats. Holds information for a specific time period. -type StatsBuffer struct { +type TimedStore struct { buffer []*info.ContainerStats age time.Duration } -// Returns a new thread-compatible StatsBuffer. -func NewStatsBuffer(age time.Duration) *StatsBuffer { - return &StatsBuffer{ +// Returns a new thread-compatible TimedStore. +func NewTimedStore(age time.Duration) *TimedStore { + return &TimedStore{ buffer: make([]*info.ContainerStats, 0), age: age, } } // Adds an element to the start of the buffer (removing one from the end if necessary). -func (self *StatsBuffer) Add(item *info.ContainerStats) { +func (self *TimedStore) Add(item *info.ContainerStats) { // Remove any elements before the eviction time. evictTime := item.Timestamp.Add(-self.age) index := sort.Search(len(self.buffer), func(index int) bool { @@ -53,7 +53,7 @@ func (self *StatsBuffer) Add(item *info.ContainerStats) { // Returns up to maxResult elements in the specified time period (inclusive). // 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 *TimedStore) InTimeRange(start, end time.Time, maxResults int) []*info.ContainerStats { // No stats, return empty. if len(self.buffer) == 0 { return []*info.ContainerStats{} @@ -117,10 +117,10 @@ func (self *StatsBuffer) InTimeRange(start, end time.Time, maxResults int) []*in } // Gets the element at the specified index. Note that elements are output in LIFO order. -func (self *StatsBuffer) Get(index int) *info.ContainerStats { +func (self *TimedStore) Get(index int) *info.ContainerStats { return self.buffer[len(self.buffer)-index-1] } -func (self *StatsBuffer) Size() int { +func (self *TimedStore) Size() int { return len(self.buffer) } diff --git a/storage/memory/stats_buffer_test.go b/utils/timed_store_test.go similarity index 95% rename from storage/memory/stats_buffer_test.go rename to utils/timed_store_test.go index 065e244f..2a7aa6fc 100644 --- a/storage/memory/stats_buffer_test.go +++ b/utils/timed_store_test.go @@ -12,7 +12,7 @@ // See the License for the specific language governing permissions and // limitations under the License. -package memory +package utils import ( "strconv" @@ -38,13 +38,13 @@ func createStats(id int32) *info.ContainerStats { } } -func expectSize(t *testing.T, sb *StatsBuffer, expectedSize int) { +func expectSize(t *testing.T, sb *TimedStore, expectedSize int) { if sb.Size() != expectedSize { t.Errorf("Expected size %v, got %v", expectedSize, sb.Size()) } } -func expectAllElements(t *testing.T, sb *StatsBuffer, expected []int32) { +func expectAllElements(t *testing.T, sb *TimedStore, expected []int32) { size := sb.Size() els := make([]*info.ContainerStats, size) for i := 0; i < size; i++ { @@ -81,7 +81,7 @@ func expectElement(t *testing.T, stat *info.ContainerStats, expected int32) { } func TestAdd(t *testing.T) { - sb := NewStatsBuffer(5 * time.Second) + sb := NewTimedStore(5 * time.Second) // Add 1. sb.Add(createStats(0)) @@ -110,7 +110,7 @@ func TestAdd(t *testing.T) { } func TestGet(t *testing.T) { - sb := NewStatsBuffer(5 * time.Second) + sb := NewTimedStore(5 * time.Second) sb.Add(createStats(1)) sb.Add(createStats(2)) sb.Add(createStats(3)) @@ -122,7 +122,7 @@ func TestGet(t *testing.T) { } func TestInTimeRange(t *testing.T) { - sb := NewStatsBuffer(5 * time.Second) + sb := NewTimedStore(5 * time.Second) assert := assert.New(t) var empty time.Time @@ -199,7 +199,7 @@ func TestInTimeRange(t *testing.T) { } func TestInTimeRangeWithLimit(t *testing.T) { - sb := NewStatsBuffer(5 * time.Second) + sb := NewTimedStore(5 * time.Second) sb.Add(createStats(1)) sb.Add(createStats(2)) sb.Add(createStats(3))