Skip to content

Commit abdbf6f

Browse files
author
OpenAI Codex
committed
fix: restore telemetry ops inventory and stable meter-event tests
1 parent 1e4d970 commit abdbf6f

4 files changed

Lines changed: 19 additions & 4 deletions

File tree

accrue/guides/telemetry.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,7 @@ they correspond to — they are idempotent under webhook replay via the
6666
| `[:accrue, :ops, :discount_mapping_invalid]` | `count` | `mapping_id`, `code`, `discount_id`, `reason`, `operation_id` | `Accrue.Billing.SubscriptionActions` |
6767
| `[:accrue, :ops, :incomplete_expired]` | `count` | `subscription_id` | `Accrue.Telemetry.Ops` |
6868
| `[:accrue, :ops, :charge_failed]` | `count` | `charge_id`, `customer_id`, `failure_code` | `Accrue.Telemetry.Ops` |
69+
| `[:accrue, :ops, :customer_projection_sync_failed]` | `count` | `customer_id`, `processor`, `processor_id`, `operation_id`, `changed_fields`, `failure_kind` | `Accrue.Billing` |
6970
| `[:accrue, :ops, :meter_reporting_failed]` | `count` | `meter_event_id`, `event_name`, `source` (`:reconciler \| :webhook \| :sync`) | `Accrue.Webhook.DefaultHandler` / `Accrue.Billing.MeterEventActions` / `Accrue.Jobs.MeterEventsReconciler` |
7071
| `[:accrue, :ops, :metered_renewal_stale_repaired]` | `count` | `source` (`:reconciler`), `processor`, `subscription_id`, `metered_renewal_id` | `Accrue.Jobs.MeteredRenewalReconciler` |
7172
| `[:accrue, :ops, :metered_missing_definition]` | `count` | `processor`, `subscription_id`, `metered_renewal_id`, `unmatched_event_count` | `Accrue.Billing.MeteredRenewalInvoice` |

accrue/lib/accrue/telemetry/ops.ex

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ defmodule Accrue.Telemetry.Ops do
1414
[:accrue, :ops, :discount_mapping_invalid]
1515
[:accrue, :ops, :incomplete_expired]
1616
[:accrue, :ops, :charge_failed]
17+
[:accrue, :ops, :customer_projection_sync_failed]
1718
[:accrue, :ops, :meter_reporting_failed]
1819
[:accrue, :ops, :metered_renewal_stale_repaired]
1920
[:accrue, :ops, :metered_missing_definition]

accrue/test/accrue/billing/meter_event_actions_test.exs

Lines changed: 16 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -120,7 +120,10 @@ defmodule Accrue.Billing.MeterEventsReportUsageTest do
120120
Fake.scripted_response(:report_meter_event, {:error, err})
121121

122122
:ok = Accrue.Actor.put_operation_id("op_meter_idem_fail")
123-
ts = ~U[2026-04-10 12:00:00.000000Z]
123+
ts =
124+
DateTime.utc_now()
125+
|> DateTime.add(-3 * 86_400, :second)
126+
|> DateTime.truncate(:second)
124127
opts = [operation_id: "op_meter_idem_fail", timestamp: ts, value: 1]
125128

126129
test_pid = self()
@@ -156,7 +159,10 @@ defmodule Accrue.Billing.MeterEventsReportUsageTest do
156159
Fake.scripted_response(:report_meter_event, {:error, err})
157160

158161
:ok = Accrue.Actor.put_operation_id("op_meter_bang_idem")
159-
ts = ~U[2026-04-11 12:00:00.000000Z]
162+
ts =
163+
DateTime.utc_now()
164+
|> DateTime.add(-2 * 86_400, :second)
165+
|> DateTime.truncate(:second)
160166
opts = [operation_id: "op_meter_bang_idem", timestamp: ts, value: 2]
161167

162168
assert_raise Accrue.APIError, fn ->
@@ -225,7 +231,10 @@ defmodule Accrue.Billing.MeterEventsReportUsageTest do
225231
:ok = Accrue.Actor.put_operation_id("op_golden_meter_43")
226232

227233
# Fixed instant within the 35-day backdating window enforced on usage timestamps.
228-
ts = ~U[2026-04-01 03:04:05.000000Z]
234+
ts =
235+
DateTime.utc_now()
236+
|> DateTime.add(-7 * 86_400, :second)
237+
|> DateTime.truncate(:second)
229238

230239
assert {:ok, %MeterEvent{} = row} =
231240
Billing.report_usage(customer, "api_call",
@@ -267,7 +276,10 @@ defmodule Accrue.Billing.MeterEventsReportUsageTest do
267276
try do
268277
assert {:ok, _} =
269278
Billing.report_usage(customer, "api_call",
270-
timestamp: ~U[2026-04-15 00:00:00.000000Z]
279+
timestamp:
280+
DateTime.utc_now()
281+
|> DateTime.add(-86_400, :second)
282+
|> DateTime.truncate(:second)
271283
)
272284

273285
assert_receive {:telemetry, [:accrue, :billing, :meter_event, :report_usage, :stop], meas,

accrue/test/support/telemetry_ops_inventory.ex

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ defmodule Accrue.TestSupport.TelemetryOpsInventory do
99
[:accrue, :ops, :discount_mapping_invalid],
1010
[:accrue, :ops, :incomplete_expired],
1111
[:accrue, :ops, :charge_failed],
12+
[:accrue, :ops, :customer_projection_sync_failed],
1213
[:accrue, :ops, :meter_reporting_failed],
1314
[:accrue, :ops, :metered_renewal_stale_repaired],
1415
[:accrue, :ops, :metered_missing_definition],

0 commit comments

Comments
 (0)