--- a/logsui/logsengine/logssymbianos/tsrc/ut_logssymbianos/src/ut_logsdbconnector.cpp Wed Aug 18 09:49:12 2010 +0300
+++ b/logsui/logsengine/logssymbianos/tsrc/ut_logssymbianos/src/ut_logsdbconnector.cpp Thu Sep 02 20:27:05 2010 +0300
@@ -26,6 +26,13 @@
Q_DECLARE_METATYPE(QList<int>)
+#define LOGS_TEST_CREATE_EVENT_WITHOUT_IDX(eventName, id, eventState ) \
+LogsEvent* eventName = new LogsEvent; \
+eventName->setLogId(id);\
+eventName->setIsInView(true); \
+eventName->mEventState = eventState; \
+mDbConnector->mEvents.insert(id, eventName)
+
#define LOGS_TEST_CREATE_EVENT(eventName, index, eventState ) \
LogsEvent* eventName = new LogsEvent; \
eventName->setIndex(index); \
@@ -34,6 +41,20 @@
eventName->mEventState = eventState; \
mDbConnector->mEvents.insert(index, eventName)
+#define ADD_EVENT_WITH_ID( arr, id ) \
+{\
+LogsEvent* ev = new LogsEvent;\
+ev->setLogId(id);\
+arr.append(ev);\
+}
+
+#define ADD_EVENT_WITH_ID_2( arr, id ) \
+{\
+LogsEvent ev;\
+ev.setLogId(id);\
+arr.append(ev);\
+}
+
void UT_LogsDbConnector::initTestCase()
{
@@ -71,13 +92,25 @@
QVERIFY( LogsCommonData::getInstance().maxReadSize() == logsReadSizeUndefined );
// Resource control enabled
+ CentralRepositoryStubHelper::setCurrentVal(logsDefaultMatchLength + 2);
LogsDbConnector* connector = new LogsDbConnector(mEvents, false, true);
QVERIFY( connector->init() == 0 );
QVERIFY( connector->mReader );
QVERIFY( connector->mLogsRemove );
QVERIFY( connector->mCompressionEnabled );
QVERIFY( LogsCommonData::getInstance().maxReadSize() == logsReadSizeCompressEnabled );
+ QCOMPARE( LogsCommonData::getInstance().telNumMatchLen(), logsDefaultMatchLength + 2 );
delete connector;
+
+ // Match len not found, default is used
+ CentralRepositoryStubHelper::setCurrentVal(logsDefaultMatchLength + 2);
+ CentralRepositoryStubHelper::setFailCode( -1 );
+ connector = new LogsDbConnector(mEvents);
+ QVERIFY( connector->init() == 0 );
+ QVERIFY( connector->mReader );
+ QVERIFY( connector->mLogsRemove );
+ QCOMPARE( LogsCommonData::getInstance().telNumMatchLen(), logsDefaultMatchLength );
+
}
void UT_LogsDbConnector::testClearList()
@@ -93,19 +126,29 @@
void UT_LogsDbConnector::testClearEvents()
{
QVERIFY( !mDbConnector->mLogsRemove );
- QList<int> events;
- events.append(1);
+ QList<LogsEvent*> events;
+ ADD_EVENT_WITH_ID(events, 1);
QVERIFY( !mDbConnector->clearEvents(events) ); // sync
mDbConnector->init();
QVERIFY( mDbConnector->mLogsRemove );
mDbConnector->clearEvents(events);
- QVERIFY( !mDbConnector->clearEvents(events) ); // sync
+ QVERIFY( mDbConnector->mReader->mLocked );
+ QVERIFY( !mDbConnector->clearEvents(events) ); // Already clearing
+ QVERIFY( mDbConnector->mReader->mLocked );
+ qDeleteAll(events);
+
+ // Remove completed or removeError causes read lock release
+ mDbConnector->removeCompleted();
+ QVERIFY( !mDbConnector->mReader->mLocked );
+ mDbConnector->mReader->mLocked = true;
+ mDbConnector->logsRemoveErrorOccured(-1);
+ QVERIFY( !mDbConnector->mReader->mLocked );
}
void UT_LogsDbConnector::testMarkEventsSeen()
{
- QList<int> events;
+ QList<LogsEvent*> events;
QSignalSpy spy( mDbConnector, SIGNAL(markingCompleted(int)) );
// Not ready
@@ -125,15 +168,15 @@
event2->setDirection(LogsEvent::DirMissed);
LOGS_TEST_CREATE_EVENT(event3, 2, LogsEvent::EventAdded );
event3->setDirection(LogsEvent::DirMissed);
- events.append(0);
- events.append(1);
+ ADD_EVENT_WITH_ID(events, 0);
+ ADD_EVENT_WITH_ID(events, 1);
QVERIFY( mDbConnector->markEventsSeen(events) );
QVERIFY( mDbConnector->mEventsSeen.count() == 2 );
QVERIFY( mDbConnector->mReader->mCurrentEventId == 0 ); // Started modifying
// Trying to clear missed again, id is appended to mark list, old modifying process in ongoing
// and is not interrupted
- events.append(2);
+ ADD_EVENT_WITH_ID(events, 2);
QVERIFY( !mDbConnector->markEventsSeen(events) );
QVERIFY( mDbConnector->mEventsSeen.count() == 3 );
QVERIFY( mDbConnector->mReader->mCurrentEventId == 0 ); // Modifying still previous
@@ -154,11 +197,27 @@
// Clearing all, ids are not appended as those are already in modification list
mDbConnector->mEventsSeen.clear();
- mDbConnector->mEventsSeen.append(0);
- mDbConnector->mEventsSeen.append(1);
- mDbConnector->mEventsSeen.append(2);
+ ADD_EVENT_WITH_ID_2(mDbConnector->mEventsSeen, 0);
+ ADD_EVENT_WITH_ID_2(mDbConnector->mEventsSeen, 1);
+ ADD_EVENT_WITH_ID_2(mDbConnector->mEventsSeen, 2);
QVERIFY( !mDbConnector->markEventsSeen(events) );
QVERIFY( mDbConnector->mEventsSeen.count() == 3 );
+
+ // Marked events contains merged duplicates which will be handled same way
+ // as any other event
+ mDbConnector->mEventsSeen.clear();
+ qDeleteAll(events);
+ events.clear();
+ ADD_EVENT_WITH_ID(events, 8);
+ ADD_EVENT_WITH_ID(events, 9);
+ ADD_EVENT_WITH_ID_2( events.at(0)->mergedDuplicates(), 88 );
+ ADD_EVENT_WITH_ID_2( events.at(0)->mergedDuplicates(), 9 ); // already exists in main event list
+ QVERIFY( !mDbConnector->markEventsSeen(events) );
+ QVERIFY( mDbConnector->mEventsSeen.count() == 3 );
+ QVERIFY( mDbConnector->mEventsSeen.at(0).logId() == 8 );
+ QVERIFY( mDbConnector->mEventsSeen.at(1).logId() == 88 );
+ QVERIFY( mDbConnector->mEventsSeen.at(2).logId() == 9 );
+ qDeleteAll(events);
}
void UT_LogsDbConnector::testReadDuplicates()
@@ -211,15 +270,17 @@
QSignalSpy spyReset(mDbConnector, SIGNAL(dataReset()));
// No events, no signal
- mDbConnector->readCompleted(0);
+ mDbConnector->readCompleted();
QVERIFY( spyAdded.count() == 0 );
QVERIFY( spyRemoved.count() == 0 );
QVERIFY( spyUpdated.count() == 0 );
QVERIFY( spyReset.count() == 0 );
- // Events exists, their indexes are signaled
- LOGS_TEST_CREATE_EVENT(event, 0, LogsEvent::EventAdded );
- mDbConnector->readCompleted(1);
+ // Events exists, their indexes are signaled, indexes are assigned at this phase
+ LOGS_TEST_CREATE_EVENT_WITHOUT_IDX(event, 0, LogsEvent::EventAdded );
+ QCOMPARE( event->index(), -1 );
+ mDbConnector->readCompleted();
+ QCOMPARE( event->index(), 0 );
QVERIFY( spyAdded.count() == 1 );
QList<int> addedIndexes = qvariant_cast< QList<int> >(spyAdded.at(0).at(0));
QVERIFY( addedIndexes.count() == 1 );
@@ -232,10 +293,12 @@
// 2 more events added, their indexes are signaled
event->mEventState = LogsEvent::EventNotUpdated;
- event->setIndex(2);
- LOGS_TEST_CREATE_EVENT(event2, 0, LogsEvent::EventAdded );
- LOGS_TEST_CREATE_EVENT(event3, 1, LogsEvent::EventAdded );
- mDbConnector->readCompleted(3);
+ LOGS_TEST_CREATE_EVENT_WITHOUT_IDX(event2, 0, LogsEvent::EventAdded );
+ LOGS_TEST_CREATE_EVENT_WITHOUT_IDX(event3, 1, LogsEvent::EventAdded );
+ mDbConnector->readCompleted();
+ QCOMPARE( event2->index(), 0 );
+ QCOMPARE( event3->index(), 1 );
+ QCOMPARE( event->index(), 2 );
QVERIFY( spyAdded.count() == 2 );
QList<int> addedIndexes2 = qvariant_cast< QList<int> >(spyAdded.at(1).at(0));
QVERIFY( addedIndexes2.count() == 2 );
@@ -251,7 +314,7 @@
event->mEventState = LogsEvent::EventNotUpdated;
event2->mEventState = LogsEvent::EventNotUpdated;
event3->mEventState = LogsEvent::EventUpdated;
- mDbConnector->readCompleted(3);
+ mDbConnector->readCompleted();
QVERIFY( spyAdded.count() == 2 );
QVERIFY( spyRemoved.count() == 0 );
QVERIFY( spyUpdated.count() == 1 );
@@ -265,7 +328,7 @@
// One of the events removed (index 2)
event->setIsInView(false);
event3->mEventState = LogsEvent::EventNotUpdated;
- mDbConnector->readCompleted(2);
+ mDbConnector->readCompleted();
QVERIFY( spyAdded.count() == 2 );
QVERIFY( spyRemoved.count() == 1 );
QVERIFY( spyUpdated.count() == 1 );
@@ -279,7 +342,7 @@
// Event added and removed, reset should be signaled
mDbConnector->mEvents.at(0)->mEventState = LogsEvent::EventAdded;
mDbConnector->mEvents.at(1)->mIsInView = false;
- mDbConnector->readCompleted(1);
+ mDbConnector->readCompleted();
QVERIFY( spyAdded.count() == 2 );
QVERIFY( spyRemoved.count() == 1 );
QVERIFY( spyUpdated.count() == 1 );
@@ -292,7 +355,7 @@
QVERIFY( mDbConnector->start() == 0 );
QVERIFY( mDbConnector->mReader->mLogViewRecent != 0 );
mDbConnector->mCompressionEnabled = true;
- mDbConnector->readCompleted(0);
+ mDbConnector->readCompleted();
QVERIFY( mDbConnector->mReader->mLogViewRecent != 0 );
}
@@ -300,8 +363,8 @@
{
// If pending event modifying, completion is signaled
QSignalSpy spy( mDbConnector, SIGNAL(markingCompleted(int)) );
- mDbConnector->mEventsSeen.append(0);
- mDbConnector->mEventsSeen.append(1);
+ ADD_EVENT_WITH_ID_2(mDbConnector->mEventsSeen, 0);
+ ADD_EVENT_WITH_ID_2(mDbConnector->mEventsSeen, 1);
mDbConnector->errorOccurred(-3);
QVERIFY( spy.count() == 1 ); // Completion was signaled with err -3
QVERIFY( spy.takeFirst().at(0).toInt() == -3 );
@@ -319,7 +382,7 @@
QVERIFY( mDbConnector->mReader );
LOGS_TEST_CREATE_EVENT(event, 0, LogsEvent::EventUpdated );
QVERIFY( mDbConnector->updateDetails(false) == 0 );
- QVERIFY( spyUpdated.count() == 1 );
+ QVERIFY( spyUpdated.count() == 0 ); // Will happen asynchronously
}
void UT_LogsDbConnector::testClearMissedCallsCounter()