blob: c5f4654d0770ff2f087c35f9d23aa319e2726c84 [file] [log] [blame]
/*
* Copyright (c) 1998, 2021 Oracle and/or its affiliates. All rights reserved.
*
* This program and the accompanying materials are made available under the
* terms of the Eclipse Public License v. 2.0 which is available at
* http://www.eclipse.org/legal/epl-2.0,
* or the Eclipse Distribution License v. 1.0 which is available at
* http://www.eclipse.org/org/documents/edl-v10.php.
*
* SPDX-License-Identifier: EPL-2.0 OR BSD-3-Clause
*/
// Contributors:
// Oracle - initial API and implementation from Oracle TopLink
package org.eclipse.persistence.testing.tests.optimization.queryandsqlcounting.querycache;
import org.eclipse.persistence.queries.*;
/**
* Ensure an explicit call to clearQueryResults() actually clears the query cache.
*
* This test can be set to run any of the four cache clearing methods
*/
public class ClearQueryResultsQueryCacheTest extends NamedQueryQueryCacheTest {
protected int apiType = 0;
public static final int CLEAR_WHOLE_CACHE = 0;
public static final int CLEAR_CACHE_BY_QUERY = 1;
public static final int CLEAR_CACHE_BY_NAME = 2;
public static final int CLEAR_CACHE_BY_DESCRIPTOR = 3;
public ClearQueryResultsQueryCacheTest(int apiType) {
if (apiType == CLEAR_WHOLE_CACHE) {
setName("Clear Whole Query Cache Test");
} else if (apiType == CLEAR_CACHE_BY_QUERY) {
setName("Clear Query Cache By Query Test");
} else if (apiType == CLEAR_CACHE_BY_NAME) {
setName("Clear Query Cache By Name Test");
} else {
queryLocation = QUERY_ON_DESCRIPTOR;
setName("Clear Query Cache By Descriptor Test");
}
setDescription("Test the clearQueryResults API on ReadQuery");
this.apiType = apiType;
expectedSQLCount = 1;
}
public void clearCache() {
if (apiType == CLEAR_WHOLE_CACHE) {
getSession().getIdentityMapAccessor().clearQueryCache();
} else if (apiType == CLEAR_CACHE_BY_QUERY) {
ReadQuery query = (ReadQuery)getSessionForQueryTest().getQuery(CACHING_QUERY_NAME);
getSession().getIdentityMapAccessor().clearQueryCache(query);
} else if (apiType == CLEAR_CACHE_BY_NAME) {
getSession().getIdentityMapAccessor().clearQueryCache(NamedQueryQueryCacheTest.CACHING_QUERY_NAME);
} else {
getSession().getIdentityMapAccessor().clearQueryCache(NamedQueryQueryCacheTest.CACHING_QUERY_NAME, getQueryForTest().getReferenceClass());
}
}
@Override
public void test() {
clearCache();
super.test();
}
}