mirror of https://github.com/k3s-io/k3s
146 lines
3.7 KiB
Go
146 lines
3.7 KiB
Go
// Copyright 2015 The etcd Authors
|
|
//
|
|
// 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 v2store
|
|
|
|
import (
|
|
"encoding/json"
|
|
"sync/atomic"
|
|
)
|
|
|
|
const (
|
|
SetSuccess = iota
|
|
SetFail
|
|
DeleteSuccess
|
|
DeleteFail
|
|
CreateSuccess
|
|
CreateFail
|
|
UpdateSuccess
|
|
UpdateFail
|
|
CompareAndSwapSuccess
|
|
CompareAndSwapFail
|
|
GetSuccess
|
|
GetFail
|
|
ExpireCount
|
|
CompareAndDeleteSuccess
|
|
CompareAndDeleteFail
|
|
)
|
|
|
|
type Stats struct {
|
|
// Number of get requests
|
|
|
|
GetSuccess uint64 `json:"getsSuccess"`
|
|
GetFail uint64 `json:"getsFail"`
|
|
|
|
// Number of sets requests
|
|
|
|
SetSuccess uint64 `json:"setsSuccess"`
|
|
SetFail uint64 `json:"setsFail"`
|
|
|
|
// Number of delete requests
|
|
|
|
DeleteSuccess uint64 `json:"deleteSuccess"`
|
|
DeleteFail uint64 `json:"deleteFail"`
|
|
|
|
// Number of update requests
|
|
|
|
UpdateSuccess uint64 `json:"updateSuccess"`
|
|
UpdateFail uint64 `json:"updateFail"`
|
|
|
|
// Number of create requests
|
|
|
|
CreateSuccess uint64 `json:"createSuccess"`
|
|
CreateFail uint64 `json:"createFail"`
|
|
|
|
// Number of testAndSet requests
|
|
|
|
CompareAndSwapSuccess uint64 `json:"compareAndSwapSuccess"`
|
|
CompareAndSwapFail uint64 `json:"compareAndSwapFail"`
|
|
|
|
// Number of compareAndDelete requests
|
|
|
|
CompareAndDeleteSuccess uint64 `json:"compareAndDeleteSuccess"`
|
|
CompareAndDeleteFail uint64 `json:"compareAndDeleteFail"`
|
|
|
|
ExpireCount uint64 `json:"expireCount"`
|
|
|
|
Watchers uint64 `json:"watchers"`
|
|
}
|
|
|
|
func newStats() *Stats {
|
|
s := new(Stats)
|
|
return s
|
|
}
|
|
|
|
func (s *Stats) clone() *Stats {
|
|
return &Stats{
|
|
GetSuccess: s.GetSuccess,
|
|
GetFail: s.GetFail,
|
|
SetSuccess: s.SetSuccess,
|
|
SetFail: s.SetFail,
|
|
DeleteSuccess: s.DeleteSuccess,
|
|
DeleteFail: s.DeleteFail,
|
|
UpdateSuccess: s.UpdateSuccess,
|
|
UpdateFail: s.UpdateFail,
|
|
CreateSuccess: s.CreateSuccess,
|
|
CreateFail: s.CreateFail,
|
|
CompareAndSwapSuccess: s.CompareAndSwapSuccess,
|
|
CompareAndSwapFail: s.CompareAndSwapFail,
|
|
CompareAndDeleteSuccess: s.CompareAndDeleteSuccess,
|
|
CompareAndDeleteFail: s.CompareAndDeleteFail,
|
|
ExpireCount: s.ExpireCount,
|
|
Watchers: s.Watchers,
|
|
}
|
|
}
|
|
|
|
func (s *Stats) toJson() []byte {
|
|
b, _ := json.Marshal(s)
|
|
return b
|
|
}
|
|
|
|
func (s *Stats) Inc(field int) {
|
|
switch field {
|
|
case SetSuccess:
|
|
atomic.AddUint64(&s.SetSuccess, 1)
|
|
case SetFail:
|
|
atomic.AddUint64(&s.SetFail, 1)
|
|
case CreateSuccess:
|
|
atomic.AddUint64(&s.CreateSuccess, 1)
|
|
case CreateFail:
|
|
atomic.AddUint64(&s.CreateFail, 1)
|
|
case DeleteSuccess:
|
|
atomic.AddUint64(&s.DeleteSuccess, 1)
|
|
case DeleteFail:
|
|
atomic.AddUint64(&s.DeleteFail, 1)
|
|
case GetSuccess:
|
|
atomic.AddUint64(&s.GetSuccess, 1)
|
|
case GetFail:
|
|
atomic.AddUint64(&s.GetFail, 1)
|
|
case UpdateSuccess:
|
|
atomic.AddUint64(&s.UpdateSuccess, 1)
|
|
case UpdateFail:
|
|
atomic.AddUint64(&s.UpdateFail, 1)
|
|
case CompareAndSwapSuccess:
|
|
atomic.AddUint64(&s.CompareAndSwapSuccess, 1)
|
|
case CompareAndSwapFail:
|
|
atomic.AddUint64(&s.CompareAndSwapFail, 1)
|
|
case CompareAndDeleteSuccess:
|
|
atomic.AddUint64(&s.CompareAndDeleteSuccess, 1)
|
|
case CompareAndDeleteFail:
|
|
atomic.AddUint64(&s.CompareAndDeleteFail, 1)
|
|
case ExpireCount:
|
|
atomic.AddUint64(&s.ExpireCount, 1)
|
|
}
|
|
}
|