private void failRequest(Operation op, Throwable e, boolean shouldRetry) { if (shouldRetry) { // Request client side retries on state or consensus conflict ServiceErrorResponse rsp = ServiceErrorResponse.create(e, op.getStatusCode(), EnumSet.of(ErrorDetail.SHOULD_RETRY)); op.setBodyNoCloning(rsp); } processPending(op); op.fail(e); }
private void nestContinuationActivation(Operation op, Continuation cont) { op.nestCompletionCloneSafe((o, e) -> { try (ActiveSpan contspan = cont.activate()) { contspan.setTag(Tags.HTTP_STATUS.getKey(), Integer.toString(o.getStatusCode())); if (e == null) { o.complete(); } else { o.fail(e); } } }); }
public void validateServiceUiHtmlResponse(Operation op) { assertTrue(op.getStatusCode() == Operation.STATUS_CODE_MOVED_TEMP); assertTrue(op.getResponseHeader("Location").contains( "/core/ui/default/#")); }
public void validateServiceUiHtmlResponse(Operation op) { assertTrue(op.getStatusCode() == Operation.STATUS_CODE_MOVED_TEMP); assertTrue(op.getResponseHeader("Location").contains( "/core/ui/default/#")); }
public <T extends ServiceDocument> T verifyPost(Class<T> documentType, String factoryLink, T state, int expectedStatusCode) { URI uri = UriUtils.buildUri(this, factoryLink); Operation op = Operation.createPost(uri).setBody(state); Operation response = this.sender.sendAndWait(op); String message = String.format("Status code expected: %s, actual: %s", expectedStatusCode, response.getStatusCode()); assertEquals(message, expectedStatusCode, response.getStatusCode()); return response.hasBody() ? response.getBody(documentType) : null; }
public void sendAndWaitExpectFailure(Operation op, Integer expectedFailureCode) { // to be compatible with old behavior, clear the completion handler op.setCompletion(null); FailureResponse resposne = this.sender.sendAndWaitFailure(op); if (expectedFailureCode == null) { return; } String msg = "got unexpected status: " + expectedFailureCode; assertEquals(msg, (int) expectedFailureCode, resposne.op.getStatusCode()); }
public <T extends ServiceDocument> T verifyPost(Class<T> documentType, String factoryLink, T state, int expectedStatusCode) { URI uri = UriUtils.buildUri(this, factoryLink); Operation op = Operation.createPost(uri).setBody(state); Operation response = this.sender.sendAndWait(op); String message = String.format("Status code expected: %s, actual: %s", expectedStatusCode, response.getStatusCode()); assertEquals(message, expectedStatusCode, response.getStatusCode()); return response.hasBody() ? response.getBody(documentType) : null; }
@Test public void testNotInitialized() throws Throwable { Operation result = sender.sendAndWait(Operation .createDelete(host, ExtensibilitySubscriptionManager.SELF_LINK)); assertNotNull(result); assertEquals(Operation.STATUS_CODE_OK, result.getStatusCode()); Field field = ExtensibilitySubscriptionManager.class.getDeclaredField("initialized"); AtomicBoolean b = getPrivateField(field, manager); assertNotNull(b); assertFalse(b.get()); }
@Test public void testFactoryPostFailure() { UserState state = new UserState(); state.email = "not an email"; Operation op = Operation.createPost(this.host, ServiceUriPaths.CORE_AUTHZ_USERS).setBody(state); FailureResponse response = this.sender.sendAndWaitFailure(op); assertEquals(Operation.STATUS_CODE_FAILURE_THRESHOLD, response.op.getStatusCode()); assertEquals("email is invalid", response.failure.getMessage()); }
@Test public void testNonExistentFile() { String badFile = "/wikipedia.docx"; FailureResponse response = this.host.getTestRequestSender() .sendAndWaitFailure(Operation.createGet(this.host, SELF_LINK + badFile)); assertEquals(Operation.STATUS_CODE_NOT_FOUND, response.op.getStatusCode()); }
@Test public void testGetNonExistent() throws Throwable { String link = ExtensibilitySubscriptionService.FACTORY_LINK + "/non-existent"; FailureResponse failure = sender.sendAndWaitFailure(Operation.createGet(host, link)); assertNotNull(failure); assertEquals(Operation.STATUS_CODE_NOT_FOUND, failure.op.getStatusCode()); }
@Test public void testFactoryPostFailure() { UserState state = new UserState(); state.email = "not an email"; Operation op = Operation.createPost(this.host, ServiceUriPaths.CORE_AUTHZ_USERS).setBody(state); FailureResponse response = this.sender.sendAndWaitFailure(op); assertEquals(Operation.STATUS_CODE_FAILURE_THRESHOLD, response.op.getStatusCode()); assertEquals("email is invalid", response.failure.getMessage()); }
@Test public void testLimitDifferentKeys() { RoundRobinOperationQueue q = new RoundRobinOperationQueue("sayonara", 2); assertTrue(q.offer("k1", Operation.createGet(URI.create("/test")))); assertTrue(q.offer("k2", Operation.createGet(URI.create("/test")))); Operation excess = Operation.createGet(URI.create("/test")); assertFalse(q.offer("k3", excess)); assertEquals(503, excess.getStatusCode()); assertTrue(excess.getErrorResponseBody().message.contains("sayonara")); }
@Test public void getDocumentTemplate() throws Throwable { URI uri = UriUtils.buildUri(this.host, "testGetDocumentInstance"); // starting the service will call getDocumentTemplate - which should throw a RuntimeException, which causes // post to fail. Operation post = Operation.createPost(uri); this.host.startService(post, new GetIllegalDocumentService()); assertEquals(500, post.getStatusCode()); assertTrue(post.getErrorResponseBody().message.contains("myLink")); }
@Test public void testValidateOnStatefulServicePatchWithOperationFailHandling() throws Throwable { this.state.name = "testName"; Operation response = doOperation(Action.POST, TestValidationFactoryService.SELF_LINK, this.state); assertEquals(Operation.STATUS_CODE_OK, response.getStatusCode()); this.state = response.getBody(TestValidationServiceState.class); this.state.name = null; response = doOperation(Action.PATCH, this.state.documentSelfLink, this.state); validateServiceValidationError(response, ERROR_MSG_NAME_REQUIRED); }
@Test public void testValidateOnStatefulServicePatchWithOperationFailHandling() throws Throwable { this.state.name = "testName"; Operation response = doOperation(Action.POST, TestValidationFactoryService.SELF_LINK, this.state); assertEquals(Operation.STATUS_CODE_OK, response.getStatusCode()); this.state = response.getBody(TestValidationServiceState.class); this.state.name = null; response = doOperation(Action.PATCH, this.state.documentSelfLink, this.state); validateServiceValidationError(response, ERROR_MSG_NAME_REQUIRED); }
private void testExternalAuthRedirectMultinode(ServiceHost host) { TestRequestSender sender = new TestRequestSender(host); // make a un-authenticated request on the host Operation requestOp = Operation.createGet(host.getUri()); Operation responseOp = sender.sendAndWait(requestOp); // check the redirect response assertEquals(Operation.STATUS_CODE_MOVED_TEMP, responseOp.getStatusCode()); // check the location header to redirect assertEquals("http://www.vmware.com", responseOp.getResponseHeader(Operation.LOCATION_HEADER)); }
private void testExternalAuthRedirectMultinode(ServiceHost host) { TestRequestSender sender = new TestRequestSender(host); // make a un-authenticated request on the host Operation requestOp = Operation.createGet(host.getUri()); Operation responseOp = sender.sendAndWait(requestOp); // check the redirect response assertEquals(Operation.STATUS_CODE_MOVED_TEMP, responseOp.getStatusCode()); // check the location header to redirect assertEquals("http://www.vmware.com", responseOp.getResponseHeader(Operation.LOCATION_HEADER)); }
@Test public void testDiscoverFileResourcesOnStart() throws Throwable { UiService service = new UiService(); service.setSelfLink("/"); Arguments args = new Arguments(); args.resourceSandbox = Paths.get("src/main/resources/"); VerificationHost vh = VerificationHost.create(args); service.setHost(vh); Operation start = new Operation().setUri(UriUtils.buildUri("/")); service.handleStart(start); assertEquals(Operation.STATUS_CODE_OK, start.getStatusCode()); }
@Test public void testFailureCodes() throws Throwable { Operation op = Operation.createGet(this.host.getUri()); Operation.failActionNotSupported(op); ServiceErrorResponse rsp = op.getErrorResponseBody(); assertEquals(op.getStatusCode(), Operation.STATUS_CODE_BAD_METHOD); assertNotNull(rsp); assertEquals(rsp.statusCode, Operation.STATUS_CODE_BAD_METHOD); }