From de867f19afc1153972e8252cdc38bac4841e5e06 Mon Sep 17 00:00:00 2001 From: Nan Monnand Deng Date: Fri, 25 Jul 2014 19:58:54 -0400 Subject: [PATCH] use gomock --- utils/fs/mockfs/fakefile.go | 35 ++++++++++++++ utils/fs/mockfs/mockfs.go | 82 ++++++++++++--------------------- utils/procfs/schedstats_test.go | 11 +++-- 3 files changed, 72 insertions(+), 56 deletions(-) create mode 100644 utils/fs/mockfs/fakefile.go diff --git a/utils/fs/mockfs/fakefile.go b/utils/fs/mockfs/fakefile.go new file mode 100644 index 00000000..77a3f487 --- /dev/null +++ b/utils/fs/mockfs/fakefile.go @@ -0,0 +1,35 @@ +// Copyright 2014 Google Inc. All Rights Reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package mockfs + +import "bytes" + +type FakeFile struct { + bytes.Buffer + Name string +} + +func (self *FakeFile) Close() error { + return nil +} + +func AddTextFile(mockfs *MockFileSystem, name, content string) *FakeFile { + f := &FakeFile{ + Name: name, + Buffer: *bytes.NewBufferString(content), + } + mockfs.EXPECT().Open(name).Return(f, nil).AnyTimes() + return f +} diff --git a/utils/fs/mockfs/mockfs.go b/utils/fs/mockfs/mockfs.go index a890d1d6..33c9b80e 100644 --- a/utils/fs/mockfs/mockfs.go +++ b/utils/fs/mockfs/mockfs.go @@ -1,65 +1,41 @@ -// Copyright 2014 Google Inc. All Rights Reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// Automatically generated by MockGen. DO NOT EDIT! +// Source: github.com/google/cadvisor/utils/fs (interfaces: FileSystem) package mockfs import ( - "bytes" - "fmt" - - "github.com/google/cadvisor/utils/fs" - "github.com/stretchr/testify/mock" + gomock "code.google.com/p/gomock/gomock" + fs "github.com/google/cadvisor/utils/fs" ) -type MockFile struct { - mock.Mock - bytes.Buffer - checkClose bool -} - -func (self *MockFile) CheckClose() *MockFile { - self.checkClose = true - return self -} - -func (self *MockFile) Close() error { - if self.checkClose { - args := self.Called() - return args.Error(0) - } - return nil -} - +// Mock of FileSystem interface type MockFileSystem struct { - mock.Mock - files map[string]*MockFile + ctrl *gomock.Controller + recorder *_MockFileSystemRecorder } -func (self *MockFileSystem) AddTextFile(name, content string) *MockFile { - if self.files == nil { - self.files = make(map[string]*MockFile, 4) - } - f := &MockFile{ - Buffer: *bytes.NewBufferString(content), - } - self.files[name] = f - return f +// Recorder for MockFileSystem (not exported) +type _MockFileSystemRecorder struct { + mock *MockFileSystem } -func (self *MockFileSystem) Open(name string) (fs.File, error) { - if f, ok := self.files[name]; ok { - return f, nil - } - return nil, fmt.Errorf("cannot open file %v", name) +func NewMockFileSystem(ctrl *gomock.Controller) *MockFileSystem { + mock := &MockFileSystem{ctrl: ctrl} + mock.recorder = &_MockFileSystemRecorder{mock} + return mock +} + +func (_m *MockFileSystem) EXPECT() *_MockFileSystemRecorder { + return _m.recorder +} + +func (_m *MockFileSystem) Open(_param0 string) (fs.File, error) { + ret := _m.ctrl.Call(_m, "Open", _param0) + ret0, _ := ret[0].(fs.File) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +func (_mr *_MockFileSystemRecorder) Open(arg0 interface{}) *gomock.Call { + return _mr.mock.ctrl.RecordCall(_mr.mock, "Open", arg0) } diff --git a/utils/procfs/schedstats_test.go b/utils/procfs/schedstats_test.go index 6eb24876..eae182ef 100644 --- a/utils/procfs/schedstats_test.go +++ b/utils/procfs/schedstats_test.go @@ -19,13 +19,18 @@ import ( "reflect" "testing" + "code.google.com/p/gomock/gomock" + "github.com/google/cadvisor/utils/fs" "github.com/google/cadvisor/utils/fs/mockfs" ) func TestReadProcessSchedStat(t *testing.T) { - mockfs := &mockfs.MockFileSystem{} + mockCtrl := gomock.NewController(t) + defer mockCtrl.Finish() + + mfs := mockfs.NewMockFileSystem(mockCtrl) pid := 10 @@ -38,8 +43,8 @@ func TestReadProcessSchedStat(t *testing.T) { path := fmt.Sprintf("/proc/%v/schedstat", pid) content := fmt.Sprintf("%v %v %v\n", stat.Running, stat.RunWait, stat.NumTimeSlices) - mockfs.AddTextFile(path, content) - fs.ChangeFileSystem(mockfs) + mockfs.AddTextFile(mfs, path, content) + fs.ChangeFileSystem(mfs) receivedStat := &ProcessSchedStat{} err := receivedStat.Add(pid)