You've already forked mariadb-columnstore-engine
mirror of
https://github.com/mariadb-corporation/mariadb-columnstore-engine.git
synced 2025-08-07 03:22:57 +03:00
MCOL-5784 Add test to MTR test suite.
This commit is contained in:
committed by
Leonid Fedorov
parent
c22409760f
commit
90023272dd
2
debian/mariadb-plugin-columnstore.install
vendored
2
debian/mariadb-plugin-columnstore.install
vendored
@@ -52,6 +52,7 @@ usr/bin/smps
|
|||||||
usr/bin/smput
|
usr/bin/smput
|
||||||
usr/bin/smrm
|
usr/bin/smrm
|
||||||
usr/bin/testS3Connection
|
usr/bin/testS3Connection
|
||||||
|
usr/bin/test_fdb_api
|
||||||
usr/bin/viewtablelock
|
usr/bin/viewtablelock
|
||||||
usr/bin/workernode
|
usr/bin/workernode
|
||||||
usr/lib/*/libbatchloader.so
|
usr/lib/*/libbatchloader.so
|
||||||
@@ -89,6 +90,7 @@ usr/lib/*/libwriteengine.so
|
|||||||
usr/lib/*/libwriteengineclient.so
|
usr/lib/*/libwriteengineclient.so
|
||||||
usr/lib/*/libwriteengineredistribute.so
|
usr/lib/*/libwriteengineredistribute.so
|
||||||
usr/lib/*/libdatatypes.so
|
usr/lib/*/libdatatypes.so
|
||||||
|
usr/lib/*/libfdbcs.so
|
||||||
usr/lib/mysql/plugin/ha_columnstore.so
|
usr/lib/mysql/plugin/ha_columnstore.so
|
||||||
usr/lib/mysql/plugin/libregr_mysql.so
|
usr/lib/mysql/plugin/libregr_mysql.so
|
||||||
usr/lib/mysql/plugin/libudf_mysql.so
|
usr/lib/mysql/plugin/libudf_mysql.so
|
||||||
|
1
mysql-test/columnstore/basic/r/fdb_api.result
Normal file
1
mysql-test/columnstore/basic/r/fdb_api.result
Normal file
@@ -0,0 +1 @@
|
|||||||
|
ok
|
7
mysql-test/columnstore/basic/t/fdb_api.test
Normal file
7
mysql-test/columnstore/basic/t/fdb_api.test
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
# Test fdb API
|
||||||
|
-- source ../include/have_columnstore.inc
|
||||||
|
#
|
||||||
|
|
||||||
|
exec test_fdb_api;
|
||||||
|
# Have to print any output for MTR tests.
|
||||||
|
exec echo "ok";
|
@@ -180,3 +180,8 @@ install(TARGETS fdbcs
|
|||||||
LIBRARY DESTINATION ${ENGINE_LIBDIR}
|
LIBRARY DESTINATION ${ENGINE_LIBDIR}
|
||||||
COMPONENT columnstore-engine
|
COMPONENT columnstore-engine
|
||||||
)
|
)
|
||||||
|
|
||||||
|
install(TARGETS test_fdb_api
|
||||||
|
RUNTIME DESTINATION ${ENGINE_BINDIR}
|
||||||
|
COMPONENT columnstore-engine
|
||||||
|
)
|
||||||
|
@@ -79,9 +79,11 @@ class FDBDataBase
|
|||||||
~FDBDataBase();
|
~FDBDataBase();
|
||||||
|
|
||||||
std::unique_ptr<Transaction> createTransaction() const;
|
std::unique_ptr<Transaction> createTransaction() const;
|
||||||
|
bool isDataBaseReady() const;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
FDBDatabase* database_;
|
FDBDatabase* database_;
|
||||||
|
const uint32_t secondsToWait_ = 3;
|
||||||
};
|
};
|
||||||
|
|
||||||
class DataBaseCreator
|
class DataBaseCreator
|
||||||
|
@@ -15,10 +15,10 @@
|
|||||||
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
|
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
|
||||||
MA 02110-1301, USA. */
|
MA 02110-1301, USA. */
|
||||||
|
|
||||||
|
|
||||||
#include <string>
|
#include <string>
|
||||||
#include <iostream>
|
#include <iostream>
|
||||||
#include <thread>
|
#include <thread>
|
||||||
|
#include <chrono>
|
||||||
#include "../include/fdbcs.hpp"
|
#include "../include/fdbcs.hpp"
|
||||||
|
|
||||||
namespace FDBCS
|
namespace FDBCS
|
||||||
@@ -161,6 +161,30 @@ std::unique_ptr<Transaction> FDBDataBase::createTransaction() const
|
|||||||
return std::make_unique<Transaction>(tnx);
|
return std::make_unique<Transaction>(tnx);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool FDBDataBase::isDataBaseReady() const
|
||||||
|
{
|
||||||
|
FDBTransaction* tnx;
|
||||||
|
auto err = fdb_database_create_transaction(database_, &tnx);
|
||||||
|
if (err)
|
||||||
|
{
|
||||||
|
std::cerr << "fdb_database_create_transaction error, code: " << (int)err << std::endl;
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
ByteArray emptyKey{""};
|
||||||
|
FDBFuture* future = fdb_transaction_get(tnx, (uint8_t*)emptyKey.c_str(), emptyKey.length(), 0);
|
||||||
|
|
||||||
|
uint32_t count = 0;
|
||||||
|
while (!fdb_future_is_ready(future) && count < secondsToWait_)
|
||||||
|
{
|
||||||
|
std::this_thread::sleep_for(std::chrono::seconds(1));
|
||||||
|
++count;
|
||||||
|
}
|
||||||
|
bool ready = fdb_future_is_ready(future);
|
||||||
|
fdb_future_destroy(future);
|
||||||
|
fdb_transaction_destroy(tnx);
|
||||||
|
return ready;
|
||||||
|
}
|
||||||
|
|
||||||
std::unique_ptr<FDBDataBase> DataBaseCreator::createDataBase(const std::string clusterFilePath)
|
std::unique_ptr<FDBDataBase> DataBaseCreator::createDataBase(const std::string clusterFilePath)
|
||||||
{
|
{
|
||||||
FDBDatabase* database;
|
FDBDatabase* database;
|
||||||
|
@@ -17,46 +17,55 @@
|
|||||||
|
|
||||||
#include "../fdb_wrapper_cpp/include/fdbcs.hpp"
|
#include "../fdb_wrapper_cpp/include/fdbcs.hpp"
|
||||||
|
|
||||||
// FIXME: Use GOOGLE test.
|
|
||||||
#include <cassert>
|
|
||||||
using namespace std;
|
using namespace std;
|
||||||
using namespace FDBCS;
|
using namespace FDBCS;
|
||||||
|
|
||||||
int main() {
|
template <typename T>
|
||||||
|
void assert_internal(const T& value)
|
||||||
|
{
|
||||||
|
if (!value)
|
||||||
|
abort();
|
||||||
|
}
|
||||||
|
|
||||||
|
int main()
|
||||||
|
{
|
||||||
std::string path = "/etc/foundationdb/fdb.cluster";
|
std::string path = "/etc/foundationdb/fdb.cluster";
|
||||||
setAPIVersion();
|
assert_internal(setAPIVersion());
|
||||||
FDBNetwork netWork;
|
FDBNetwork netWork;
|
||||||
// Create and run network.
|
// Create and run network.
|
||||||
assert(netWork.setUpAndRunNetwork() == true);
|
assert_internal(netWork.setUpAndRunNetwork());
|
||||||
|
|
||||||
// Create database.
|
// Create database.
|
||||||
std::unique_ptr<FDBDataBase> db = DataBaseCreator::createDataBase(path);
|
std::unique_ptr<FDBDataBase> db = DataBaseCreator::createDataBase(path);
|
||||||
|
assert_internal(db);
|
||||||
|
assert_internal(db->isDataBaseReady());
|
||||||
|
|
||||||
std::string key1 = "fajsdlkfjaskljfewiower39423fds";
|
std::string key1 = "fajsdlkfjaskljfewiower39423fds";
|
||||||
std::string value1 = "gfdgjksdflfdsjkslkdrewuior39243";
|
std::string value1 = "gfdgjksdflfdsjkslkdrewuior39243";
|
||||||
// Set a key/value.
|
// Set a key/value.
|
||||||
{
|
{
|
||||||
auto tnx = db->createTransaction();
|
auto tnx = db->createTransaction();
|
||||||
tnx->set(key1, value1);
|
tnx->set(key1, value1);
|
||||||
assert(tnx->commit() == true);
|
assert_internal(tnx->commit());
|
||||||
}
|
}
|
||||||
// Get a value by a key.
|
// Get a value by a key.
|
||||||
{
|
{
|
||||||
auto tnx = db->createTransaction();
|
auto tnx = db->createTransaction();
|
||||||
auto p = tnx->get(key1);
|
auto p = tnx->get(key1);
|
||||||
assert(p.first == true);
|
assert_internal(p.first);
|
||||||
assert(p.second == value1);
|
assert_internal(p.second == value1);
|
||||||
}
|
}
|
||||||
// Remove a key.
|
// Remove a key.
|
||||||
{
|
{
|
||||||
auto tnx = db->createTransaction();
|
auto tnx = db->createTransaction();
|
||||||
tnx->remove(key1);
|
tnx->remove(key1);
|
||||||
assert(tnx->commit() == true);
|
assert_internal(tnx->commit());
|
||||||
}
|
}
|
||||||
// Check that key is not presetnt anymore.
|
// Check that key is not presetnt anymore.
|
||||||
{
|
{
|
||||||
auto tnx = db->createTransaction();
|
auto tnx = db->createTransaction();
|
||||||
auto p = tnx->get(key1);
|
auto p = tnx->get(key1);
|
||||||
assert(p.first == false);
|
assert_internal(!p.first);
|
||||||
}
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
Reference in New Issue
Block a user