Skip to content

Commit

Permalink
python kvserver cleanup
Browse files Browse the repository at this point in the history
  • Loading branch information
glenn-chen committed Feb 27, 2023
1 parent 2aa300b commit 8bc2224
Show file tree
Hide file tree
Showing 5 changed files with 48 additions and 70 deletions.
4 changes: 4 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -85,6 +85,10 @@ If you want to enable sdk verification, add a flag to the command

./example/start_kv_server.sh --define enable_sdk=True

And in example/kv_config.config

require_txn_validation:true,

## FAQ

If installing bazel fails on a ubuntu server, follow these steps:
Expand Down
23 changes: 0 additions & 23 deletions kv_server/kv_server_executor_test.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,6 @@

#include <gmock/gmock.h>
#include <gtest/gtest.h>
#include <pybind11/embed.h>

#include "config/resdb_config_utils.h"
#include "proto/kv_server.pb.h"
Expand Down Expand Up @@ -113,23 +112,6 @@ class KVServerExecutorTest : public Test {
return kv_response.value();
}

// Test pybind11 is working and parse simple JSON object
bool PythonValidate(const std::string& transaction) {
using namespace pybind11::literals;
pybind11::scoped_interpreter guard{};

auto locals = pybind11::dict("transaction"_a = transaction);
pybind11::exec(R"(
import json
txn_dict = json.loads(transaction)
ret = txn_dict['is_valid']
)",
pybind11::globals(), locals);

return locals["ret"].cast<bool>();
}

private:
KVServerExecutor impl_;
};
Expand Down Expand Up @@ -257,11 +239,6 @@ TEST_F(KVServerExecutorTestRocksDB, GetValue) {
EXPECT_EQ(Get("test_key"), "");
}

TEST_F(KVServerExecutorTest, PythonValidate) {
EXPECT_EQ(PythonValidate("{\"is_valid\": true}"), true);
EXPECT_EQ(PythonValidate("{\"is_valid\": false}"), false);
}

} // namespace

} // namespace resdb
44 changes: 43 additions & 1 deletion kv_server/py_verificator.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,45 @@
*
*/

/*
* Copyright (c) 2019 The Pybind Development Team. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice, this
* list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright notice,
* this list of conditions and the following disclaimer in the documentation
* and/or other materials provided with the distribution.
*
* 3. Neither the name of the copyright holder nor the names of its contributors
* may be used to endorse or promote products derived from this software
* without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
* You are under no obligation whatsoever to provide any bug fixes, patches, or
* upgrades to the features, functionality or performance of the source code
* ("Enhancements") to anyone; however, if you choose to make your Enhancements
* available either publicly, or directly to the author of this software, without
* imposing a separate written license agreement for such Enhancements, then you
* hereby grant the following license: a non-exclusive, royalty-free perpetual
* license to install, use, modify, prepare derivative works, incorporate into
* other computer software, distribute, and sublicense such enhancements or
* derivative works thereof, in binary and source code form.
*/

#include "kv_server/py_verificator.h"

#include <glog/logging.h>
Expand All @@ -40,9 +79,12 @@ PYVerificator::PYVerificator() {
)");
}

PYVerificator::~PYVerificator() {
py::finalize_interpreter();
}

// Validate transactions committed by the Python SDK
bool PYVerificator::Validate(const std::string& transaction) {
LOG(ERROR) << "validate";
auto locals = py::dict("transaction"_a = transaction);

py::exec(R"(
Expand Down
2 changes: 1 addition & 1 deletion kv_server/py_verificator.h
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ namespace resdb {
class PYVerificator {
public:
PYVerificator();
virtual ~PYVerificator() = default;
~PYVerificator();

bool Validate(const std::string& transaction);
};
Expand Down
45 changes: 0 additions & 45 deletions kv_server/py_verificator_test.cpp

This file was deleted.

0 comments on commit 8bc2224

Please sign in to comment.