MongodbObject * GameCore::CreateTestDataObject(const String &testTimeString, const String &runTime, TestData *testData) { MongodbObject *logObject = new MongodbObject(); if(logObject) { logObject->SetObjectName(testTimeString); logObject->AddString(String("Owner"), TEST_OWNER); logObject->AddString(String("RunTime"), runTime); logObject->AddInt32(String("DeviceFamily"), (int32)Core::Instance()->GetDeviceFamily()); logObject->AddInt64(String("TotalTime"), testData->totalTime); logObject->AddInt64(String("MinTime"), testData->minTime); logObject->AddInt64(String("MaxTime"), testData->maxTime); logObject->AddInt32(String("MaxTimeIndex"), testData->maxTimeIndex); logObject->AddInt64(String("StartTime"), testData->startTime); logObject->AddInt64(String("EndTime"), testData->endTime); logObject->AddInt32(String("RunCount"), testData->runCount); if(testData->runCount) { logObject->AddDouble(String("Average"), (double)testData->totalTime / (double)testData->runCount); } else { logObject->AddDouble(String("Average"), (double)0.0f); } logObject->Finish(); } return logObject; }
void GameCore::FlushTestResults() { if(!dbClient) return; MongodbObject *oldPlatformObject = dbClient->FindObjectByKey(PLATFORM_NAME); MongodbObject *newPlatformObject = new MongodbObject(); int64 globalIndex = 0; if(oldPlatformObject) { globalIndex = oldPlatformObject->GetInt64(String("globalIndex")); ++globalIndex; } if(newPlatformObject) { newPlatformObject->SetObjectName(PLATFORM_NAME); newPlatformObject->AddInt64(String("globalIndex"), globalIndex); String testTimeString = Format("%016d", globalIndex); time_t logStartTime = time(0); tm* utcTime = localtime(&logStartTime); String runTime = Format("%04d.%02d.%02d:%02d:%02d:%02d", utcTime->tm_year + 1900, utcTime->tm_mon + 1, utcTime->tm_mday, utcTime->tm_hour, utcTime->tm_min, utcTime->tm_sec); for(int32 iScr = 0; iScr < screens.size(); ++iScr) { int32 count = screens[iScr]->GetTestCount(); #if defined (SINGLE_MODE) if(screens[iScr]->GetName() == SINGLE_TEST_NAME) #endif //#if defined (SINGLE_MODE) { MongodbObject *oldScreenObject = CreateSubObject(screens[iScr]->GetName(), oldPlatformObject, true); MongodbObject *newScreenObject = new MongodbObject(); if(newScreenObject) { newScreenObject->SetObjectName(screens[iScr]->GetName()); for(int32 iTest = 0; iTest < count; ++iTest) { TestData *td = screens[iScr]->GetTestData(iTest); MongodbObject *testObject = CreateSubObject(td->name, oldScreenObject, false); if(testObject) { MongodbObject *testDataObject = CreateTestDataObject(testTimeString, runTime, td); if(testDataObject) { testObject->AddObject(testTimeString, testDataObject); testObject->Finish(); SafeRelease(testDataObject); } newScreenObject->AddObject(td->name, testObject); SafeRelease(testObject); } } newScreenObject->Finish(); newPlatformObject->AddObject(screens[iScr]->GetName(), newScreenObject); SafeRelease(newScreenObject); } SafeRelease(oldScreenObject); } } newPlatformObject->Finish(); dbClient->SaveObject(newPlatformObject, oldPlatformObject); SafeRelease(newPlatformObject); } SafeRelease(oldPlatformObject); }