Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2025-01-09 23:33:32

0001 #ifndef FWCore_Catalog_test_TestSiteLocalConfig_h
0002 #define FWCore_Catalog_test_TestSiteLocalConfig_h
0003 
0004 #include "FWCore/Catalog/interface/SiteLocalConfig.h"
0005 
0006 #include <cstdlib>
0007 #include <filesystem>
0008 #include <string>
0009 
0010 namespace edmtest::catalog {
0011   class TestSiteLocalConfig : public edm::SiteLocalConfig {
0012   public:
0013     //constructor using trivial data catalogs
0014     TestSiteLocalConfig(std::vector<std::string> catalogs) : m_trivialCatalogs(std::move(catalogs)) {}
0015     //constructor using Rucio data catalogs
0016     TestSiteLocalConfig(std::vector<edm::CatalogAttributes> catalogs) : m_catalogs(std::move(catalogs)) {}
0017     std::vector<std::string> const& trivialDataCatalogs() const final { return m_trivialCatalogs; }
0018     std::vector<edm::CatalogAttributes> const& dataCatalogs() const final { return m_catalogs; }
0019     std::filesystem::path const storageDescriptionPath(const edm::CatalogAttributes& aDataCatalog) const final {
0020       std::string CMSSW_BASE(std::getenv("CMSSW_BASE"));
0021       std::string CMSSW_RELEASE_BASE(std::getenv("CMSSW_RELEASE_BASE"));
0022       std::string file_name("/src/FWCore/Catalog/test/storage.json");
0023       std::string full_file_name = std::filesystem::exists((CMSSW_BASE + file_name).c_str())
0024                                        ? CMSSW_BASE + file_name
0025                                        : CMSSW_RELEASE_BASE + file_name;
0026       return full_file_name;
0027     }
0028 
0029     std::string const lookupCalibConnect(std::string const& input) const final { return std::string(); }
0030     std::string const rfioType(void) const final { return std::string(); }
0031 
0032     std::string const* sourceCacheTempDir() const final { return nullptr; }
0033     double const* sourceCacheMinFree() const final { return nullptr; }
0034     std::string const* sourceCacheHint() const final { return nullptr; }
0035     std::string const* sourceCloneCacheHint() const final { return nullptr; }
0036     std::string const* sourceReadHint() const final { return nullptr; }
0037     unsigned int const* sourceTTreeCacheSize() const final { return nullptr; }
0038     unsigned int const* sourceTimeout() const final { return nullptr; }
0039     bool enablePrefetching() const final { return false; }
0040     unsigned int debugLevel() const final { return 0; }
0041     std::vector<std::string> const* sourceNativeProtocols() const final { return nullptr; }
0042     struct addrinfo const* statisticsDestination() const final { return nullptr; }
0043     std::set<std::string> const* statisticsInfo() const final { return nullptr; }
0044     std::string const& siteName(void) const final { return m_emptyString; }
0045     std::string const& subSiteName(void) const final { return m_emptyString; }
0046     bool useLocalConnectString() const final { return false; }
0047     std::string const& localConnectPrefix() const final { return m_emptyString; }
0048     std::string const& localConnectSuffix() const final { return m_emptyString; }
0049 
0050   private:
0051     std::vector<std::string> m_trivialCatalogs;
0052     std::vector<edm::CatalogAttributes> m_catalogs;
0053     std::filesystem::path m_storageDescription_path;
0054     std::string m_emptyString;
0055   };
0056 
0057   inline edm::ServiceToken makeTestSiteLocalConfigToken() {
0058     //catalog for testing "prefix"
0059     edm::CatalogAttributes aCatalog;
0060     aCatalog.site = "T1_US_FNAL";
0061     aCatalog.subSite = "T1_US_FNAL";
0062     aCatalog.storageSite = "T1_US_FNAL";
0063     aCatalog.volume = "American_Federation";
0064     aCatalog.protocol = "XRootD";
0065     std::vector<edm::CatalogAttributes> tmp{aCatalog};
0066     //catalog for testing "rules"
0067     aCatalog.site = "T1_US_FNAL";
0068     aCatalog.subSite = "T1_US_FNAL";
0069     aCatalog.storageSite = "T1_US_FNAL";
0070     aCatalog.volume = "FNAL_dCache_EOS";
0071     aCatalog.protocol = "XRootD";
0072     tmp.push_back(aCatalog);
0073     //catalog for testing chained "rules"
0074     aCatalog.site = "T1_US_FNAL";
0075     aCatalog.subSite = "T1_US_FNAL";
0076     aCatalog.storageSite = "T1_US_FNAL";
0077     aCatalog.volume = "FNAL_dCache_EOS";
0078     aCatalog.protocol = "root";
0079     tmp.push_back(aCatalog);
0080 
0081     //create the services
0082     return edm::ServiceToken(edm::ServiceRegistry::createContaining(
0083         std::unique_ptr<edm::SiteLocalConfig>(std::make_unique<TestSiteLocalConfig>(std::move(tmp)))));
0084   }
0085 }  // namespace edmtest::catalog
0086 
0087 #endif