diff --git a/rados/src/test/java/com/yahoo/ycsb/db/RadosClientTest.java b/rados/src/test/java/com/yahoo/ycsb/db/RadosClientTest.java index fd12132c..f6dadd96 100644 --- a/rados/src/test/java/com/yahoo/ycsb/db/RadosClientTest.java +++ b/rados/src/test/java/com/yahoo/ycsb/db/RadosClientTest.java @@ -1,142 +1,144 @@ /** * Copyright (c) 2016 YCSB contributors. All rights reserved. * * 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. See accompanying * LICENSE file. */ package com.yahoo.ycsb.db; import static org.testng.AssertJUnit.assertEquals; import com.yahoo.ycsb.ByteIterator; import com.yahoo.ycsb.DBException; import com.yahoo.ycsb.Status; import com.yahoo.ycsb.StringByteIterator; import org.testng.annotations.AfterClass; import org.testng.annotations.AfterMethod; import org.testng.annotations.BeforeClass; import org.testng.annotations.BeforeMethod; import org.testng.annotations.Test; import java.util.HashMap; import java.util.Iterator; import java.util.Map; import java.util.Properties; import java.util.Set; import java.util.UUID; /** * Test for the binding of RADOS of Ceph. * * See {@code rados/README.md} for details. */ public class RadosClientTest { private static RadosClient radosclient; public static final String POOL_PROPERTY = "rados.pool"; public static final String POOL_TEST = "rbd"; private static final String TABLE_NAME = "table0"; private static final String KEY0 = "key0"; - private static final String KEY1 = "key0"; + private static final String KEY1 = "key1"; + private static final String KEY2 = "key2"; private static final HashMap DATA; + private static final HashMap DATA_UPDATED; static { DATA = new HashMap(10); + DATA_UPDATED = new HashMap(10); for (int i = 0; i < 10; i++) { - DATA.put("key" + UUID.randomUUID(), new StringByteIterator("data" + UUID.randomUUID())); + String key = "key" + UUID.randomUUID(); + DATA.put(key, new StringByteIterator("data" + UUID.randomUUID())); + DATA_UPDATED.put(key, new StringByteIterator("data" + UUID.randomUUID())); } } @BeforeClass public void setupClass() throws DBException { radosclient = new RadosClient(); Properties p = new Properties(); p.setProperty(POOL_PROPERTY, POOL_TEST); radosclient.setProperties(p); radosclient.init(); } @AfterClass public void teardownClass() throws DBException { if (radosclient != null) { radosclient.cleanup(); } } @BeforeMethod public void setUp() { radosclient.insert(TABLE_NAME, KEY0, DATA); } @AfterMethod public void tearDown() { radosclient.delete(TABLE_NAME, KEY0); } @Test public void insertTest() { Status result = radosclient.insert(TABLE_NAME, KEY1, DATA); assertEquals(Status.OK, result); } @Test public void updateTest() { - HashMap newDATA = new HashMap(10); - for (int i = 0; i < 10; i++) { - newDATA.put("key" + UUID.randomUUID(), new StringByteIterator("new data" + UUID.randomUUID())); - } + radosclient.insert(TABLE_NAME, KEY2, DATA); - Status result = radosclient.update(TABLE_NAME, KEY0, newDATA); + Status result = radosclient.update(TABLE_NAME, KEY2, DATA_UPDATED); assertEquals(Status.OK, result); HashMap ret = new HashMap(10); - radosclient.read(TABLE_NAME, KEY0, DATA.keySet(), ret); - compareMap(ret); + radosclient.read(TABLE_NAME, KEY2, DATA.keySet(), ret); + compareMap(DATA_UPDATED, ret); + + radosclient.delete(TABLE_NAME, KEY2); } @Test public void readTest() { HashMap ret = new HashMap(10); Status result = radosclient.read(TABLE_NAME, KEY0, DATA.keySet(), ret); assertEquals(Status.OK, result); - compareMap(ret); + compareMap(DATA, ret); } - private void compareMap(HashMap ret) { - Set setDATA = DATA.entrySet(); - Set setReturn = ret.entrySet(); - Iterator itDATA = setDATA.iterator(); - Iterator itReturn = setReturn.iterator(); + private void compareMap(HashMap src, HashMap dest) { + assertEquals(src.size(), dest.size()); + + Set setSrc = src.entrySet(); + Iterator itSrc = setSrc.iterator(); for (int i = 0; i < 10; i++) { - Map.Entry entryDATA = (Map.Entry)itDATA.next(); - Map.Entry entryReturn = (Map.Entry)itReturn.next(); - assertEquals(entryDATA.getKey(), entryReturn.getKey()); - assertEquals(entryDATA.getValue(), entryReturn.getValue()); + Map.Entry entrySrc = itSrc.next(); + assertEquals(entrySrc.getValue().toString(), dest.get(entrySrc.getKey()).toString()); } } @Test public void deleteTest() { Status result = radosclient.delete(TABLE_NAME, KEY0); assertEquals(Status.OK, result); } }