// ScriptedJobCreator_t.cxx #include "dial_scripted/ScriptedJobCreator.h" #include #include #include #include "dataset_util/FileName.h" #include "dataset_base/Dataset_t.h" #include "dial_job/Job_t.h" #include "dial_scripted/ScriptedJob.h" using std::string; using std::ostream; using std::cout; using std::endl; using dial::TaskId; using dial::Task; using dial::Application; using dial::JobPreferences; using dial::JobId; using dial::Job; using dial::ScriptedJob; using dial::ScriptedJobCreator; namespace { // Write message. void msg(const char* msg) { cout << "----- "; cout << msg; cout << " -----" << endl; } } int ScriptedJobCreator_t() { Text tscr("myscript"); tscr.write(); string scrname = FileName(tscr.name()).fullpath_name(); msg("Create creator."); ScriptedJobCreator cre("scrname"); cout << cre << endl; msg("Create application"); system("touch build_task run"); Application app(Text::split("run build_task")); cout << app << endl; msg("Create task"); Task::NameList files; Task tsk(files); cout << tsk << endl; msg("Create dataset"); TestDataset dst; cout << dst << endl; msg("Create preferences"); JobPreferences prf; prf.lock(); msg("Create job"); Job* pjob = cre.create_local_job(JobId(202,1), app, tsk, dst, prf, "mydir", "myscript"); assert( pjob != 0 ); cout << *pjob << endl; assert( pjob->application() == &app ); assert( pjob->task() == &tsk ); assert( pjob->dataset() == &dst ); ScriptedJob* ppjob = dynamic_cast(pjob); assert( ppjob != 0 ); assert( ppjob->job_directory() == "mydir" ); assert( ppjob->run_script() == "myscript" ); msg("Create XML"); const XmlElement* pxcre = cre.xml(); assert( pxcre != 0 ); cout << *pxcre << endl; assert( pxcre->is_valid() ); msg("Check DTD"); cout << ScriptedJobCreator::dtd() << endl; assert( ScriptedJobCreator::dtd().size() != 0 ); assert( DtdRegistry::instance("dial").has_type("ScriptedJobCreator") ); return 0; } #ifdef CTEST_MAIN int main() { return ScriptedJobCreator_t(); } #endif