// dataset_extracextractt_t.cxx #include #include #include #include #include "dataset_util/FileStatus.h" #include "dataset_util/mkdir.h" #include "dataset_id/SimpleUniqueIdGenerator.h" #include "dataset_id/DatasetId.h" #include "dataset_credential/CredentialSelectionCatalog.h" #include "dataset_credential/GssCredentialManager.h" #include "dataset_base/Dataset.h" #include "dataset_base/Dataset_t.h" #include "dataset_base/DatasetRepository.h" #include "dataset_xml/XmlParser.h" using std::string; using std::cout; using std::ifstream; using std::endl; using dset::CredentialSelectionCatalog; using dset::GssCredentialManager; using dset::DatasetRepository; using dset::DatasetList; //********************************************************************** void msg(string txt) { cout << "----- "; cout << txt; cout << " -----" << endl; } // Run command and check the return status. // We capture return status and check it if system returns 0. bool run_command(string exe, string args, int expect =0) { string prefix = "rm -f rstat.dat; "; prefix += "export DIAL_CATALOG_CONF=resolver.dat; "; string suffix = "; echo $? > rstat.dat"; string com = prefix + exe + " " + args + suffix; int sstat = system(com.c_str()); if ( true || sstat == 0 ) { ifstream rstat("rstat.dat"); rstat >> sstat; unlink("rstat.dat"); } if ( sstat != expect ) { cout << exe << " " << args << endl; cout << "Expected: " << expect << endl; cout << " Found: " << sstat << endl; return false; } return true; } // Return XML parser. XmlParser& parser() { static XmlParser pr; return pr; } //********************************************************************** int dataset_extract_t() { msg("Clean up previous runs"); run_command("rm", "-rf UniqueId mydst.xml resolver.dat dr.dat"); run_command("rm", "dataset.dtd"); SimpleUniqueIdGenerator::create_collection("Dataset", 123, 1001); SimpleUniqueIdGenerator::set_as_default(); msg("Create default repository"); DatasetRepository::create_default_instance(); DatasetRepository& rep = DatasetRepository::default_instance(); assert( rep.is_valid() ); 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("Show help"); string exe = "dataset_extract"; string args = "-h"; assert( run_command(exe, args) ); msg("Create test dataset 1"); TestDataset dst1; dst1.lock(); cout << dst1 << endl; assert( dst1.is_valid() ); assert( dst1.is_locked() ); string dst1_name = "dst1.xml"; assert( ! FileStatus(dst1_name).is_readable() ); msg("Insert dataset in database"); DatasetId didchk = rep.insert(&dst1); cout << didchk.to_string() << endl; assert( didchk == dst1.id() ); msg("Extract from database"); args = "-c SQLRESULT -i " + dst1.id().to_string() + " -f mydst.xml"; cout << args << endl; assert( ! FileStatus("mydst.xml").exists() ); assert( run_command(exe, args) ); assert( FileStatus("mydst.xml").exists() ); Text txml("mydst.xml"); cout << txml << endl; assert( txml.size() ); return 0; } #ifdef CTEST_MAIN int main() { return dataset_extract_t(); } #endif