|
|
@ -36,7 +36,7 @@ TEST(TestNormalRecover, Recover) { |
|
|
|
findKeysByAgeIndex(db, true); |
|
|
|
} |
|
|
|
|
|
|
|
TEST(TestParalPutRecover, Recover) { |
|
|
|
TEST(TestParalRecover, Recover) { |
|
|
|
//第一次运行
|
|
|
|
// fielddb::DestroyDB("testdb3.2",Options());
|
|
|
|
// FieldDB *db = new FieldDB();
|
|
|
@ -47,24 +47,28 @@ TEST(TestParalPutRecover, Recover) { |
|
|
|
// }
|
|
|
|
// db->CreateIndexOnField("address");
|
|
|
|
// db->CreateIndexOnField("age");
|
|
|
|
// shanghaiKeys.clear();
|
|
|
|
// age20Keys.clear();
|
|
|
|
// int thread_num_ = 2;
|
|
|
|
// int thread_num_ = 4;
|
|
|
|
// std::vector<std::thread> threads(thread_num_);
|
|
|
|
// threads[0] = std::thread([db](){
|
|
|
|
// InsertFieldData(db);
|
|
|
|
// });
|
|
|
|
// threads[1] = std::thread([db](){
|
|
|
|
// WriteFieldData(db);
|
|
|
|
// });
|
|
|
|
// threads[2] = std::thread([db](){
|
|
|
|
// DeleteFieldData(db);
|
|
|
|
// });
|
|
|
|
// threads[3] = std::thread([db](){
|
|
|
|
// InsertOneField(db);
|
|
|
|
// delete db;
|
|
|
|
// });
|
|
|
|
// for (auto& t : threads) {
|
|
|
|
// for (auto& t : threads) {
|
|
|
|
// if (t.joinable()) {
|
|
|
|
// t.join();
|
|
|
|
// }
|
|
|
|
// }
|
|
|
|
//线程1导致了线程0错误,测试会终止(模拟数据库崩溃)
|
|
|
|
//这会导致线程0在写入的各种奇怪的时间点崩溃
|
|
|
|
//线程3导致了其他线程错误,测试会终止(模拟数据库崩溃)
|
|
|
|
//这会导致各线程在各种奇怪的时间点崩溃
|
|
|
|
//第二次运行注释掉上面的代码,运行下面的代码测试恢复
|
|
|
|
|
|
|
|
|
|
|
|