github.com/matrixorigin/matrixone@v1.2.0/pkg/util/metric/m_process_test.go (about) 1 // Copyright 2022 Matrix Origin 2 // 3 // Licensed under the Apache License, Version 2.0 (the "License"); 4 // you may not use this file except in compliance with the License. 5 // You may obtain a copy of the License at 6 // 7 // http://www.apache.org/licenses/LICENSE-2.0 8 // 9 // Unless required by applicable law or agreed to in writing, software 10 // distributed under the License is distributed on an "AS IS" BASIS, 11 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 // See the License for the specific language governing permissions and 13 // limitations under the License. 14 15 package metric 16 17 import ( 18 "runtime" 19 "testing" 20 21 "github.com/prashantv/gostub" 22 prom "github.com/prometheus/client_golang/prometheus" 23 . "github.com/smartystreets/goconvey/convey" 24 ) 25 26 func TestProcessCollectorNormal(t *testing.T) { 27 Convey("collect proc cpu and mem succ", t, func() { 28 reg := prom.NewRegistry() 29 reg.MustRegister(newBatchStatsCollector(procCpuPercent{}, procMemUsage{}, procCpuTotal{})) 30 31 mf, err := reg.Gather() 32 So(err, ShouldBeNil) 33 So(len(mf), ShouldEqual, 3) 34 }) 35 } 36 37 func TestProcessCollectorFD(t *testing.T) { 38 Convey("collect fd usage succ", t, func() { 39 reg := prom.NewRegistry() 40 reg.MustRegister(newBatchStatsCollector(procOpenFds{}, procFdsLimit{})) 41 42 mf, err := reg.Gather() 43 So(err, ShouldBeNil) 44 if runtime.GOOS == "linux" { // MacOS not implemented yet 45 So(len(mf), ShouldEqual, 2) 46 } 47 }) 48 } 49 50 func TestProcessError(t *testing.T) { 51 stubs := gostub.StubFunc(&getProcess, nil) 52 defer stubs.Reset() 53 Convey("collect error", t, func() { 54 reg := prom.NewRegistry() 55 reg.MustRegister(newBatchStatsCollector(procCpuPercent{}, procMemUsage{}, procOpenFds{}, procFdsLimit{}, procCpuTotal{})) 56 57 mf, err := reg.Gather() 58 So(err, ShouldBeNil) 59 So(len(mf), ShouldEqual, 0) 60 }) 61 }