You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@quickstep.apache.org by zu...@apache.org on 2016/06/08 19:19:06 UTC
[14/44] incubator-quickstep git commit: Transaction Part 4:
LockManager, CycleDetector and DeadLockDetector. (#187)
http://git-wip-us.apache.org/repos/asf/incubator-quickstep/blob/fc9c3bf1/transaction/tests/StronglyConnectedComponents_unittest.cpp
----------------------------------------------------------------------
diff --git a/transaction/tests/StronglyConnectedComponents_unittest.cpp b/transaction/tests/StronglyConnectedComponents_unittest.cpp
index 79d6881..35ef842 100644
--- a/transaction/tests/StronglyConnectedComponents_unittest.cpp
+++ b/transaction/tests/StronglyConnectedComponents_unittest.cpp
@@ -35,21 +35,20 @@ namespace transaction {
class GraphConfiguration {
public:
GraphConfiguration(DirectedGraph *graph,
- std::size_t no_transaction,
+ const std::size_t num_transactions,
const std::vector<std::pair<transaction_id,
transaction_id>> &mapping)
: graph_(graph) {
- for (std::size_t index = 0; index < no_transaction; ++index) {
- std::unique_ptr<transaction_id> tid =
- std::make_unique<transaction_id>(transaction_id(index));
- transaction_list_.push_back(*tid);
- DirectedGraph::node_id nid = graph->addNodeUnchecked(tid.release());
+ for (std::size_t index = 0; index < num_transactions; ++index) {
+ const transaction_id transaction = static_cast<transaction_id>(index);
+ transaction_list_.push_back(transaction);
+ const DirectedGraph::node_id nid = graph->addNodeUnchecked(transaction);
node_id_list_.push_back(nid);
}
for (const std::pair<transaction_id, transaction_id> &edge : mapping) {
- transaction_id pending = edge.first;
- transaction_id owner = edge.second;
+ const transaction_id pending = edge.first;
+ const transaction_id owner = edge.second;
graph_->addEdgeUnchecked(pending, owner);
}
}
http://git-wip-us.apache.org/repos/asf/incubator-quickstep/blob/fc9c3bf1/transaction/tests/TransactionTable_unittest.cpp
----------------------------------------------------------------------
diff --git a/transaction/tests/TransactionTable_unittest.cpp b/transaction/tests/TransactionTable_unittest.cpp
index f5b5bc9..cd47a2b 100644
--- a/transaction/tests/TransactionTable_unittest.cpp
+++ b/transaction/tests/TransactionTable_unittest.cpp
@@ -41,91 +41,101 @@ class TransactionTableTest : public ::testing::Test {
};
TEST_F(TransactionTableTest, NormalOperations) {
- EXPECT_EQ(transaction_table_.putOwnEntry(tid_1_,
+ const AccessMode is_lock_mode = AccessMode::IsLockMode();
+ const AccessMode x_lock_mode = AccessMode::XLockMode();
+
+ EXPECT_EQ(TransactionTableResult::kPlacedInOwned,
+ transaction_table_.putOwnEntry(tid_1_,
ResourceId(3),
- AccessMode(AccessModeType::kIsLock)),
- TransactionTableResult::kPlacedInOwned);
+ is_lock_mode));
+
- EXPECT_EQ(transaction_table_.putPendingEntry(tid_1_,
+ EXPECT_EQ(TransactionTableResult::kPlacedInPending,
+ transaction_table_.putPendingEntry(tid_1_,
ResourceId(5),
- AccessMode(AccessModeType::kXLock)),
- TransactionTableResult::kPlacedInPending);
+ x_lock_mode));
}
TEST_F(TransactionTableTest, DeleteEntryOperations) {
- EXPECT_EQ(transaction_table_.deleteOwnEntry(tid_2_,
+ const AccessMode s_lock_mode = AccessMode::SLockMode();
+ const AccessMode x_lock_mode = AccessMode::XLockMode();
+
+ EXPECT_EQ(TransactionTableResult::kDelError,
+ transaction_table_.deleteOwnEntry(tid_2_,
ResourceId(5),
- AccessMode(AccessModeType::kSLock)),
- TransactionTableResult::kDelError);
+ s_lock_mode));
- EXPECT_EQ(transaction_table_.putOwnEntry(tid_2_,
+ EXPECT_EQ(TransactionTableResult::kPlacedInOwned,
+ transaction_table_.putOwnEntry(tid_2_,
ResourceId(5),
- AccessMode(AccessModeType::kSLock)),
- TransactionTableResult::kPlacedInOwned);
+ s_lock_mode));
// Tring to delete a lock with different acces mode on same resource id
// will result in an error.
- EXPECT_EQ(transaction_table_.deleteOwnEntry(tid_2_,
+ EXPECT_EQ(TransactionTableResult::kDelError,
+ transaction_table_.deleteOwnEntry(tid_2_,
ResourceId(5),
- AccessMode(AccessModeType::kXLock)),
- TransactionTableResult::kDelError);
+ x_lock_mode));
// Transaction 3 does not have a lock on this resource id.
- EXPECT_EQ(transaction_table_.deleteOwnEntry(tid_3_,
+ EXPECT_EQ(TransactionTableResult::kDelError,
+ transaction_table_.deleteOwnEntry(tid_3_,
ResourceId(5),
- AccessMode(AccessModeType::kSLock)),
- TransactionTableResult::kDelError);
+ s_lock_mode));
// This will result in success since transaction 2 have acquired the lock on
// this resource with the corresponding mode.
- EXPECT_EQ(transaction_table_.deleteOwnEntry(tid_2_,
+ EXPECT_EQ(TransactionTableResult::kDelFromOwned,
+ transaction_table_.deleteOwnEntry(tid_2_,
ResourceId(5),
- AccessMode(AccessModeType::kSLock)),
- TransactionTableResult::kDelFromOwned);
+ s_lock_mode));
// Repeat the previous sequence, with pending list.
- EXPECT_EQ(transaction_table_.deletePendingEntry(tid_2_,
+ EXPECT_EQ(TransactionTableResult::kDelError,
+ transaction_table_.deletePendingEntry(tid_2_,
ResourceId(5),
- AccessMode(AccessModeType::kSLock)),
- TransactionTableResult::kDelError);
+ s_lock_mode));
- EXPECT_EQ(transaction_table_.putPendingEntry(tid_2_,
+ EXPECT_EQ(TransactionTableResult::kPlacedInPending,
+ transaction_table_.putPendingEntry(tid_2_,
ResourceId(5),
- AccessMode(AccessModeType::kSLock)),
- TransactionTableResult::kPlacedInPending);
+ s_lock_mode));
- EXPECT_EQ(transaction_table_.deletePendingEntry(tid_2_,
+
+ EXPECT_EQ(TransactionTableResult::kDelError,
+ transaction_table_.deletePendingEntry(tid_2_,
ResourceId(5),
- AccessMode(AccessModeType::kXLock)),
- TransactionTableResult::kDelError);
+ x_lock_mode));
- EXPECT_EQ(transaction_table_.deletePendingEntry(tid_3_,
+ EXPECT_EQ(TransactionTableResult::kDelError,
+ transaction_table_.deletePendingEntry(tid_3_,
ResourceId(5),
- AccessMode(AccessModeType::kSLock)),
- TransactionTableResult::kDelError);
+ s_lock_mode));
- EXPECT_EQ(transaction_table_.deletePendingEntry(tid_2_,
+ EXPECT_EQ(TransactionTableResult::kDelFromPending,
+ transaction_table_.deletePendingEntry(tid_2_,
ResourceId(5),
- AccessMode(AccessModeType::kSLock)),
- TransactionTableResult::kDelFromPending);
+ s_lock_mode));
}
TEST_F(TransactionTableTest, TransactionEntries) {
- EXPECT_EQ(transaction_table_.deleteTransaction(tid_1_),
- TransactionTableResult::kTransactionDeleteError);
+ const AccessMode s_lock_mode = AccessMode::SLockMode();
+
+ EXPECT_EQ(TransactionTableResult::kTransactionDeleteError,
+ transaction_table_.deleteTransaction(tid_1_));
- EXPECT_EQ(transaction_table_.putOwnEntry(tid_1_,
+ EXPECT_EQ(TransactionTableResult::kPlacedInOwned,
+ transaction_table_.putOwnEntry(tid_1_,
ResourceId(4),
- AccessMode(AccessModeType::kSLock)),
- TransactionTableResult::kPlacedInOwned);
+ s_lock_mode));
- EXPECT_EQ(transaction_table_.deleteTransaction(tid_1_),
- TransactionTableResult::kTransactionDeleteOk);
+ EXPECT_EQ(TransactionTableResult::kTransactionDeleteOk,
+ transaction_table_.deleteTransaction(tid_1_));
- EXPECT_EQ(transaction_table_.deleteOwnEntry(tid_1_,
+ EXPECT_EQ(TransactionTableResult::kDelError,
+ transaction_table_.deleteOwnEntry(tid_1_,
ResourceId(4),
- AccessMode(AccessModeType::kSLock)),
- TransactionTableResult::kDelError);
+ s_lock_mode));
}
} // namespace transaction