forked from qt-creator/qt-creator
ClangRefactoring: Ensure that database is written to log after indexing
Change-Id: Ic2473d9fe8dc9b41a7da728c9e1b5202524c1a79 Reviewed-by: Tim Jenssen <tim.jenssen@qt.io>
This commit is contained in:
@@ -31,12 +31,13 @@
|
||||
#include "mocksqlitetransactionbackend.h"
|
||||
#include "mocksqlitewritestatement.h"
|
||||
|
||||
#include <sqlitedatabaseinterface.h>
|
||||
#include <sqlitetable.h>
|
||||
#include <sqlitetransaction.h>
|
||||
|
||||
#include <utils/smallstringview.h>
|
||||
|
||||
class MockSqliteDatabase : public MockSqliteTransactionBackend
|
||||
class MockSqliteDatabase : public MockSqliteTransactionBackend, public Sqlite::DatabaseInterface
|
||||
{
|
||||
public:
|
||||
using ReadStatement = NiceMock<MockSqliteReadStatement>;
|
||||
@@ -56,5 +57,7 @@ public:
|
||||
|
||||
MOCK_METHOD1(setIsInitialized,
|
||||
void (bool));
|
||||
|
||||
MOCK_METHOD0(walCheckpointFull, void());
|
||||
};
|
||||
|
||||
|
||||
@@ -267,7 +267,8 @@ protected:
|
||||
mockProjectPartsStorage,
|
||||
mockModifiedTimeChecker,
|
||||
testEnvironment};
|
||||
SymbolIndexerTaskQueue indexerQueue{indexerScheduler, progressCounter};
|
||||
NiceMock<MockSqliteDatabase> mockSqliteDatabase;
|
||||
SymbolIndexerTaskQueue indexerQueue{indexerScheduler, progressCounter, mockSqliteDatabase};
|
||||
Scheduler indexerScheduler{collectorManger,
|
||||
indexerQueue,
|
||||
progressCounter,
|
||||
|
||||
@@ -25,6 +25,7 @@
|
||||
|
||||
#include "googletest.h"
|
||||
|
||||
#include "mocksqlitedatabase.h"
|
||||
#include "mocktaskscheduler.h"
|
||||
|
||||
#include <symbolindexertaskqueue.h>
|
||||
@@ -54,7 +55,8 @@ protected:
|
||||
NiceMock<MockFunction<void(int, int)>> mockSetProgressCallback;
|
||||
ClangBackEnd::ProgressCounter progressCounter{mockSetProgressCallback.AsStdFunction()};
|
||||
NiceMock<MockTaskScheduler<Callable>> mockTaskScheduler;
|
||||
ClangBackEnd::SymbolIndexerTaskQueue queue{mockTaskScheduler, progressCounter};
|
||||
NiceMock<MockSqliteDatabase> mockSqliteDatabase;
|
||||
ClangBackEnd::SymbolIndexerTaskQueue queue{mockTaskScheduler, progressCounter, mockSqliteDatabase};
|
||||
};
|
||||
|
||||
TEST_F(SymbolIndexerTaskQueue, AddTasks)
|
||||
@@ -208,4 +210,35 @@ TEST_F(SymbolIndexerTaskQueue, ProcessTasksRemovesProcessedTasks)
|
||||
|
||||
ASSERT_THAT(queue.tasks(), SizeIs(1));
|
||||
}
|
||||
|
||||
TEST_F(SymbolIndexerTaskQueue,
|
||||
ProcessTasksWritesBackTheDatabaseLogIfTheQueueIsEmptyAndTheIndexerHasNothingToDo)
|
||||
{
|
||||
InSequence s;
|
||||
|
||||
EXPECT_CALL(mockTaskScheduler, slotUsage()).WillRepeatedly(Return(SlotUsage{2, 0}));
|
||||
EXPECT_CALL(mockSqliteDatabase, walCheckpointFull());
|
||||
|
||||
queue.processEntries();
|
||||
}
|
||||
|
||||
TEST_F(SymbolIndexerTaskQueue, ProcessTasksDoesNotWritesBackTheDatabaseLogIfTheIndexerHasSomethingToDo)
|
||||
{
|
||||
InSequence s;
|
||||
|
||||
EXPECT_CALL(mockTaskScheduler, slotUsage()).WillRepeatedly(Return(SlotUsage{1, 1}));
|
||||
EXPECT_CALL(mockSqliteDatabase, walCheckpointFull()).Times(0);
|
||||
|
||||
queue.processEntries();
|
||||
}
|
||||
|
||||
TEST_F(SymbolIndexerTaskQueue, HandleExeptionInWalCheckPoint)
|
||||
{
|
||||
InSequence s;
|
||||
|
||||
EXPECT_CALL(mockTaskScheduler, slotUsage()).WillRepeatedly(Return(SlotUsage{2, 0}));
|
||||
EXPECT_CALL(mockSqliteDatabase, walCheckpointFull()).WillOnce(Throw(Sqlite::DatabaseIsBusy{""}));
|
||||
|
||||
queue.processEntries();
|
||||
}
|
||||
} // namespace
|
||||
|
||||
Reference in New Issue
Block a user