// make_cbnt_datset_t.cxx #include #include #include "dataset_util/ssystem.h" #include "dataset_util/FileStatus.h" #include "dataset_util/DtdRegistry.h" #include "dataset_base/DatasetCreator.h" #include "dataset_xml/XmlParser.h" #include "dataset_id/SimpleUniqueIdGenerator.h" #include "dataset_credential/CredentialSelectionCatalog.h" #include "dataset_credential/GssCredentialManager.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::GssCredentialManager; using dset::Dataset; using dset::DatasetCreator; using dset::CbntDataset; namespace { void msg(string txt) { cout << "*** "; cout << txt; cout << endl; } bool check(int val, int exp =0) { if ( val != exp ) { cout << "Found " << val << "; expected " << exp << endl; return false; } return true; } } int make_cbnt_datset_t() { msg("Testing make_cbnt_datset"); 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 ); string com0 = "DIAL_CATALOG_CONF=" + getcwd() + "/resolver.dat; " + "export DIAL_CATALOG_CONF; "; msg("Display help message"); assert( system("make_cbnt_dataset -h") == 0 ); msg("Set ID generator"); SimpleUniqueIdGenerator::create_collection("Dataset", 501, 0); SimpleUniqueIdGenerator::set_as_default(); string conn = SimpleUniqueIdGenerator::connection(); msg("Find input file"); string fname = find_file("cbnt.hbook"); assert( fname != "" ); cout << fname << endl; msg("Run command to create dataset"); DatasetId id(101,11); string com = com0; com += "make_cbnt_dataset"; com += " -u " + conn; com += " -l " + fname; cout << com << endl; assert( check(ssystem(com), 0) ); msg("Check file exists"); string xfile = "dataset.xml"; assert( FileStatus(xfile).is_readable() ); msg("Create DTD"); DtdRegistry& dtdreg = DtdRegistry::instance("dataset"); dtdreg.write(); msg("Read dataset"); const XmlElement* pele = XmlParser().parse(xfile); assert( pele != 0 ); cout << *pele << endl; const Dataset* pdst = DatasetCreator::create(*pele); assert( pdst != 0 ); cout << *pdst << endl; cout << *pele << endl; delete pele; assert( pdst->is_valid() ); assert( pdst->is_locked() ); assert( pdst->id().is_global() ); msg("Cast to CbntDataset"); const CbntDataset* pcdst = dynamic_cast(pdst); assert( pcdst != 0 ); cout << *pcdst << endl; msg("Write a copy of the xml"); const XmlElement* pxdst = pdst->xml(); assert( pxdst != 0 ); cout << *pxdst << endl; assert( XmlParser().write("copy.xml", *pxdst) == 0); delete pdst; return 0; } #ifdef CTEST_MAIN int main() { return make_cbnt_datset_t(); } #endif