# How to use Values method of gauge Package

Best Gauge code snippet using gauge.Values

gauge.go

Source:gauge.go

`...133 return result134 }),135 }136}137// GetMetricWithLabelValues returns the Gauge for the given slice of label138// values (same order as the VariableLabels in Desc). If that combination of139// label values is accessed for the first time, a new Gauge is created.140//141// It is possible to call this method without using the returned Gauge to only142// create the new Gauge but leave it at its starting value 0. See also the143// SummaryVec example.144//145// Keeping the Gauge for later use is possible (and should be considered if146// performance is critical), but keep in mind that Reset, DeleteLabelValues and147// Delete can be used to delete the Gauge from the GaugeVec. In that case, the148// Gauge will still exist, but it will not be exported anymore, even if a149// Gauge with the same label values is created later. See also the CounterVec150// example.151//152// An error is returned if the number of label values is not the same as the153// number of VariableLabels in Desc (minus any curried labels).154//155// Note that for more than one label value, this method is prone to mistakes156// caused by an incorrect order of arguments. Consider GetMetricWith(Labels) as157// an alternative to avoid that type of mistake. For higher label numbers, the158// latter has a much more readable (albeit more verbose) syntax, but it comes159// with a performance overhead (for creating and processing the Labels map).160func (v *GaugeVec) GetMetricWithLabelValues(lvs ...string) (Gauge, error) {161 metric, err := v.metricVec.getMetricWithLabelValues(lvs...)162 if metric != nil {163 return metric.(Gauge), err164 }165 return nil, err166}167// GetMetricWith returns the Gauge for the given Labels map (the label names168// must match those of the VariableLabels in Desc). If that label map is169// accessed for the first time, a new Gauge is created. Implications of170// creating a Gauge without using it and keeping the Gauge for later use are171// the same as for GetMetricWithLabelValues.172//173// An error is returned if the number and names of the Labels are inconsistent174// with those of the VariableLabels in Desc (minus any curried labels).175//176// This method is used for the same purpose as177// GetMetricWithLabelValues(...string). See there for pros and cons of the two178// methods.179func (v *GaugeVec) GetMetricWith(labels Labels) (Gauge, error) {180 metric, err := v.metricVec.getMetricWith(labels)181 if metric != nil {182 return metric.(Gauge), err183 }184 return nil, err185}186// WithLabelValues works as GetMetricWithLabelValues, but panics where187// GetMetricWithLabelValues would have returned an error. Not returning an188// error allows shortcuts like189// myVec.WithLabelValues("404", "GET").Add(42)190func (v *GaugeVec) WithLabelValues(lvs ...string) Gauge {191 g, err := v.GetMetricWithLabelValues(lvs...)192 if err != nil {193 panic(err)194 }195 return g196}197// With works as GetMetricWith, but panics where GetMetricWithLabels would have198// returned an error. Not returning an error allows shortcuts like199// myVec.With(prometheus.Labels{"code": "404", "method": "GET"}).Add(42)200func (v *GaugeVec) With(labels Labels) Gauge {201 g, err := v.GetMetricWith(labels)202 if err != nil {203 panic(err)204 }205 return g206}207// CurryWith returns a vector curried with the provided labels, i.e. the208// returned vector has those labels pre-set for all labeled operations performed209// on it. The cardinality of the curried vector is reduced accordingly. The210// order of the remaining labels stays the same (just with the curried labels211// taken out of the sequence â which is relevant for the212// (GetMetric)WithLabelValues methods). It is possible to curry a curried213// vector, but only with labels not yet used for currying before.214//215// The metrics contained in the GaugeVec are shared between the curried and216// uncurried vectors. They are just accessed differently. Curried and uncurried217// vectors behave identically in terms of collection. Only one must be218// registered with a given registry (usually the uncurried version). The Reset219// method deletes all metrics, even if called on a curried vector.220func (v *GaugeVec) CurryWith(labels Labels) (*GaugeVec, error) {221 vec, err := v.curryWith(labels)222 if vec != nil {223 return &GaugeVec{vec}, err224 }225 return nil, err226}...`

metrics.go

Source:metrics.go

