TEST_F(QueryTests, test_get_current_results) { auto hQR = getSerializedHistoricalQueryResultsJSON(); auto query = getOsqueryScheduledQuery(); auto put_status = db->Put(kQueries, query.name, hQR.first); EXPECT_TRUE(put_status.ok()); EXPECT_EQ(put_status.toString(), "OK"); auto cf = Query(query); QueryData qd; auto query_status = cf.getCurrentResults(qd, db); EXPECT_TRUE(query_status.ok()); EXPECT_EQ(query_status.toString(), "OK"); EXPECT_EQ(qd, hQR.second.mostRecentResults.second); }
TEST_F(QueryTests, test_add_and_get_current_results) { auto query = getOsqueryScheduledQuery(); auto cf = Query(query); auto s = cf.addNewResults(getTestDBExpectedResults(), std::time(0), db); EXPECT_TRUE(s.ok()); EXPECT_EQ(s.toString(), "OK"); for (auto result : getTestDBResultStream()) { DiffResults dr; HistoricalQueryResults hQR; auto hqr_status = cf.getHistoricalQueryResults(hQR, db); EXPECT_TRUE(hqr_status.ok()); EXPECT_EQ(hqr_status.toString(), "OK"); auto s = cf.addNewResults(result.second, dr, true, std::time(0), db); EXPECT_TRUE(s.ok()); DiffResults expected = diff(hQR.mostRecentResults.second, result.second); EXPECT_EQ(dr, expected); QueryData qd; cf.getCurrentResults(qd, db); EXPECT_EQ(qd, result.second); } }
//Function executed at each frame bool segmentationEvaluationModule::run() { if(firstTime) { firstTime = false; QByteArray string8bit = this->RoiFileName.toLocal8Bit(); #ifdef __OPENCV3__ this->RoiPixelLevel = cv::imread(string8bit.data(), cv::IMREAD_GRAYSCALE ); #else this->RoiPixelLevel = cv::imread(string8bit.data(), CV_LOAD_IMAGE_GRAYSCALE ); #endif } if(m_data->postedBestParameters) { //If the best parameters are posted, the job is done if(m_setROI) { QImage roi, scaledImg; ImageTransforms::ImageROI(*m_data->fgImage, roi, m_dx, m_dy, m_w, m_h); scaledImg = roi.scaledToWidth(m_wscale, Qt::SmoothTransformation); QImage im = ImageTransforms::toGrayscale(scaledImg); ImageTransforms::binarize(im); getCurrentResults(&im); } else getCurrentResults(m_data->fgImage); return true; } if(m_data->cycleActivated && m_data->firstOfCycle) { //Store previous data and init cycle and NN++; if(!first) { //Store previous data writeToLog(); m_data->bestParametersSet = bestParameters; } previousParameters = m_data->tunedParametersSet; if(m_data->tuningEnded) { pauseApp(); m_data->postedBestParameters = true; } first = false; mean_blob = N = mTP = mTN = mFP = mFN = sdTP = sdTN = sdFP = sdFN = 0; accTP = accTN = accFP = accFN = 0; } if( m_data->fgImage == NULL || m_data->fgImage->isNull() || m_data->groundtruthImage == NULL || m_data->groundtruthImage->isNull()) return true; if(m_setROI) { QImage roi, scaledImg; ImageTransforms::ImageROI(*m_data->fgImage, roi, m_dx, m_dy, m_w, m_h); scaledImg = roi.scaledToWidth(m_wscale, Qt::SmoothTransformation); QImage im = ImageTransforms::toGrayscale(scaledImg); ImageTransforms::binarize(im); getCurrentResults(&im); } else getCurrentResults(m_data->fgImage); //Store stats accTP += TP; accTN += TN; accFP += FP; accFN += FN; N++; //number of frames in the cycle mean_blob = MathFunctions::incrementalMean(mean_blob, m_data->blobs.size(), N); mTP = MathFunctions::incrementalMean(mTP, TP, N); sdTP = MathFunctions::incrementalSigma(mTP, sdTP, TP, N); mTN = MathFunctions::incrementalMean(mTN, TN, N); sdTN = MathFunctions::incrementalSigma(mTN, sdTN, TN, N); mFP = MathFunctions::incrementalMean(mFP, FP, N); sdFP = MathFunctions::incrementalSigma(mFP, sdFP, FP, N); mFN = MathFunctions::incrementalMean(mFN, FN, N); sdFN = MathFunctions::incrementalSigma(mFN, sdFN, FN, N); return true; }
osquery::Status Query::getCurrentResults(osquery::QueryData& qd) { return getCurrentResults(qd, DBHandle::getInstance()); }