Esempio n. 1
0
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;
}
Esempio n. 2
0
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);
}