mirror-to-gitea/vendor/github.com/onsi/ginkgo/internal/leafnodes/measure_node.go
vendor/github.com/onsi/ginkgo/internal/leafnodes/measure_node.goRaw
1package leafnodes
2
3import (
4 "reflect"
5
6 "github.com/onsi/ginkgo/internal/failer"
7 "github.com/onsi/ginkgo/types"
8)
9
10type MeasureNode struct {
11 runner *runner
12
13 text string
14 flag types.FlagType
15 samples int
16 benchmarker *benchmarker
17}
18
19func NewMeasureNode(text string, body interface{}, flag types.FlagType, codeLocation types.CodeLocation, samples int, failer *failer.Failer, componentIndex int) *MeasureNode {
20 benchmarker := newBenchmarker()
21
22 wrappedBody := func() {
23 reflect.ValueOf(body).Call([]reflect.Value{reflect.ValueOf(benchmarker)})
24 }
25
26 return &MeasureNode{
27 runner: newRunner(wrappedBody, codeLocation, 0, failer, types.SpecComponentTypeMeasure, componentIndex),
28
29 text: text,
30 flag: flag,
31 samples: samples,
32 benchmarker: benchmarker,
33 }
34}
35
36func (node *MeasureNode) Run() (outcome types.SpecState, failure types.SpecFailure) {
37 return node.runner.run()
38}
39
40func (node *MeasureNode) MeasurementsReport() map[string]*types.SpecMeasurement {
41 return node.benchmarker.measurementsReport()
42}
43
44func (node *MeasureNode) Type() types.SpecComponentType {
45 return types.SpecComponentTypeMeasure
46}
47
48func (node *MeasureNode) Text() string {
49 return node.text
50}
51
52func (node *MeasureNode) Flag() types.FlagType {
53 return node.flag
54}
55
56func (node *MeasureNode) CodeLocation() types.CodeLocation {
57 return node.runner.codeLocation
58}
59
60func (node *MeasureNode) Samples() int {
61 return node.samples
62}