From 5fa44bb028157b2e35c0aff6a79451fa91486c93 Mon Sep 17 00:00:00 2001 From: Jakob Schmid Date: Tue, 28 Jun 2022 13:22:41 +0200 Subject: [PATCH] plugins/status: fix bundle_failed_load_counter metric (#4823) ...for bundles without a revision. Fixes #4822. Signed-off-by: Jakob Schmid --- plugins/status/plugin.go | 2 +- plugins/status/plugin_go1.17_test.go | 33 ++++++++++++++++++++++++++++ 2 files changed, 34 insertions(+), 1 deletion(-) diff --git a/plugins/status/plugin.go b/plugins/status/plugin.go index c457b44cb7..ea7f00f9fd 100644 --- a/plugins/status/plugin.go +++ b/plugins/status/plugin.go @@ -481,7 +481,7 @@ func updatePrometheusMetrics(u *UpdateRequestV1) { } lastSuccessfulActivation.Reset() for _, bundle := range u.Bundles { - if bundle.Code == "" && bundle.ActiveRevision != "" { + if bundle.Code == "" && !bundle.LastSuccessfulActivation.IsZero() { loaded.WithLabelValues(bundle.Name).Inc() } else { failLoad.WithLabelValues(bundle.Name, bundle.Code, bundle.Message).Inc() diff --git a/plugins/status/plugin_go1.17_test.go b/plugins/status/plugin_go1.17_test.go index ce714d4290..e408eac485 100644 --- a/plugins/status/plugin_go1.17_test.go +++ b/plugins/status/plugin_go1.17_test.go @@ -105,3 +105,36 @@ func TestPluginPrometheus(t *testing.T) { t.Fatalf("Unexpected number of plugins (%v), got %v", 1, pluginsStatus) } } + +func TestMetricsBundleWithoutRevision(t *testing.T) { + fixture := newTestFixture(t, nil, func(c *Config) { + c.Prometheus = true + }) + fixture.server.ch = make(chan UpdateRequestV1) + defer fixture.server.stop() + + ctx := context.Background() + + err := fixture.plugin.Start(ctx) + if err != nil { + t.Fatal(err) + } + defer fixture.plugin.Stop(ctx) + <-fixture.server.ch + + status := testStatus() + status.ActiveRevision = "" + + fixture.plugin.BulkUpdateBundleStatus(map[string]*bundle.Status{"bundle": status}) + <-fixture.server.ch + + bundlesLoaded := testutil.CollectAndCount(loaded) + if bundlesLoaded != 1 { + t.Fatalf("Unexpected number of bundle loads (%v), got %v", 1, bundlesLoaded) + } + + bundlesFailedToLoad := testutil.CollectAndCount(failLoad) + if bundlesFailedToLoad != 0 { + t.Fatalf("Unexpected number of bundle fails load (%v), got %v", 0, bundlesFailedToLoad) + } +}