// Scheduler_t.cxx #include "dial_sched/Scheduler_t.h" #include #include #include "dataset_base/Dataset_t.h" using std::string; using std::ostream; using std::cout; using std::endl; using dial::Task; using dial::Application; using dial::JobId; using dial::Scheduler; void msg(const char* msg) { cout << "----- "; cout << msg; cout << " -----" << endl; } int Scheduler_t() { msg("Create test scheduler"); TestScheduler tsch; Scheduler& sch = tsch; cout << sch << endl; assert( sch.jobs().size() == 0 ); msg("Check apps and tasks"); system("touch build_task run"); Application app(Text::split("run build_task")); Task::NameList files; Task tsk(files); assert( sch.add_task(app,tsk) == 0 ); assert( sch.has_task(app,tsk) ); msg("Submit jobs"); TestDataset dst1; TestDataset dst2; JobId jid1 = sch.submit(app, tsk, dst1); assert( jid1.is_valid() ); JobId jid2 = sch.submit(app, tsk, dst1); assert( jid2.is_valid() ); assert( jid1 < jid2 ); JobId jid3 = sch.submit(app, tsk, dst1); assert( jid3.is_valid() ); assert( jid2 < jid3 ); cout << sch << endl; assert( sch.jobs().size() == 3 ); msg("Create XML"); const XmlElement* pxsch = sch.xml(); assert( pxsch != 0 ); assert( pxsch->is_valid() ); msg("Check creator"); assert( Scheduler::has_creator(TestScheduler::xml_name()) ); Scheduler* psch = Scheduler::create(*pxsch); assert( psch != 0 ); assert( psch->is_valid() ); assert( dynamic_cast(psch) != 0 ); msg("Resource report"); string report = sch.resource_report(); cout << report << endl; assert( report.size() ); return 0; } #ifdef CTEST_MAIN int main() { return Scheduler_t(); } #endif