// LsfJobCreator_t.cxx #include "dial_lsf/LsfJobCreator.h" #include "dataset_credential/CredentialSelectionCatalog.h" #include "dataset_credential/GssCredentialManager.h" #include "dataset_base/Dataset_t.h" #include "dial_job/Job_t.h" #include "dial_lsf/LsfJob.h" #include #include using std::string; using std::ostream; using std::cout; using std::endl; using dset::CredentialSelectionCatalog; using dset::GssCredentialManager; using dial::TaskId; using dial::Task; using dial::Application; using dial::JobPreferences; using dial::JobId; using dial::Job; using dial::LsfJob; using dial::LsfJobCreator; namespace { // Write message. void msg(const char* msg) { cout << "----- "; cout << msg; cout << " -----" << endl; } } int LsfJobCreator_t() { msg("Fetch default instance of CSC."); assert( CredentialSelectionCatalog::create_default_instance() == 0 ); CredentialSelectionCatalog& sc = CredentialSelectionCatalog::default_instance(); cout << sc << endl; assert( sc.is_valid() ); string owner = "me"; assert( GssCredentialManager::set_default() == 0 ); assert( GssCredentialManager::set_owner("me") == 0 ); msg("Create creator."); LsfJobCreator cre("somequeue"); 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 ); LsfJob* 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 << LsfJobCreator::dtd() << endl; assert( LsfJobCreator::dtd().size() != 0 ); assert( DtdRegistry::instance("dial").has_type("LsfJobCreator") ); return 0; } #ifdef CTEST_MAIN int main() { return LsfJobCreator_t(); } #endif