// dataset_text_t.cxx #include #include #include #include "dataset_util/FileStatus.h" #include "dataset_util/getcwd.h" #include "dataset_util/ssystem.h" #include "dataset_util/FileFinder.h" #include "dataset_util/DtdRegistry.h" #include "dataset_xml/XmlParser.h" #include "dataset_id/SimpleUniqueIdGenerator.h" #include "dataset_credential/CredentialSelectionCatalog.h" #include "dataset_credential/GssCredentialManager.h" #include "dataset_base/DatasetCreator.h" #include "dataset_base/DatasetRepository.h" #include "dataset_base/TextDataset.h" using std::string; using std::cout; using std::endl; using dset::CredentialSelectionCatalog; using dset::GssCredentialManager; using dset::Dataset; using dset::DatasetCreator; using dset::DatasetRepository; using dset::TextDataset; namespace { void msg(string txt) { cout << "*** "; cout << txt; cout << endl; } } int dataset_text_t() { msg("Testing datset_text"); unlink("myfile1.dat"); unlink("myfile2.dat"); msg("Set ID generator"); SimpleUniqueIdGenerator::create_collection("Dataset", 501, 0); SimpleUniqueIdGenerator::set_as_default(); string conn = SimpleUniqueIdGenerator::connection(); assert( conn.size() ); msg("Create repository"); SimpleUniqueIdGenerator::create_collection("Dataset", 123, 1001); assert( DatasetRepository::create_default_instance() == 0 ); 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 ); string com0 = "DIAL_CATALOG_CONF=" + getcwd() + "/resolver.dat; " + "export DIAL_CATALOG_CONF; "; msg("Display help message"); int stat = system("dataset_text -h"); assert( stat == 0 ); msg("Create texts"); string fname = "myfile1.dat"; Text t1(fname); t1.append("My file one"); t1.write(); assert( FileStatus(fname).is_readable() ); fname = "myfile2.dat"; Text t2(fname); t2.append("My file two"); t2.write(); assert( FileStatus(fname).is_readable() ); msg("Create dataset."); TextDataset dst("JUNK", "myfile1.dat myfile2.dat"); dst.lock(); cout << dst << endl; assert( rep.insert(&dst,false).is_valid() ); msg("List"); com0 += "dataset_text -i " + dst.id().to_string() + " "; string com = com0; com = com0 + "list > stdout.log"; cout << com << endl; stat = ssystem(com); assert( stat == 0 ); Text out("stdout.log"); cout << out << endl; assert( out.size() == 1 ); assert( out.line(0) == "myfile1.dat myfile2.dat"); msg("List one"); com = com0 + "list myfile1.dat > stdout.log"; cout << com << endl; stat = ssystem(com); assert( stat == 0 ); out = Text("stdout.log"); cout << out << endl; assert( out.size() == 1 ); assert( out.line(0) == "myfile1.dat"); msg("Extract"); unlink("myfile1.dat"); unlink("myfile2.dat"); assert( ! FileStatus("myfile1.dat").exists() ); assert( ! FileStatus("myfile2.dat").exists() ); com = com0 + "extract > stdout.log"; cout << com << endl; stat = ssystem(com); assert( stat == 0 ); out = Text("stdout.log"); cout << out << endl; assert( out.size() == 1 ); assert( out.line(0) == "myfile1.dat myfile2.dat"); assert( FileStatus("myfile1.dat").exists() ); assert( FileStatus("myfile2.dat").exists() ); return 0; } #ifdef CTEST_MAIN int main() { return dataset_text_t(); } #endif