зеркало из https://github.com/Azure/YCSB.git
[riak] Removed test unit as it only works with a local cluster installation (there is no Riak test or mock utility).
[riak] Packaged into com.yahoo.ycsb.db.riak. [riak] Removed unused dependencies. [riak] Bugfix for update() function that returned positive even with no nodes in the cluster.
This commit is contained in:
Родитель
1ff7e2b8fb
Коммит
2797f9a026
|
@ -1,6 +1,7 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!--
|
||||
Copyright (c) 2016 YCSB contributors. All rights reserved.
|
||||
Copyright 2014 Basho Technologies, Inc.
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License"); you
|
||||
may not use this file except in compliance with the License. You
|
||||
|
@ -47,12 +48,6 @@ LICENSE file.
|
|||
<artifactId>google-collections</artifactId>
|
||||
<version>1.0</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>junit</groupId>
|
||||
<artifactId>junit</artifactId>
|
||||
<version>4.12</version>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
|
||||
</project>
|
|
@ -16,7 +16,7 @@
|
|||
* LICENSE file.
|
||||
*/
|
||||
|
||||
package com.yahoo.ycsb.db;
|
||||
package com.yahoo.ycsb.db.riak;
|
||||
|
||||
import com.basho.riak.client.api.commands.kv.UpdateValue;
|
||||
import com.basho.riak.client.core.RiakFuture;
|
||||
|
@ -43,9 +43,9 @@ import com.basho.riak.client.core.query.RiakObject;
|
|||
import com.basho.riak.client.core.query.indexes.LongIntIndex;
|
||||
import com.basho.riak.client.core.util.BinaryValue;
|
||||
|
||||
import static com.yahoo.ycsb.db.RiakUtils.deserializeTable;
|
||||
import static com.yahoo.ycsb.db.RiakUtils.getKeyAsLong;
|
||||
import static com.yahoo.ycsb.db.RiakUtils.serializeTable;
|
||||
import static com.yahoo.ycsb.db.riak.RiakUtils.deserializeTable;
|
||||
import static com.yahoo.ycsb.db.riak.RiakUtils.getKeyAsLong;
|
||||
import static com.yahoo.ycsb.db.riak.RiakUtils.serializeTable;
|
||||
|
||||
/**
|
||||
* Riak KV 2.0.x client for YCSB framework.
|
||||
|
@ -479,7 +479,10 @@ public final class RiakKVClient extends DB {
|
|||
RiakFuture<UpdateValue.Response, Location> future = riakClient.executeAsync(update);
|
||||
|
||||
try {
|
||||
future.get(transactionTimeLimit, TimeUnit.SECONDS);
|
||||
// For some reason, the update transaction doesn't throw any exception when no cluster has been started, so one
|
||||
// needs to check whether it was done or not. When calling the wasUpdated() function with no nodes available, a
|
||||
// NullPointerException is thrown.
|
||||
future.get(transactionTimeLimit, TimeUnit.SECONDS).wasUpdated();
|
||||
} catch (TimeoutException e) {
|
||||
if (debug) {
|
||||
System.err.println("Unable to update key " + key + ". Reason: TIME OUT");
|
|
@ -16,7 +16,7 @@
|
|||
* LICENSE file.
|
||||
*/
|
||||
|
||||
package com.yahoo.ycsb.db;
|
||||
package com.yahoo.ycsb.db.riak;
|
||||
|
||||
import java.io.*;
|
||||
import java.util.Map;
|
|
@ -17,7 +17,7 @@
|
|||
*/
|
||||
|
||||
/**
|
||||
* The YCSB binding for <a href="http://basho.com/products/riak-kv/">Riak KV</a>
|
||||
* 2.0.x.
|
||||
* The YCSB binding for <a href="http://basho.com/products/riak-kv/">Riak KV</a> 2.0.x.
|
||||
*
|
||||
*/
|
||||
package com.yahoo.ycsb.db;
|
||||
package com.yahoo.ycsb.db.riak;
|
|
@ -1,125 +0,0 @@
|
|||
/**
|
||||
* Copyright (c) 2016 YCSB contributors All rights reserved.
|
||||
* Copyright 2014 Basho Technologies, Inc.
|
||||
*
|
||||
* 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 java.util.*;
|
||||
|
||||
import com.yahoo.ycsb.ByteIterator;
|
||||
import com.yahoo.ycsb.Status;
|
||||
import com.yahoo.ycsb.StringByteIterator;
|
||||
|
||||
import org.junit.AfterClass;
|
||||
import org.junit.BeforeClass;
|
||||
import org.junit.Test;
|
||||
|
||||
import static org.junit.Assert.assertEquals;
|
||||
|
||||
/**
|
||||
* Integration tests for the Riak KV client. All tests are configured to return positive.
|
||||
*/
|
||||
public class RiakKVClientTest {
|
||||
private static RiakKVClient riakClient;
|
||||
private static String bucket = "testBucket";
|
||||
private static String startKey = "testKey";
|
||||
private static int recordsToInitiallyInsert = 10;
|
||||
|
||||
/**
|
||||
* Creates a cluster for testing purposes.
|
||||
*/
|
||||
@BeforeClass
|
||||
public static void setUpClass() throws Exception {
|
||||
riakClient = new RiakKVClient();
|
||||
riakClient.init();
|
||||
|
||||
HashMap<String, String> values = new HashMap<>();
|
||||
|
||||
// Just add some random values to work on...
|
||||
for (int i = 0; i < recordsToInitiallyInsert; i++) {
|
||||
values.put("testRecord_1", "testValue_1");
|
||||
values.put("testRecord_2", "testValue_2");
|
||||
|
||||
riakClient.insert(bucket, startKey + String.valueOf(i), StringByteIterator.getByteIteratorMap(values));
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Shuts down the cluster created.
|
||||
*/
|
||||
@AfterClass
|
||||
public static void tearDownClass() throws Exception {
|
||||
riakClient.cleanup();
|
||||
}
|
||||
|
||||
/**
|
||||
* Test method for read transaction.
|
||||
*/
|
||||
@Test
|
||||
public void testRead() {
|
||||
Set<String> fields = new HashSet<>();
|
||||
fields.add("testRecord_1");
|
||||
fields.add("testRecord_2");
|
||||
|
||||
HashMap<String, ByteIterator> results = new HashMap<>();
|
||||
|
||||
assertEquals(Status.OK, riakClient.read(bucket, startKey + "1", fields, results));
|
||||
}
|
||||
|
||||
/**
|
||||
* Test method for scan transaction.
|
||||
*/
|
||||
@Test
|
||||
public void testScan() {
|
||||
Vector<HashMap<String, ByteIterator>> results = new Vector<>();
|
||||
|
||||
assertEquals(Status.OK, riakClient.scan(bucket, startKey + "1", recordsToInitiallyInsert - 1, null, results));
|
||||
}
|
||||
|
||||
/**
|
||||
* Test method for update transaction.
|
||||
*/
|
||||
@Test
|
||||
public void testUpdate() {
|
||||
HashMap<String, String> values = new HashMap<>();
|
||||
values.put("testRecord_1", "testValue_1_updated");
|
||||
values.put("testRecord_2", "testValue_2_updated");
|
||||
|
||||
assertEquals(Status.OK, riakClient.update(bucket, startKey + "0", StringByteIterator.getByteIteratorMap(values)));
|
||||
}
|
||||
|
||||
/**
|
||||
* Test method for insert transaction.
|
||||
*/
|
||||
@Test
|
||||
public void testInsert() {
|
||||
HashMap<String, String> values = new HashMap<>();
|
||||
values.put("testRecord_1", "testValue_1");
|
||||
values.put("testRecord_2", "testValue_2");
|
||||
|
||||
assertEquals(Status.OK, riakClient.insert(bucket, startKey + Integer.toString(recordsToInitiallyInsert),
|
||||
StringByteIterator.getByteIteratorMap(values)));
|
||||
}
|
||||
|
||||
/**
|
||||
* Test method for delete transaction.
|
||||
*/
|
||||
@Test
|
||||
public void testDelete() {
|
||||
assertEquals(Status.OK, riakClient.delete(bucket, startKey + "0"));
|
||||
}
|
||||
}
|
Загрузка…
Ссылка в новой задаче