// AtlasPoolEventDataset_t.cxx #include "dataset_atlaspool/AtlasPoolEventDataset.h" #include #include "dataset_util/ssystem.h" #include "dataset_util/getcwd.h" #include "dataset_util/FileStatus.h" #include "dataset_util/XmlElement.h" #include "dataset_util/FileFinder.h" #include "dataset_id/SimpleUniqueIdGenerator.h" #include "dataset_file/FileManagementSystem.h" #include "dataset_credential/CredentialSelectionCatalog.h" #include "dataset_credential/GssCredentialManager.h" #include "dataset_base/DatasetCreator.h" #include "dataset_base/SingleFileDataset.h" using std::cout; using std::endl; using std::string; using dset::Url; using dset::CredentialSelectionCatalog; using dset::GssCredentialManager; using dset::FileManagementSystem; using dset::ContentBlock; using dset::Dataset; using dset::DatasetCreator; using dset::SingleFileDataset; using dset::GenericDataset; using dset::AtlasPoolEventDataset; void msg(string txt) { cout << "------- "; cout << txt; cout << " -------" << endl; } int AtlasPoolEventDataset_t() { msg("Set ID generator"); SimpleUniqueIdGenerator::create_collection("Dataset", 502, 0); SimpleUniqueIdGenerator::set_as_default(); 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 FMS"); assert( FileManagementSystem::create_simple_instance() == 0 ); cout << FileManagementSystem::default_instance() << endl; msg("Static methods"); string xname = AtlasPoolEventDataset::xml_name(); cout << xname << endl; assert( xname.size() != 0 ); msg("Find and copy pool file"); //string fname = "LArSimTest.root"; string fname = "evgen.pool.root"; FileFinder fnd(getcwd(), 5, -1); string full_fname = fnd.find(fname); assert( full_fname.size() != 0 ); cout << full_fname << endl; ssystem("cp " + full_fname + " ."); assert( FileStatus(fname).is_readable() ); Url furl("file:" + full_fname); msg("Create dataset"); AtlasPoolEventDataset ds(furl); cout << ds << endl; assert( ds.is_valid() ); assert( ds.id().is_valid() ); assert( ds.is_locked() ); msg("Check content"); const ContentBlock& cb = ds.content().front(); cout << cb << endl; assert( cb.content_ids().size() > 0 ); msg("Check events"); assert( ds.is_event_dataset() ); assert( ds.event_count() == 20 ); assert( ds.event_ids().size() == 20 ); cout << cb.event_ids() << endl; assert( cb.event_ids().size() == 20 ); assert( cb.event_ids().front().is_valid() ); msg("Check type info"); assert( ds.is() ); assert( ds.is() ); assert( ds.is() ); msg("Clone"); { Dataset* pds2 = ds.clone(); assert( pds2 != 0 ); cout << *pds2 << endl; assert( pds2->is_valid() ); assert( pds2->id().is_valid() ); assert( ! (pds2->id() == ds.id()) ); assert( ! pds2->is_locked() ); assert( pds2->content() == ds.content() ); assert( pds2->is() ); delete pds2; } msg("Check promoter registration"); assert( GenericDataset::has_promoter("AtlasPoolEventDataset") ); msg("Use single-file creator"); DatasetId did(123, 456); const Dataset* pdst = SingleFileDataset:: create("AtlasPoolEventDataset", furl, "JUNK", did); assert( pdst != 0 ); cout << *pdst << endl; assert( pdst->is_locked() ); assert( pdst->location().files().size() == 1 ); assert( pdst->location().files().front() == furl ); assert( pdst->content().size() == 1 ); assert( pdst->content().front().name() == "JUNK" ); assert( pdst->parent_id() == did ); msg("Create XML"); const XmlElement* pele = ds.xml(); assert( pele != 0 ); cout << *pele << endl; msg("Reconstruct from XML"); { const Dataset* pds2 = DatasetCreator::create(*pele); assert( pds2 != 0 ); cout << pds2 << endl; assert( pds2->is_valid() ); assert( pds2->id().is_valid() ); assert( pds2->id() == ds.id() ); assert( pds2->is_locked() ); assert( pds2->content() == ds.content() ); assert( pds2->is() ); delete pds2; } /* msg("Select events"); { EventIdRange rng(2001, 1, 100); EventIdList eids; eids.insert(rng); cout << eids << endl; Dataset* pdse = ds.clone(); EventDataset& dse = pdse->cast(); EventIdList::size_type cnt = dse.select_events(eids); cout << dse << endl; assert( cnt != 0 ); assert( cnt == dse.event_ids().size() ); assert( cnt < ds.file_event_count() ); assert( cnt < eids.size() ); } */ return 0; } #ifdef CTEST_MAIN int main() { return AtlasPoolEventDataset_t(); } #endif