- Timestamp:
- May 4, 2012, 2:19:07 PM (13 years ago)
- Branches:
- Action_Thermostats, Add_AtomRandomPerturbation, Add_FitFragmentPartialChargesAction, Add_RotateAroundBondAction, Add_SelectAtomByNameAction, Added_ParseSaveFragmentResults, AddingActions_SaveParseParticleParameters, Adding_Graph_to_ChangeBondActions, Adding_MD_integration_tests, Adding_ParticleName_to_Atom, Adding_StructOpt_integration_tests, AtomFragments, Automaking_mpqc_open, AutomationFragmentation_failures, Candidate_v1.5.4, Candidate_v1.6.0, Candidate_v1.6.1, ChangeBugEmailaddress, ChangingTestPorts, ChemicalSpaceEvaluator, CombiningParticlePotentialParsing, Combining_Subpackages, Debian_Package_split, Debian_package_split_molecuildergui_only, Disabling_MemDebug, Docu_Python_wait, EmpiricalPotential_contain_HomologyGraph, EmpiricalPotential_contain_HomologyGraph_documentation, Enable_parallel_make_install, Enhance_userguide, Enhanced_StructuralOptimization, Enhanced_StructuralOptimization_continued, Example_ManyWaysToTranslateAtom, Exclude_Hydrogens_annealWithBondGraph, FitPartialCharges_GlobalError, Fix_BoundInBox_CenterInBox_MoleculeActions, Fix_ChargeSampling_PBC, Fix_ChronosMutex, Fix_FitPartialCharges, Fix_FitPotential_needs_atomicnumbers, Fix_ForceAnnealing, Fix_IndependentFragmentGrids, Fix_ParseParticles, Fix_ParseParticles_split_forward_backward_Actions, Fix_PopActions, Fix_QtFragmentList_sorted_selection, Fix_Restrictedkeyset_FragmentMolecule, Fix_StatusMsg, Fix_StepWorldTime_single_argument, Fix_Verbose_Codepatterns, Fix_fitting_potentials, Fixes, ForceAnnealing_goodresults, ForceAnnealing_oldresults, ForceAnnealing_tocheck, ForceAnnealing_with_BondGraph, ForceAnnealing_with_BondGraph_continued, ForceAnnealing_with_BondGraph_continued_betteresults, ForceAnnealing_with_BondGraph_contraction-expansion, FragmentAction_writes_AtomFragments, FragmentMolecule_checks_bonddegrees, GeometryObjects, Gui_Fixes, Gui_displays_atomic_force_velocity, ImplicitCharges, IndependentFragmentGrids, IndependentFragmentGrids_IndividualZeroInstances, IndependentFragmentGrids_IntegrationTest, IndependentFragmentGrids_Sole_NN_Calculation, JobMarket_RobustOnKillsSegFaults, JobMarket_StableWorkerPool, JobMarket_unresolvable_hostname_fix, MoreRobust_FragmentAutomation, ODR_violation_mpqc_open, PartialCharges_OrthogonalSummation, PdbParser_setsAtomName, PythonUI_with_named_parameters, QtGui_reactivate_TimeChanged_changes, Recreated_GuiChecks, Rewrite_FitPartialCharges, RotateToPrincipalAxisSystem_UndoRedo, SaturateAtoms_findBestMatching, SaturateAtoms_singleDegree, StoppableMakroAction, Subpackage_CodePatterns, Subpackage_JobMarket, Subpackage_LinearAlgebra, Subpackage_levmar, Subpackage_mpqc_open, Subpackage_vmg, Switchable_LogView, ThirdParty_MPQC_rebuilt_buildsystem, TrajectoryDependenant_MaxOrder, TremoloParser_IncreasedPrecision, TremoloParser_MultipleTimesteps, TremoloParser_setsAtomName, Ubuntu_1604_changes, stable
- Children:
- 778abb
- Parents:
- 402bde
- git-author:
- Frederik Heber <heber@…> (02/16/12 16:14:38)
- git-committer:
- Frederik Heber <heber@…> (05/04/12 14:19:07)
- Location:
- src/Fragmentation/Automation
- Files:
-
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
src/Fragmentation/Automation/FragmentQueue.cpp
r402bde rb9c486 98 98 } 99 99 100 /** Internal function to check whether result is not one of static entities. 101 * 102 * @param result result to check against 103 * @return true - result is a present, valid result, false - result is one of the statics 104 */ 105 bool FragmentQueue::isPresentResult(const FragmentResult &_result) const 106 { 107 return (_result != NoResult) 108 && (_result != NoResultQueued) 109 && (_result != ResultDelivered); 110 } 111 100 112 /** Queries whether a job has already been finished and the result is present. 101 113 * … … 107 119 ResultMap::const_iterator iter = results.find(jobid); 108 120 return ((iter != results.end()) 109 && (iter->second != NoResult) 110 && (iter->second != NoResultQueued) 111 && (iter->second != ResultDelivered)); 121 && isPresentResult(iter->second)); 112 122 } 113 123 … … 147 157 "FragmentQueue::pushResult() - job "+toString(jobid)+"'s result has already been delivered."); 148 158 /// store result 149 FragmentResult result = iter->second;159 FragmentResult _result = iter->second; 150 160 /// mark as delivered in map 151 161 iter->second = ResultDelivered; 152 162 /// and return result 153 return result; 163 return _result; 164 } 165 166 std::vector<FragmentResult> FragmentQueue::getAllResults() 167 { 168 std::vector<FragmentResult> returnresults; 169 for (ResultMap::iterator iter = results.begin(); 170 iter != results.end(); ++iter) { 171 if (isPresentResult(iter->second)) { 172 returnresults.push_back(getResult(iter->first)); 173 iter = results.begin(); 174 } 175 } 176 177 return returnresults; 154 178 } 155 179 … … 160 184 * \param result result of job to store 161 185 */ 162 void FragmentQueue::pushResult(FragmentResult & result)186 void FragmentQueue::pushResult(FragmentResult &_result) 163 187 { 164 188 /// check for presence 165 ResultMap::iterator iter = results.find( result.getId());189 ResultMap::iterator iter = results.find(_result.getId()); 166 190 ASSERT(iter != results.end(), 167 "FragmentQueue::pushResult() - job "+toString( result.getId())+" is not known to us.");191 "FragmentQueue::pushResult() - job "+toString(_result.getId())+" is not known to us."); 168 192 ASSERT(iter->second == NoResultQueued, 169 "FragmentQueue::pushResult() - is not waiting for the result of job "+toString( result.getId())+".");193 "FragmentQueue::pushResult() - is not waiting for the result of job "+toString(_result.getId())+"."); 170 194 /// and overwrite NoResult in found entry 171 iter->second = result;195 iter->second = _result; 172 196 } 197 -
src/Fragmentation/Automation/FragmentQueue.hpp
r402bde rb9c486 44 44 bool isResultPresent(JobId_t jobid) const; 45 45 FragmentResult getResult(JobId_t jobid); 46 void pushResult(FragmentResult &result); 46 void pushResult(FragmentResult &_result); 47 std::vector<FragmentResult> getAllResults(); 48 47 49 size_t getDoneJobs() const; 48 50 49 51 private: 52 bool isPresentResult(const FragmentResult &_result) const; 53 50 54 //!> result that takes place in ResultQueue after job has arrived before it has been popped. 51 55 static FragmentResult NoResult; -
src/Fragmentation/Automation/unittests/FragmentQueueUnitTest.cpp
r402bde rb9c486 234 234 #endif 235 235 } 236 237 /** UnitTest for working ResultMap 238 */ 239 void FragmentQueueTest::AllResultsTest() 240 { 241 // prepare a job 242 FragmentJob testJob; 243 testJob.setId(1); 244 testJob.outputfile = std::string("do something"); 245 FragmentJob anothertestJob; 246 anothertestJob.setId(2); 247 anothertestJob.outputfile = std::string("do something else"); 248 249 #ifndef NDEBUG 250 CPPUNIT_ASSERT_NO_THROW( queue->pushJob(testJob) ); 251 CPPUNIT_ASSERT_NO_THROW( queue->pushJob(anothertestJob) ); 252 #else 253 queue->pushJob(testJob); 254 queue->pushJob(anothertestJob); 255 #endif 256 257 // check that no results are returned. 258 { 259 const std::vector<FragmentResult> results = queue->getAllResults(); 260 CPPUNIT_ASSERT_EQUAL( (size_t)0, results.size() ); 261 } 262 263 // pop both as if some work was being done 264 #ifndef NDEBUG 265 CPPUNIT_ASSERT_NO_THROW( queue->popJob() ); 266 CPPUNIT_ASSERT_NO_THROW( queue->popJob() ); 267 #else 268 queue->popJob(); 269 queue->popJob(); 270 #endif 271 272 // prepare a result 273 FragmentResult testResult(1); 274 FragmentResult anothertestResult(2); 275 276 // push correct result 277 #ifndef NDEBUG 278 CPPUNIT_ASSERT_NO_THROW( queue->pushResult(testResult) ); 279 CPPUNIT_ASSERT_NO_THROW( queue->pushResult(anothertestResult) ); 280 #else 281 queue->pushResult(testResult); 282 queue->pushResult(anothertestResult); 283 #endif 284 285 // check that two results are returned. 286 { 287 const std::vector<FragmentResult> results = queue->getAllResults(); 288 CPPUNIT_ASSERT_EQUAL( (size_t)2, results.size() ); 289 } 290 } 291 -
src/Fragmentation/Automation/unittests/FragmentQueueUnitTest.hpp
r402bde rb9c486 27 27 CPPUNIT_TEST ( JobsTest ); 28 28 CPPUNIT_TEST ( ResultsTest ); 29 CPPUNIT_TEST ( AllResultsTest ); 29 30 CPPUNIT_TEST_SUITE_END(); 30 31 … … 35 36 void JobsTest(); 36 37 void ResultsTest(); 38 void AllResultsTest(); 37 39 38 40 private:
Note:
See TracChangeset
for help on using the changeset viewer.