summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHarald Musum <musum@verizonmedia.com>2023-10-16 10:52:45 +0200
committerGitHub <noreply@github.com>2023-10-16 10:52:45 +0200
commit10bab8a1984fe4f47c34d4ba9831373d6d49e142 (patch)
tree0fe004d657633111274159128ef6f86ba32bff0c
parent90c59bfc313263a238c464b21221d1ede8bf997a (diff)
parent6d5235e90c1833ab8c3a06fd09ed5653038e1f78 (diff)
Merge pull request #28926 from vespa-engine/hmusum/pricing-cleanup
Minor test cleanup and add enclave() method to ApplicationResources
-rw-r--r--controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/pricing/ApplicationResources.java2
-rw-r--r--controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/pricing/PricingApiHandlerTest.java218
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;
}
/**