forked from TrueCloudLab/frostfs-sdk-go
52 lines
1.1 KiB
Go
52 lines
1.1 KiB
Go
|
package tree
|
||
|
|
||
|
import (
|
||
|
"time"
|
||
|
|
||
|
"git.frostfs.info/TrueCloudLab/frostfs-sdk-go/pool"
|
||
|
)
|
||
|
|
||
|
// Statistic is metrics of the tree pool.
|
||
|
type Statistic struct {
|
||
|
methods []pool.StatusSnapshot
|
||
|
}
|
||
|
|
||
|
func (s *Statistic) Requests() (requests uint64) {
|
||
|
for _, val := range s.methods {
|
||
|
requests += val.AllRequests()
|
||
|
}
|
||
|
return requests
|
||
|
}
|
||
|
|
||
|
func (s *Statistic) AverageGetNodes() time.Duration {
|
||
|
return s.averageTime(methodGetNodes)
|
||
|
}
|
||
|
|
||
|
func (s *Statistic) AverageGetSubTree() time.Duration {
|
||
|
return s.averageTime(methodGetSubTree)
|
||
|
}
|
||
|
|
||
|
func (s *Statistic) AverageAddNode() time.Duration {
|
||
|
return s.averageTime(methodAddNode)
|
||
|
}
|
||
|
|
||
|
func (s *Statistic) AverageAddNodeByPath() time.Duration {
|
||
|
return s.averageTime(methodAddNodeByPath)
|
||
|
}
|
||
|
|
||
|
func (s *Statistic) AverageMoveNode() time.Duration {
|
||
|
return s.averageTime(methodMoveNode)
|
||
|
}
|
||
|
|
||
|
func (s *Statistic) AverageRemoveNode() time.Duration {
|
||
|
return s.averageTime(methodRemoveNode)
|
||
|
}
|
||
|
|
||
|
func (s *Statistic) averageTime(method MethodIndex) time.Duration {
|
||
|
stat := s.methods[method]
|
||
|
if stat.AllRequests() == 0 {
|
||
|
return 0
|
||
|
}
|
||
|
return time.Duration(stat.AllTime() / stat.AllRequests())
|
||
|
}
|