`...45}46// PrometheusMetrics returns Metrics build using Prometheus client library.47// Optionally, labels can be provided along with their values ("foo",48// "fooValue").49func PrometheusMetrics(namespace string, labelsAndValues ...string) *Metrics {50 labels := []string{}51 for i := 0; i < len(labelsAndValues); i += 2 {52 labels = append(labels, labelsAndValues[i])53 }54 return &Metrics{55 Height: prometheus.NewGaugeFrom(stdprometheus.GaugeOpts{56 Namespace: namespace,57 Subsystem: MetricsSubsystem,58 Name: "height",59 Help: "Height of the chain.",60 }, labels).With(labelsAndValues...),61 Rounds: prometheus.NewGaugeFrom(stdprometheus.GaugeOpts{62 Namespace: namespace,63 Subsystem: MetricsSubsystem,64 Name: "rounds",65 Help: "Number of rounds.",66 }, labels).With(labelsAndValues...),67 Validators: prometheus.NewGaugeFrom(stdprometheus.GaugeOpts{68 Namespace: namespace,69 Subsystem: MetricsSubsystem,70 Name: "validators",71 Help: "Number of validators.",72 }, labels).With(labelsAndValues...),73 ValidatorsPower: prometheus.NewGaugeFrom(stdprometheus.GaugeOpts{74 Namespace: namespace,75 Subsystem: MetricsSubsystem,76 Name: "validators_power",77 Help: "Total power of all validators.",78 }, labels).With(labelsAndValues...),79 MissingValidators: prometheus.NewGaugeFrom(stdprometheus.GaugeOpts{80 Namespace: namespace,81 Subsystem: MetricsSubsystem,82 Name: "missing_validators",83 Help: "Number of validators who did not sign.",84 }, labels).With(labelsAndValues...),85 MissingValidatorsPower: prometheus.NewGaugeFrom(stdprometheus.GaugeOpts{86 Namespace: namespace,87 Subsystem: MetricsSubsystem,88 Name: "missing_validators_power",89 Help: "Total power of the missing validators.",90 }, labels).With(labelsAndValues...),91 ByzantineValidators: prometheus.NewGaugeFrom(stdprometheus.GaugeOpts{92 Namespace: namespace,93 Subsystem: MetricsSubsystem,94 Name: "byzantine_validators",95 Help: "Number of validators who tried to double sign.",96 }, labels).With(labelsAndValues...),97 ByzantineValidatorsPower: prometheus.NewGaugeFrom(stdprometheus.GaugeOpts{98 Namespace: namespace,99 Subsystem: MetricsSubsystem,100 Name: "byzantine_validators_power",101 Help: "Total power of the byzantine validators.",102 }, labels).With(labelsAndValues...),103 BlockIntervalSeconds: prometheus.NewGaugeFrom(stdprometheus.GaugeOpts{104 Namespace: namespace,105 Subsystem: MetricsSubsystem,106 Name: "block_interval_seconds",107 Help: "Time between this and the last block.",108 }, labels).With(labelsAndValues...),109 NumTxs: prometheus.NewGaugeFrom(stdprometheus.GaugeOpts{110 Namespace: namespace,111 Subsystem: MetricsSubsystem,112 Name: "num_txs",113 Help: "Number of transactions.",114 }, labels).With(labelsAndValues...),115 BlockSizeBytes: prometheus.NewGaugeFrom(stdprometheus.GaugeOpts{116 Namespace: namespace,117 Subsystem: MetricsSubsystem,118 Name: "block_size_bytes",119 Help: "Size of the block.",120 }, labels).With(labelsAndValues...),121 TotalTxs: prometheus.NewGaugeFrom(stdprometheus.GaugeOpts{122 Namespace: namespace,123 Subsystem: MetricsSubsystem,124 Name: "total_txs",125 Help: "Total number of transactions.",126 }, labels).With(labelsAndValues...),127 CommittedHeight: prometheus.NewGaugeFrom(stdprometheus.GaugeOpts{128 Namespace: namespace,129 Subsystem: MetricsSubsystem,130 Name: "latest_block_height",131 Help: "The latest block height.",132 }, labels).With(labelsAndValues...),133 FastSyncing: prometheus.NewGaugeFrom(stdprometheus.GaugeOpts{134 Namespace: namespace,135 Subsystem: MetricsSubsystem,136 Name: "fast_syncing",137 Help: "Whether or not a node is fast syncing. 1 if yes, 0 if no.",138 }, labels).With(labelsAndValues...),139 BlockParts: prometheus.NewCounterFrom(stdprometheus.CounterOpts{140 Namespace: namespace,141 Subsystem: MetricsSubsystem,142 Name: "block_parts",143 Help: "Number of blockparts transmitted by peer.",144 }, append(labels, "peer_id")).With(labelsAndValues...),145 }146}147// NopMetrics returns no-op Metrics.148func NopMetrics() *Metrics {149 return &Metrics{150 Height: discard.NewGauge(),151 Rounds: discard.NewGauge(),152 Validators: discard.NewGauge(),153 ValidatorsPower: discard.NewGauge(),154 MissingValidators: discard.NewGauge(),155 MissingValidatorsPower: discard.NewGauge(),156 ByzantineValidators: discard.NewGauge(),157 ByzantineValidatorsPower: discard.NewGauge(),158 BlockIntervalSeconds: discard.NewGauge(),...`

