Changeset b0b64c for src/Fragmentation
- Timestamp:
- May 4, 2012, 2:19:06 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:
- c7deca
- Parents:
- 12d15a
- git-author:
- Frederik Heber <heber@…> (11/24/11 19:12:49)
- git-committer:
- Frederik Heber <heber@…> (05/04/12 14:19:06)
- Location:
- src/Fragmentation/Automation
- Files:
-
- 7 edited
Legend:
- Unmodified
- Added
- Removed
-
src/Fragmentation/Automation/FragmentQueue.hpp
r12d15a rb0b64c 24 24 25 25 /** This class contains a deque for temporarily storing the FragmentJob 26 * instances until they are receive by the server. Also all results are26 * instances until they are received by the server. Also all results are 27 27 * contained herein. 28 28 */ -
src/Fragmentation/Automation/FragmentScheduler.cpp
r12d15a rb0b64c 33 33 #include <boost/serialization/vector.hpp> 34 34 #include "CodePatterns/Info.hpp" 35 #include "CodePatterns/Log.hpp" 35 36 #include "FragmentJob.hpp" 36 37 … … 42 43 ) 43 44 { 44 45 Info info(__FUNCTION__); 45 46 FragmentJob s(std::string("test"), 1); 46 jobs_.push_back(s);47 JobsQueue.pushJob(s); 47 48 48 49 // Start an accept operation for a new connection. … … 60 61 if (!e) 61 62 { 62 // Successfully accepted a new connection. Send the list of jobs to the 63 // client. The connection::async_write() function will automatically 64 // serialize the data structure for us. 65 conn->async_write(jobs_, 66 boost::bind(&FragmentScheduler::handle_write, this, 67 boost::asio::placeholders::error, conn)); 63 // Successfully accepted a new connection. 64 // Check whether there are jobs in the queue 65 if (JobsQueue.isJobPresent()) { 66 // pop a job and send it to the client. 67 FragmentJob s(JobsQueue.popJob()); 68 // The connection::async_write() function will automatically 69 // serialize the data structure for us. 70 conn->async_write(s, 71 boost::bind(&FragmentScheduler::handle_write, this, 72 boost::asio::placeholders::error, conn)); 73 } else { 74 ELOG(2, "There is currently no job present in the queue."); 75 } 68 76 69 77 // Start an accept operation for a new Connection. … … 78 86 // accept operation the io_service will run out of work to do and the 79 87 // server will exit. 80 std::cerr << "Error: " << e.message() << std::endl;88 ELOG(0, e.message()); 81 89 } 82 90 } -
src/Fragmentation/Automation/FragmentScheduler.hpp
r12d15a rb0b64c 19 19 #include "Connection.hpp" 20 20 #include "FragmentJob.hpp" 21 #include "FragmentQueue.hpp" 21 22 22 23 /** FragmentScheduler serves FragmentJobs to Workers. … … 40 41 boost::asio::ip::tcp::acceptor acceptor_; 41 42 42 /// Thedata to be sent to each client.43 std::vector<FragmentJob> jobs_;43 /// Queue with data to be sent to each client. 44 FragmentQueue JobsQueue; 44 45 }; 45 46 -
src/Fragmentation/Automation/FragmentWorker.cpp
r12d15a rb0b64c 32 32 #include <boost/serialization/vector.hpp> 33 33 #include "CodePatterns/Info.hpp" 34 #include "CodePatterns/Log.hpp" 34 35 #include "FragmentJob.hpp" 35 36 #include "FragmentWorker.hpp" … … 67 68 // of jobs. The connection::async_read() function will automatically 68 69 // decode the data that is read from the underlying socket. 69 connection_.async_read(job s_,70 connection_.async_read(job, 70 71 boost::bind(&FragmentWorker::handle_read, this, 71 72 boost::asio::placeholders::error)); … … 81 82 // operation the io_service will run out of work to do and the client will 82 83 // exit. 83 std::cerr << "Error: " << e.message() << std::endl;84 ELOG(1, e.message()); 84 85 } 85 86 } … … 92 93 { 93 94 // Print out the data that was received. 94 for (std::size_t i = 0; i < jobs_.size(); ++i) 95 { 96 std::cout << "Job number " << i << "\n"; 97 std::cout << " output: " << jobs_[i].outputfile << "\n"; 98 std::cout << " id: " << jobs_[i].getId() << "\n"; 99 } 95 std::cout << "Job output: " << job.outputfile << "\n"; 96 std::cout << "Job id: " << job.getId() << "\n"; 100 97 } 101 98 else 102 99 { 103 100 // An error occurred. 104 std::cerr << e.message() << std::endl;101 ELOG(1, e.message()); 105 102 } 106 103 -
src/Fragmentation/Automation/FragmentWorker.hpp
r12d15a rb0b64c 41 41 42 42 /// The data received from the server. 43 std::vector<FragmentJob> jobs_;43 FragmentJob job; 44 44 }; 45 45 -
src/Fragmentation/Automation/Makefile.am
r12d15a rb0b64c 18 18 atexit.cpp \ 19 19 FragmentJob.cpp \ 20 FragmentQueue.cpp \ 21 FragmentResult.cpp \ 20 22 FragmentScheduler.cpp \ 21 23 JobId.cpp \ … … 26 28 Connection.hpp \ 27 29 FragmentJob.hpp \ 30 FragmentQueue.hpp \ 31 FragmentResult.hpp \ 28 32 FragmentScheduler.hpp \ 29 33 JobId.hpp -
src/Fragmentation/Automation/unittests/FragmentQueueUnitTest.cpp
r12d15a rb0b64c 135 135 FragmentResult wrongIdResult(2); 136 136 137 // check presence137 // check that none are present and we can't get result yet 138 138 CPPUNIT_ASSERT( !queue->isResultPresent(1) ); 139 139 CPPUNIT_ASSERT( !queue->isResultPresent(2) ); … … 143 143 #endif 144 144 145 /// check for wrong id145 /// check for admonishing wrong id 146 146 #ifndef NDEBUG 147 147 std::cout << "The following assertion is intended and does not indicate a failure." << std::endl; 148 148 CPPUNIT_ASSERT_THROW( queue->pushResult(wrongIdResult), Assert::AssertionFailure ); 149 149 #endif 150 151 // push correct result 150 152 #ifndef NDEBUG 151 153 CPPUNIT_ASSERT_NO_THROW( queue->pushResult(testResult) ); … … 157 159 CPPUNIT_ASSERT( queue->isResultPresent(1) ); 158 160 161 // obtain result again 159 162 #ifndef NDEBUG 160 163 CPPUNIT_ASSERT_NO_THROW( queue->getResult(1) );
Note:
See TracChangeset
for help on using the changeset viewer.