X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?a=blobdiff_plain;f=pkg%2Fxapp%2Fmetrics_test.go;h=5c3ae29a142420fbd782eb4d40ebaf23bd6fa8f0;hb=43c2cf01ce523b9c9c05e6defc450b9454cd2a7c;hp=aad90b194db1a7fa3e94a2f952f7f653c95ba550;hpb=8083bb18456d777190a9ebed44a90c91b0bb29fe;p=ric-plt%2Fxapp-frame.git diff --git a/pkg/xapp/metrics_test.go b/pkg/xapp/metrics_test.go index aad90b1..5c3ae29 100755 --- a/pkg/xapp/metrics_test.go +++ b/pkg/xapp/metrics_test.go @@ -119,18 +119,83 @@ func TestMetricLabeledCounter(t *testing.T) { } -func TestMetricLabeledCounterMismatch(t *testing.T) { +func TestMetricLabeledCounterMissmatch(t *testing.T) { Metric.RegisterLabeledCounter( CounterOpts{Name: "counter1", Help: "counter1"}, []string{"name", "event"}, []string{"name1", "event1"}, - "SUBSYSTEMLERR") + "SUBSYSTEMLERRMISSMATCH") + ret := Metric.RegisterLabeledCounter( + CounterOpts{Name: "counter1", Help: "counter1"}, + []string{"name", "eventmiss"}, + []string{"name1", "event1"}, + "SUBSYSTEMLERRMISSMATCH") + + if ret != nil { + t.Errorf("Returned counter even its labels are mismatching") + } + + ret = Metric.RegisterLabeledCounter( + CounterOpts{Name: "counter1", Help: "counter1"}, + []string{"name"}, + []string{"name1"}, + "SUBSYSTEMLERRMISSMATCH") + + if ret != nil { + t.Errorf("Returned counter even its labels are mismatching") + } + +} + +func TestMetricLabeledCounterWrongOrder(t *testing.T) { Metric.RegisterLabeledCounter( CounterOpts{Name: "counter1", Help: "counter1"}, - []string{"name", "eventmismatch"}, + []string{"name", "event"}, + []string{"name1", "event1"}, + "SUBSYSTEMLERRWRONGORDER") + + ret := Metric.RegisterLabeledCounter( + CounterOpts{Name: "counter1", Help: "counter1"}, + []string{"event", "name"}, []string{"name1", "event1"}, - "SUBSYSTEMLERR") + "SUBSYSTEMLERRWRONGORDER") + + if ret != nil { + t.Errorf("Returned counter even its labels order is wrong") + } +} + +func TestMetricLabeledCounterCounterNameExists(t *testing.T) { + Metric.RegisterCounter( + CounterOpts{Name: "counter1", Help: "counter1"}, + "SUBSYSTEMLERRNAMEEXISTS") + + ret := Metric.RegisterLabeledCounter( + CounterOpts{Name: "counter1", Help: "counter1"}, + []string{"name", "event"}, + []string{"name1", "event1"}, + "SUBSYSTEMLERRNAMEEXISTS") + + if ret != nil { + t.Errorf("Returned labeled counter even its name conflicts with existing counter name") + } +} + +func TestMetricCounterLabeledCounterNameExists(t *testing.T) { + Metric.RegisterLabeledCounter( + CounterOpts{Name: "counter2", Help: "counter2"}, + []string{"name", "event"}, + []string{"name1", "event1"}, + "SUBSYSTEMLERRNAMEEXISTS") + + ret := Metric.RegisterCounter( + CounterOpts{Name: "counter2", Help: "counter2"}, + "SUBSYSTEMLERRNAMEEXISTS") + + if ret != nil { + t.Errorf("Returned counter even its name conflicts with existing labeled counter name") + } } func TestMetricLabeledCounterGroup(t *testing.T) { @@ -257,18 +322,84 @@ func TestMetricLabeledGauge(t *testing.T) { } -func TestMetricLabeledGaugeMismatch(t *testing.T) { +func TestMetricLabeledGaugeMissmatch(t *testing.T) { Metric.RegisterLabeledGauge( CounterOpts{Name: "gauge1", Help: "gauge1"}, []string{"name", "event"}, []string{"name1", "event1"}, - "SUBSYSTEMLERR") + "SUBSYSTEMLERRMISSMATCH") + ret := Metric.RegisterLabeledGauge( + CounterOpts{Name: "gauge1", Help: "gauge1"}, + []string{"name", "eventmiss"}, + []string{"name1", "event1"}, + "SUBSYSTEMLERRMISSMATCH") + + if ret != nil { + t.Errorf("Returned gauge even its labels are mismatching") + } + + ret = Metric.RegisterLabeledGauge( + CounterOpts{Name: "gauge1", Help: "gauge1"}, + []string{"name"}, + []string{"name1"}, + "SUBSYSTEMLERRMISSMATCH") + + if ret != nil { + t.Errorf("Returned gauge even its labels are mismatching") + } + +} + +func TestMetricLabeledGaugeWrongOrder(t *testing.T) { Metric.RegisterLabeledGauge( CounterOpts{Name: "gauge1", Help: "gauge1"}, - []string{"name", "eventmismatch"}, + []string{"name", "event"}, + []string{"name1", "event1"}, + "SUBSYSTEMLERRWRONGORDER") + + ret := Metric.RegisterLabeledGauge( + CounterOpts{Name: "gauge1", Help: "gauge1"}, + []string{"event", "name"}, + []string{"name1", "event1"}, + "SUBSYSTEMLERRWRONGORDER") + + if ret != nil { + t.Errorf("Returned gauge even its labels order is wrong") + } + +} + +func TestMetricLabeledGaugeGaugeNameExists(t *testing.T) { + Metric.RegisterGauge( + CounterOpts{Name: "gauge1", Help: "gauge1"}, + "SUBSYSTEMLERRNAMEEXISTS") + + ret := Metric.RegisterLabeledGauge( + CounterOpts{Name: "gauge1", Help: "gauge1"}, + []string{"name", "event"}, + []string{"name1", "event1"}, + "SUBSYSTEMLERRNAMEEXISTS") + + if ret != nil { + t.Errorf("Returned labeled gauge even its name conflicts with existing gauge name") + } +} + +func TestMetricGaugeLabeledGaugeNameExists(t *testing.T) { + Metric.RegisterLabeledGauge( + CounterOpts{Name: "gauge2", Help: "gauge2"}, + []string{"name", "event"}, []string{"name1", "event1"}, - "SUBSYSTEMLERR") + "SUBSYSTEMLERRNAMEEXISTS") + + ret := Metric.RegisterGauge( + CounterOpts{Name: "gauge2", Help: "gauge2"}, + "SUBSYSTEMLERRNAMEEXISTS") + + if ret != nil { + t.Errorf("Returned gauge even its name conflicts with existing labeled gauge name") + } } func TestMetricLabeledGaugeGroup(t *testing.T) { @@ -387,284 +518,90 @@ func TestMetricGroupCache(t *testing.T) { m_grp.GSet("event2_gauge1", 1) } -// ---- -// VECTORS ARE OLD WAY -// *Labeled* will do all work under the hood -// ---- - -var mCVect CounterVec -var mGVect GaugeVec - -var mCGroupVect map[string]CounterVec -var mGGroupVect map[string]GaugeVec - -func TestMetricSetup(t *testing.T) { - mCVect = Metric.RegisterCounterVec(CounterOpts{Name: "counter1", Help: "counter1"}, []string{"name", "event"}, "SUBSYSTEM0") - - mCGroupVect = Metric.RegisterCounterVecGroup( - []CounterOpts{ - {Name: "counter1", Help: "counter1"}, - }, - []string{"name", "event"}, - "SUBSYSTEM1") - - mGVect = Metric.RegisterGaugeVec(CounterOpts{Name: "gauge1", Help: "gauge1"}, []string{"name", "event"}, "SUBSYSTEM0") - - mGGroupVect = Metric.RegisterGaugeVecGroup( - []CounterOpts{ - {Name: "gauge1", Help: "gauge1"}, - }, - []string{"name", "event"}, - "SUBSYSTEM1") - - tmpCVect := Metric.RegisterCounterVec(CounterOpts{Name: "counter1", Help: "counter1"}, []string{"name", "event"}, "SUBSYSTEM0") - - if tmpCVect.Vec != mCVect.Vec { - t.Errorf("tmpCVect not same than mCVect. cache not working?") - } - - tmpGVect := Metric.RegisterGaugeVec(CounterOpts{Name: "gauge1", Help: "gauge1"}, []string{"name", "event"}, "SUBSYSTEM0") - - if tmpGVect.Vec != mGVect.Vec { - t.Errorf("tmpGVect not same than mGVect. cache not working?") - } - - Metric.RegisterCounterVec(CounterOpts{Name: "counter1", Help: "counter1"}, []string{"name", "eventMismatch"}, "SUBSYSTEM0") - Metric.RegisterGaugeVec(CounterOpts{Name: "gauge1", Help: "gauge1"}, []string{"name", "eventMismatch"}, "SUBSYSTEM0") +type registerer struct{} +func (met *registerer) RegisterCounter(opts CounterOpts) Counter { + return Metric.RegisterLabeledCounter( + opts, + []string{"host", "interface"}, + []string{"testhost", "testinterface"}, + "SUBSYSTEMAUTO") } -func TestMetricCounterVector(t *testing.T) { - // - // - c_1_1 := Metric.GetCounterFromVect([]string{"name1", "event1"}, mCVect) - c_1_1.Inc() - c_1_2 := Metric.GetCounterFromVect([]string{"name1", "event1"}, mCVect) - c_1_2.Inc() - if c_1_1 != c_1_2 { - t.Errorf("c_1_1 not same than c_1_2. cache not working?") - } - // - // - c_2_1 := Metric.GetCounterFromVect([]string{"name1", "event2"}, mCVect) - c_2_1.Inc() - c_2_2 := Metric.GetCounterFromVect([]string{"name1", "event2"}, mCVect) - c_2_2.Inc() - if c_2_1 != c_2_2 { - t.Errorf("c_2_1 not same than c_2_2. cache not working?") - } - if c_1_1 == c_2_1 { - t.Errorf("c_1_1 same than c_2_1. what?") - } - +func (met *registerer) RegisterGauge(opts CounterOpts) Gauge { + return Metric.RegisterLabeledGauge( + opts, + []string{"host", "interface"}, + []string{"testhost", "testinterface"}, + "SUBSYSTEMAUTO") } -func TestMetricCounterGroupVector(t *testing.T) { - // - // - c_grp1 := Metric.GetCounterGroupFromVects([]string{"name1", "event1"}, mCGroupVect) - if _, ok := c_grp1["counter1"]; ok == false { - t.Errorf("c_grp1 counter1 not exists") - } - c_grp1["counter1"].Inc() - - // - // - c_grp2 := Metric.GetCounterGroupFromVects([]string{"name1", "event2"}, mCGroupVect) - if _, ok := c_grp2["counter1"]; ok == false { - t.Errorf("c_grp2 counter1 not exists") - } - c_grp2["counter1"].Inc() +func TestMetricCounterAutoCGetNoReg(t *testing.T) { + m_grp := NewMetricGroupsCache() + m_grp.CGet("cautotest1") } -func TestMetricGaugeVector(t *testing.T) { - // - // - c_1_1 := Metric.GetGaugeFromVect([]string{"name1", "event1"}, mGVect) - c_1_1.Inc() - c_1_2 := Metric.GetGaugeFromVect([]string{"name1", "event1"}, mGVect) - c_1_2.Inc() - if c_1_1 != c_1_2 { - t.Errorf("c_1_1 not same than c_1_2. cache not working?") - } - // - // - c_2_1 := Metric.GetGaugeFromVect([]string{"name1", "event2"}, mGVect) - c_2_1.Inc() - c_2_2 := Metric.GetGaugeFromVect([]string{"name1", "event2"}, mGVect) - c_2_2.Inc() - if c_2_1 != c_2_2 { - t.Errorf("c_2_1 not same than c_2_2. cache not working?") - } - if c_1_1 == c_2_1 { - t.Errorf("c_1_1 same than c_2_1. what?") - } +func TestMetricCounterAutoCGetFunc(t *testing.T) { + m_grp := NewMetricGroupsCache() + m_reg := ®isterer{} + m_grp.Registerer(MetricGroupsCacheCounterRegistererFunc(m_reg.RegisterCounter), nil) + m_grp.CGet("cautotest1") } -func TestMetricGaugeGroupVector(t *testing.T) { - // - // - g_grp1 := Metric.GetGaugeGroupFromVects([]string{"name1", "event1"}, mGGroupVect) - if _, ok := g_grp1["gauge1"]; ok == false { - t.Errorf("g_grp1 gauge1 not exists") - } - g_grp1["gauge1"].Inc() - - // - // - g_grp2 := Metric.GetGaugeGroupFromVects([]string{"name1", "event2"}, mGGroupVect) - if _, ok := g_grp2["gauge1"]; ok == false { - t.Errorf("g_grp2 gauge1 not exists") - } - g_grp2["gauge1"].Inc() +func TestMetricCounterAutoCGet(t *testing.T) { + m_grp := NewMetricGroupsCacheWithRegisterers(®isterer{}, nil) + m_grp.CGet("cautotest1") } -func TestMetricCounterGroupVectorPrefix(t *testing.T) { - // - // - c_grp1 := Metric.GetCounterGroupFromVectsWithPrefix("event1_", []string{"name1", "event1"}, mCGroupVect) - if _, ok := c_grp1["event1_counter1"]; ok == false { - t.Errorf("c_grp1 event1_counter1 not exists") - } - c_grp1["event1_counter1"].Inc() - - // - // - c_grp2 := Metric.GetCounterGroupFromVectsWithPrefix("event2_", []string{"name1", "event2"}, mCGroupVect) - if _, ok := c_grp2["event2_counter1"]; ok == false { - t.Errorf("c_grp2 event2_counter1 not exists") - } - c_grp2["event2_counter1"].Inc() - - // - // +func TestMetricCounterAutoCInc(t *testing.T) { m_grp := NewMetricGroupsCache() - m_grp.CombineCounterGroups(c_grp1, c_grp2) - - // - // - if m_grp.CIs("event1_counter1") == false { - t.Errorf("m_grp event1_counter1 not exists") - } - m_grp.CInc("event1_counter1") - - // - // - if m_grp.CIs("event2_counter1") == false { - t.Errorf("m_grp event2_counter1 not exists") - } - - m_grp.CAdd("event2_counter1", 1) - m_grp.CGet("event2_counter1") + m_grp.Registerer(®isterer{}, nil) + m_grp.CInc("cautotest1") } -func TestMetricGaugeGroupVectorPrefix(t *testing.T) { - // - // - g_grp1 := Metric.GetGaugeGroupFromVectsWithPrefix("event1_", []string{"name1", "event1"}, mGGroupVect) - if _, ok := g_grp1["event1_gauge1"]; ok == false { - t.Errorf("g_grp1 event1_gauge1 not exists") - } - g_grp1["event1_gauge1"].Inc() - - // - // - g_grp2 := Metric.GetGaugeGroupFromVectsWithPrefix("event2_", []string{"name1", "event2"}, mGGroupVect) - if _, ok := g_grp2["event2_gauge1"]; ok == false { - t.Errorf("g_grp2 event2_gauge1 not exists") - } - g_grp2["event2_gauge1"].Inc() - +func TestMetricCounterAutoCAdd(t *testing.T) { m_grp := NewMetricGroupsCache() - m_grp.CombineGaugeGroups(g_grp1, g_grp2) - - // - // - if m_grp.GIs("event1_gauge1") == false { - t.Errorf("m_grp event1_gauge1 not exists") - } - m_grp.GInc("event1_gauge1") - - // - // - if m_grp.GIs("event2_gauge1") == false { - t.Errorf("m_grp event2_gauge1 not exists") - } - m_grp.GInc("event2_gauge1") - - m_grp.GGet("event2_gauge1") - m_grp.GDec("event2_gauge1") - m_grp.GSet("event2_gauge1", 1) + m_grp.Registerer(®isterer{}, nil) + m_grp.CAdd("cautotest1", float64(10)) } -func TestMetricGroupCacheWithVect(t *testing.T) { - // - // - c_grp1 := Metric.GetCounterGroupFromVects([]string{"name1", "event1"}, mCGroupVect) - if _, ok := c_grp1["counter1"]; ok == false { - t.Errorf("c_grp1 counter1 not exists") - } - c_grp1["counter1"].Inc() - - // - // - c_grp2 := Metric.GetCounterGroupFromVects([]string{"name1", "event2"}, mCGroupVect) - if _, ok := c_grp2["counter1"]; ok == false { - t.Errorf("c_grp2 counter1 not exists") - } - c_grp2["counter1"].Inc() - - // - // - g_grp1 := Metric.GetGaugeGroupFromVects([]string{"name1", "event1"}, mGGroupVect) - if _, ok := g_grp1["gauge1"]; ok == false { - t.Errorf("g_grp1 gauge1 not exists") - } - g_grp1["gauge1"].Inc() - - // - // - g_grp2 := Metric.GetGaugeGroupFromVects([]string{"name1", "event2"}, mGGroupVect) - if _, ok := g_grp2["gauge1"]; ok == false { - t.Errorf("g_grp2 gauge1 not exists") - } - g_grp2["gauge1"].Inc() - - // - // +func TestMetricCounterAutoGGetNoReg(t *testing.T) { m_grp := NewMetricGroupsCache() - m_grp.CombineCounterGroupsWithPrefix("event1_", c_grp1) - m_grp.CombineCounterGroupsWithPrefix("event2_", c_grp2) - m_grp.CombineGaugeGroupsWithPrefix("event1_", g_grp1) - m_grp.CombineGaugeGroupsWithPrefix("event2_", g_grp2) + m_grp.GGet("gautotest1") +} - if m_grp == nil { - t.Errorf("Cache failed") - } +func TestMetricCounterAutoGGetFunc(t *testing.T) { + m_grp := NewMetricGroupsCache() + m_reg := ®isterer{} + m_grp.Registerer(nil, MetricGroupsCacheGaugeRegistererFunc(m_reg.RegisterGauge)) + m_grp.GGet("gautotest1") +} - if m_grp.CIs("event1_counter1") == false { - t.Errorf("m_grp.Counters event1_counter1 not exists") - } - m_grp.CInc("event1_counter1") +func TestMetricCounterAutoGGet(t *testing.T) { + m_grp := NewMetricGroupsCacheWithRegisterers(nil, ®isterer{}) + m_grp.GGet("gautotest1") +} - if m_grp.CIs("event2_counter1") == false { - t.Errorf("m_grp.Counters event2_counter1 not exists") - } - m_grp.CInc("event2_counter1") +func TestMetricCounterAutoGInc(t *testing.T) { + m_grp := NewMetricGroupsCache() + m_grp.Registerer(nil, ®isterer{}) + m_grp.GInc("gautotest1") +} - if m_grp.GIs("event1_gauge1") == false { - t.Errorf("m_grp.Gauges event1_gauge1 not exists") - } - m_grp.GInc("event1_gauge1") +func TestMetricCounterAutoGSet(t *testing.T) { + m_grp := NewMetricGroupsCache() + m_grp.Registerer(nil, ®isterer{}) + m_grp.GSet("gautotest1", float64(10)) +} - if m_grp.GIs("event2_gauge1") == false { - t.Errorf("m_grp.Gauges event2_gauge1 not exists") - } - m_grp.GInc("event2_gauge1") +func TestMetricCounterAutoGAdd(t *testing.T) { + m_grp := NewMetricGroupsCache() + m_grp.Registerer(nil, ®isterer{}) + m_grp.GAdd("gautotest1", float64(10)) +} - m_grp.CAdd("event2_counter1", 1) - m_grp.CGet("event2_counter1") - m_grp.GGet("event2_gauge1") - m_grp.GDec("event2_gauge1") - m_grp.GSet("event2_gauge1", 1) +func TestMetricCounterAutoGDec(t *testing.T) { + m_grp := NewMetricGroupsCache() + m_grp.Registerer(nil, ®isterer{}) + m_grp.GDec("gautotest1") }