// make_event_merge_datset_t.cxx #include #include #include "dataset_util/FileStatus.h" #include "dataset_util/mkdir.h" #include "dataset_util/DtdRegistry.h" #include "dataset_xml/XmlParser.h" #include "dataset_credential/CredentialSelectionCatalog.h" #include "dataset_credential/GssCredentialManager.h" #include "dataset_base/DatasetCreator.h" #include "dataset_base/EventMergeDataset.h" #include "dataset_base/EventDataset_t.h" #include "dataset_xml/SimpleXmlDatasetDb.h" #include "dataset_CBNT/HbookFile_t.h" #include "dataset_CBNT/CbntDataset.h" using std::string; using std::cout; using std::endl; using dset::CredentialSelectionCatalog; using dset::Dataset; using dset::DatasetCreator; using dset::EventMergeDataset; using dset::SimpleXmlDatasetDb; namespace { void msg(string txt) { cout << "*** "; cout << txt; cout << endl; } int ssystem(string com) { return system(com.c_str()); } } int make_event_merge_datset_t() { msg("Testing make_event_merge_datset"); msg("Display help message"); int stat = system("make_event_merge_dataset -h"); assert( stat == 0 ); msg("Create merged dataset"); system("rm -f merged.xml"); string uiddir = getcwd() + "/UniqueId"; mkdir(uiddir); string com = "DIAL_UIDS=" + uiddir; com += "; DIAL_DATASET_DB=" + dbdir; com += "; make_event_merge_dataset.exe -i 201-11 -f merged.xml 201-1 201-2"; stat = system(com.c_str()); assert( stat == 0 ); FileStatus dstat("merged.xml"); assert( dstat.exists() ); msg("Create content description"); ContentId cid1(101); assert( cid1.is_valid() ); ContentId cid2(102); assert( cid2.is_valid() ); ContentIdList cids; cids.insert(cid1); cids.insert(cid2); assert( cids.size() == 2 ); msg("Open DB"); FileName dname("dataset_db"); string dbdir = dname.fullpath().name(); ssystem("rm -rf " + dbdir); ssystem("mkdir " + dbdir); { SimpleXmlDatasetDb ddb(dbdir); msg("Create dataset 1"); EventIdList eids1; eids1.insert(EventIdRange(101, 1, 10)); TestEventDataset tdst1(DatasetId(201,1), eids1, cids); tdst1.lock(); cout << tdst1 << endl; assert( ddb.insert(&tdst1).is_valid() ); msg("Create dataset 2"); EventIdList eids2; eids2.insert(EventIdRange(101, 11, 25)); TestEventDataset tdst2(DatasetId(201,2), eids2, cids); tdst2.lock(); cout << tdst2 << endl; assert( ddb.insert(&tdst2).is_valid() ); } msg("Read merged dataset"); DtdRegistry::instance("dataset").write(); XmlParser parser; SimpleXmlDatasetDb ddb2(dbdir); const XmlElement* pxdst = parser.parse("merged.xml"); assert( pxdst != 0 ); const Dataset* pdst = DatasetCreator::create(*pxdst, &ddb2); assert( pdst != 0 ); assert( pdst->is() ); const EventMergeDataset& edst = pdst->cast(); cout << edst << endl; assert( edst.constituents().size() == 2 ); assert( edst.constituents().front()->id() == DatasetId(201,1) ); assert( edst.constituents().back()->id() == DatasetId(201,2) ); return 0; } #ifdef CTEST_MAIN int main() { return make_event_merge_datset_t(); } #endif