You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@geode.apache.org by ab...@apache.org on 2016/02/08 18:03:31 UTC
[16/50] [abbrv] incubator-geode git commit: Revert "GEODE-714: Modify
all tests to use JUnit Categories"
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/cb7dbd0b/gemfire-core/src/test/java/com/gemstone/gemfire/internal/cache/tier/sockets/HAInterestTestCase.java
----------------------------------------------------------------------
diff --git a/gemfire-core/src/test/java/com/gemstone/gemfire/internal/cache/tier/sockets/HAInterestTestCase.java b/gemfire-core/src/test/java/com/gemstone/gemfire/internal/cache/tier/sockets/HAInterestTestCase.java
deleted file mode 100755
index 481863c..0000000
--- a/gemfire-core/src/test/java/com/gemstone/gemfire/internal/cache/tier/sockets/HAInterestTestCase.java
+++ /dev/null
@@ -1,1018 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package com.gemstone.gemfire.internal.cache.tier.sockets;
-
-import com.gemstone.gemfire.cache.AttributesFactory;
-import com.gemstone.gemfire.cache.Cache;
-import com.gemstone.gemfire.cache.CacheFactory;
-import com.gemstone.gemfire.cache.InterestResultPolicy;
-import com.gemstone.gemfire.cache.MirrorType;
-import com.gemstone.gemfire.cache.Region;
-import com.gemstone.gemfire.cache.RegionAttributes;
-import com.gemstone.gemfire.cache.Scope;
-import com.gemstone.gemfire.cache.client.PoolManager;
-import com.gemstone.gemfire.cache.client.internal.Connection;
-import com.gemstone.gemfire.cache.client.internal.PoolImpl;
-import com.gemstone.gemfire.cache.client.internal.RegisterInterestTracker;
-import com.gemstone.gemfire.cache.client.internal.ServerRegionProxy;
-import com.gemstone.gemfire.cache.server.CacheServer;
-import com.gemstone.gemfire.distributed.DistributedSystem;
-import com.gemstone.gemfire.distributed.internal.DistributionConfig;
-import com.gemstone.gemfire.distributed.internal.ServerLocation;
-import com.gemstone.gemfire.internal.AvailablePort;
-import com.gemstone.gemfire.internal.cache.ClientServerObserverAdapter;
-import com.gemstone.gemfire.internal.cache.ClientServerObserverHolder;
-import com.gemstone.gemfire.internal.cache.CacheServerImpl;
-import com.gemstone.gemfire.internal.cache.LocalRegion;
-import com.gemstone.gemfire.internal.cache.tier.InterestType;
-import com.gemstone.gemfire.test.junit.categories.IntegrationTest;
-
-import dunit.DistributedTestCase;
-import dunit.Host;
-import dunit.VM;
-
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Properties;
-import java.util.Set;
-
-import org.junit.experimental.categories.Category;
-
-/**
- * Tests Interest Registration Functionality
- */
-@SuppressWarnings({"deprecation", "rawtypes", "serial", "unchecked"})
-public class HAInterestTestCase extends DistributedTestCase {
-
- protected static final int TIMEOUT_MILLIS = 60 * 1000;
- protected static final int INTERVAL_MILLIS = 10;
-
- protected static final String REGION_NAME = "HAInterestBaseTest_region";
-
- protected static final String k1 = "k1";
- protected static final String k2 = "k2";
- protected static final String client_k1 = "client-k1";
- protected static final String client_k2 = "client-k2";
- protected static final String server_k1 = "server-k1";
- protected static final String server_k2 = "server-k2";
- protected static final String server_k1_updated = "server_k1_updated";
-
- protected static Cache cache = null;
- protected static PoolImpl pool = null;
- protected static Connection conn = null;
-
- protected static int PORT1;
- protected static int PORT2;
- protected static int PORT3;
-
- protected static boolean isBeforeRegistrationCallbackCalled = false;
- protected static boolean isBeforeInterestRecoveryCallbackCalled = false;
- protected static boolean isAfterRegistrationCallbackCalled = false;
-
- protected static Host host = null;
- protected static VM server1 = null;
- protected static VM server2 = null;
- protected static VM server3 = null;
-
- protected volatile static boolean exceptionOccured = false;
-
- public HAInterestTestCase(String name) {
- super(name);
- }
-
- @Override
- public void setUp() throws Exception {
- super.setUp();
- host = Host.getHost(0);
- server1 = host.getVM(0);
- server2 = host.getVM(1);
- server3 = host.getVM(2);
- CacheServerTestUtil.disableShufflingOfEndpoints();
- // start servers first
- PORT1 = ((Integer) server1.invoke(HAInterestTestCase.class, "createServerCache")).intValue();
- PORT2 = ((Integer) server2.invoke(HAInterestTestCase.class, "createServerCache")).intValue();
- PORT3 = ((Integer) server3.invoke(HAInterestTestCase.class, "createServerCache")).intValue();
- exceptionOccured = false;
- addExpectedException("java.net.ConnectException: Connection refused: connect");
- }
-
- @Override
- public void tearDown2() throws Exception {
- // close the clients first
- closeCache();
-
- // then close the servers
- server1.invoke(HAInterestTestCase.class, "closeCache");
- server2.invoke(HAInterestTestCase.class, "closeCache");
- server3.invoke(HAInterestTestCase.class, "closeCache");
- CacheServerTestUtil.resetDisableShufflingOfEndpointsFlag();
- }
-
- public static void closeCache() {
- PoolImpl.AFTER_REGISTER_CALLBACK_FLAG = false;
- PoolImpl.BEFORE_PRIMARY_IDENTIFICATION_FROM_BACKUP_CALLBACK_FLAG = false;
- PoolImpl.BEFORE_RECOVER_INTEREST_CALLBACK_FLAG = false;
- PoolImpl.BEFORE_REGISTER_CALLBACK_FLAG = false;
- HAInterestTestCase.isAfterRegistrationCallbackCalled = false;
- HAInterestTestCase.isBeforeInterestRecoveryCallbackCalled = false;
- HAInterestTestCase.isBeforeRegistrationCallbackCalled = false;
- if (cache != null && !cache.isClosed()) {
- cache.close();
- cache.getDistributedSystem().disconnect();
- }
- cache = null;
- pool = null;
- conn = null;
- }
-
- /**
- * Return the current primary waiting for a primary to exist.
- *
- * @since 5.7
- */
- public static VM getPrimaryVM() {
- return getPrimaryVM(null);
- }
-
- /**
- * Return the current primary waiting for a primary to exist and for it not to
- * be the oldPrimary (if oldPrimary is NOT null).
- *
- * @since 5.7
- */
- public static VM getPrimaryVM(final VM oldPrimary) {
- WaitCriterion wc = new WaitCriterion() {
- @Override
- public boolean done() {
- int primaryPort = pool.getPrimaryPort();
- if (primaryPort == -1) {
- return false;
- }
- // we have a primary
- VM currentPrimary = getServerVM(primaryPort);
- if (currentPrimary != oldPrimary) {
- return true;
- }
- return false;
- }
- @Override
- public String description() {
- return "waiting for primary";
- }
- };
- DistributedTestCase.waitForCriterion(wc, TIMEOUT_MILLIS, INTERVAL_MILLIS, true);
-
- int primaryPort = pool.getPrimaryPort();
- assertTrue(primaryPort != -1);
- VM currentPrimary = getServerVM(primaryPort);
- assertTrue(currentPrimary != oldPrimary);
- return currentPrimary;
- }
-
- public static VM getBackupVM() {
- return getBackupVM(null);
- }
-
- public static VM getBackupVM(VM stoppedBackup) {
- VM currentPrimary = getPrimaryVM(null);
- if (currentPrimary != server2 && server2 != stoppedBackup) {
- return server2;
- } else if (currentPrimary != server3 && server3 != stoppedBackup) {
- return server3;
- } else if (currentPrimary != server1 && server1 != stoppedBackup) {
- return server1;
- } else {
- fail("expected currentPrimary " + currentPrimary + " to be " + server1 + ", or " + server2 + ", or " + server3);
- return null;
- }
- }
-
- /**
- * Given a server vm (server1, server2, or server3) return its port.
- *
- * @since 5.7
- */
- public static int getServerPort(VM vm) {
- if (vm == server1) {
- return PORT1;
- } else if (vm == server2) {
- return PORT2;
- } else if (vm == server3) {
- return PORT3;
- } else {
- fail("expected vm " + vm + " to be " + server1 + ", or " + server2 + ", or " + server3);
- return -1;
- }
- }
-
- /**
- * Given a server port (PORT1, PORT2, or PORT3) return its vm.
- *
- * @since 5.7
- */
- public static VM getServerVM(int port) {
- if (port == PORT1) {
- return server1;
- } else if (port == PORT2) {
- return server2;
- } else if (port == PORT3) {
- return server3;
- } else {
- fail("expected port " + port + " to be " + PORT1 + ", or " + PORT2 + ", or " + PORT3);
- return null;
- }
- }
-
- public static void verifyRefreshedEntriesFromServer() {
- final Region r1 = cache.getRegion(Region.SEPARATOR + REGION_NAME);
- assertNotNull(r1);
-
- WaitCriterion wc = new WaitCriterion() {
- @Override
- public boolean done() {
- Region.Entry re = r1.getEntry(k1);
- if (re == null)
- return false;
- Object val = re.getValue();
- return client_k1.equals(val);
- }
- @Override
- public String description() {
- return "waiting for client_k1 refresh from server";
- }
- };
- DistributedTestCase.waitForCriterion(wc, TIMEOUT_MILLIS, INTERVAL_MILLIS, true);
-
- wc = new WaitCriterion() {
- @Override
- public boolean done() {
- Region.Entry re = r1.getEntry(k2);
- if (re == null)
- return false;
- Object val = re.getValue();
- return client_k2.equals(val);
- }
- @Override
- public String description() {
- return "waiting for client_k2 refresh from server";
- }
- };
- DistributedTestCase.waitForCriterion(wc, TIMEOUT_MILLIS, INTERVAL_MILLIS, true);
- }
-
- public static void verifyDeadAndLiveServers(final int expectedDeadServers, final int expectedLiveServers) {
- WaitCriterion wc = new WaitCriterion() {
- @Override
- public boolean done() {
- return pool.getConnectedServerCount() == expectedLiveServers;
- }
- @Override
- public String description() {
- return "waiting for pool.getConnectedServerCount() == expectedLiveServer";
- }
- };
- DistributedTestCase.waitForCriterion(wc, TIMEOUT_MILLIS, INTERVAL_MILLIS, true);
- }
-
- public static void putK1andK2() {
- Region r1 = cache.getRegion(Region.SEPARATOR + REGION_NAME);
- assertNotNull(r1);
- r1.put(k1, server_k1);
- r1.put(k2, server_k2);
- }
-
- public static void setClientServerObserverForBeforeInterestRecoveryFailure() {
- PoolImpl.BEFORE_RECOVER_INTEREST_CALLBACK_FLAG = true;
- ClientServerObserverHolder.setInstance(new ClientServerObserverAdapter() {
- public void beforeInterestRecovery() {
- synchronized (HAInterestTestCase.class) {
- Thread t = new Thread() {
- public void run() {
- getBackupVM().invoke(HAInterestTestCase.class, "startServer");
- getPrimaryVM().invoke(HAInterestTestCase.class, "stopServer");
- }
- };
- t.start();
- try {
- DistributedTestCase.join(t, 30 * 1000, getLogWriter());
- } catch (Exception ignore) {
- exceptionOccured = true;
- }
- HAInterestTestCase.isBeforeInterestRecoveryCallbackCalled = true;
- HAInterestTestCase.class.notify();
- PoolImpl.BEFORE_RECOVER_INTEREST_CALLBACK_FLAG = false;
- }
- }
- });
- }
-
- public static void setClientServerObserverForBeforeInterestRecovery() {
- PoolImpl.BEFORE_RECOVER_INTEREST_CALLBACK_FLAG = true;
- ClientServerObserverHolder.setInstance(new ClientServerObserverAdapter() {
- public void beforeInterestRecovery() {
- synchronized (HAInterestTestCase.class) {
- Thread t = new Thread() {
- public void run() {
- Region r1 = cache.getRegion(Region.SEPARATOR + REGION_NAME);
- assertNotNull(r1);
- r1.put(k1, server_k1_updated);
- }
- };
- t.start();
-
- HAInterestTestCase.isBeforeInterestRecoveryCallbackCalled = true;
- HAInterestTestCase.class.notify();
- PoolImpl.BEFORE_RECOVER_INTEREST_CALLBACK_FLAG = false;
- }
- }
- });
- }
-
- public static void waitForBeforeInterestRecoveryCallBack() throws InterruptedException {
- assertNotNull(cache);
- synchronized (HAInterestTestCase.class) {
- while (!isBeforeInterestRecoveryCallbackCalled) {
- HAInterestTestCase.class.wait();
- }
- }
- }
-
- public static void setClientServerObserverForBeforeRegistration(final VM vm) {
- PoolImpl.BEFORE_REGISTER_CALLBACK_FLAG = true;
- ClientServerObserverHolder.setInstance(new ClientServerObserverAdapter() {
- public void beforeInterestRegistration() {
- synchronized (HAInterestTestCase.class) {
- vm.invoke(HAInterestTestCase.class, "startServer");
- HAInterestTestCase.isBeforeRegistrationCallbackCalled = true;
- HAInterestTestCase.class.notify();
- PoolImpl.BEFORE_REGISTER_CALLBACK_FLAG = false;
- }
- }
- });
- }
-
- public static void waitForBeforeRegistrationCallback() throws InterruptedException {
- assertNotNull(cache);
- synchronized (HAInterestTestCase.class) {
- while (!isBeforeRegistrationCallbackCalled) {
- HAInterestTestCase.class.wait();
- }
- }
- }
-
- public static void setClientServerObserverForAfterRegistration(final VM vm) {
- PoolImpl.AFTER_REGISTER_CALLBACK_FLAG = true;
- ClientServerObserverHolder.setInstance(new ClientServerObserverAdapter() {
- public void afterInterestRegistration() {
- synchronized (HAInterestTestCase.class) {
- vm.invoke(HAInterestTestCase.class, "startServer");
- HAInterestTestCase.isAfterRegistrationCallbackCalled = true;
- HAInterestTestCase.class.notify();
- PoolImpl.AFTER_REGISTER_CALLBACK_FLAG = false;
- }
- }
- });
- }
-
- public static void waitForAfterRegistrationCallback() throws InterruptedException {
- assertNotNull(cache);
- if (!isAfterRegistrationCallbackCalled) {
- synchronized (HAInterestTestCase.class) {
- while (!isAfterRegistrationCallbackCalled) {
- HAInterestTestCase.class.wait();
- }
- }
- }
- }
-
- public static void unSetClientServerObserverForRegistrationCallback() {
- synchronized (HAInterestTestCase.class) {
- PoolImpl.BEFORE_REGISTER_CALLBACK_FLAG = false;
- PoolImpl.AFTER_REGISTER_CALLBACK_FLAG = false;
- HAInterestTestCase.isBeforeRegistrationCallbackCalled = false;
- HAInterestTestCase.isAfterRegistrationCallbackCalled = false;
- }
- }
-
- public static void verifyDispatcherIsAlive() {
- assertEquals("More than one BridgeServer", 1, cache.getCacheServers().size());
-
- WaitCriterion wc = new WaitCriterion() {
- @Override
- public boolean done() {
- return cache.getCacheServers().size() == 1;
- }
- @Override
- public String description() {
- return "waiting for cache.getCacheServers().size() == 1";
- }
- };
- DistributedTestCase.waitForCriterion(wc, TIMEOUT_MILLIS, INTERVAL_MILLIS, true);
-
- CacheServerImpl bs = (CacheServerImpl) cache.getCacheServers().iterator().next();
- assertNotNull(bs);
- assertNotNull(bs.getAcceptor());
- assertNotNull(bs.getAcceptor().getCacheClientNotifier());
- final CacheClientNotifier ccn = bs.getAcceptor().getCacheClientNotifier();
-
- wc = new WaitCriterion() {
- @Override
- public boolean done() {
- return ccn.getClientProxies().size() > 0;
- }
- @Override
- public String description() {
- return "waiting for ccn.getClientProxies().size() > 0";
- }
- };
- DistributedTestCase.waitForCriterion(wc, TIMEOUT_MILLIS, INTERVAL_MILLIS, true);
-
- wc = new WaitCriterion() {
- Iterator iter_prox;
- CacheClientProxy proxy;
-
- @Override
- public boolean done() {
- iter_prox = ccn.getClientProxies().iterator();
- if (iter_prox.hasNext()) {
- proxy = (CacheClientProxy) iter_prox.next();
- return proxy._messageDispatcher.isAlive();
- } else {
- return false;
- }
- }
-
- @Override
- public String description() {
- return "waiting for CacheClientProxy _messageDispatcher to be alive";
- }
- };
- DistributedTestCase.waitForCriterion(wc, TIMEOUT_MILLIS, INTERVAL_MILLIS, true);
- }
-
- public static void verifyDispatcherIsNotAlive() {
- WaitCriterion wc = new WaitCriterion() {
- @Override
- public boolean done() {
- return cache.getCacheServers().size() == 1;
- }
- @Override
- public String description() {
- return "cache.getCacheServers().size() == 1";
- }
- };
- DistributedTestCase.waitForCriterion(wc, TIMEOUT_MILLIS, INTERVAL_MILLIS, true);
-
- CacheServerImpl bs = (CacheServerImpl) cache.getCacheServers().iterator().next();
- assertNotNull(bs);
- assertNotNull(bs.getAcceptor());
- assertNotNull(bs.getAcceptor().getCacheClientNotifier());
- final CacheClientNotifier ccn = bs.getAcceptor().getCacheClientNotifier();
-
- wc = new WaitCriterion() {
- @Override
- public boolean done() {
- return ccn.getClientProxies().size() > 0;
- }
- @Override
- public String description() {
- return "waiting for ccn.getClientProxies().size() > 0";
- }
- };
- DistributedTestCase.waitForCriterion(wc, TIMEOUT_MILLIS, INTERVAL_MILLIS, true);
-
- Iterator iter_prox = ccn.getClientProxies().iterator();
- if (iter_prox.hasNext()) {
- CacheClientProxy proxy = (CacheClientProxy) iter_prox.next();
- assertFalse("Dispatcher on secondary should not be alive", proxy._messageDispatcher.isAlive());
- }
- }
-
- public static void createEntriesK1andK2OnServer() {
- Region r1 = cache.getRegion(Region.SEPARATOR + REGION_NAME);
- assertNotNull(r1);
- if (!r1.containsKey(k1)) {
- r1.create(k1, server_k1);
- }
- if (!r1.containsKey(k2)) {
- r1.create(k2, server_k2);
- }
- assertEquals(r1.getEntry(k1).getValue(), server_k1);
- assertEquals(r1.getEntry(k2).getValue(), server_k2);
- }
-
- public static void createEntriesK1andK2() {
- Region r1 = cache.getRegion(Region.SEPARATOR + REGION_NAME);
- assertNotNull(r1);
- if (!r1.containsKey(k1)) {
- r1.create(k1, client_k1);
- }
- if (!r1.containsKey(k2)) {
- r1.create(k2, client_k2);
- }
- assertEquals(r1.getEntry(k1).getValue(), client_k1);
- assertEquals(r1.getEntry(k2).getValue(), client_k2);
- }
-
- public static void createServerEntriesK1andK2() {
- Region r1 = cache.getRegion(Region.SEPARATOR + REGION_NAME);
- assertNotNull(r1);
- if (!r1.containsKey(k1)) {
- r1.create(k1, server_k1);
- }
- if (!r1.containsKey(k2)) {
- r1.create(k2, server_k2);
- }
- assertEquals(r1.getEntry(k1).getValue(), server_k1);
- assertEquals(r1.getEntry(k2).getValue(), server_k2);
- }
-
- public static void registerK1AndK2() {
- Region r = cache.getRegion(Region.SEPARATOR + REGION_NAME);
- assertNotNull(r);
- List list = new ArrayList();
- list.add(k1);
- list.add(k2);
- r.registerInterest(list, InterestResultPolicy.KEYS_VALUES);
- }
-
- public static void reRegisterK1AndK2() {
- Region r = cache.getRegion(Region.SEPARATOR + REGION_NAME);
- assertNotNull(r);
- List list = new ArrayList();
- list.add(k1);
- list.add(k2);
- r.registerInterest(list);
- }
-
- public static void startServer() throws IOException {
- Cache c = CacheFactory.getAnyInstance();
- assertEquals("More than one BridgeServer", 1, c.getCacheServers().size());
- CacheServerImpl bs = (CacheServerImpl) c.getCacheServers().iterator().next();
- assertNotNull(bs);
- bs.start();
- }
-
- public static void stopServer() {
- assertEquals("More than one BridgeServer", 1, cache.getCacheServers().size());
- CacheServerImpl bs = (CacheServerImpl) cache.getCacheServers().iterator().next();
- assertNotNull(bs);
- bs.stop();
- }
-
- public static void stopPrimaryAndRegisterK1AndK2AndVerifyResponse() {
- LocalRegion r = (LocalRegion) cache.getRegion(Region.SEPARATOR + REGION_NAME);
- assertNotNull(r);
- ServerRegionProxy srp = new ServerRegionProxy(r);
-
- WaitCriterion wc = new WaitCriterion() {
- @Override
- public boolean done() {
- return pool.getConnectedServerCount() == 3;
- }
- @Override
- public String description() {
- return "connected server count never became 3";
- }
- };
- DistributedTestCase.waitForCriterion(wc, TIMEOUT_MILLIS, INTERVAL_MILLIS, true);
-
- // close primaryEP
- getPrimaryVM().invoke(HAInterestTestCase.class, "stopServer");
- List list = new ArrayList();
- list.add(k1);
- list.add(k2);
- List serverKeys = srp.registerInterest(list, InterestType.KEY, InterestResultPolicy.KEYS, false, r.getAttributes().getDataPolicy().ordinal);
- assertNotNull(serverKeys);
- List resultKeys = (List) serverKeys.get(0);
- assertEquals(2, resultKeys.size());
- assertTrue(resultKeys.contains(k1));
- assertTrue(resultKeys.contains(k2));
- }
-
- public static void stopPrimaryAndUnregisterRegisterK1() {
- LocalRegion r = (LocalRegion) cache.getRegion(Region.SEPARATOR + REGION_NAME);
- assertNotNull(r);
- ServerRegionProxy srp = new ServerRegionProxy(r);
-
- WaitCriterion wc = new WaitCriterion() {
- @Override
- public boolean done() {
- return pool.getConnectedServerCount() == 3;
- }
- @Override
- public String description() {
- return "connected server count never became 3";
- }
- };
- DistributedTestCase.waitForCriterion(wc, TIMEOUT_MILLIS, INTERVAL_MILLIS, true);
-
- // close primaryEP
- getPrimaryVM().invoke(HAInterestTestCase.class, "stopServer");
- List list = new ArrayList();
- list.add(k1);
- srp.unregisterInterest(list, InterestType.KEY, false, false);
- }
-
- public static void stopBothPrimaryAndSecondaryAndRegisterK1AndK2AndVerifyResponse() {
- LocalRegion r = (LocalRegion) cache.getRegion(Region.SEPARATOR + REGION_NAME);
- assertNotNull(r);
- ServerRegionProxy srp = new ServerRegionProxy(r);
-
- WaitCriterion wc = new WaitCriterion() {
- @Override
- public boolean done() {
- return pool.getConnectedServerCount() == 3;
- }
- @Override
- public String description() {
- return "connected server count never became 3";
- }
- };
- DistributedTestCase.waitForCriterion(wc, TIMEOUT_MILLIS, INTERVAL_MILLIS, true);
-
- // close primaryEP
- VM backup = getBackupVM();
- getPrimaryVM().invoke(HAInterestTestCase.class, "stopServer");
- // close secondary
- backup.invoke(HAInterestTestCase.class, "stopServer");
- List list = new ArrayList();
- list.add(k1);
- list.add(k2);
- List serverKeys = srp.registerInterest(list, InterestType.KEY, InterestResultPolicy.KEYS, false, r.getAttributes().getDataPolicy().ordinal);
-
- assertNotNull(serverKeys);
- List resultKeys = (List) serverKeys.get(0);
- assertEquals(2, resultKeys.size());
- assertTrue(resultKeys.contains(k1));
- assertTrue(resultKeys.contains(k2));
- }
-
- /**
- * returns the secondary that was stopped
- */
- public static VM stopSecondaryAndRegisterK1AndK2AndVerifyResponse() {
- LocalRegion r = (LocalRegion) cache.getRegion(Region.SEPARATOR + REGION_NAME);
- assertNotNull(r);
- ServerRegionProxy srp = new ServerRegionProxy(r);
-
- WaitCriterion wc = new WaitCriterion() {
- @Override
- public boolean done() {
- return pool.getConnectedServerCount() == 3;
- }
- @Override
- public String description() {
- return "Never got three connected servers";
- }
- };
- DistributedTestCase.waitForCriterion(wc, TIMEOUT_MILLIS, INTERVAL_MILLIS, true);
-
- // close secondary EP
- VM result = getBackupVM();
- result.invoke(HAInterestTestCase.class, "stopServer");
- List list = new ArrayList();
- list.add(k1);
- list.add(k2);
- List serverKeys = srp.registerInterest(list, InterestType.KEY, InterestResultPolicy.KEYS, false, r.getAttributes().getDataPolicy().ordinal);
-
- assertNotNull(serverKeys);
- List resultKeys = (List) serverKeys.get(0);
- assertEquals(2, resultKeys.size());
- assertTrue(resultKeys.contains(k1));
- assertTrue(resultKeys.contains(k2));
- return result;
- }
-
- /**
- * returns the secondary that was stopped
- */
- public static VM stopSecondaryAndUNregisterK1() {
- LocalRegion r = (LocalRegion) cache.getRegion(Region.SEPARATOR + REGION_NAME);
- assertNotNull(r);
- ServerRegionProxy srp = new ServerRegionProxy(r);
-
- WaitCriterion wc = new WaitCriterion() {
- @Override
- public boolean done() {
- return pool.getConnectedServerCount() == 3;
- }
- @Override
- public String description() {
- return "connected server count never became 3";
- }
- };
- DistributedTestCase.waitForCriterion(wc, TIMEOUT_MILLIS, INTERVAL_MILLIS, true);
-
- // close secondary EP
- VM result = getBackupVM();
- result.invoke(HAInterestTestCase.class, "stopServer");
- List list = new ArrayList();
- list.add(k1);
- srp.unregisterInterest(list, InterestType.KEY, false, false);
- return result;
- }
-
- public static void registerK1AndK2OnPrimaryAndSecondaryAndVerifyResponse() {
- ServerLocation primary = pool.getPrimary();
- ServerLocation secondary = (ServerLocation) pool.getRedundants().get(0);
- LocalRegion r = (LocalRegion) cache.getRegion(Region.SEPARATOR + REGION_NAME);
- assertNotNull(r);
- ServerRegionProxy srp = new ServerRegionProxy(r);
- List list = new ArrayList();
- list.add(k1);
- list.add(k2);
-
- // Primary server
- List serverKeys1 = srp.registerInterestOn(primary, list, InterestType.KEY, InterestResultPolicy.KEYS, false, r.getAttributes().getDataPolicy().ordinal);
- assertNotNull(serverKeys1);
- // expect serverKeys in response from primary
- List resultKeys = (List) serverKeys1.get(0);
- assertEquals(2, resultKeys.size());
- assertTrue(resultKeys.contains(k1));
- assertTrue(resultKeys.contains(k2));
-
- // Secondary server
- List serverKeys2 = srp.registerInterestOn(secondary, list, InterestType.KEY, InterestResultPolicy.KEYS, false, r.getAttributes().getDataPolicy().ordinal);
- // if the list is null then it is empty
- if (serverKeys2 != null) {
- // no serverKeys in response from secondary
- assertTrue(serverKeys2.isEmpty());
- }
- }
-
- public static void verifyInterestRegistration() {
- WaitCriterion wc = new WaitCriterion() {
- @Override
- public boolean done() {
- return cache.getCacheServers().size() == 1;
- }
- @Override
- public String description() {
- return "waiting for cache.getCacheServers().size() == 1";
- }
- };
- DistributedTestCase.waitForCriterion(wc, TIMEOUT_MILLIS, INTERVAL_MILLIS, true);
-
- CacheServerImpl bs = (CacheServerImpl) cache.getCacheServers().iterator().next();
- assertNotNull(bs);
- assertNotNull(bs.getAcceptor());
- assertNotNull(bs.getAcceptor().getCacheClientNotifier());
- final CacheClientNotifier ccn = bs.getAcceptor().getCacheClientNotifier();
-
- wc = new WaitCriterion() {
- @Override
- public boolean done() {
- return ccn.getClientProxies().size() > 0;
- }
- @Override
- public String description() {
- return "waiting for ccn.getClientProxies().size() > 0";
- }
- };
- DistributedTestCase.waitForCriterion(wc, TIMEOUT_MILLIS, INTERVAL_MILLIS, true);
-
- Iterator iter_prox = ccn.getClientProxies().iterator();
-
- if (iter_prox.hasNext()) {
- final CacheClientProxy ccp = (CacheClientProxy) iter_prox.next();
-
- wc = new WaitCriterion() {
- @Override
- public boolean done() {
- Set keysMap = (Set) ccp.cils[RegisterInterestTracker.interestListIndex]
- .getProfile(Region.SEPARATOR + REGION_NAME)
- .getKeysOfInterestFor(ccp.getProxyID());
- return keysMap != null && keysMap.size() == 2;
- }
- @Override
- public String description() {
- return "waiting for keys of interest to include 2 keys";
- }
- };
- DistributedTestCase.waitForCriterion(wc, TIMEOUT_MILLIS, INTERVAL_MILLIS, true);
-
- Set keysMap = (Set) ccp.cils[RegisterInterestTracker.interestListIndex].getProfile(Region.SEPARATOR + REGION_NAME)
- .getKeysOfInterestFor(ccp.getProxyID());
- assertNotNull(keysMap);
- assertEquals(2, keysMap.size());
- assertTrue(keysMap.contains(k1));
- assertTrue(keysMap.contains(k2));
- }
- }
-
- public static void verifyInterestUNRegistration() {
- WaitCriterion wc = new WaitCriterion() {
- @Override
- public boolean done() {
- return cache.getCacheServers().size() == 1;
- }
- @Override
- public String description() {
- return "waiting for cache.getCacheServers().size() == 1";
- }
- };
- DistributedTestCase.waitForCriterion(wc, TIMEOUT_MILLIS, INTERVAL_MILLIS, true);
-
- CacheServerImpl bs = (CacheServerImpl) cache.getCacheServers().iterator().next();
- assertNotNull(bs);
- assertNotNull(bs.getAcceptor());
- assertNotNull(bs.getAcceptor().getCacheClientNotifier());
- final CacheClientNotifier ccn = bs.getAcceptor().getCacheClientNotifier();
-
- wc = new WaitCriterion() {
- @Override
- public boolean done() {
- return ccn.getClientProxies().size() > 0;
- }
- @Override
- public String description() {
- return "waiting for ccn.getClientProxies().size() > 0";
- }
- };
- DistributedTestCase.waitForCriterion(wc, TIMEOUT_MILLIS, INTERVAL_MILLIS, true);
-
- Iterator iter_prox = ccn.getClientProxies().iterator();
- if (iter_prox.hasNext()) {
- final CacheClientProxy ccp = (CacheClientProxy) iter_prox.next();
-
- wc = new WaitCriterion() {
- @Override
- public boolean done() {
- Set keysMap = (Set) ccp.cils[RegisterInterestTracker.interestListIndex]
- .getProfile(Region.SEPARATOR + REGION_NAME)
- .getKeysOfInterestFor(ccp.getProxyID());
- return keysMap != null;
- }
- @Override
- public String description() {
- return "waiting for keys of interest to not be null";
- }
- };
- DistributedTestCase.waitForCriterion(wc, TIMEOUT_MILLIS, INTERVAL_MILLIS, true);
-
- Set keysMap = (Set) ccp.cils[RegisterInterestTracker.interestListIndex]
- .getProfile(Region.SEPARATOR + REGION_NAME)
- .getKeysOfInterestFor(ccp.getProxyID());
- assertNotNull(keysMap);
- assertEquals(1, keysMap.size());
- assertFalse(keysMap.contains(k1));
- assertTrue(keysMap.contains(k2));
- }
- }
-
- private void createCache(Properties props) throws Exception {
- DistributedSystem ds = getSystem(props);
- assertNotNull(ds);
- ds.disconnect();
- ds = getSystem(props);
- cache = CacheFactory.create(ds);
- assertNotNull(cache);
- }
-
- public static void createClientPoolCache(String testName, String host) throws Exception {
- Properties props = new Properties();
- props.setProperty(DistributionConfig.MCAST_PORT_NAME, "0");
- props.setProperty(DistributionConfig.LOCATORS_NAME, "");
- new HAInterestTestCase("temp").createCache(props);
- CacheServerTestUtil.disableShufflingOfEndpoints();
- PoolImpl p;
- try {
- p = (PoolImpl) PoolManager.createFactory()
- .addServer(host, PORT1)
- .addServer(host, PORT2)
- .addServer(host, PORT3)
- .setSubscriptionEnabled(true)
- .setSubscriptionRedundancy(-1)
- .setReadTimeout(1000)
- .setPingInterval(1000)
- // retryInterval should be more so that only registerInterste thread
- // will initiate failover
- // .setRetryInterval(20000)
- .create("HAInterestBaseTestPool");
- } finally {
- CacheServerTestUtil.enableShufflingOfEndpoints();
- }
- AttributesFactory factory = new AttributesFactory();
- factory.setScope(Scope.LOCAL);
- factory.setConcurrencyChecksEnabled(true);
- factory.setPoolName(p.getName());
-
- cache.createRegion(REGION_NAME, factory.create());
- pool = p;
- conn = pool.acquireConnection();
- assertNotNull(conn);
- }
-
- public static void createClientPoolCacheWithSmallRetryInterval(String testName, String host) throws Exception {
- Properties props = new Properties();
- props.setProperty(DistributionConfig.MCAST_PORT_NAME, "0");
- props.setProperty(DistributionConfig.LOCATORS_NAME, "");
- new HAInterestTestCase("temp").createCache(props);
- CacheServerTestUtil.disableShufflingOfEndpoints();
- PoolImpl p;
- try {
- p = (PoolImpl) PoolManager.createFactory()
- .addServer(host, PORT1)
- .addServer(host, PORT2)
- .setSubscriptionEnabled(true)
- .setSubscriptionRedundancy(-1)
- .setReadTimeout(1000)
- .setSocketBufferSize(32768)
- .setMinConnections(6)
- .setPingInterval(200)
- // .setRetryInterval(200)
- // retryAttempts 3
- .create("HAInterestBaseTestPool");
- } finally {
- CacheServerTestUtil.enableShufflingOfEndpoints();
- }
- AttributesFactory factory = new AttributesFactory();
- factory.setScope(Scope.LOCAL);
- factory.setConcurrencyChecksEnabled(true);
- factory.setPoolName(p.getName());
-
- cache.createRegion(REGION_NAME, factory.create());
-
- pool = p;
- conn = pool.acquireConnection();
- assertNotNull(conn);
- }
-
- public static void createClientPoolCacheConnectionToSingleServer(String testName, String hostName) throws Exception {
- Properties props = new Properties();
- props.setProperty(DistributionConfig.MCAST_PORT_NAME, "0");
- props.setProperty(DistributionConfig.LOCATORS_NAME, "");
- new HAInterestTestCase("temp").createCache(props);
- PoolImpl p = (PoolImpl) PoolManager.createFactory()
- .addServer(hostName, PORT1)
- .setSubscriptionEnabled(true)
- .setSubscriptionRedundancy(-1)
- .setReadTimeout(1000)
- // .setRetryInterval(20)
- .create("HAInterestBaseTestPool");
- AttributesFactory factory = new AttributesFactory();
- factory.setScope(Scope.LOCAL);
- factory.setConcurrencyChecksEnabled(true);
- factory.setPoolName(p.getName());
-
- cache.createRegion(REGION_NAME, factory.create());
-
- pool = p;
- conn = pool.acquireConnection();
- assertNotNull(conn);
- }
-
- public static Integer createServerCache() throws Exception {
- new HAInterestTestCase("temp").createCache(new Properties());
- AttributesFactory factory = new AttributesFactory();
- factory.setScope(Scope.DISTRIBUTED_ACK);
- factory.setEnableBridgeConflation(true);
- factory.setMirrorType(MirrorType.KEYS_VALUES);
- factory.setConcurrencyChecksEnabled(true);
- cache.createRegion(REGION_NAME, factory.create());
-
- CacheServer server = cache.addCacheServer();
- int port = AvailablePort.getRandomAvailablePort(AvailablePort.SOCKET);
- server.setPort(port);
- server.setMaximumTimeBetweenPings(180000);
- // ensures updates to be sent instead of invalidations
- server.setNotifyBySubscription(true);
- server.start();
- return new Integer(server.getPort());
- }
-
- public static Integer createServerCacheWithLocalRegion() throws Exception {
- new HAInterestTestCase("temp").createCache(new Properties());
- AttributesFactory factory = new AttributesFactory();
- factory.setScope(Scope.LOCAL);
- factory.setConcurrencyChecksEnabled(true);
- RegionAttributes attrs = factory.create();
- cache.createRegion(REGION_NAME, attrs);
-
- CacheServer server = cache.addCacheServer();
- int port = AvailablePort.getRandomAvailablePort(AvailablePort.SOCKET);
- server.setPort(port);
- // ensures updates to be sent instead of invalidations
- server.setNotifyBySubscription(true);
- server.setMaximumTimeBetweenPings(180000);
- server.start();
- return new Integer(server.getPort());
- }
-}
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/cb7dbd0b/gemfire-core/src/test/java/com/gemstone/gemfire/internal/cache/tier/sockets/command/CommitCommandTest.java
----------------------------------------------------------------------
diff --git a/gemfire-core/src/test/java/com/gemstone/gemfire/internal/cache/tier/sockets/command/CommitCommandTest.java b/gemfire-core/src/test/java/com/gemstone/gemfire/internal/cache/tier/sockets/command/CommitCommandTest.java
index b6bfe22..b12f55b 100644
--- a/gemfire-core/src/test/java/com/gemstone/gemfire/internal/cache/tier/sockets/command/CommitCommandTest.java
+++ b/gemfire-core/src/test/java/com/gemstone/gemfire/internal/cache/tier/sockets/command/CommitCommandTest.java
@@ -22,18 +22,12 @@ import static org.mockito.Mockito.when;
import java.io.IOException;
import org.junit.Test;
-import org.junit.experimental.categories.Category;
import com.gemstone.gemfire.CancelCriterion;
import com.gemstone.gemfire.cache.Cache;
import com.gemstone.gemfire.internal.cache.tier.sockets.Message;
import com.gemstone.gemfire.internal.cache.tier.sockets.ServerConnection;
-import com.gemstone.gemfire.test.junit.categories.UnitTest;
-/**
- * Exposes GEODE-537: NPE in JTA AFTER_COMPLETION command processing
- */
-@Category(UnitTest.class)
public class CommitCommandTest {
/**
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/cb7dbd0b/gemfire-core/src/test/java/com/gemstone/gemfire/internal/logging/LogWriterPerformanceTest.java
----------------------------------------------------------------------
diff --git a/gemfire-core/src/test/java/com/gemstone/gemfire/internal/logging/LogWriterPerformanceTest.java b/gemfire-core/src/test/java/com/gemstone/gemfire/internal/logging/LogWriterPerformanceTest.java
index 1f72a6b..77d7995 100644
--- a/gemfire-core/src/test/java/com/gemstone/gemfire/internal/logging/LogWriterPerformanceTest.java
+++ b/gemfire-core/src/test/java/com/gemstone/gemfire/internal/logging/LogWriterPerformanceTest.java
@@ -21,22 +21,16 @@ import java.io.FileOutputStream;
import java.io.IOException;
import java.util.Properties;
-import org.junit.Ignore;
-import org.junit.experimental.categories.Category;
-
import com.gemstone.gemfire.LogWriter;
import com.gemstone.gemfire.distributed.internal.DistributionConfig;
import com.gemstone.gemfire.distributed.internal.DistributionConfigImpl;
import com.gemstone.gemfire.internal.util.IOUtils;
-import com.gemstone.gemfire.test.junit.categories.PerformanceTest;
/**
* Tests performance of logging when level is OFF.
*
* @author Kirk Lund
*/
-@Category(PerformanceTest.class)
-@Ignore("Tests have no assertions")
public class LogWriterPerformanceTest extends LoggingPerformanceTestCase {
public LogWriterPerformanceTest(String name) {
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/cb7dbd0b/gemfire-core/src/test/java/com/gemstone/gemfire/internal/logging/log4j/Log4J2DisabledPerformanceTest.java
----------------------------------------------------------------------
diff --git a/gemfire-core/src/test/java/com/gemstone/gemfire/internal/logging/log4j/Log4J2DisabledPerformanceTest.java b/gemfire-core/src/test/java/com/gemstone/gemfire/internal/logging/log4j/Log4J2DisabledPerformanceTest.java
index caedadc..f98868b 100644
--- a/gemfire-core/src/test/java/com/gemstone/gemfire/internal/logging/log4j/Log4J2DisabledPerformanceTest.java
+++ b/gemfire-core/src/test/java/com/gemstone/gemfire/internal/logging/log4j/Log4J2DisabledPerformanceTest.java
@@ -20,13 +20,7 @@ import java.io.IOException;
import org.apache.logging.log4j.Level;
import org.apache.logging.log4j.Logger;
-import org.junit.Ignore;
-import org.junit.experimental.categories.Category;
-import com.gemstone.gemfire.test.junit.categories.PerformanceTest;
-
-@Category(PerformanceTest.class)
-@Ignore("Tests have no assertions")
public class Log4J2DisabledPerformanceTest extends Log4J2PerformanceTest {
public Log4J2DisabledPerformanceTest(String name) {
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/cb7dbd0b/gemfire-core/src/test/java/com/gemstone/gemfire/internal/logging/log4j/Log4J2PerformanceTest.java
----------------------------------------------------------------------
diff --git a/gemfire-core/src/test/java/com/gemstone/gemfire/internal/logging/log4j/Log4J2PerformanceTest.java b/gemfire-core/src/test/java/com/gemstone/gemfire/internal/logging/log4j/Log4J2PerformanceTest.java
index ddf106d..a002389 100644
--- a/gemfire-core/src/test/java/com/gemstone/gemfire/internal/logging/log4j/Log4J2PerformanceTest.java
+++ b/gemfire-core/src/test/java/com/gemstone/gemfire/internal/logging/log4j/Log4J2PerformanceTest.java
@@ -29,17 +29,12 @@ import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.apache.logging.log4j.core.config.ConfigurationFactory;
import org.apache.logging.log4j.util.PropertiesUtil;
-import org.junit.Ignore;
-import org.junit.experimental.categories.Category;
import com.gemstone.gemfire.internal.FileUtil;
import com.gemstone.gemfire.internal.logging.LoggingPerformanceTestCase;
import com.gemstone.gemfire.internal.util.IOUtils;
-import com.gemstone.gemfire.test.junit.categories.PerformanceTest;
import com.gemstone.org.apache.logging.log4j.core.config.xml.GemFireXmlConfigurationFactory;
-@Category(PerformanceTest.class)
-@Ignore("Tests have no assertions")
public class Log4J2PerformanceTest extends LoggingPerformanceTestCase {
protected static final int DEFAULT_LOG_FILE_SIZE_LIMIT = Integer.MAX_VALUE;
@@ -49,11 +44,13 @@ public class Log4J2PerformanceTest extends LoggingPerformanceTestCase {
protected static final String SYS_LOG_FILE_SIZE_LIMIT = "gemfire-log-file-size-limit";
protected static final String SYS_LOG_FILE_COUNT_LIMIT = "gemfire-log-file-count-limit";
- private static void init() { // was a static initializer
+ static {
// set log4j.configurationFactory to be our optimized version
final String factory = GemFireXmlConfigurationFactory.class.getName();
System.setProperty(ConfigurationFactory.CONFIGURATION_FACTORY_PROPERTY, factory);
+ System.out.println("Set "+ConfigurationFactory.CONFIGURATION_FACTORY_PROPERTY+" to "+factory);
final String factoryClass = PropertiesUtil.getProperties().getStringProperty(ConfigurationFactory.CONFIGURATION_FACTORY_PROPERTY);
+ System.out.println("KIRK: factoryClass is " + factoryClass);
}
private File config = null;
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/cb7dbd0b/gemfire-core/src/test/java/com/gemstone/gemfire/internal/logging/log4j/LogWriterLoggerDisabledPerformanceTest.java
----------------------------------------------------------------------
diff --git a/gemfire-core/src/test/java/com/gemstone/gemfire/internal/logging/log4j/LogWriterLoggerDisabledPerformanceTest.java b/gemfire-core/src/test/java/com/gemstone/gemfire/internal/logging/log4j/LogWriterLoggerDisabledPerformanceTest.java
index 4be34c7..f964208 100644
--- a/gemfire-core/src/test/java/com/gemstone/gemfire/internal/logging/log4j/LogWriterLoggerDisabledPerformanceTest.java
+++ b/gemfire-core/src/test/java/com/gemstone/gemfire/internal/logging/log4j/LogWriterLoggerDisabledPerformanceTest.java
@@ -20,13 +20,7 @@ import java.io.IOException;
import org.apache.logging.log4j.Level;
import org.apache.logging.log4j.Logger;
-import org.junit.Ignore;
-import org.junit.experimental.categories.Category;
-import com.gemstone.gemfire.test.junit.categories.PerformanceTest;
-
-@Category(PerformanceTest.class)
-@Ignore("Tests have no assertions")
public class LogWriterLoggerDisabledPerformanceTest extends LogWriterLoggerPerformanceTest {
public LogWriterLoggerDisabledPerformanceTest(String name) {
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/cb7dbd0b/gemfire-core/src/test/java/com/gemstone/gemfire/internal/logging/log4j/LogWriterLoggerPerformanceTest.java
----------------------------------------------------------------------
diff --git a/gemfire-core/src/test/java/com/gemstone/gemfire/internal/logging/log4j/LogWriterLoggerPerformanceTest.java b/gemfire-core/src/test/java/com/gemstone/gemfire/internal/logging/log4j/LogWriterLoggerPerformanceTest.java
index 926bc75..61b5131 100644
--- a/gemfire-core/src/test/java/com/gemstone/gemfire/internal/logging/log4j/LogWriterLoggerPerformanceTest.java
+++ b/gemfire-core/src/test/java/com/gemstone/gemfire/internal/logging/log4j/LogWriterLoggerPerformanceTest.java
@@ -28,17 +28,12 @@ import org.apache.logging.log4j.Level;
import org.apache.logging.log4j.Logger;
import org.apache.logging.log4j.core.config.ConfigurationFactory;
import org.apache.logging.log4j.util.PropertiesUtil;
-import org.junit.Ignore;
-import org.junit.experimental.categories.Category;
import com.gemstone.gemfire.internal.FileUtil;
import com.gemstone.gemfire.internal.logging.LoggingPerformanceTestCase;
import com.gemstone.gemfire.internal.util.IOUtils;
-import com.gemstone.gemfire.test.junit.categories.PerformanceTest;
import com.gemstone.org.apache.logging.log4j.core.config.xml.GemFireXmlConfigurationFactory;
-@Category(PerformanceTest.class)
-@Ignore("Tests have no assertions")
public class LogWriterLoggerPerformanceTest extends LoggingPerformanceTestCase {
protected static final int DEFAULT_LOG_FILE_SIZE_LIMIT = Integer.MAX_VALUE;
@@ -48,11 +43,13 @@ public class LogWriterLoggerPerformanceTest extends LoggingPerformanceTestCase {
protected static final String SYS_LOG_FILE_SIZE_LIMIT = "gemfire-log-file-size-limit";
protected static final String SYS_LOG_FILE_COUNT_LIMIT = "gemfire-log-file-count-limit";
- private static void init() { // was a static initializer
+ static {
// set log4j.configurationFactory to be our optimized version
final String factory = GemFireXmlConfigurationFactory.class.getName();
System.setProperty(ConfigurationFactory.CONFIGURATION_FACTORY_PROPERTY, factory);
+ System.out.println("Set "+ConfigurationFactory.CONFIGURATION_FACTORY_PROPERTY+" to "+factory);
final String factoryClass = PropertiesUtil.getProperties().getStringProperty(ConfigurationFactory.CONFIGURATION_FACTORY_PROPERTY);
+ System.out.println("KIRK: factoryClass is " + factoryClass);
}
private File config = null;
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/cb7dbd0b/gemfire-core/src/test/java/dunit/DistributedTestCase.java
----------------------------------------------------------------------
diff --git a/gemfire-core/src/test/java/dunit/DistributedTestCase.java b/gemfire-core/src/test/java/dunit/DistributedTestCase.java
index 6fa560f..a3d4785 100755
--- a/gemfire-core/src/test/java/dunit/DistributedTestCase.java
+++ b/gemfire-core/src/test/java/dunit/DistributedTestCase.java
@@ -34,7 +34,6 @@ import java.util.concurrent.ConcurrentLinkedQueue;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
-import org.junit.experimental.categories.Category;
import org.springframework.data.gemfire.support.GemfireCache;
import junit.framework.TestCase;
@@ -87,7 +86,6 @@ import com.gemstone.gemfire.internal.logging.LogWriterImpl;
import com.gemstone.gemfire.internal.logging.ManagerLogWriter;
import com.gemstone.gemfire.internal.logging.log4j.LogWriterLogger;
import com.gemstone.gemfire.management.internal.cli.LogWrapper;
-import com.gemstone.gemfire.test.junit.categories.DistributedTest;
import dunit.standalone.DUnitLauncher;
@@ -103,7 +101,6 @@ import dunit.standalone.DUnitLauncher;
*
* @author David Whitlock
*/
-@Category(DistributedTest.class)
@SuppressWarnings("serial")
public abstract class DistributedTestCase extends TestCase implements java.io.Serializable {
private static final Logger logger = LogService.getLogger();
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/cb7dbd0b/gemfire-lucene/src/test/java/com/gemstone/gemfire/cache/lucene/internal/repository/IndexRepositoryImplJUnitPerformanceTest.java
----------------------------------------------------------------------
diff --git a/gemfire-lucene/src/test/java/com/gemstone/gemfire/cache/lucene/internal/repository/IndexRepositoryImplJUnitPerformanceTest.java b/gemfire-lucene/src/test/java/com/gemstone/gemfire/cache/lucene/internal/repository/IndexRepositoryImplJUnitPerformanceTest.java
new file mode 100644
index 0000000..ab2db78
--- /dev/null
+++ b/gemfire-lucene/src/test/java/com/gemstone/gemfire/cache/lucene/internal/repository/IndexRepositoryImplJUnitPerformanceTest.java
@@ -0,0 +1,437 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package com.gemstone.gemfire.cache.lucene.internal.repository;
+
+import java.io.DataInput;
+import java.io.DataOutput;
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Random;
+import java.util.Set;
+import java.util.concurrent.ConcurrentHashMap;
+import java.util.concurrent.TimeUnit;
+
+import org.apache.lucene.analysis.standard.StandardAnalyzer;
+import org.apache.lucene.document.Document;
+import org.apache.lucene.document.Field.Store;
+import org.apache.lucene.document.TextField;
+import org.apache.lucene.index.IndexWriter;
+import org.apache.lucene.index.IndexWriterConfig;
+import org.apache.lucene.index.Term;
+import org.apache.lucene.search.IndexSearcher;
+import org.apache.lucene.search.Query;
+import org.apache.lucene.search.SearcherManager;
+import org.apache.lucene.search.TermQuery;
+import org.apache.lucene.store.RAMDirectory;
+import org.junit.Test;
+import org.junit.experimental.categories.Category;
+
+import com.gemstone.gemfire.DataSerializable;
+import com.gemstone.gemfire.DataSerializer;
+import com.gemstone.gemfire.cache.Cache;
+import com.gemstone.gemfire.cache.CacheFactory;
+import com.gemstone.gemfire.cache.PartitionAttributesFactory;
+import com.gemstone.gemfire.cache.Region;
+import com.gemstone.gemfire.cache.RegionShortcut;
+import com.gemstone.gemfire.cache.asyncqueue.AsyncEventQueue;
+import com.gemstone.gemfire.cache.lucene.LuceneIndex;
+import com.gemstone.gemfire.cache.lucene.LuceneQuery;
+import com.gemstone.gemfire.cache.lucene.LuceneQueryProvider;
+import com.gemstone.gemfire.cache.lucene.LuceneQueryResults;
+import com.gemstone.gemfire.cache.lucene.LuceneService;
+import com.gemstone.gemfire.cache.lucene.LuceneServiceProvider;
+import com.gemstone.gemfire.cache.lucene.internal.LuceneServiceImpl;
+import com.gemstone.gemfire.cache.lucene.internal.directory.RegionDirectory;
+import com.gemstone.gemfire.cache.lucene.internal.distributed.TopEntriesCollector;
+import com.gemstone.gemfire.cache.lucene.internal.filesystem.ChunkKey;
+import com.gemstone.gemfire.cache.lucene.internal.filesystem.File;
+import com.gemstone.gemfire.cache.lucene.internal.repository.serializer.HeterogenousLuceneSerializer;
+import com.gemstone.gemfire.cache.query.QueryException;
+import com.gemstone.gemfire.test.junit.categories.PerformanceTest;
+
+/**
+ * Microbenchmark of the IndexRepository to compare an
+ * IndexRepository built on top of cache with a
+ * stock lucene IndexWriter with a RAMDirectory.
+ */
+@Category(PerformanceTest.class)
+public class IndexRepositoryImplJUnitPerformanceTest {
+
+ private static final int NUM_WORDS = 1000;
+ private static int[] COMMIT_INTERVAL = new int[] {100, 1000, 5000};
+ private static int NUM_ENTRIES = 500_000;
+ private static int NUM_QUERIES = 500_000;
+
+ private StandardAnalyzer analyzer = new StandardAnalyzer();
+
+ @Test
+ public void testIndexRepository() throws Exception {
+
+
+ doTest("IndexRepository", new TestCallbacks() {
+
+ private Cache cache;
+ private IndexRepositoryImpl repo;
+ private IndexWriter writer;
+
+ @Override
+ public void addObject(String key, String text) throws Exception {
+ repo.create(key, new TestObject(text));
+ }
+
+ @Override
+ public void commit() throws Exception {
+ repo.commit();
+ }
+
+ @Override
+ public void init() throws Exception {
+ cache = new CacheFactory().set("mcast-port", "0")
+ .set("log-level", "error")
+ .create();
+ Region<String, File> fileRegion = cache.<String, File>createRegionFactory(RegionShortcut.REPLICATE).create("files");
+ Region<ChunkKey, byte[]> chunkRegion = cache.<ChunkKey, byte[]>createRegionFactory(RegionShortcut.REPLICATE).create("chunks");
+
+ RegionDirectory dir = new RegionDirectory(fileRegion, chunkRegion);
+
+
+ IndexWriterConfig config = new IndexWriterConfig(analyzer);
+ writer = new IndexWriter(dir, config);
+ String[] indexedFields= new String[] {"text"};
+ HeterogenousLuceneSerializer mapper = new HeterogenousLuceneSerializer(indexedFields);
+ repo = new IndexRepositoryImpl(fileRegion, writer, mapper);
+ }
+
+ @Override
+ public void cleanup() throws IOException {
+ writer.close();
+ cache.close();
+ }
+
+ @Override
+ public void waitForAsync() throws Exception {
+ //do nothing
+ }
+
+ @Override
+ public int query(Query query) throws IOException {
+ TopEntriesCollector collector = new TopEntriesCollector();
+ repo.query(query, 100, collector);
+ return collector.size();
+ }
+ });
+ }
+
+ /**
+ * Test our full lucene index implementation
+ * @throws Exception
+ */
+ @Test
+ public void testLuceneIndex() throws Exception {
+
+
+ doTest("LuceneIndex", new TestCallbacks() {
+
+ private Cache cache;
+ private Region<String, TestObject> region;
+ private LuceneService service;
+
+ @Override
+ public void addObject(String key, String text) throws Exception {
+ region.create(key, new TestObject(text));
+ }
+
+ @Override
+ public void commit() throws Exception {
+ //NA
+ }
+
+ @Override
+ public void init() throws Exception {
+ cache = new CacheFactory().set("mcast-port", "0")
+ .set("log-level", "warning")
+ .create();
+ service = LuceneServiceProvider.get(cache);
+ service.createIndex("index", "/region", "text");
+ region = cache.<String, TestObject>createRegionFactory(RegionShortcut.PARTITION)
+ .setPartitionAttributes(new PartitionAttributesFactory<>().setTotalNumBuckets(1).create())
+ .create("region");
+ }
+
+ @Override
+ public void cleanup() throws IOException {
+ cache.close();
+ }
+
+ @Override
+ public void waitForAsync() throws Exception {
+ AsyncEventQueue aeq = cache.getAsyncEventQueue(LuceneServiceImpl.getUniqueIndexName("index", "/region"));
+
+ //We will be at most 10 ms off
+ while(aeq.size() > 0) {
+ Thread.sleep(10);
+ }
+ }
+
+ @Override
+ public int query(final Query query) throws Exception {
+ LuceneQuery<Object, Object> luceneQuery = service.createLuceneQueryFactory().create("index", "/region", new LuceneQueryProvider() {
+
+ @Override
+ public Query getQuery(LuceneIndex index) throws QueryException {
+ return query;
+ }
+ });
+
+ LuceneQueryResults<Object, Object> results = luceneQuery.search();
+ return results.size();
+ }
+ });
+ }
+
+ @Test
+ public void testLuceneWithRegionDirectory() throws Exception {
+ doTest("RegionDirectory", new TestCallbacks() {
+
+ private IndexWriter writer;
+ private SearcherManager searcherManager;
+
+ @Override
+ public void init() throws Exception {
+ RegionDirectory dir = new RegionDirectory(new ConcurrentHashMap<String, File>(), new ConcurrentHashMap<ChunkKey, byte[]>());
+ IndexWriterConfig config = new IndexWriterConfig(analyzer);
+ writer = new IndexWriter(dir, config);
+ searcherManager = new SearcherManager(writer, true, null);
+ }
+
+ @Override
+ public void addObject(String key, String text) throws Exception {
+ Document doc = new Document();
+ doc.add(new TextField("key", key, Store.YES));
+ doc.add(new TextField("text", text, Store.NO));
+ writer.addDocument(doc);
+ }
+
+ @Override
+ public void commit() throws Exception {
+ writer.commit();
+ searcherManager.maybeRefresh();
+ }
+
+ @Override
+ public void cleanup() throws Exception {
+ writer.close();
+ }
+
+ @Override
+ public void waitForAsync() throws Exception {
+ //do nothing
+ }
+
+ @Override
+ public int query(Query query) throws Exception {
+ IndexSearcher searcher = searcherManager.acquire();
+ try {
+ return searcher.count(query);
+ } finally {
+ searcherManager.release(searcher);
+ }
+ }
+
+ });
+
+ }
+
+ @Test
+ public void testLucene() throws Exception {
+ doTest("Lucene", new TestCallbacks() {
+
+ private IndexWriter writer;
+ private SearcherManager searcherManager;
+
+ @Override
+ public void init() throws Exception {
+ RAMDirectory dir = new RAMDirectory();
+ IndexWriterConfig config = new IndexWriterConfig(analyzer);
+ writer = new IndexWriter(dir, config);
+ searcherManager = new SearcherManager(writer, true, null);
+ }
+
+ @Override
+ public void addObject(String key, String text) throws Exception {
+ Document doc = new Document();
+ doc.add(new TextField("key", key, Store.YES));
+ doc.add(new TextField("text", text, Store.NO));
+ writer.addDocument(doc);
+ }
+
+ @Override
+ public void commit() throws Exception {
+ writer.commit();
+ searcherManager.maybeRefresh();
+ }
+
+ @Override
+ public void cleanup() throws Exception {
+ writer.close();
+ }
+
+ @Override
+ public void waitForAsync() throws Exception {
+ //do nothing
+ }
+
+ @Override
+ public int query(Query query) throws Exception {
+ IndexSearcher searcher = searcherManager.acquire();
+ try {
+ return searcher.count(query);
+ } finally {
+ searcherManager.release(searcher);
+ }
+ }
+
+ });
+
+ }
+
+ private void doTest(String testName, TestCallbacks callbacks) throws Exception {
+
+ //Create some random words. We need to be careful
+ //to make sure we get NUM_WORDS distinct words here
+ Set<String> wordSet = new HashSet<String>();
+ Random rand = new Random();
+ while(wordSet.size() < NUM_WORDS) {
+ int length = rand.nextInt(12) + 3;
+ char[] text = new char[length];
+ for(int i = 0; i < length; i++) {
+ text[i] = (char) (rand.nextInt(26) + 97);
+ }
+ wordSet.add(new String(text));
+ }
+ List<String> words = new ArrayList<String>(wordSet.size());
+ words.addAll(wordSet);
+
+
+
+ //warm up
+ writeRandomWords(callbacks, words, rand, NUM_ENTRIES / 10, NUM_QUERIES / 10, COMMIT_INTERVAL[0]);
+
+ //Do the actual test
+
+ for(int i = 0; i < COMMIT_INTERVAL.length; i++) {
+ Results results = writeRandomWords(callbacks, words, rand, NUM_ENTRIES, NUM_QUERIES / 10, COMMIT_INTERVAL[i]);
+
+ System.out.println(testName + " writes(entries=" + NUM_ENTRIES + ", commit=" + COMMIT_INTERVAL[i] + "): " + TimeUnit.NANOSECONDS.toMillis(results.writeTime));
+ System.out.println(testName + " queries(entries=" + NUM_ENTRIES + ", commit=" + COMMIT_INTERVAL[i] + "): " + TimeUnit.NANOSECONDS.toMillis(results.queryTime));
+ }
+ }
+
+ private Results writeRandomWords(TestCallbacks callbacks, List<String> words,
+ Random rand, int numEntries, int numQueries, int commitInterval) throws Exception {
+ Results results = new Results();
+ callbacks.init();
+ int[] counts = new int[words.size()];
+ long start = System.nanoTime();
+ try {
+ for(int i =0; i < numEntries; i++) {
+ int word1 = rand.nextInt(words.size());
+ int word2 = rand.nextInt(words.size());
+ counts[word1]++;
+ counts[word2]++;
+ String value = words.get(word1) + " " + words.get(word2);
+ callbacks.addObject("key" + i, value);
+
+ if(i % commitInterval == 0 && i != 0) {
+ callbacks.commit();
+ }
+ }
+ callbacks.commit();
+ callbacks.waitForAsync();
+ long end = System.nanoTime();
+ results.writeTime = end - start;
+
+
+ start = System.nanoTime();
+ for(int i=0; i < numQueries; i++) {
+ int wordIndex = rand.nextInt(words.size());
+ String word = words.get(wordIndex);
+ Query query = new TermQuery(new Term("text", word));
+ int size = callbacks.query(query);
+// int size = callbacks.query(parser.parse(word));
+ //All of my tests sometimes seem to be missing a couple of words, including the stock lucene
+// assertEquals("Error on query " + i + " word=" + word, counts[wordIndex], size);
+ }
+ end = System.nanoTime();
+ results.queryTime = end - start;
+
+ return results;
+ } finally {
+ callbacks.cleanup();
+ }
+ }
+
+ private static class TestObject implements DataSerializable {
+ private String text;
+
+ public TestObject() {
+
+ }
+
+ public TestObject(String text) {
+ super();
+ this.text = text;
+ }
+
+ @Override
+ public void toData(DataOutput out) throws IOException {
+ DataSerializer.writeString(text, out);
+ }
+
+ @Override
+ public void fromData(DataInput in)
+ throws IOException, ClassNotFoundException {
+ text = DataSerializer.readString(in);
+ }
+
+ @Override
+ public String toString() {
+ return text;
+ }
+
+
+ }
+
+ private interface TestCallbacks {
+ public void init() throws Exception;
+ public int query(Query query) throws Exception;
+ public void addObject(String key, String text) throws Exception;
+ public void commit() throws Exception;
+ public void waitForAsync() throws Exception;
+ public void cleanup() throws Exception;
+ }
+
+ private static class Results {
+ long writeTime;
+ long queryTime;
+ }
+}
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/cb7dbd0b/gemfire-lucene/src/test/java/com/gemstone/gemfire/cache/lucene/internal/repository/IndexRepositoryImplPerformanceTest.java
----------------------------------------------------------------------
diff --git a/gemfire-lucene/src/test/java/com/gemstone/gemfire/cache/lucene/internal/repository/IndexRepositoryImplPerformanceTest.java b/gemfire-lucene/src/test/java/com/gemstone/gemfire/cache/lucene/internal/repository/IndexRepositoryImplPerformanceTest.java
deleted file mode 100644
index 74f3742..0000000
--- a/gemfire-lucene/src/test/java/com/gemstone/gemfire/cache/lucene/internal/repository/IndexRepositoryImplPerformanceTest.java
+++ /dev/null
@@ -1,439 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-package com.gemstone.gemfire.cache.lucene.internal.repository;
-
-import java.io.DataInput;
-import java.io.DataOutput;
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Random;
-import java.util.Set;
-import java.util.concurrent.ConcurrentHashMap;
-import java.util.concurrent.TimeUnit;
-
-import org.apache.lucene.analysis.standard.StandardAnalyzer;
-import org.apache.lucene.document.Document;
-import org.apache.lucene.document.Field.Store;
-import org.apache.lucene.document.TextField;
-import org.apache.lucene.index.IndexWriter;
-import org.apache.lucene.index.IndexWriterConfig;
-import org.apache.lucene.index.Term;
-import org.apache.lucene.search.IndexSearcher;
-import org.apache.lucene.search.Query;
-import org.apache.lucene.search.SearcherManager;
-import org.apache.lucene.search.TermQuery;
-import org.apache.lucene.store.RAMDirectory;
-import org.junit.Ignore;
-import org.junit.Test;
-import org.junit.experimental.categories.Category;
-
-import com.gemstone.gemfire.DataSerializable;
-import com.gemstone.gemfire.DataSerializer;
-import com.gemstone.gemfire.cache.Cache;
-import com.gemstone.gemfire.cache.CacheFactory;
-import com.gemstone.gemfire.cache.PartitionAttributesFactory;
-import com.gemstone.gemfire.cache.Region;
-import com.gemstone.gemfire.cache.RegionShortcut;
-import com.gemstone.gemfire.cache.asyncqueue.AsyncEventQueue;
-import com.gemstone.gemfire.cache.lucene.LuceneIndex;
-import com.gemstone.gemfire.cache.lucene.LuceneQuery;
-import com.gemstone.gemfire.cache.lucene.LuceneQueryProvider;
-import com.gemstone.gemfire.cache.lucene.LuceneQueryResults;
-import com.gemstone.gemfire.cache.lucene.LuceneService;
-import com.gemstone.gemfire.cache.lucene.LuceneServiceProvider;
-import com.gemstone.gemfire.cache.lucene.internal.LuceneServiceImpl;
-import com.gemstone.gemfire.cache.lucene.internal.directory.RegionDirectory;
-import com.gemstone.gemfire.cache.lucene.internal.distributed.TopEntriesCollector;
-import com.gemstone.gemfire.cache.lucene.internal.filesystem.ChunkKey;
-import com.gemstone.gemfire.cache.lucene.internal.filesystem.File;
-import com.gemstone.gemfire.cache.lucene.internal.repository.serializer.HeterogenousLuceneSerializer;
-import com.gemstone.gemfire.cache.query.QueryException;
-import com.gemstone.gemfire.test.junit.categories.PerformanceTest;
-
-/**
- * Microbenchmark of the IndexRepository to compare an
- * IndexRepository built on top of cache with a
- * stock lucene IndexWriter with a RAMDirectory.
- */
-@Category(PerformanceTest.class)
-@Ignore("Tests have no assertions")
-public class IndexRepositoryImplPerformanceTest {
-
- private static final int NUM_WORDS = 1000;
- private static int[] COMMIT_INTERVAL = new int[] {100, 1000, 5000};
- private static int NUM_ENTRIES = 500_000;
- private static int NUM_QUERIES = 500_000;
-
- private StandardAnalyzer analyzer = new StandardAnalyzer();
-
- @Test
- public void testIndexRepository() throws Exception {
-
-
- doTest("IndexRepository", new TestCallbacks() {
-
- private Cache cache;
- private IndexRepositoryImpl repo;
- private IndexWriter writer;
-
- @Override
- public void addObject(String key, String text) throws Exception {
- repo.create(key, new TestObject(text));
- }
-
- @Override
- public void commit() throws Exception {
- repo.commit();
- }
-
- @Override
- public void init() throws Exception {
- cache = new CacheFactory().set("mcast-port", "0")
- .set("log-level", "error")
- .create();
- Region<String, File> fileRegion = cache.<String, File>createRegionFactory(RegionShortcut.REPLICATE).create("files");
- Region<ChunkKey, byte[]> chunkRegion = cache.<ChunkKey, byte[]>createRegionFactory(RegionShortcut.REPLICATE).create("chunks");
-
- RegionDirectory dir = new RegionDirectory(fileRegion, chunkRegion);
-
-
- IndexWriterConfig config = new IndexWriterConfig(analyzer);
- writer = new IndexWriter(dir, config);
- String[] indexedFields= new String[] {"text"};
- HeterogenousLuceneSerializer mapper = new HeterogenousLuceneSerializer(indexedFields);
- repo = new IndexRepositoryImpl(fileRegion, writer, mapper);
- }
-
- @Override
- public void cleanup() throws IOException {
- writer.close();
- cache.close();
- }
-
- @Override
- public void waitForAsync() throws Exception {
- //do nothing
- }
-
- @Override
- public int query(Query query) throws IOException {
- TopEntriesCollector collector = new TopEntriesCollector();
- repo.query(query, 100, collector);
- return collector.size();
- }
- });
- }
-
- /**
- * Test our full lucene index implementation
- * @throws Exception
- */
- @Test
- public void testLuceneIndex() throws Exception {
-
-
- doTest("LuceneIndex", new TestCallbacks() {
-
- private Cache cache;
- private Region<String, TestObject> region;
- private LuceneService service;
-
- @Override
- public void addObject(String key, String text) throws Exception {
- region.create(key, new TestObject(text));
- }
-
- @Override
- public void commit() throws Exception {
- //NA
- }
-
- @Override
- public void init() throws Exception {
- cache = new CacheFactory().set("mcast-port", "0")
- .set("log-level", "warning")
- .create();
- service = LuceneServiceProvider.get(cache);
- service.createIndex("index", "/region", "text");
- region = cache.<String, TestObject>createRegionFactory(RegionShortcut.PARTITION)
- .setPartitionAttributes(new PartitionAttributesFactory<>().setTotalNumBuckets(1).create())
- .create("region");
- }
-
- @Override
- public void cleanup() throws IOException {
- cache.close();
- }
-
- @Override
- public void waitForAsync() throws Exception {
- AsyncEventQueue aeq = cache.getAsyncEventQueue(LuceneServiceImpl.getUniqueIndexName("index", "/region"));
-
- //We will be at most 10 ms off
- while(aeq.size() > 0) {
- Thread.sleep(10);
- }
- }
-
- @Override
- public int query(final Query query) throws Exception {
- LuceneQuery<Object, Object> luceneQuery = service.createLuceneQueryFactory().create("index", "/region", new LuceneQueryProvider() {
-
- @Override
- public Query getQuery(LuceneIndex index) throws QueryException {
- return query;
- }
- });
-
- LuceneQueryResults<Object, Object> results = luceneQuery.search();
- return results.size();
- }
- });
- }
-
- @Test
- public void testLuceneWithRegionDirectory() throws Exception {
- doTest("RegionDirectory", new TestCallbacks() {
-
- private IndexWriter writer;
- private SearcherManager searcherManager;
-
- @Override
- public void init() throws Exception {
- RegionDirectory dir = new RegionDirectory(new ConcurrentHashMap<String, File>(), new ConcurrentHashMap<ChunkKey, byte[]>());
- IndexWriterConfig config = new IndexWriterConfig(analyzer);
- writer = new IndexWriter(dir, config);
- searcherManager = new SearcherManager(writer, true, null);
- }
-
- @Override
- public void addObject(String key, String text) throws Exception {
- Document doc = new Document();
- doc.add(new TextField("key", key, Store.YES));
- doc.add(new TextField("text", text, Store.NO));
- writer.addDocument(doc);
- }
-
- @Override
- public void commit() throws Exception {
- writer.commit();
- searcherManager.maybeRefresh();
- }
-
- @Override
- public void cleanup() throws Exception {
- writer.close();
- }
-
- @Override
- public void waitForAsync() throws Exception {
- //do nothing
- }
-
- @Override
- public int query(Query query) throws Exception {
- IndexSearcher searcher = searcherManager.acquire();
- try {
- return searcher.count(query);
- } finally {
- searcherManager.release(searcher);
- }
- }
-
- });
-
- }
-
- @Test
- public void testLucene() throws Exception {
- doTest("Lucene", new TestCallbacks() {
-
- private IndexWriter writer;
- private SearcherManager searcherManager;
-
- @Override
- public void init() throws Exception {
- RAMDirectory dir = new RAMDirectory();
- IndexWriterConfig config = new IndexWriterConfig(analyzer);
- writer = new IndexWriter(dir, config);
- searcherManager = new SearcherManager(writer, true, null);
- }
-
- @Override
- public void addObject(String key, String text) throws Exception {
- Document doc = new Document();
- doc.add(new TextField("key", key, Store.YES));
- doc.add(new TextField("text", text, Store.NO));
- writer.addDocument(doc);
- }
-
- @Override
- public void commit() throws Exception {
- writer.commit();
- searcherManager.maybeRefresh();
- }
-
- @Override
- public void cleanup() throws Exception {
- writer.close();
- }
-
- @Override
- public void waitForAsync() throws Exception {
- //do nothing
- }
-
- @Override
- public int query(Query query) throws Exception {
- IndexSearcher searcher = searcherManager.acquire();
- try {
- return searcher.count(query);
- } finally {
- searcherManager.release(searcher);
- }
- }
-
- });
-
- }
-
- private void doTest(String testName, TestCallbacks callbacks) throws Exception {
-
- //Create some random words. We need to be careful
- //to make sure we get NUM_WORDS distinct words here
- Set<String> wordSet = new HashSet<String>();
- Random rand = new Random();
- while(wordSet.size() < NUM_WORDS) {
- int length = rand.nextInt(12) + 3;
- char[] text = new char[length];
- for(int i = 0; i < length; i++) {
- text[i] = (char) (rand.nextInt(26) + 97);
- }
- wordSet.add(new String(text));
- }
- List<String> words = new ArrayList<String>(wordSet.size());
- words.addAll(wordSet);
-
-
-
- //warm up
- writeRandomWords(callbacks, words, rand, NUM_ENTRIES / 10, NUM_QUERIES / 10, COMMIT_INTERVAL[0]);
-
- //Do the actual test
-
- for(int i = 0; i < COMMIT_INTERVAL.length; i++) {
- Results results = writeRandomWords(callbacks, words, rand, NUM_ENTRIES, NUM_QUERIES / 10, COMMIT_INTERVAL[i]);
-
- System.out.println(testName + " writes(entries=" + NUM_ENTRIES + ", commit=" + COMMIT_INTERVAL[i] + "): " + TimeUnit.NANOSECONDS.toMillis(results.writeTime));
- System.out.println(testName + " queries(entries=" + NUM_ENTRIES + ", commit=" + COMMIT_INTERVAL[i] + "): " + TimeUnit.NANOSECONDS.toMillis(results.queryTime));
- }
- }
-
- private Results writeRandomWords(TestCallbacks callbacks, List<String> words,
- Random rand, int numEntries, int numQueries, int commitInterval) throws Exception {
- Results results = new Results();
- callbacks.init();
- int[] counts = new int[words.size()];
- long start = System.nanoTime();
- try {
- for(int i =0; i < numEntries; i++) {
- int word1 = rand.nextInt(words.size());
- int word2 = rand.nextInt(words.size());
- counts[word1]++;
- counts[word2]++;
- String value = words.get(word1) + " " + words.get(word2);
- callbacks.addObject("key" + i, value);
-
- if(i % commitInterval == 0 && i != 0) {
- callbacks.commit();
- }
- }
- callbacks.commit();
- callbacks.waitForAsync();
- long end = System.nanoTime();
- results.writeTime = end - start;
-
-
- start = System.nanoTime();
- for(int i=0; i < numQueries; i++) {
- int wordIndex = rand.nextInt(words.size());
- String word = words.get(wordIndex);
- Query query = new TermQuery(new Term("text", word));
- int size = callbacks.query(query);
-// int size = callbacks.query(parser.parse(word));
- //All of my tests sometimes seem to be missing a couple of words, including the stock lucene
-// assertEquals("Error on query " + i + " word=" + word, counts[wordIndex], size);
- }
- end = System.nanoTime();
- results.queryTime = end - start;
-
- return results;
- } finally {
- callbacks.cleanup();
- }
- }
-
- private static class TestObject implements DataSerializable {
- private String text;
-
- public TestObject() {
-
- }
-
- public TestObject(String text) {
- super();
- this.text = text;
- }
-
- @Override
- public void toData(DataOutput out) throws IOException {
- DataSerializer.writeString(text, out);
- }
-
- @Override
- public void fromData(DataInput in)
- throws IOException, ClassNotFoundException {
- text = DataSerializer.readString(in);
- }
-
- @Override
- public String toString() {
- return text;
- }
-
-
- }
-
- private interface TestCallbacks {
- public void init() throws Exception;
- public int query(Query query) throws Exception;
- public void addObject(String key, String text) throws Exception;
- public void commit() throws Exception;
- public void waitForAsync() throws Exception;
- public void cleanup() throws Exception;
- }
-
- private static class Results {
- long writeTime;
- long queryTime;
- }
-}