From a9e8702af291b4d30fc3f9f2a1c3d48f92b5db04 Mon Sep 17 00:00:00 2001
From: Jean-Paul Calderone <exarkun@twistedmatrix.com>
Date: Mon, 6 Dec 2021 15:23:40 -0500
Subject: [PATCH] somewhat simplify tests by clearing metrics before each
 example

---
 src/_zkapauthorizer/_storage_server.py        |  7 ++++++
 .../tests/test_storage_server.py              | 25 ++++++++-----------
 2 files changed, 17 insertions(+), 15 deletions(-)

diff --git a/src/_zkapauthorizer/_storage_server.py b/src/_zkapauthorizer/_storage_server.py
index c5ce9a5..7cd3cd2 100644
--- a/src/_zkapauthorizer/_storage_server.py
+++ b/src/_zkapauthorizer/_storage_server.py
@@ -216,6 +216,13 @@ class ZKAPAuthorizerStorageServer(Referenceable):
             buckets=self._get_buckets(),
         )
 
+    def _clear_metrics(self):
+        """
+        Forget all recorded metrics.
+        """
+        # There is also a `clear` method but it raises an AttributeError.
+        self._metric_spending_successes._metric_init()
+
     def remote_get_version(self):
         """
         Pass-through without pass check to allow clients to learn about our
diff --git a/src/_zkapauthorizer/tests/test_storage_server.py b/src/_zkapauthorizer/tests/test_storage_server.py
index 1abecc5..08bbc17 100644
--- a/src/_zkapauthorizer/tests/test_storage_server.py
+++ b/src/_zkapauthorizer/tests/test_storage_server.py
@@ -199,6 +199,10 @@ class PassValidationTests(TestCase):
         # method.
         cleanup_storage_server(self.anonymous_storage_server)
 
+        # Reset all of the metrics, too, so the individual tests have a
+        # simpler job (can compare values relative to 0).
+        self.storage_server._clear_metrics()
+
     def test_allocate_buckets_fails_without_enough_passes(self):
         """
         ``remote_allocate_buckets`` fails with ``MorePassesRequired`` if it is
@@ -573,9 +577,6 @@ class PassValidationTests(TestCase):
             list(RandomToken.create() for i in range(num_passes)),
         )
 
-        before_count = read_count(self.storage_server)
-        before_bucket = read_bucket(self.storage_server, num_passes)
-
         # Create an initial share to toy with.
         test, read = self.storage_server.doRemoteCall(
             "slot_testv_and_readv_and_writev",
@@ -593,12 +594,12 @@ class PassValidationTests(TestCase):
         after_bucket = read_bucket(self.storage_server, num_passes)
 
         self.expectThat(
-            after_count - before_count,
+            after_count,
             Equals(1),
             "Unexpected histogram sum value",
         )
         self.assertThat(
-            after_bucket - before_bucket,
+            after_bucket,
             Equals(1),
             "Unexpected histogram bucket value",
         )
@@ -626,9 +627,6 @@ class PassValidationTests(TestCase):
             list(RandomToken.create() for i in range(num_passes)),
         )
 
-        before_count = read_count(self.storage_server)
-        before_bucket = read_bucket(self.storage_server, num_passes)
-
         alreadygot, allocated = self.storage_server.doRemoteCall(
             "allocate_buckets",
             (),
@@ -647,12 +645,12 @@ class PassValidationTests(TestCase):
         after_bucket = read_bucket(self.storage_server, num_passes)
 
         self.expectThat(
-            after_count - before_count,
+            after_count,
             Equals(1),
             "Unexpected histogram sum value",
         )
         self.assertThat(
-            after_bucket - before_bucket,
+            after_bucket,
             Equals(1),
             "Unexpected histogram bucket value",
         )
@@ -692,9 +690,6 @@ class PassValidationTests(TestCase):
             list(RandomToken.create() for i in range(num_passes)),
         )
 
-        before_count = read_count(self.storage_server)
-        before_bucket = read_bucket(self.storage_server, num_passes)
-
         self.storage_server.doRemoteCall(
             "add_lease",
             (),
@@ -710,12 +705,12 @@ class PassValidationTests(TestCase):
         after_bucket = read_bucket(self.storage_server, num_passes)
 
         self.expectThat(
-            after_count - before_count,
+            after_count,
             Equals(1),
             "Unexpected histogram sum value",
         )
         self.assertThat(
-            after_bucket - before_bucket,
+            after_bucket,
             Equals(1),
             "Unexpected histogram bucket value",
         )
-- 
GitLab