From 545ff59458b9f9698b0a4354a3d47437f95a1399 Mon Sep 17 00:00:00 2001
From: Eno Compton <enocom@google.com>
Date: Tue, 8 Oct 2024 14:51:32 -0600
Subject: [PATCH] Try a few times

---
 metrics_test.go | 29 ++++++++++++++++++-----------
 1 file changed, 18 insertions(+), 11 deletions(-)

diff --git a/metrics_test.go b/metrics_test.go
index 667a2f5e..e074ba74 100644
--- a/metrics_test.go
+++ b/metrics_test.go
@@ -71,20 +71,27 @@ func dump[T any](t *testing.T, data T) string {
 func wantLastValueMetric(t *testing.T, wantName string, ms []metric, wantValue int) {
 	t.Helper()
 	gotNames := make(map[string]view.AggregationData)
-	for _, m := range ms {
-		if strings.Contains(m.name, "open_connections") {
-			fmt.Printf("RISHABH DEBUG calling wantLastValueMetric() => name: %v, value: %v\n", m.name, m.data)
+	for i := 0; i < 10; i++ {
+		for _, m := range ms {
+			if strings.Contains(m.name, "open_connections") {
+				fmt.Printf("RISHABH DEBUG calling wantLastValueMetric() => name: %v, value: %v\n", m.name, m.data)
+			}
+			gotNames[m.name] = m.data
+		}
+		ad, ok := gotNames[wantName]
+		if !ok {
+			time.Sleep(10 * time.Millisecond)
+			continue
 		}
-		gotNames[m.name] = m.data
-	}
-	ad, ok := gotNames[wantName]
-	if ok {
 		lvd, ok := ad.(*view.LastValueData)
-		if ok {
-			if lvd.Value == float64(wantValue) {
-				return
-			}
+		if !ok {
+			time.Sleep(10 * time.Millisecond)
+			continue
+		}
+		if lvd.Value == float64(wantValue) {
+			return
 		}
+		time.Sleep(10 * time.Millisecond)
 	}
 	t.Fatalf(
 		"want metric LastValueData{name = %q, value = %v}, got metrics = %v",