diff options
author | gjoranv <gjoranv@gmail.com> | 2023-10-31 16:17:59 +0100 |
---|---|---|
committer | gjoranv <gjoranv@gmail.com> | 2023-10-31 16:29:10 +0100 |
commit | dd51bd4fa5d3b6abe423a0d54e38be3d3c9cd4a7 (patch) | |
tree | c2c92fcdec4d385162e6a0a21553e32fcf5936bc | |
parent | 36b435a302357e198baeed816df79bdef0055292 (diff) |
Extract helpers for duplicate code.
-rw-r--r-- | controller-server/src/test/java/com/yahoo/vespa/hosted/controller/maintenance/BillingReportMaintainerTest.java | 54 |
1 files changed, 26 insertions, 28 deletions
diff --git a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/maintenance/BillingReportMaintainerTest.java b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/maintenance/BillingReportMaintainerTest.java index 8d1848539f0..3cffe659669 100644 --- a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/maintenance/BillingReportMaintainerTest.java +++ b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/maintenance/BillingReportMaintainerTest.java @@ -4,7 +4,9 @@ package com.yahoo.vespa.hosted.controller.maintenance; import com.yahoo.config.provision.SystemName; import com.yahoo.config.provision.TenantName; import com.yahoo.vespa.hosted.controller.ControllerTester; +import com.yahoo.vespa.hosted.controller.api.integration.billing.Bill; import com.yahoo.vespa.hosted.controller.api.integration.billing.BillStatus; +import com.yahoo.vespa.hosted.controller.api.integration.billing.BillingDatabaseClient; import com.yahoo.vespa.hosted.controller.api.integration.billing.BillingReporterMock; import com.yahoo.vespa.hosted.controller.api.integration.billing.FailedInvoiceUpdate; import com.yahoo.vespa.hosted.controller.api.integration.billing.ModifiableInvoiceUpdate; @@ -26,6 +28,8 @@ import static org.junit.jupiter.api.Assertions.assertTrue; public class BillingReportMaintainerTest { private final ControllerTester tester = new ControllerTester(SystemName.PublicCd); private final BillingReportMaintainer maintainer = new BillingReportMaintainer(tester.controller(), Duration.ofMinutes(10)); + private final BillingDatabaseClient billingDb = tester.controller().serviceRegistry().billingDatabase(); + private final BillingReporterMock reporter = (BillingReporterMock) tester.controller().serviceRegistry().billingReporter(); @Test void only_billable_tenants_are_maintained() { @@ -48,19 +52,13 @@ public class BillingReportMaintainerTest { @Test void only_open_bills_with_exported_id_are_maintained() { var t1 = tester.createTenant("t1"); - var billingDb = tester.controller().serviceRegistry().billingDatabase(); - var start = LocalDate.of(2020, 5, 23).atStartOfDay(ZoneOffset.UTC); - var end = start.toLocalDate().plusDays(6).atStartOfDay(ZoneOffset.UTC); - - var bill1 = billingDb.createBill(t1, start, end, "non-exported"); - var bill2 = billingDb.createBill(t1, start, end, "exported"); - var bill3 = billingDb.createBill(t1, start, end, "exported-and-frozen"); + var bill1 = createBill(t1, "non-exported", billingDb); + var bill2 = createBill(t1, "exported", billingDb); + var bill3 = createBill(t1, "exported-and-frozen", billingDb); billingDb.setStatus(bill3, "foo", BillStatus.FROZEN); - var reporter = tester.controller().serviceRegistry().billingReporter(); - reporter.exportBill(billingDb.readBill(bill2).get(), "FOO", cloudTenant(t1)); - reporter.exportBill(billingDb.readBill(bill3).get(), "FOO", cloudTenant(t1)); + exportBills(t1, bill2, bill3); var updates = maintainer.maintainInvoices(); assertTrue(billingDb.readBill(bill1).get().getExportedId().isEmpty()); @@ -85,15 +83,8 @@ public class BillingReportMaintainerTest { @Test void bills_whose_invoice_has_been_deleted_in_the_external_system_are_no_longer_maintained() { var t1 = tester.createTenant("t1"); - var billingDb = tester.controller().serviceRegistry().billingDatabase(); - - var start = LocalDate.of(2020, 5, 23).atStartOfDay(ZoneOffset.UTC); - var end = start.toLocalDate().plusDays(6).atStartOfDay(ZoneOffset.UTC); - - var bill1 = billingDb.createBill(t1, start, end, "exported-then-deleted"); - - var reporter = (BillingReporterMock)tester.controller().serviceRegistry().billingReporter(); - reporter.exportBill(billingDb.readBill(bill1).get(), "FOO", cloudTenant(t1)); + var bill1 = createBill(t1, "exported-then-deleted", billingDb); + exportBills(t1, bill1); var updates = maintainer.maintainInvoices(); assertEquals(1, updates.size()); @@ -116,17 +107,11 @@ public class BillingReportMaintainerTest { @Test void it_is_allowed_to_re_export_bills_whose_invoice_has_been_deleted_in_the_external_system() { var t1 = tester.createTenant("t1"); - var billingDb = tester.controller().serviceRegistry().billingDatabase(); - - var start = LocalDate.of(2020, 5, 23).atStartOfDay(ZoneOffset.UTC); - var end = start.toLocalDate().plusDays(6).atStartOfDay(ZoneOffset.UTC); - - var bill1 = billingDb.createBill(t1, start, end, "exported-then-deleted"); - var reporter = (BillingReporterMock)tester.controller().serviceRegistry().billingReporter(); + var bill1 = createBill(t1, "exported-then-deleted", billingDb); // Export the bill, then delete it in the external system - reporter.exportBill(billingDb.readBill(bill1).get(), "FOO", cloudTenant(t1)); + exportBills(t1, bill1); maintainer.maintainInvoices(); reporter.deleteExportedBill(bill1); maintainer.maintainInvoices(); @@ -136,12 +121,25 @@ public class BillingReportMaintainerTest { assertEquals(0, updates.size()); // Re-export the bill and verify that it is maintained again - reporter.exportBill(billingDb.readBill(bill1).get(), "FOO", cloudTenant(t1)); + exportBills(t1, bill1); updates = maintainer.maintainInvoices(); assertEquals(1, updates.size()); assertEquals(ModifiableInvoiceUpdate.class, updates.get(0).getClass()); } + private static Bill.Id createBill(TenantName tenantName, String agent, BillingDatabaseClient billingDb) { + var start = LocalDate.of(2020, 5, 23).atStartOfDay(ZoneOffset.UTC); + var end = start.toLocalDate().plusDays(6).atStartOfDay(ZoneOffset.UTC); + return billingDb.createBill(tenantName, start, end, agent); + } + + private void exportBills(TenantName tenantName, Bill.Id... billIds) { + for (var billId : billIds) { + var bill = billingDb.readBill(billId).get(); + reporter.exportBill(bill, "FOO", cloudTenant(tenantName)); + } + } + private CloudTenant cloudTenant(TenantName tenantName) { return tester.controller().tenants().require(tenantName, CloudTenant.class); } |