Values

Using AI Code Generation

`1import (2func main() {3 g := promauto.NewGauge(prometheus.GaugeOpts{4 })5 g.Set(42.47)6 fmt.Println(g.Value())7 g.Inc()8 g.Dec()9 g.Add(5)10 http.Handle("/metrics", promhttp.Handler())11 log.Fatal(http.ListenAndServe(":2112", nil))12}`

Values

Using AI Code Generation

`1import (2var (3 gauge = promauto.NewGauge(prometheus.GaugeOpts{4 })5func main() {6 http.Handle("/metrics", promhttp.Handler())7 go func() {8 for {9 gauge.Inc()10 }11 }()12 log.Fatal(http.ListenAndServe(":8080", nil))13}14import (15var (16 gauge = promauto.NewGaugeVec(prometheus.GaugeOpts{17 }, []string{"label"})18func main() {19 http.Handle("/metrics", promhttp.Handler())20 go func() {21 for {22 gauge.With(prometheus.Labels{"label": "value"}).Inc()23 }24 }()25 log.Fatal(http.ListenAndServe(":8080", nil))26}27import (28var (29 gauge = promauto.NewGauge(prometheus.GaugeOpts{30 })31func main() {32 http.Handle("/metrics", promhttp.Handler())33 go func() {34 for {35 gauge.Set(42)36 }37 }()38 log.Fatal(http.ListenAndServe(":8080", nil))39}40import (`

Values

Using AI Code Generation

`1import (2func main() {3 g := promauto.NewGauge(prometheus.GaugeOpts{4 })5 g.Set(100)6 g.Inc()7 g.Dec()8 g.Add(10)9 g.Sub(5)10 fmt.Println("Value of gauge1 is:", g.Value())`

Values

Using AI Code Generation

`1import (2func main() {3 http.Handle("/metrics", promhttp.Handler())4 go func() {5 http.ListenAndServe(":8080", nil)6 }()7 g := promauto.NewGauge(prometheus.GaugeOpts{8 })9 g.Set(42)10 g.Add(10)11 g.Sub(10)12 fmt.Println(g.Value())13 select {}14}15import (16func main() {17 http.Handle("/metrics", promhttp.Handler())18 go func() {19 http.ListenAndServe(":8080", nil)20 }()21 g := promauto.NewGauge(prometheus.GaugeOpts{22 })23 g.Set(42)24 g.Add(10)`

Values

Using AI Code Generation

`1import (2func main() {3 g := prometheus.NewGauge(prometheus.GaugeOpts{4 })5 g.Set(4)6 fmt.Println(g.Values())7}8import (9func main() {10 g := prometheus.NewGauge(prometheus.GaugeOpts{11 })12 g.Inc()13 fmt.Println(g.Values())14}15import (16func main() {17 g := prometheus.NewGauge(prometheus.GaugeOpts{18 })19 g.Dec()20 fmt.Println(g.Values())21}22import (23func main() {24 g := prometheus.NewGauge(prometheus.GaugeOpts{25 })26 g.Add(3)27 fmt.Println(g.Values())28}29import (30func main() {31 g := prometheus.NewGauge(prometheus.GaugeOpts{32 })33 g.Sub(2)34 fmt.Println(g.Values())35}`

