use of org.ovirt.engine.core.common.queries.QueryParametersBase in project ovirt-engine by oVirt.
the class FrontendTest method testrunQuery_success_not_succeeded_noeventshandler_nocallbackhandler.
/**
* Run the following test case.
* <ol>
* <li>Run a search query, with *win* as the parameter, searching for VMs</li>
* <li>The callback is NOT marked to handle failures</li>
* <li>The failure is NOT, a-not-logged in failure</li>
* <li>Return success, but the success status is !succeeded (business logic failure/not logged in)</li>
* <li>Check to make sure the appropriate query start and query complete events are fired</li>
* </ol>
*/
@Test
public void testrunQuery_success_not_succeeded_noeventshandler_nocallbackhandler() {
// $NON-NLS-1$
QueryParametersBase testParameters = new SearchParameters("*win*", SearchType.VM);
frontend.runQuery(QueryType.Search, testParameters, mockAsyncQuery, false);
verify(mockService).runQuery(eq(QueryType.Search), eq(testParameters), callback.capture());
QueryReturnValue mockReturnValue = new QueryReturnValue();
// $NON-NLS-1$
mockReturnValue.setExceptionString("Fake failure for test");
// Return value set to failure
mockReturnValue.setSucceeded(false);
callback.getValue().onSuccess(mockReturnValue);
// Make sure the not logged in event is never called, as the failure is not a USER_IS_NOT_LOGGED_IN
verify(mockFrontendNotLoggedInEvent, never()).raise(Frontend.class, EventArgs.EMPTY);
verifyAsyncQuerySucceeded();
}
use of org.ovirt.engine.core.common.queries.QueryParametersBase in project ovirt-engine by oVirt.
the class FrontendTest method testrunQuery_failure_404_callback.
/**
* Run the following test case.
* <ol>
* <li>Run a search query, with *win* as the parameter, searching for VMs</li>
* <li>The callback is marked to handle failures, make sure the callback failure handler is called</li>
* <li>Force a failure with an HTTP status code = 404 (file not found)</li>
* <li>Check to make sure the appropriate query start and query complete events are fired</li>
* </ol>
*/
@Test
public void testrunQuery_failure_404_callback() {
Object mockModel = new Object();
when(mockAsyncQuery.isHandleFailure()).thenReturn(true);
when(mockAsyncQuery.getModel()).thenReturn(mockModel);
// $NON-NLS-1$
QueryParametersBase testParameters = new SearchParameters("*win*", SearchType.VM);
frontend.runQuery(QueryType.Search, testParameters, mockAsyncQuery, false);
StatusCodeException exception = new StatusCodeException(HttpServletResponse.SC_NOT_FOUND, // $NON-NLS-1$
"404 status code");
// Repeat 4 times, because of retries.
for (int i = 1; i < RETRY_COUNT; i++) {
verify(mockService, times(i)).runQuery(eq(QueryType.Search), eq(testParameters), callback.capture());
// Call the failure handler.
callback.getValue().onFailure(exception);
}
verify(mockAsyncCallback).onSuccess(null);
verify(mockEventsHandler).runQueryFailed(null);
verifyAsyncQueryFailed();
}
use of org.ovirt.engine.core.common.queries.QueryParametersBase in project ovirt-engine by oVirt.
the class FrontendTest method testrunMultipleQueries_404_failure.
/**
* Run the following test case.
* <ol>
* <li>Run a multiple search query, with only multiple requests, with *win* / *lin* as the parameter,
* searching for VMs</li>
* <li>Force a failure with an HTTP status code = 404</li>
* <li>Check to make sure the appropriate query start and query complete events are fired</li>
* </ol>
*/
@Test
public void testrunMultipleQueries_404_failure() {
// Don't immediately call process until both queries are in the queue.
fakeScheduler.setThreshold(2);
when(mockConstants.requestToServerFailedWithCode()).thenReturn(// $NON-NLS-1$
"A Request to the Server failed with the following Status Code");
ArrayList<QueryType> queryTypeList = new ArrayList<>();
queryTypeList.add(QueryType.Search);
queryTypeList.add(QueryType.Search);
ArrayList<QueryParametersBase> queryParamsList = new ArrayList<>();
// $NON-NLS-1$
queryParamsList.add(new SearchParameters("*win*", SearchType.VM));
// $NON-NLS-1$
queryParamsList.add(new SearchParameters("*lin*", SearchType.VM));
// $NON-NLS-1$
frontend.runMultipleQueries(queryTypeList, queryParamsList, mockMultipleQueryCallback, ASYNC_OPERATION_TARGET);
StatusCodeException exception = new StatusCodeException(HttpServletResponse.SC_NOT_FOUND, // $NON-NLS-1$
"404 status code");
// Repeat 4 times, because of retries.
for (int i = 1; i < RETRY_COUNT; i++) {
// Reset the count so we can re-add both entries again.
fakeScheduler.resetCount();
verify(mockService, times(i)).runMultipleQueries(eq(queryTypeList), eq(queryParamsList), callbackMultipleQueries.capture());
// Call the failure handler.
callbackMultipleQueries.getValue().onFailure(exception);
}
ArgumentCaptor<FrontendFailureEventArgs> eventArgs = ArgumentCaptor.forClass(FrontendFailureEventArgs.class);
verify(mockFrontendFailureEvent).raise(eq(Frontend.class), eventArgs.capture());
assertEquals(// $NON-NLS-1$
"Message text didn't match", // $NON-NLS-1$
"A Request to the Server failed with the following Status Code: 404", eventArgs.getValue().getMessages().get(0).getText());
verifyAsyncQueryFailed();
}
use of org.ovirt.engine.core.common.queries.QueryParametersBase in project ovirt-engine by oVirt.
the class FrontendTest method testrunQuery_success_succeeded_eventshandler_converter.
/**
* Run the following test case.
* <ol>
* <li>Run a search query, with *win* as the parameter, searching for VMs</li>
* <li>Return success, the success status is succeeded</li>
* <li>A success converter defined</li>
* <li>Check that the converted value is returned to the callback</li>
* <li>Check to make sure the appropriate query start and query complete events are fired</li>
* </ol>
*/
@Test
public void testrunQuery_success_succeeded_eventshandler_converter() {
Object mockModel = new Object();
Object mockResultModel = new Object();
Object mockConvertedModel = new Object();
when(mockAsyncQuery.getModel()).thenReturn(mockModel);
when(mockAsyncQuery.getConverter()).thenReturn(mockConverter);
// $NON-NLS-1$
QueryParametersBase testParameters = new SearchParameters("*win*", SearchType.VM);
frontend.runQuery(QueryType.Search, testParameters, mockAsyncQuery, false);
verify(mockService).runQuery(eq(QueryType.Search), eq(testParameters), callback.capture());
QueryReturnValue mockReturnValue = new QueryReturnValue();
mockReturnValue.setReturnValue(mockResultModel);
// $NON-NLS-1$
mockReturnValue.setExceptionString("USER_IS_NOT_LOGGED_IN");
when(mockConverter.convert(mockResultModel)).thenReturn(mockConvertedModel);
// Return value set to success
mockReturnValue.setSucceeded(true);
callback.getValue().onSuccess(mockReturnValue);
verify(mockAsyncCallback).onSuccess(mockConvertedModel);
verifyAsyncQuerySucceeded();
}
use of org.ovirt.engine.core.common.queries.QueryParametersBase in project ovirt-engine by oVirt.
the class FrontendTest method testrunQuery_failure_404_with_pending.
/**
* Run the following test case.
* <ol>
* <li>Run a search query, with *win* as the parameter, searching for VMs</li>
* <li>Immediately, before returning a failure result, call the same run query again</li>
* <li>The callback is NOT marked to handle failures</li>
* <li>Force a failure with an HTTP status code = 404 (file not found)</li>
* <li>Check to make sure only one query is called. Due to the second being a duplicate</li>
* <li>Check to make sure the appropriate query start and query complete events are fired</li>
* </ol>
*/
@Test
public void testrunQuery_failure_404_with_pending() {
// $NON-NLS-1$
QueryParametersBase testParameters = new SearchParameters("*win*", SearchType.VM);
frontend.runQuery(QueryType.Search, testParameters, mockAsyncQuery, false);
frontend.runQuery(QueryType.Search, testParameters, mockAsyncQuery, false);
StatusCodeException exception = new StatusCodeException(HttpServletResponse.SC_NOT_FOUND, // $NON-NLS-1$
"404 status code");
// Repeat 4 times, because of retries.
for (int i = 1; i < RETRY_COUNT; i++) {
// Verify that only one request is executed, until the first one is complete.
verify(mockService, times(i)).runQuery(eq(QueryType.Search), eq(testParameters), callback.capture());
// Now finish the first request.
// Call the failure handler.
callback.getValue().onFailure(exception);
}
verify(mockEventsHandler, atLeastOnce()).runQueryFailed(null);
verifyAsyncQueryFailed();
}
Aggregations