Removed Floodlight storage framework
diff --git a/src/test/java/net/floodlightcontroller/core/internal/ControllerTest.java b/src/test/java/net/floodlightcontroller/core/internal/ControllerTest.java
index 21788af..a3f3859 100644
--- a/src/test/java/net/floodlightcontroller/core/internal/ControllerTest.java
+++ b/src/test/java/net/floodlightcontroller/core/internal/ControllerTest.java
@@ -33,9 +33,7 @@
import java.util.ArrayList;
import java.util.Collection;
import java.util.Date;
-import java.util.HashMap;
import java.util.List;
-import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.Future;
import java.util.concurrent.TimeUnit;
@@ -44,7 +42,6 @@
import net.floodlightcontroller.core.FloodlightProvider;
import net.floodlightcontroller.core.IFloodlightProviderService;
import net.floodlightcontroller.core.IFloodlightProviderService.Role;
-import net.floodlightcontroller.core.IHAListener;
import net.floodlightcontroller.core.IListener.Command;
import net.floodlightcontroller.core.IOFMessageListener;
import net.floodlightcontroller.core.IOFSwitch;
@@ -65,8 +62,6 @@
import net.floodlightcontroller.perfmon.PktInProcessingTime;
import net.floodlightcontroller.restserver.IRestApiService;
import net.floodlightcontroller.restserver.RestApiServer;
-import net.floodlightcontroller.storage.IStorageSourceService;
-import net.floodlightcontroller.storage.memory.MemoryStorageSource;
import net.floodlightcontroller.test.FloodlightTestCase;
import net.floodlightcontroller.threadpool.IThreadPoolService;
import net.onrc.onos.ofcontroller.core.IOFSwitchPortListener;
@@ -121,8 +116,8 @@
controller = (Controller)cm.getServiceImpls().get(IFloodlightProviderService.class);
fmc.addService(IFloodlightProviderService.class, controller);
- MemoryStorageSource memstorage = new MemoryStorageSource();
- fmc.addService(IStorageSourceService.class, memstorage);
+ //MemoryStorageSource memstorage = new MemoryStorageSource();
+ //fmc.addService(IStorageSourceService.class, memstorage);
RestApiServer restApi = new RestApiServer();
fmc.addService(IRestApiService.class, restApi);
@@ -146,13 +141,13 @@
ppt.init(fmc);
restApi.init(fmc);
- memstorage.init(fmc);
+ //memstorage.init(fmc);
cm.init(fmc);
tp.init(fmc);
sr.init(fmc);
ppt.startUp(fmc);
restApi.startUp(fmc);
- memstorage.startUp(fmc);
+ //memstorage.startUp(fmc);
cm.startUp(fmc);
tp.startUp(fmc);
sr.startUp(fmc);
@@ -183,10 +178,12 @@
expect(sw.getId()).andReturn(dpid).anyTimes();
expect(sw.getStringId()).andReturn(dpidString).anyTimes();
- expect(sw.getConnectedSince()).andReturn(new Date());
- Channel channel = createMock(Channel.class);
- expect(sw.getChannel()).andReturn(channel);
- expect(channel.getRemoteAddress()).andReturn(null);
+
+ //Now we don't write to storage these methods aren't called
+ //expect(sw.getConnectedSince()).andReturn(new Date());
+ //Channel channel = createMock(Channel.class);
+ //expect(sw.getChannel()).andReturn(channel);
+ //expect(channel.getRemoteAddress()).andReturn(null);
expect(sw.getCapabilities()).andReturn(0).anyTimes();
expect(sw.getBuffers()).andReturn(0).anyTimes();
@@ -403,21 +400,22 @@
IOFSwitch newsw = createMock(IOFSwitch.class);
expect(newsw.getId()).andReturn(0L).anyTimes();
expect(newsw.getStringId()).andReturn("00:00:00:00:00:00:00").anyTimes();
- expect(newsw.getConnectedSince()).andReturn(new Date());
- Channel channel2 = createMock(Channel.class);
- expect(newsw.getChannel()).andReturn(channel2);
- expect(channel2.getRemoteAddress()).andReturn(null);
- expect(newsw.getPorts()).andReturn(new ArrayList<OFPhysicalPort>());
+ //Now we don't write to storage, these methods aren't called
+ //expect(newsw.getConnectedSince()).andReturn(new Date());
+ //Channel channel2 = createMock(Channel.class);
+ //expect(newsw.getChannel()).andReturn(channel2);
+ //expect(channel2.getRemoteAddress()).andReturn(null);
+ //expect(newsw.getPorts()).andReturn(new ArrayList<OFPhysicalPort>());
expect(newsw.getCapabilities()).andReturn(0).anyTimes();
expect(newsw.getBuffers()).andReturn(0).anyTimes();
expect(newsw.getTables()).andReturn((byte)0).anyTimes();
expect(newsw.getActions()).andReturn(0).anyTimes();
controller.activeSwitches.put(0L, oldsw);
- replay(newsw, channel, channel2);
+ replay(newsw, channel);//, channel2);
controller.addSwitch(newsw);
- verify(newsw, channel, channel2);
+ verify(newsw, channel);//, channel2);
}
@Test
@@ -483,7 +481,7 @@
}
}
-
+ /*
private Map<String,Object> getFakeControllerIPRow(String id, String controllerId,
String type, int number, String discoveredIP ) {
HashMap<String, Object> row = new HashMap<String,Object>();
@@ -494,6 +492,7 @@
row.put(Controller.CONTROLLER_INTERFACE_DISCOVERED_IP, discoveredIP);
return row;
}
+ */
/**
* Test notifications for controller node IP changes. This requires
@@ -507,6 +506,7 @@
*
* @throws Exception
*/
+ /*
@Test
public void testControllerNodeIPChanges() throws Exception {
class DummyHAListener implements IHAListener {
@@ -617,7 +617,9 @@
listener.do_assert(4, expectedCurMap, expectedAddedMap, expectedRemovedMap);
}
}
+ */
+ /*
@Test
public void testGetControllerNodeIPs() {
HashMap<String,String> expectedCurMap = new HashMap<String, String>();
@@ -633,6 +635,7 @@
assertEquals("expectedControllerNodeIPs is not as expected",
expectedCurMap, controller.getControllerNodeIPs());
}
+ */
@Test
public void testSetRoleNull() {
diff --git a/src/test/java/net/floodlightcontroller/core/module/FloodlightTestModuleLoader.java b/src/test/java/net/floodlightcontroller/core/module/FloodlightTestModuleLoader.java
index be43a8b..6bef8c1 100644
--- a/src/test/java/net/floodlightcontroller/core/module/FloodlightTestModuleLoader.java
+++ b/src/test/java/net/floodlightcontroller/core/module/FloodlightTestModuleLoader.java
@@ -4,26 +4,23 @@
import java.util.Collection;
import java.util.Iterator;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import net.floodlightcontroller.core.module.FloodlightModuleLoader;
-import net.floodlightcontroller.core.module.IFloodlightModule;
import net.floodlightcontroller.core.test.MockFloodlightProvider;
import net.floodlightcontroller.core.test.MockThreadPoolService;
import net.floodlightcontroller.counter.NullCounterStore;
import net.floodlightcontroller.devicemanager.internal.DefaultEntityClassifier;
import net.floodlightcontroller.devicemanager.test.MockDeviceManager;
import net.floodlightcontroller.perfmon.NullPktInProcessingTime;
-import net.floodlightcontroller.storage.memory.MemoryStorageSource;
import net.floodlightcontroller.topology.TopologyManager;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
public class FloodlightTestModuleLoader extends FloodlightModuleLoader {
protected final static Logger log = LoggerFactory.getLogger(FloodlightTestModuleLoader.class);
// List of default modules to use unless specified otherwise
- public static final Class<? extends IFloodlightModule> DEFAULT_STORAGE_SOURCE =
- MemoryStorageSource.class;
+ //public static final Class<? extends IFloodlightModule> DEFAULT_STORAGE_SOURCE =
+ //MemoryStorageSource.class;
public static final Class<? extends IFloodlightModule> DEFAULT_FLOODLIGHT_PRPOVIDER =
MockFloodlightProvider.class;
public static final Class<? extends IFloodlightModule> DEFAULT_TOPOLOGY_PROVIDER =
@@ -45,7 +42,7 @@
DEFAULT_MODULE_LIST = new ArrayList<Class<? extends IFloodlightModule>>();
DEFAULT_MODULE_LIST.add(DEFAULT_DEVICE_SERVICE);
DEFAULT_MODULE_LIST.add(DEFAULT_FLOODLIGHT_PRPOVIDER);
- DEFAULT_MODULE_LIST.add(DEFAULT_STORAGE_SOURCE);
+ //DEFAULT_MODULE_LIST.add(DEFAULT_STORAGE_SOURCE);
DEFAULT_MODULE_LIST.add(DEFAULT_TOPOLOGY_PROVIDER);
DEFAULT_MODULE_LIST.add(DEFAULT_COUNTER_STORE);
DEFAULT_MODULE_LIST.add(DEFAULT_THREADPOOL);
diff --git a/src/test/java/net/floodlightcontroller/devicemanager/internal/DeviceManagerImplTest.java b/src/test/java/net/floodlightcontroller/devicemanager/internal/DeviceManagerImplTest.java
index 7afb78a..3fccd0f 100644
--- a/src/test/java/net/floodlightcontroller/devicemanager/internal/DeviceManagerImplTest.java
+++ b/src/test/java/net/floodlightcontroller/devicemanager/internal/DeviceManagerImplTest.java
@@ -18,7 +18,17 @@
package net.floodlightcontroller.devicemanager.internal;
-import static org.easymock.EasyMock.*;
+import static org.easymock.EasyMock.anyLong;
+import static org.easymock.EasyMock.anyShort;
+import static org.easymock.EasyMock.createMock;
+import static org.easymock.EasyMock.createStrictMock;
+import static org.easymock.EasyMock.expect;
+import static org.easymock.EasyMock.expectLastCall;
+import static org.easymock.EasyMock.isA;
+import static org.easymock.EasyMock.replay;
+import static org.easymock.EasyMock.reset;
+import static org.easymock.EasyMock.verify;
+import static org.junit.Assert.assertArrayEquals;
import java.util.ArrayList;
import java.util.Arrays;
@@ -31,18 +41,17 @@
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
-import static org.easymock.EasyMock.expectLastCall;
import net.floodlightcontroller.core.IFloodlightProviderService;
import net.floodlightcontroller.core.IOFSwitch;
import net.floodlightcontroller.core.module.FloodlightModuleContext;
import net.floodlightcontroller.core.test.MockFloodlightProvider;
import net.floodlightcontroller.core.test.MockThreadPoolService;
-import net.floodlightcontroller.devicemanager.IDeviceListener;
import net.floodlightcontroller.devicemanager.IDevice;
+import net.floodlightcontroller.devicemanager.IDeviceListener;
+import net.floodlightcontroller.devicemanager.IDeviceService;
import net.floodlightcontroller.devicemanager.IEntityClass;
import net.floodlightcontroller.devicemanager.IEntityClassifierService;
import net.floodlightcontroller.devicemanager.SwitchPort;
-import net.floodlightcontroller.devicemanager.IDeviceService;
import net.floodlightcontroller.devicemanager.SwitchPort.ErrorStatus;
import net.floodlightcontroller.devicemanager.internal.DeviceManagerImpl.ClassState;
import net.floodlightcontroller.devicemanager.test.MockEntityClassifier;
@@ -56,21 +65,18 @@
import net.floodlightcontroller.packet.IPv4;
import net.floodlightcontroller.restserver.IRestApiService;
import net.floodlightcontroller.restserver.RestApiServer;
-import net.floodlightcontroller.storage.IStorageSourceService;
-import net.floodlightcontroller.storage.memory.MemoryStorageSource;
import net.floodlightcontroller.test.FloodlightTestCase;
import net.floodlightcontroller.threadpool.IThreadPoolService;
import net.floodlightcontroller.topology.ITopologyService;
-import static org.junit.Assert.*;
import org.easymock.EasyMock;
import org.junit.Before;
import org.junit.Ignore;
import org.junit.Test;
import org.openflow.protocol.OFPacketIn;
+import org.openflow.protocol.OFPacketIn.OFPacketInReason;
import org.openflow.protocol.OFPhysicalPort;
import org.openflow.protocol.OFType;
-import org.openflow.protocol.OFPacketIn.OFPacketInReason;
import org.openflow.util.HexString;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -89,7 +95,7 @@
private byte[] testARPReplyPacket_3_Serialized;
MockFloodlightProvider mockFloodlightProvider;
DeviceManagerImpl deviceManager;
- MemoryStorageSource storageSource;
+ //MemoryStorageSource storageSource;
FlowReconcileManager flowReconcileMgr;
private IOFSwitch makeSwitchMock(long id) {
@@ -118,8 +124,8 @@
flowReconcileMgr = new FlowReconcileManager();
DefaultEntityClassifier entityClassifier = new DefaultEntityClassifier();
fmc.addService(IDeviceService.class, deviceManager);
- storageSource = new MemoryStorageSource();
- fmc.addService(IStorageSourceService.class, storageSource);
+ //storageSource = new MemoryStorageSource();
+ //fmc.addService(IStorageSourceService.class, storageSource);
fmc.addService(IFloodlightProviderService.class, mockFloodlightProvider);
fmc.addService(IRestApiService.class, restApi);
fmc.addService(IFlowReconcileService.class, flowReconcileMgr);
@@ -127,11 +133,11 @@
fmc.addService(ITopologyService.class, topology);
tp.init(fmc);
restApi.init(fmc);
- storageSource.init(fmc);
+ //storageSource.init(fmc);
deviceManager.init(fmc);
flowReconcileMgr.init(fmc);
entityClassifier.init(fmc);
- storageSource.startUp(fmc);
+ //storageSource.startUp(fmc);
deviceManager.startUp(fmc);
flowReconcileMgr.startUp(fmc);
tp.startUp(fmc);
diff --git a/src/test/java/net/floodlightcontroller/staticflowentry/StaticFlowTests.java b/src/test/java/net/floodlightcontroller/staticflowentry/StaticFlowTests.java
index 186fd69..4f53342 100644
--- a/src/test/java/net/floodlightcontroller/staticflowentry/StaticFlowTests.java
+++ b/src/test/java/net/floodlightcontroller/staticflowentry/StaticFlowTests.java
@@ -1,49 +1,16 @@
package net.floodlightcontroller.staticflowentry;
-import java.io.IOException;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.LinkedList;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-
-import org.easymock.Capture;
-import org.easymock.CaptureType;
-import org.junit.Test;
-import org.openflow.protocol.OFFlowMod;
-import org.openflow.protocol.OFMatch;
-import org.openflow.protocol.OFMessage;
-import org.openflow.protocol.OFPort;
-import org.openflow.protocol.action.OFAction;
-import org.openflow.protocol.action.OFActionOutput;
-import org.openflow.util.HexString;
-
-
-import net.floodlightcontroller.core.FloodlightContext;
-import net.floodlightcontroller.core.IFloodlightProviderService.Role;
-import net.floodlightcontroller.core.IOFSwitch;
-import net.floodlightcontroller.core.module.FloodlightModuleContext;
-import net.floodlightcontroller.core.module.FloodlightModuleException;
-import net.floodlightcontroller.core.test.MockFloodlightProvider;
-import net.floodlightcontroller.test.FloodlightTestCase;
-import net.floodlightcontroller.restserver.RestApiServer;
-import net.floodlightcontroller.staticflowentry.StaticFlowEntryPusher;
-import net.floodlightcontroller.storage.IStorageSourceService;
-import net.floodlightcontroller.storage.memory.MemoryStorageSource;
-import static net.floodlightcontroller.staticflowentry.StaticFlowEntryPusher.*;
-import static org.easymock.EasyMock.*;
-
+/*
public class StaticFlowTests extends FloodlightTestCase {
static String TestSwitch1DPID = "00:00:00:00:00:00:00:01";
static int TotalTestRules = 3;
- /***
- * Create TestRuleXXX and the corresponding FlowModXXX
- * for X = 1..3
- */
+ //
+ // Create TestRuleXXX and the corresponding FlowModXXX
+ // for X = 1..3
+ //
static Map<String,Object> TestRule1;
static OFFlowMod FlowMod1;
static {
@@ -332,3 +299,4 @@
assert(staticFlowEntryPusher.entriesFromStorage.containsValue(FlowMod3));
}
}
+*/
diff --git a/src/test/java/net/floodlightcontroller/storage/memory/tests/MemoryStorageTest.java b/src/test/java/net/floodlightcontroller/storage/memory/tests/MemoryStorageTest.java
deleted file mode 100644
index c250066..0000000
--- a/src/test/java/net/floodlightcontroller/storage/memory/tests/MemoryStorageTest.java
+++ /dev/null
@@ -1,41 +0,0 @@
-/**
-* Copyright 2011, Big Switch Networks, Inc.
-* Originally created by David Erickson, Stanford University
-*
-* Licensed 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 net.floodlightcontroller.storage.memory.tests;
-
-import net.floodlightcontroller.core.module.FloodlightModuleContext;
-import net.floodlightcontroller.restserver.IRestApiService;
-import net.floodlightcontroller.restserver.RestApiServer;
-import net.floodlightcontroller.storage.memory.MemoryStorageSource;
-import net.floodlightcontroller.storage.tests.StorageTest;
-import org.junit.Before;
-
-public class MemoryStorageTest extends StorageTest {
-
- @Before
- public void setUp() throws Exception {
- storageSource = new MemoryStorageSource();
- restApi = new RestApiServer();
- FloodlightModuleContext fmc = new FloodlightModuleContext();
- fmc.addService(IRestApiService.class, restApi);
- restApi.init(fmc);
- storageSource.init(fmc);
- restApi.startUp(fmc);
- storageSource.startUp(fmc);
- super.setUp();
- }
-}
diff --git a/src/test/java/net/floodlightcontroller/storage/tests/StorageTest.java b/src/test/java/net/floodlightcontroller/storage/tests/StorageTest.java
deleted file mode 100644
index 29cc15b..0000000
--- a/src/test/java/net/floodlightcontroller/storage/tests/StorageTest.java
+++ /dev/null
@@ -1,743 +0,0 @@
-/**
-* Copyright 2011, Big Switch Networks, Inc.
-* Originally created by David Erickson, Stanford University
-*
-* Licensed 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 net.floodlightcontroller.storage.tests;
-
-import static org.easymock.EasyMock.*;
-
-import java.util.concurrent.ExecutionException;
-import java.util.concurrent.Future;
-import java.util.concurrent.TimeoutException;
-import java.util.concurrent.TimeUnit;
-
-import java.util.Arrays;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.Map;
-import java.util.Set;
-
-import net.floodlightcontroller.restserver.RestApiServer;
-import net.floodlightcontroller.storage.CompoundPredicate;
-import net.floodlightcontroller.storage.IStorageExceptionHandler;
-import net.floodlightcontroller.storage.IPredicate;
-import net.floodlightcontroller.storage.IQuery;
-import net.floodlightcontroller.storage.IResultSet;
-import net.floodlightcontroller.storage.IRowMapper;
-import net.floodlightcontroller.storage.IStorageSourceListener;
-import net.floodlightcontroller.storage.NullValueStorageException;
-import net.floodlightcontroller.storage.OperatorPredicate;
-import net.floodlightcontroller.storage.RowOrdering;
-import net.floodlightcontroller.storage.nosql.NoSqlStorageSource;
-import net.floodlightcontroller.test.FloodlightTestCase;
-
-import org.junit.Test;
-
-public abstract class StorageTest extends FloodlightTestCase {
-
- protected NoSqlStorageSource storageSource;
- protected RestApiServer restApi;
-
- protected String PERSON_TABLE_NAME = "Person";
-
- protected String PERSON_SSN = "SSN";
- protected String PERSON_FIRST_NAME = "FirstName";
- protected String PERSON_LAST_NAME = "LastName";
- protected String PERSON_AGE = "Age";
- protected String PERSON_REGISTERED = "Registered";
-
- protected String[] PERSON_COLUMN_LIST = {PERSON_SSN, PERSON_FIRST_NAME, PERSON_LAST_NAME, PERSON_AGE, PERSON_REGISTERED};
-
- class Person {
- private String ssn;
- private String firstName;
- private String lastName;
- int age;
- boolean registered;
-
- public Person(String ssn, String firstName, String lastName, int age, boolean registered) {
- this.ssn = ssn;
- this.firstName = firstName;
- this.lastName = lastName;
- this.age = age;
- this.registered = registered;
- }
-
- public String getSSN() {
- return ssn;
- }
-
- public String getFirstName() {
- return firstName;
- }
-
- public String getLastName() {
- return lastName;
-
- }
-
- public int getAge() {
- return age;
- }
-
- public boolean isRegistered() {
- return registered;
- }
- }
-
- class PersonRowMapper implements IRowMapper {
- public Object mapRow(IResultSet resultSet) {
- String ssn = resultSet.getString(PERSON_SSN);
- String firstName = resultSet.getString(PERSON_FIRST_NAME);
- String lastName = resultSet.getString(PERSON_LAST_NAME);
- int age = resultSet.getInt(PERSON_AGE);
- boolean registered = resultSet.getBoolean(PERSON_REGISTERED);
- return new Person(ssn, firstName, lastName, age, registered);
- }
- }
-
- Object[][] PERSON_INIT_DATA = {
- {"111-11-1111", "John", "Smith", 40, true},
- {"222-22-2222", "Jim", "White", 24, false},
- {"333-33-3333", "Lisa", "Jones", 27, true},
- {"444-44-4444", "Susan", "Jones", 14, false},
- {"555-55-5555", "Jose", "Garcia", 31, true},
- {"666-66-6666", "Abigail", "Johnson", 35, false},
- {"777-77-7777", "Bjorn", "Borg", 55, true},
- {"888-88-8888", "John", "McEnroe", 53, false}
- };
-
- Map<String,Object> createPersonRowValues(Object[] personData) {
- Map<String,Object> rowValues = new HashMap<String,Object>();
- for (int i = 0; i < PERSON_COLUMN_LIST.length; i++) {
- rowValues.put(PERSON_COLUMN_LIST[i], personData[i]);
- }
- return rowValues;
- }
-
- public void insertPerson(Object[] personData) {
- Map<String,Object> rowValues = createPersonRowValues(personData);
- storageSource.insertRow(PERSON_TABLE_NAME, rowValues);
- }
-
- public void initPersons() {
- for (Object[] row: PERSON_INIT_DATA) {
- insertPerson(row);
- }
- }
-
- public void setUp() throws Exception {
- super.setUp();
- Set<String> indexedColumnNames = new HashSet<String>();
- indexedColumnNames.add(PERSON_LAST_NAME);
- storageSource.setExceptionHandler(null);
- storageSource.createTable(PERSON_TABLE_NAME, indexedColumnNames);
- storageSource.setTablePrimaryKeyName(PERSON_TABLE_NAME, PERSON_SSN);
- initPersons();
- }
-
- public void checkExpectedResults(IResultSet resultSet, String[] columnNameList, Object[][] expectedRowList) {
- boolean nextResult;
- for (Object[] expectedRow: expectedRowList) {
- nextResult = resultSet.next();
- assertEquals(nextResult,true);
- assertEquals(expectedRow.length, columnNameList.length);
- for (int i = 0; i < expectedRow.length; i++) {
- Object expectedObject = expectedRow[i];
- String columnName = columnNameList[i];
- if (expectedObject instanceof Boolean)
- assertEquals(((Boolean)expectedObject).booleanValue(), resultSet.getBoolean(columnName));
- else if (expectedObject instanceof Byte)
- assertEquals(((Byte)expectedObject).byteValue(), resultSet.getByte(columnName));
- else if (expectedObject instanceof Short)
- assertEquals(((Short)expectedObject).shortValue(), resultSet.getShort(columnName));
- else if (expectedObject instanceof Integer)
- assertEquals(((Integer)expectedObject).intValue(), resultSet.getInt(columnName));
- else if (expectedObject instanceof Long)
- assertEquals(((Long)expectedObject).longValue(), resultSet.getLong(columnName));
- else if (expectedObject instanceof Float)
- assertEquals(((Float)expectedObject).floatValue(), resultSet.getFloat(columnName), 0.00001);
- else if (expectedObject instanceof Double)
- assertEquals(((Double)expectedObject).doubleValue(), resultSet.getDouble(columnName), 0.00001);
- else if (expectedObject instanceof byte[])
- assertEquals((byte[])expectedObject, resultSet.getByteArray(columnName));
- else if (expectedObject instanceof String)
- assertEquals((String)expectedObject, resultSet.getString(columnName));
- else
- assertTrue("Unexpected column value type", false);
- }
- }
- nextResult = resultSet.next();
- assertEquals(nextResult,false);
- resultSet.close();
- }
-
- @Test
- public void testInsertRows() {
- IResultSet resultSet = storageSource.executeQuery(PERSON_TABLE_NAME, null, null, new RowOrdering(PERSON_SSN));
- checkExpectedResults(resultSet, PERSON_COLUMN_LIST, PERSON_INIT_DATA);
- }
-
- @Test
- public void testOperatorQuery() {
- Object[][] expectedResults = {
- {"John", "Smith", 40},
- {"Jim", "White", 24},
- };
- String[] columnList = {PERSON_FIRST_NAME,PERSON_LAST_NAME,PERSON_AGE};
- IResultSet resultSet = storageSource.executeQuery(PERSON_TABLE_NAME, columnList,
- new OperatorPredicate(PERSON_LAST_NAME, OperatorPredicate.Operator.GTE, "Sm"),
- new RowOrdering(PERSON_SSN));
- checkExpectedResults(resultSet, columnList, expectedResults);
- }
-
- @Test
- public void testAndQuery() {
- String[] columnList = {PERSON_FIRST_NAME,PERSON_LAST_NAME};
- Object[][] expectedResults = {
- {"Lisa", "Jones"},
- {"Susan", "Jones"},
- {"Jose", "Garcia"},
- {"Abigail", "Johnson"},
- {"John", "McEnroe"}
- };
- IResultSet resultSet = storageSource.executeQuery(PERSON_TABLE_NAME, columnList,
- new CompoundPredicate(CompoundPredicate.Operator.AND, false,
- new OperatorPredicate(PERSON_LAST_NAME, OperatorPredicate.Operator.GTE, "G"),
- new OperatorPredicate(PERSON_LAST_NAME, OperatorPredicate.Operator.LT, "N")
- ),
- new RowOrdering(PERSON_SSN));
- checkExpectedResults(resultSet, columnList, expectedResults);
- }
-
- @Test
- public void testOrQuery() {
- String[] columnList = {PERSON_FIRST_NAME,PERSON_LAST_NAME, PERSON_AGE};
- Object[][] expectedResults = {
- {"John", "Smith", 40},
- {"Lisa", "Jones", 27},
- {"Abigail", "Johnson", 35},
- {"Bjorn", "Borg", 55},
- {"John", "McEnroe", 53}
- };
- IResultSet resultSet = storageSource.executeQuery(PERSON_TABLE_NAME, columnList,
- new CompoundPredicate(CompoundPredicate.Operator.OR, false,
- new OperatorPredicate(PERSON_AGE, OperatorPredicate.Operator.GTE, 35),
- new OperatorPredicate(PERSON_FIRST_NAME, OperatorPredicate.Operator.EQ, "Lisa")
- ),
- new RowOrdering(PERSON_SSN));
- checkExpectedResults(resultSet, columnList, expectedResults);
-}
-
- @Test
- public void testCreateQuery() {
- String[] columnList = {PERSON_FIRST_NAME,PERSON_LAST_NAME};
- Object[][] expectedResults = {
- {"Lisa", "Jones"},
- {"Susan", "Jones"}
- };
- IPredicate predicate = new OperatorPredicate(PERSON_LAST_NAME, OperatorPredicate.Operator.EQ, "Jones");
- IQuery query = storageSource.createQuery(PERSON_TABLE_NAME, columnList, predicate, new RowOrdering(PERSON_SSN));
- IResultSet resultSet = storageSource.executeQuery(query);
- checkExpectedResults(resultSet, columnList, expectedResults);
- }
-
- @Test
- public void testQueryParameters() {
- String[] columnList = {PERSON_FIRST_NAME,PERSON_LAST_NAME, PERSON_AGE};
- Object[][] expectedResults = {
- {"John", "Smith", 40},
- {"Bjorn", "Borg", 55},
- {"John", "McEnroe", 53}
- };
- IPredicate predicate = new OperatorPredicate(PERSON_AGE, OperatorPredicate.Operator.GTE, "?MinimumAge?");
- IQuery query = storageSource.createQuery(PERSON_TABLE_NAME, columnList, predicate, new RowOrdering(PERSON_SSN));
- query.setParameter("MinimumAge", 40);
- IResultSet resultSet = storageSource.executeQuery(query);
- checkExpectedResults(resultSet, columnList, expectedResults);
- }
-
- private void checkPerson(Person person, Object[] expectedValues) {
- assertEquals(person.getSSN(), expectedValues[0]);
- assertEquals(person.getFirstName(), expectedValues[1]);
- assertEquals(person.getLastName(), expectedValues[2]);
- assertEquals(person.getAge(), expectedValues[3]);
- assertEquals(person.isRegistered(), expectedValues[4]);
- }
-
- @Test
- public void testRowMapper() {
- Object[][] expectedResults = {
- PERSON_INIT_DATA[2],
- PERSON_INIT_DATA[3]
- };
- IPredicate predicate = new OperatorPredicate(PERSON_LAST_NAME, OperatorPredicate.Operator.EQ, "Jones");
- IRowMapper rowMapper = new PersonRowMapper();
- Object[] personList = storageSource.executeQuery(PERSON_TABLE_NAME, null, predicate, new RowOrdering(PERSON_SSN), rowMapper);
- assertEquals(personList.length, 2);
- for (int i = 0; i < personList.length; i++)
- checkPerson((Person)personList[i], expectedResults[i]);
- }
-
- @Test
- public void testDeleteRowsDirect() {
-
- storageSource.deleteRow(PERSON_TABLE_NAME, "111-11-1111");
- storageSource.deleteRow(PERSON_TABLE_NAME, "222-22-2222");
- storageSource.deleteRow(PERSON_TABLE_NAME, "333-33-3333");
- storageSource.deleteRow(PERSON_TABLE_NAME, "444-44-4444");
-
- Object[][] expectedResults = {
- {"555-55-5555", "Jose", "Garcia", 31, true},
- {"666-66-6666", "Abigail", "Johnson", 35, false},
- {"777-77-7777", "Bjorn", "Borg", 55, true},
- {"888-88-8888", "John", "McEnroe", 53, false}
- };
- IResultSet resultSet = storageSource.executeQuery(PERSON_TABLE_NAME, PERSON_COLUMN_LIST, null, new RowOrdering(PERSON_SSN));
- checkExpectedResults(resultSet, PERSON_COLUMN_LIST, expectedResults);
- }
-
- @Test
- public void testDeleteRowsFromResultSet() {
- Object[][] expectedResults = {
- {"555-55-5555", "Jose", "Garcia", 31, true},
- {"666-66-6666", "Abigail", "Johnson", 35, false},
- {"777-77-7777", "Bjorn", "Borg", 55, true},
- {"888-88-8888", "John", "McEnroe", 53, false}
- };
-
- // Query once to delete the rows
- IResultSet resultSet = storageSource.executeQuery(PERSON_TABLE_NAME, PERSON_COLUMN_LIST, null, new RowOrdering(PERSON_SSN));
- for (int i = 0; i < 4; i++) {
- resultSet.next();
- resultSet.deleteRow();
- }
- resultSet.save();
- resultSet.close();
-
- // Now query again to verify that the rows were deleted
- resultSet = storageSource.executeQuery(PERSON_TABLE_NAME, PERSON_COLUMN_LIST, null, new RowOrdering(PERSON_SSN));
- checkExpectedResults(resultSet, PERSON_COLUMN_LIST, expectedResults);
- }
-
- @Test
- public void testDeleteMatchingRows() {
- Object[][] expectedResults = {
- {"111-11-1111", "John", "Smith", 40, true},
- {"777-77-7777", "Bjorn", "Borg", 55, true},
- {"888-88-8888", "John", "McEnroe", 53, false}
- };
- storageSource.deleteMatchingRows(PERSON_TABLE_NAME, new OperatorPredicate(PERSON_AGE, OperatorPredicate.Operator.LT, 40));
-
- // Now query again to verify that the rows were deleted
- IResultSet resultSet = storageSource.executeQuery(PERSON_TABLE_NAME, PERSON_COLUMN_LIST, null, new RowOrdering(PERSON_SSN));
- checkExpectedResults(resultSet, PERSON_COLUMN_LIST, expectedResults);
-
- storageSource.deleteMatchingRows(PERSON_TABLE_NAME, null);
-
- // Now query again to verify that all rows were deleted
- resultSet = storageSource.executeQuery(PERSON_TABLE_NAME, PERSON_COLUMN_LIST, null, new RowOrdering(PERSON_SSN));
- checkExpectedResults(resultSet, PERSON_COLUMN_LIST, new Object[0][]);
- }
-
- @Test
- public void testUpdateRowsDirect() {
-
- Object[][] expectedResults = {
- {"777-77-7777", "Tennis", "Borg", 60, true},
- {"888-88-8888", "Tennis", "McEnroe", 60, false}
- };
- Map<String,Object> updateValues = new HashMap<String,Object>();
- updateValues.put(PERSON_FIRST_NAME, "Tennis");
- updateValues.put(PERSON_AGE, 60);
-
- IPredicate predicate = new OperatorPredicate(PERSON_AGE, OperatorPredicate.Operator.GT, 50);
- IResultSet resultSet = storageSource.executeQuery(PERSON_TABLE_NAME, null, predicate, new RowOrdering(PERSON_SSN));
- while (resultSet.next()) {
- String key = resultSet.getString(PERSON_SSN);
- storageSource.updateRow(PERSON_TABLE_NAME, key, updateValues);
- }
- resultSet.close();
-
- resultSet = storageSource.executeQuery(PERSON_TABLE_NAME, PERSON_COLUMN_LIST, predicate, new RowOrdering(PERSON_SSN));
- checkExpectedResults(resultSet, PERSON_COLUMN_LIST, expectedResults);
- }
-
- @Test
- public void testUpdateRowsFromResultSet() {
-
- Object[][] expectedResults = {
- {"777-77-7777", "Tennis", "Borg", 60, true},
- {"888-88-8888", "Tennis", "McEnroe", 60, false}
- };
-
- IPredicate predicate = new OperatorPredicate(PERSON_AGE, OperatorPredicate.Operator.GT, 50);
- IResultSet resultSet = storageSource.executeQuery(PERSON_TABLE_NAME, null, predicate, null);
- while (resultSet.next()) {
- resultSet.setString(PERSON_FIRST_NAME, "Tennis");
- resultSet.setInt(PERSON_AGE, 60);
- }
- resultSet.save();
- resultSet.close();
-
- resultSet = storageSource.executeQuery(PERSON_TABLE_NAME, PERSON_COLUMN_LIST, predicate, new RowOrdering(PERSON_SSN));
- checkExpectedResults(resultSet, PERSON_COLUMN_LIST, expectedResults);
- }
-
- @Test
- public void testNullValues() {
-
- IPredicate predicate = new OperatorPredicate(PERSON_LAST_NAME, OperatorPredicate.Operator.EQ, "Jones");
- IResultSet resultSet = storageSource.executeQuery(PERSON_TABLE_NAME, null, predicate, new RowOrdering(PERSON_SSN));
- while (resultSet.next()) {
- resultSet.setNull(PERSON_FIRST_NAME);
- resultSet.setIntegerObject(PERSON_AGE, null);
- }
- resultSet.save();
- resultSet.close();
-
- resultSet = storageSource.executeQuery(PERSON_TABLE_NAME, null, predicate, new RowOrdering(PERSON_SSN));
- int count = 0;
- while (resultSet.next()) {
- boolean checkNull = resultSet.isNull(PERSON_FIRST_NAME);
- assertTrue(checkNull);
- String s = resultSet.getString(PERSON_FIRST_NAME);
- assertEquals(s, null);
- checkNull = resultSet.isNull(PERSON_AGE);
- assertTrue(checkNull);
- Integer intObj = resultSet.getIntegerObject(PERSON_AGE);
- assertEquals(intObj, null);
- Short shortObj = resultSet.getShortObject(PERSON_AGE);
- assertEquals(shortObj, null);
- boolean excThrown = false;
- try {
- resultSet.getInt(PERSON_AGE);
- }
- catch (NullValueStorageException exc) {
- excThrown = true;
- }
- assertTrue(excThrown);
- count++;
- }
- resultSet.close();
- assertEquals(count, 2);
-
- predicate = new OperatorPredicate(PERSON_FIRST_NAME, OperatorPredicate.Operator.EQ, null);
- resultSet = storageSource.executeQuery(PERSON_TABLE_NAME, null, predicate, new RowOrdering(PERSON_SSN));
- count = 0;
- while (resultSet.next()) {
- boolean checkNull = resultSet.isNull(PERSON_FIRST_NAME);
- assertTrue(checkNull);
- count++;
- checkNull = resultSet.isNull(PERSON_AGE);
- assertTrue(checkNull);
- }
- resultSet.close();
- assertEquals(count, 2);
- }
-
- @Test
- public void testInsertNotification() {
- // Set up the listener and record the expected notification
- IStorageSourceListener mockListener = createNiceMock(IStorageSourceListener.class);
- Set<Object> expectedKeys = new HashSet<Object>();
- expectedKeys.add("999-99-9999");
- mockListener.rowsModified(PERSON_TABLE_NAME, expectedKeys);
-
- replay(mockListener);
-
- // Now try it for real
- storageSource.addListener(PERSON_TABLE_NAME, mockListener);
-
- // Create a new person, which should trigger the listener
- Object[] newPerson = {"999-99-9999", "Serena", "Williams", 22, true};
- insertPerson(newPerson);
-
- verify(mockListener);
- }
-
- @Test
- public void testUpdateNotification() {
- // Set up the listener and record the expected notification
- IStorageSourceListener mockListener = createNiceMock(IStorageSourceListener.class);
- Set<Object> expectedKeys = new HashSet<Object>();
- expectedKeys.add("111-11-1111");
- mockListener.rowsModified(PERSON_TABLE_NAME, expectedKeys);
-
- replay(mockListener);
-
- // Now try it for real
- storageSource.addListener(PERSON_TABLE_NAME, mockListener);
-
- // Create a new person, which should trigger the listener
- Map<String,Object> updateValues = new HashMap<String,Object>();
- updateValues.put(PERSON_FIRST_NAME, "Tennis");
- storageSource.updateRow(PERSON_TABLE_NAME, "111-11-1111", updateValues);
-
- verify(mockListener);
- }
-
- @Test
- public void testDeleteNotification() {
- IStorageSourceListener mockListener = createNiceMock(IStorageSourceListener.class);
- Set<Object> expectedKeys = new HashSet<Object>();
- expectedKeys.add("111-11-1111");
- mockListener.rowsDeleted(PERSON_TABLE_NAME, expectedKeys);
-
- replay(mockListener);
-
- // Now try it for real
- storageSource.addListener(PERSON_TABLE_NAME, mockListener);
-
- // Create a new person, which should trigger the listener
- storageSource.deleteRow(PERSON_TABLE_NAME, "111-11-1111");
-
- verify(mockListener);
- }
-
- public void waitForFuture(Future<?> future) {
- try
- {
- future.get(10, TimeUnit.SECONDS);
- }
- catch (InterruptedException exc)
- {
- fail("Async storage operation interrupted");
- }
- catch (ExecutionException exc) {
- fail("Async storage operation failed");
- }
- catch (TimeoutException exc) {
- fail("Async storage operation timed out");
- }
- }
-
- @Test
- public void testAsyncQuery1() {
- Object[][] expectedResults = {
- {"John", "Smith", 40},
- {"Jim", "White", 24},
- };
- String[] columnList = {PERSON_FIRST_NAME,PERSON_LAST_NAME,PERSON_AGE};
- IPredicate predicate = new OperatorPredicate(PERSON_LAST_NAME, OperatorPredicate.Operator.GTE, "Sm");
- IQuery query = storageSource.createQuery(PERSON_TABLE_NAME, columnList, predicate, new RowOrdering(PERSON_SSN));
- Future<IResultSet> future = storageSource.executeQueryAsync(query);
- waitForFuture(future);
- try {
- IResultSet resultSet = future.get();
- checkExpectedResults(resultSet, columnList, expectedResults);
- }
- catch (Exception e) {
- fail("Exception thrown in async storage operation: " + e.toString());
- }
- }
-
- @Test
- public void testAsyncQuery2() {
- Object[][] expectedResults = {
- {"John", "Smith", 40},
- {"Jim", "White", 24},
- };
- String[] columnList = {PERSON_FIRST_NAME,PERSON_LAST_NAME,PERSON_AGE};
- IPredicate predicate = new OperatorPredicate(PERSON_LAST_NAME, OperatorPredicate.Operator.GTE, "Sm");
- Future<IResultSet> future = storageSource.executeQueryAsync(PERSON_TABLE_NAME,
- columnList, predicate, new RowOrdering(PERSON_SSN));
- waitForFuture(future);
- try {
- IResultSet resultSet = future.get();
- checkExpectedResults(resultSet, columnList, expectedResults);
- }
- catch (Exception e) {
- fail("Exception thrown in async storage operation: " + e.toString());
- }
- }
-
- @Test
- public void testAsyncQuery3() {
- Object[][] expectedResults = {
- PERSON_INIT_DATA[2],
- PERSON_INIT_DATA[3]
- };
- IPredicate predicate = new OperatorPredicate(PERSON_LAST_NAME, OperatorPredicate.Operator.EQ, "Jones");
- IRowMapper rowMapper = new PersonRowMapper();
- Future<Object[]> future = storageSource.executeQueryAsync(PERSON_TABLE_NAME,
- null, predicate, new RowOrdering(PERSON_SSN), rowMapper);
- waitForFuture(future);
- try {
- Object[] personList = future.get();
- assertEquals(personList.length, 2);
- for (int i = 0; i < personList.length; i++)
- checkPerson((Person)personList[i], expectedResults[i]);
- }
- catch (Exception e) {
- fail("Exception thrown in async storage operation: " + e.toString());
- }
- }
-
- @Test
- public void testAsyncException() {
- class TestExceptionHandler implements IStorageExceptionHandler {
- public int exceptionCount = 0;
- @Override
- public void handleException(Exception exception) {
- exceptionCount++;
- }
- }
- TestExceptionHandler exceptionHandler = new TestExceptionHandler();
- storageSource.setExceptionHandler(exceptionHandler);
-
- // Use an invalid table name, which should cause the storage API call to throw
- // an exception, which should then be converted to an ExecutionException.
- Future<IResultSet> future = storageSource.executeQueryAsync("InvalidTableName",
- null, null, null);
- try {
- future.get(10, TimeUnit.SECONDS);
- fail("Expected ExecutionException was not thrown");
- }
- catch (ExecutionException e) {
- assertTrue(true);
- }
- catch (Exception e) {
- fail("Exception thrown in async storage operation: " + e.toString());
- }
- assertEquals(exceptionHandler.exceptionCount, 1);
- }
-
- @Test
- public void testAsyncInsertRow() {
- Object[][] newPersonInfo = {{"999-99-9999", "Ellen", "Wilson", 40, true}};
- Map<String,Object> rowValues = createPersonRowValues(newPersonInfo[0]);
- Future<?> future = storageSource.insertRowAsync(PERSON_TABLE_NAME, rowValues);
- waitForFuture(future);
- try {
- IResultSet resultSet = storageSource.executeQuery(PERSON_TABLE_NAME, null, null, new RowOrdering(PERSON_SSN));
- Object[][] expectedPersons = Arrays.copyOf(PERSON_INIT_DATA, PERSON_INIT_DATA.length + newPersonInfo.length);
- System.arraycopy(newPersonInfo, 0, expectedPersons, PERSON_INIT_DATA.length, newPersonInfo.length);
- checkExpectedResults(resultSet, PERSON_COLUMN_LIST, expectedPersons);
- }
- catch (Exception e) {
- fail("Exception thrown in async storage operation: " + e.toString());
- }
- }
-
- @Test
- public void testAsyncUpdateRow() {
- Map<String,Object> updateValues = new HashMap<String,Object>();
- updateValues.put(PERSON_SSN, "777-77-7777");
- updateValues.put(PERSON_FIRST_NAME, "Tennis");
- updateValues.put(PERSON_AGE, 60);
-
- Future<?> future = storageSource.updateRowAsync(PERSON_TABLE_NAME, updateValues);
- waitForFuture(future);
-
- try {
- IResultSet resultSet = storageSource.getRow(PERSON_TABLE_NAME, "777-77-7777");
- Object[][] expectedPersons = {{"777-77-7777", "Tennis", "Borg", 60, true}};
- checkExpectedResults(resultSet, PERSON_COLUMN_LIST, expectedPersons);
- }
- catch (Exception e) {
- fail("Exception thrown in async storage operation: " + e.toString());
- }
- }
-
- @Test
- public void testAsyncUpdateRow2() {
- Map<String,Object> updateValues = new HashMap<String,Object>();
- updateValues.put(PERSON_FIRST_NAME, "Tennis");
- updateValues.put(PERSON_AGE, 60);
-
- Future<?> future = storageSource.updateRowAsync(PERSON_TABLE_NAME, "777-77-7777", updateValues);
- waitForFuture(future);
-
- try {
- IResultSet resultSet = storageSource.getRow(PERSON_TABLE_NAME, "777-77-7777");
- Object[][] expectedPersons = {{"777-77-7777", "Tennis", "Borg", 60, true}};
- checkExpectedResults(resultSet, PERSON_COLUMN_LIST, expectedPersons);
- }
- catch (Exception e) {
- fail("Exception thrown in async storage operation: " + e.toString());
- }
- }
-
- @Test
- public void testAsyncUpdateMatchingRows() {
- Map<String,Object> updateValues = new HashMap<String,Object>();
- updateValues.put(PERSON_FIRST_NAME, "Tennis");
- updateValues.put(PERSON_AGE, 60);
-
- IPredicate predicate = new OperatorPredicate(PERSON_SSN, OperatorPredicate.Operator.EQ, "777-77-7777");
- Future<?> future = storageSource.updateMatchingRowsAsync(PERSON_TABLE_NAME, predicate, updateValues);
- waitForFuture(future);
- try {
- IResultSet resultSet = storageSource.getRow(PERSON_TABLE_NAME, "777-77-7777");
- Object[][] expectedPersons = {{"777-77-7777", "Tennis", "Borg", 60, true}};
- checkExpectedResults(resultSet, PERSON_COLUMN_LIST, expectedPersons);
- }
- catch (Exception e) {
- fail("Exception thrown in async storage operation: " + e.toString());
- }
- }
-
- @Test
- public void testAsyncDeleteRow() {
- Future<?> future = storageSource.deleteRowAsync(PERSON_TABLE_NAME, "111-11-1111");
- waitForFuture(future);
- try {
- IResultSet resultSet = storageSource.executeQuery(PERSON_TABLE_NAME, null, null, new RowOrdering(PERSON_SSN));
- Object[][] expectedPersons = Arrays.copyOfRange(PERSON_INIT_DATA, 1, PERSON_INIT_DATA.length);
- checkExpectedResults(resultSet, PERSON_COLUMN_LIST, expectedPersons);
- }
- catch (Exception e) {
- fail("Exception thrown in async storage operation: " + e.toString());
- }
- }
-
- @Test
- public void testAsyncDeleteMatchingRows() {
- Future<?> future = storageSource.deleteMatchingRowsAsync(PERSON_TABLE_NAME, null);
- waitForFuture(future);
- try {
- IResultSet resultSet = storageSource.executeQuery(PERSON_TABLE_NAME, null, null, new RowOrdering(PERSON_SSN));
- checkExpectedResults(resultSet, PERSON_COLUMN_LIST, new Object[0][]);
- }
- catch (Exception e) {
- fail("Exception thrown in async storage operation: " + e.toString());
- }
- }
-
- @Test
- public void testAsyncSave() {
- // Get a result set and make some changes to it
- IResultSet resultSet = storageSource.executeQuery(PERSON_TABLE_NAME, null, null, new RowOrdering(PERSON_SSN));
- resultSet.next();
- resultSet.deleteRow();
- resultSet.next();
- resultSet.setString(PERSON_FIRST_NAME, "John");
-
- Future<?> future = storageSource.saveAsync(resultSet);
- waitForFuture(future);
- try {
- resultSet = storageSource.executeQuery(PERSON_TABLE_NAME, null, null, new RowOrdering(PERSON_SSN));
- Object[][] expectedPersons = Arrays.copyOfRange(PERSON_INIT_DATA, 1, PERSON_INIT_DATA.length);
- expectedPersons[0][1] = "John";
- checkExpectedResults(resultSet, PERSON_COLUMN_LIST, expectedPersons);
- }
- catch (Exception e) {
- fail("Exception thrown in async storage operation: " + e.toString());
- }
-
- }
-}