// PoolFileCatalog_t.cxx #include "dataset_pool/PoolFileCatalog.h" #include #include #include "dataset_util/FileStatus.h" #include "dataset_util/Text.h" #include "dataset_util/FileFinder.h" #include "dataset_util/getcwd.h" using std::string; using std::cout; using std::endl; using dset::Url; using dset::FileCatalog; using dset::PoolFileCatalog; // Display messsage. void msg(string txt) { cout << "*** " << txt << endl; } int PoolFileCatalog_t() { system("rm -f dial_testfile.dat pooltest.xml"); msg("Testing static_type"); assert( PoolFileCatalog::static_type() == "PoolFileCatalog" ); string name = "file:pooltest.xml"; PoolFileCatalog& fc = PoolFileCatalog::instance(name); msg("Testing type"); assert( fc.type() == "PoolFileCatalog" ); msg("Testing name"); assert( fc.name() == name ); msg("Generic locator"); assert( FileCatalog::locate(fc.type(), fc.name()) != 0 ); assert( FileCatalog::locate(fc.type(), fc.name()) == &fc ); msg("Add non-pool entry"); string pfn = "dial_testfile.dat"; Text txt("dial_testfile.dat"); txt.append("DIAL test file"); txt.write(); Url furl1("file:" + pfn); Url lurl1 = fc.insert(furl1); assert( lurl1.is_valid() ); cout << lurl1 << endl; assert( lurl1.prefix() == "guid" ); msg("Add pool entry"); string guid = "6EE5919F-6142-DA11-860D-00E08127F2DF"; Url chklurl2("guid:" + guid); assert( chklurl2.is_valid() ); FileFinder fnd(getcwd(), 5, -1); pfn = fnd.find("poolfile.root"); Url furl2("file:" + pfn); assert( furl2.is_valid() ); cout << "Physical URL: " << furl2 << endl; assert( ! fc.has(chklurl2) ); Url lurl2 = fc.insert(furl2); assert( fc.has(chklurl2) ); assert( lurl2 == chklurl2 ); cout << lurl2 << endl; assert( lurl2.prefix() == "guid" ); msg("Get replicas"); FileCatalog::UrlList outurls = fc.replicas(lurl2); assert( outurls.size() == 1 ); cout << outurls[0] << endl; assert( outurls[0] == furl2 ); msg("GUID"); assert( fc.guid(lurl1) == lurl1 ); assert( fc.guid(lurl2) == lurl2 ); msg("LFN"); assert( ! fc.lfn(lurl1).is_valid() ); assert( ! fc.lfn(lurl2).is_valid() ); return 0; } #ifdef CTEST_MAIN int main() { return PoolFileCatalog_t(); } #endif