diff --git a/compute_tools/src/http/api.rs b/compute_tools/src/http/api.rs
index 43e9fc42fc..8273f47db6 100644
--- a/compute_tools/src/http/api.rs
+++ b/compute_tools/src/http/api.rs
@@ -326,9 +326,20 @@ async fn routes(req: Request
, compute: &Arc) -> Response Result Result 0:
+ try:
+ res = client.metrics()
+ timeout = -1
+ if len(parse_metrics(res).query_all("compute_installed_extensions")) < 1:
+ # Assume that not all metrics that are collected yet
+ time.sleep(1)
+ timeout -= 1
+ continue
+ except Exception:
+ log.exception("failed to get metrics, assume they are not collected yet")
+ time.sleep(1)
+ timeout -= 1
+ continue
+
+ info("After start metrics: %s", res)
+ m = parse_metrics(res)
+ info("parsed metrics: %s", m)
+
+ # create extension neon_test_utils
+ pg_conn = endpoint.connect(dbname="test_installed_extensions")
+ with pg_conn.cursor() as cur:
+ cur.execute("CREATE EXTENSION neon_test_utils")
+ cur.execute(
+ "SELECT default_version FROM pg_available_extensions WHERE name = 'neon_test_utils'"
+ )
+ res = cur.fetchone()
+ neon_test_utils_version = res[0]
+
+ # check the metric again
+ res = client.metrics()
+ info("After creating neon_test_utils metrics: %s", res)
+ time.sleep(1)
+ res = client.metrics()
+ info("After creating neon_test_utils metrics: %s", res)
+
+ m = parse_metrics(res)
+ neon_m = m.query_all(
+ "compute_installed_extensions",
+ {
+ "extension_name": "neon_test_utils",
+ "version": neon_test_utils_version,
+ "owned_by_superuser": "1",
+ },
+ )
+ assert len(neon_m) == 1
+ for sample in neon_m:
+ assert sample.value == 1
+
+ # drop extension neon_test_utils
+ with pg_conn.cursor() as cur:
+ cur.execute("DROP EXTENSION neon_test_utils")
+
+ # check the metric again
+ res = client.metrics()
+ info("After dropping neon_test_utils metrics: %s", res)
+ time.sleep(5)
+ res = client.metrics()
+ info("After dropping neon_test_utils metrics: %s", res)
+
+ m = parse_metrics(res)
+ neon_m = m.query_all(
+ "compute_installed_extensions",
+ {
+ "extension_name": "neon_test_utils",
+ "version": neon_test_utils_version,
+ "owned_by_superuser": "1",
+ },
+ )
+ assert len(neon_m) == 0