diff options
author | Harald Musum <musum@verizonmedia.com> | 2023-10-16 10:52:45 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-10-16 10:52:45 +0200 |
commit | 10bab8a1984fe4f47c34d4ba9831373d6d49e142 (patch) | |
tree | 0fe004d657633111274159128ef6f86ba32bff0c | |
parent | 90c59bfc313263a238c464b21221d1ede8bf997a (diff) | |
parent | 6d5235e90c1833ab8c3a06fd09ed5653038e1f78 (diff) |
Merge pull request #28926 from vespa-engine/hmusum/pricing-cleanup
Minor test cleanup and add enclave() method to ApplicationResources
2 files changed, 106 insertions, 114 deletions
diff --git a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/pricing/ApplicationResources.java b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/pricing/ApplicationResources.java index fa742c27486..b8a67c2d425 100644 --- a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/pricing/ApplicationResources.java +++ b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/pricing/ApplicationResources.java @@ -29,4 +29,6 @@ public record ApplicationResources(String applicationName, BigDecimal vcpu, BigD return new ApplicationResources(applicationName, ZERO, ZERO, ZERO, ZERO, vcpu, memoryGb, diskGb, gpuMemoryGb); } + public boolean enclave() { return enclaveVcpu().compareTo(ZERO) > 0; } + } diff --git a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/pricing/PricingApiHandlerTest.java b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/pricing/PricingApiHandlerTest.java index 6262697f0c3..c1f9c5db769 100644 --- a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/pricing/PricingApiHandlerTest.java +++ b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/pricing/PricingApiHandlerTest.java @@ -19,149 +19,139 @@ import static org.junit.jupiter.api.Assertions.assertEquals; */ public class PricingApiHandlerTest extends ControllerContainerCloudTest { - private static final String responseFiles = "src/test/java/com/yahoo/vespa/hosted/controller/restapi/pricing/responses/"; - @Test void testPricingInfoBasic() { - ContainerTester tester = new ContainerTester(container, responseFiles); - assertEquals(SystemName.Public, tester.controller().system()); - var request = request("/pricing/v1/pricing?" + urlEncodedPriceInformation1App(BASIC)); - tester.assertJsonResponse(request, """ - { - "applications": [ - { - "name": "app1", - "priceInfo": [ - {"description": "Basic support unit price", "amount": "2240.00"}, - {"description": "Volume discount", "amount": "-5.64"} - ] - } - ], - "priceInfo": [ - {"description": "Committed spend", "amount": "-1.23"} - ], - "totalAmount": "2233.13" - } - """, - 200); + tester().assertJsonResponse(request, """ + { + "applications": [ + { + "name": "app1", + "priceInfo": [ + {"description": "Basic support unit price", "amount": "2240.00"}, + {"description": "Volume discount", "amount": "-5.64"} + ] + } + ], + "priceInfo": [ + {"description": "Committed spend", "amount": "-1.23"} + ], + "totalAmount": "2233.13" + } + """, + 200); } @Test void testPricingInfoBasicEnclave() { - ContainerTester tester = new ContainerTester(container, responseFiles); - assertEquals(SystemName.Public, tester.controller().system()); - var request = request("/pricing/v1/pricing?" + urlEncodedPriceInformation1AppEnclave(BASIC)); - tester.assertJsonResponse(request, """ - { - "applications": [ - { - "name": "app1", - "priceInfo": [ - {"description": "Basic support unit price", "amount": "2240.00"}, - {"description": "Enclave", "amount": "-15.12"}, - {"description": "Volume discount", "amount": "-5.64"} - ] - } - ], - "priceInfo": [ - {"description": "Committed spend", "amount": "-1.23"} - ], - "totalAmount": "2218.00" - } - """, - 200); + tester().assertJsonResponse(request, """ + { + "applications": [ + { + "name": "app1", + "priceInfo": [ + {"description": "Basic support unit price", "amount": "2240.00"}, + {"description": "Enclave", "amount": "-15.12"}, + {"description": "Volume discount", "amount": "-5.64"} + ] + } + ], + "priceInfo": [ + {"description": "Committed spend", "amount": "-1.23"} + ], + "totalAmount": "2218.00" + } + """, + 200); } @Test void testPricingInfoCommercialEnclave() { - ContainerTester tester = new ContainerTester(container, responseFiles); - assertEquals(SystemName.Public, tester.controller().system()); - var request = request("/pricing/v1/pricing?" + urlEncodedPriceInformation1AppEnclave(COMMERCIAL)); - tester.assertJsonResponse(request, """ - { - "applications": [ - { - "name": "app1", - "priceInfo": [ - {"description": "Commercial support unit price", "amount": "3200.00"}, - {"description": "Enclave", "amount": "-15.12"}, - {"description": "Volume discount", "amount": "-5.64"} - ] - } - ], - "priceInfo": [ - {"description": "Committed spend", "amount": "-1.23"} - ], - "totalAmount": "3178.00" - } - """, - 200); + tester().assertJsonResponse(request, """ + { + "applications": [ + { + "name": "app1", + "priceInfo": [ + {"description": "Commercial support unit price", "amount": "3200.00"}, + {"description": "Enclave", "amount": "-15.12"}, + {"description": "Volume discount", "amount": "-5.64"} + ] + } + ], + "priceInfo": [ + {"description": "Committed spend", "amount": "-1.23"} + ], + "totalAmount": "3178.00" + } + """, + 200); } @Test void testPricingInfoCommercialEnclave2Apps() { - ContainerTester tester = new ContainerTester(container, responseFiles); - assertEquals(SystemName.Public, tester.controller().system()); - var request = request("/pricing/v1/pricing?" + urlEncodedPriceInformation2AppsEnclave(COMMERCIAL)); - tester.assertJsonResponse(request, """ - { - "applications": [ - { - "name": "app1", - "priceInfo": [ - {"description": "Commercial support unit price", "amount": "2000.00"}, - {"description": "Enclave", "amount": "-15.12"}, - {"description": "Volume discount", "amount": "-5.64"} - ] - }, - { - "name": "app2", - "priceInfo": [ - {"description": "Commercial support unit price", "amount": "2000.00"}, - {"description": "Enclave", "amount": "-15.12"}, - {"description": "Volume discount", "amount": "-5.64"} - ] - } - ], - "priceInfo": [ - {"description": "Committed spend", "amount": "-1.23"} - ], - "totalAmount": "3957.24" - } - """, - 200); + tester().assertJsonResponse(request, """ + { + "applications": [ + { + "name": "app1", + "priceInfo": [ + {"description": "Commercial support unit price", "amount": "2000.00"}, + {"description": "Enclave", "amount": "-15.12"}, + {"description": "Volume discount", "amount": "-5.64"} + ] + }, + { + "name": "app2", + "priceInfo": [ + {"description": "Commercial support unit price", "amount": "2000.00"}, + {"description": "Enclave", "amount": "-15.12"}, + {"description": "Volume discount", "amount": "-5.64"} + ] + } + ], + "priceInfo": [ + {"description": "Committed spend", "amount": "-1.23"} + ], + "totalAmount": "3957.24" + } + """, + 200); } @Test void testInvalidRequests() { - ContainerTester tester = new ContainerTester(container, responseFiles); - assertEquals(SystemName.Public, tester.controller().system()); - + ContainerTester tester = tester(); tester.assertJsonResponse(request("/pricing/v1/pricing"), - "{\"error-code\":\"BAD_REQUEST\",\"message\":\"No price information found in query\"}", - 400); + "{\"error-code\":\"BAD_REQUEST\",\"message\":\"No price information found in query\"}", + 400); tester.assertJsonResponse(request("/pricing/v1/pricing?"), - "{\"error-code\":\"BAD_REQUEST\",\"message\":\"Error in query parameter, expected '=' between key and value: ''\"}", - 400); + "{\"error-code\":\"BAD_REQUEST\",\"message\":\"Error in query parameter, expected '=' between key and value: ''\"}", + 400); tester.assertJsonResponse(request("/pricing/v1/pricing?supportLevel=basic&committedSpend=0"), - "{\"error-code\":\"BAD_REQUEST\",\"message\":\"No application resources found in query\"}", - 400); + "{\"error-code\":\"BAD_REQUEST\",\"message\":\"No application resources found in query\"}", + 400); tester.assertJsonResponse(request("/pricing/v1/pricing?supportLevel=basic&committedSpend=0&resources"), - "{\"error-code\":\"BAD_REQUEST\",\"message\":\"Error in query parameter, expected '=' between key and value: 'resources'\"}", - 400); + "{\"error-code\":\"BAD_REQUEST\",\"message\":\"Error in query parameter, expected '=' between key and value: 'resources'\"}", + 400); tester.assertJsonResponse(request("/pricing/v1/pricing?supportLevel=basic&committedSpend=0&resources="), - "{\"error-code\":\"BAD_REQUEST\",\"message\":\"Error in query parameter, expected '=' between key and value: 'resources='\"}", - 400); + "{\"error-code\":\"BAD_REQUEST\",\"message\":\"Error in query parameter, expected '=' between key and value: 'resources='\"}", + 400); tester.assertJsonResponse(request("/pricing/v1/pricing?supportLevel=basic&committedSpend=0&key=value"), - "{\"error-code\":\"BAD_REQUEST\",\"message\":\"Unknown query parameter 'key'\"}", - 400); + "{\"error-code\":\"BAD_REQUEST\",\"message\":\"Unknown query parameter 'key'\"}", + 400); tester.assertJsonResponse(request("/pricing/v1/pricing?supportLevel=basic&committedSpend=0&application=key%3Dvalue"), - "{\"error-code\":\"BAD_REQUEST\",\"message\":\"Unknown key 'key'\"}", - 400); + "{\"error-code\":\"BAD_REQUEST\",\"message\":\"Unknown key 'key'\"}", + 400); + } + + private ContainerTester tester() { + ContainerTester tester = new ContainerTester(container, null); + assertEquals(SystemName.Public, tester.controller().system()); + return tester; } /** |