Values

Using AI Code Generation

`1import (2func main() {3 g := metrics.NewGauge()4 metrics.Register("my.gauge", g)5 g.Update(1)6 fmt.Println(g.Value())7 time.Sleep(10 * time.Second)8 metrics.Unregister("my.gauge")9 fmt.Println(g.Value())10}11import (12func main() {13 g := metrics.NewGauge()14 metrics.Register("my.gauge", g)15 g.Update(1)16 fmt.Println(g.Value())17 time.Sleep(10 * time.Second)18 fmt.Println(g.Value())19}20import (21func main() {22 g := metrics.NewGauge()23 metrics.Register("my.gauge", g)24 g.Update(1)25 fmt.Println(g.Value())26 time.Sleep(10 * time.Second)27 metrics.Unregister("my.gauge")28 fmt.Println(g.Value())29 time.Sleep(10 * time.Second)30 fmt.Println(g.Value())31}`

Values

Using AI Code Generation

`1import "fmt"2func main() {3 g1.setValues(10, 20)4 fmt.Println(g1.Values())5}6import "fmt"7type gauge struct {8}9func (g gauge) setValues(low int, high int) {10}11func (g gauge) setValues(low int) {12}13func main() {14 g1.setValues(10, 20)15 fmt.Println(g1.low)16 fmt.Println(g1.high)17}18import "fmt"19type gauge struct {20}21func (g gauge) setValues(low int, high int) {22}23func (g gauge) setValues(low int) {24}25func main() {26 g1.setValues(10, 20)27 fmt.Println(g1.low)28 fmt.Println(g1.high)29}`

Values

Using AI Code Generation

`1import "fmt"2func main() {3 var g1 = gauge{5, 10}4 fmt.Println(g1.Values())5}6import "fmt"7type gauge struct {8}9func (g gauge) Values() []int {10 return []int{g.x, g.y}11}12func main() {13 var g1 = gauge{5, 10}14 fmt.Println(g1.Values())15}`

Values

Using AI Code Generation

`1import (2func main() {3g.SetValue(100)4g.SetMax(200)5fmt.Println(g.Values())6}7import (8func main() {9g.SetValue(100)10g.SetMax(200)11fmt.Println(g.Values())12}13import (14func main() {15g.SetValue(100)16g.SetMax(200)17fmt.Println(g.Values())18}19import (20func main() {21g.SetValue(100)22g.SetMax(200)23fmt.Println(g.Values())24}25import (26func main() {27g.SetValue(100)28g.SetMax(200)29fmt.Println(g.Values())30}31import (32func main() {33g.SetValue(100)34g.SetMax(200)35fmt.Println(g.Values())36}37import (38func main() {39g.SetValue(100)40g.SetMax(200)41fmt.Println(g.Values())42}43import (44func main() {45g.SetValue(100)46g.SetMax(200)47fmt.Println(g.Values())48}49import (50func main() {51g.SetValue(100)52g.SetMax(200)53fmt.Println(g.Values())54}55import (56func main() {57g.SetValue(100)58g.SetMax(200)59fmt.Println(g.Values())60}`

Values

Using AI Code Generation

`1import "fmt"2func main() {3 fmt.Println("Gauge 1:")4 g1 := Gauge{"Gauge1", 1, 2, 3, 4, 5, 6, 7, 8, 9, 10}5 fmt.Println("Values: ", g1.Values())6}`

## Automation Testing Tutorials

Learn to execute automation testing from scratch with LambdaTest Learning Hub. Right from setting up the prerequisites to run your first automation test, to following best practices and diving deeper into advanced test scenarios. LambdaTest Learning Hubs compile a list of step-by-step guides to help you be proficient with different test automation frameworks i.e. Selenium, Cypress, TestNG etc.