X-Git-Url: http://git.vrable.net/?a=blobdiff_plain;f=kvstore%2Fkvtest.cc;fp=kvstore%2Fkvtest.cc;h=5ac60eaa9c3846da2c4a48ea9917e0a3bc59c5ea;hb=3c2cbef21a11c4d86952922f4da7b830a91423f9;hp=0000000000000000000000000000000000000000;hpb=db0d4c10ea7abfa2546f73e96784ebf554342977;p=bluesky.git diff --git a/kvstore/kvtest.cc b/kvstore/kvtest.cc new file mode 100644 index 0000000..5ac60ea --- /dev/null +++ b/kvstore/kvtest.cc @@ -0,0 +1,104 @@ +#include +#include +#include "workqueue.h" +#include "kvservice.h" +#include "kvclient.h" +#include "protobufrpc.h" + +using namespace boost; +using namespace kvstore; +using namespace bicker; +using namespace kvrpc; + +/* http://code.google.com/p/googletest/wiki/GoogleTestPrimer */ + +class KVTest : public ::testing::Test +{ +public: + KVTest() + :_kv_client("127.0.0.1", "9090") + { + vector data_dirs; + data_dirs.push_back("/tmp"); + + shared_ptr service(new KeyValueRpcService(new BDBBackend(data_dirs))); + _rpc_server.registerService(9090, service); + + _server_thread.reset( + new thread( + boost::bind( + &ProtoBufRpcServer::run, + &_rpc_server))); + + } + + virtual ~KVTest() + { + _rpc_server.shutdown(); + _server_thread->join(); + } +protected: + + ProtoBufRpcServer _rpc_server; + KeyValueClient _kv_client; + shared_ptr _server_thread; +}; + + +TEST_F(KVTest, PutTest) +{ + ASSERT_TRUE(_kv_client.Put("test", "value")); + string value; + ASSERT_TRUE(_kv_client.Get("test", &value)); + ASSERT_EQ(value, "value"); +} + +TEST_F(KVTest, MedPutTest) +{ + string test_value(1024*10, '6'); + ASSERT_TRUE(_kv_client.Put("test", test_value)); + string value; + ASSERT_TRUE(_kv_client.Get("test", &value)); + ASSERT_TRUE(value == test_value); +} + +TEST_F(KVTest, BigPutTest) +{ + string test_value(1024*1024*10, '6'); + ASSERT_TRUE(_kv_client.Put("test", test_value)); + string value; + ASSERT_TRUE(_kv_client.Get("test", &value)); + ASSERT_EQ(value.size(), test_value.size()); + ASSERT_TRUE(value == test_value); +} + +TEST_F(KVTest, LoopPutTest) +{ + string test_value(1024*1024, '6'); + + for (int i = 0; i < 10; ++i) + { + ostringstream key; + key << "test" << i; + ASSERT_TRUE(_kv_client.Put(key.str(), test_value)); + string value; + ASSERT_TRUE(_kv_client.Get(key.str(), &value)); + ASSERT_TRUE(value == test_value); + } +} + +TEST_F(KVTest, EmptyTest) +{ + string value; + ASSERT_FALSE(_kv_client.Get("test", &value)); +} + +int +main( + int argc, + char **argv + ) +{ + ::testing::InitGoogleTest(&argc, argv); + return RUN_ALL_TESTS(); +}