087c56315e
Summary: Test engine update. https://docs.google.com/document/d/1rnFsCFock-K3ZbuvMiCYWhGS_m7-DZV37JtxWRClD_8/edit Reviewers: mislav.bradac, dtomicevic, buda Reviewed By: buda Subscribers: pullbot Differential Revision: https://phabricator.memgraph.io/D167
46 lines
1.0 KiB
C++
46 lines
1.0 KiB
C++
#include <thread>
|
|
#include <vector>
|
|
|
|
#include "transactions/engine.hpp"
|
|
#include "utils/assert.hpp"
|
|
|
|
int main() {
|
|
// (try to) test correctness of the transaction life cycle
|
|
constexpr int THREADS = 16;
|
|
constexpr int TRANSACTIONS = 10;
|
|
|
|
tx::Engine engine;
|
|
std::vector<uint64_t> sums;
|
|
|
|
sums.resize(THREADS);
|
|
|
|
auto f = [&engine, &sums](int idx, int n) {
|
|
uint64_t sum = 0;
|
|
|
|
for (int i = 0; i < n; ++i) {
|
|
auto t = engine.begin();
|
|
sum += t->id;
|
|
engine.commit(*t);
|
|
}
|
|
|
|
sums[idx] = sum;
|
|
};
|
|
|
|
std::vector<std::thread> threads;
|
|
|
|
for (int i = 0; i < THREADS; ++i)
|
|
threads.push_back(std::thread(f, i, TRANSACTIONS));
|
|
|
|
for (auto &thread : threads) thread.join();
|
|
|
|
uint64_t sum_computed = 0;
|
|
|
|
for (int i = 0; i < THREADS; ++i) sum_computed += sums[i];
|
|
|
|
uint64_t sum_actual = 0;
|
|
for (uint64_t i = 1; i <= THREADS * TRANSACTIONS; ++i) sum_actual += i;
|
|
|
|
std::cout << sum_computed << " " << sum_actual << std::endl;
|
|
permanent_assert(sum_computed == sum_actual, "sums have to be the same");
|
|
}
|