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
bool GameCore::FlushToDB(const String & levelName, const Map<String, String> &results, const String &imagePath)
{
	if(!dbClient)
		return false;

    Logger::Debug("Sending results to DB...");
    
    MongodbObject *testResultObject = new MongodbObject();
    if(testResultObject)
    {
        testResultObject->SetObjectName(levelName);
        
        Map<String, String>::const_iterator it = results.begin();
        for(; it != results.end(); it++)
        {
            testResultObject->AddString((*it).first, (*it).second);
        }
        
        File * imageFile = File::Create(imagePath, File::READ | File::OPEN);
        if(imageFile)
        {
            uint32 fileSize = imageFile->GetSize();
            uint8 * data = new uint8[fileSize];
            imageFile->Read(data, fileSize);
            testResultObject->AddData("ResultImagePNG", data, fileSize);
            
            SafeDelete(data);
            SafeRelease(imageFile);
        }
        else
        {
            Logger::Debug("Can't read result level sprite!");
        }
        
        testResultObject->Finish();
        
		MongodbObject * currentRunObject = dbClient->FindObjectByKey(Format("%d", currentRunId));
		MongodbObject * newRunObject = new MongodbObject();
		if(newRunObject)
		{
			if(currentRunObject)
			{
				newRunObject->Copy(currentRunObject);
			}
			else
			{
				newRunObject->SetObjectName(Format("%d", currentRunId));
				newRunObject->AddString("DeviceDescription", DeviceInfo::Instance()->GetDeviceDescription());
			}

			newRunObject->AddObject(levelName, testResultObject);
			newRunObject->Finish();
			dbClient->SaveObject(newRunObject, currentRunObject);
			SafeRelease(newRunObject);
		}
		else
		{
			Logger::Debug("Can't create test result object in DB");
			return false;
		}

		SafeRelease(currentRunObject);
		SafeRelease(testResultObject);
    }
    else
    {
        Logger::Debug("Can't create tests results object");
        return false;
    }
    
    Logger::Debug("Results successful sent to DB");
    
    return true;
}