Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2025-04-24 01:27:56

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 
0031     std::string const* sourceCacheTempDir() const final { return nullptr; }
0032     double const* sourceCacheMinFree() const final { return nullptr; }
0033     std::string const* sourceCacheHint() const final { return nullptr; }
0034     std::string const* sourceCloneCacheHint() const final { return nullptr; }
0035     std::string const* sourceReadHint() const final { return nullptr; }
0036     unsigned int const* sourceTTreeCacheSize() const final { return nullptr; }
0037     unsigned int const* sourceTimeout() const final { return nullptr; }
0038     bool enablePrefetching() const final { return false; }
0039     unsigned int debugLevel() const final { return 0; }
0040     std::vector<std::string> const* sourceNativeProtocols() const final { return nullptr; }
0041     struct addrinfo const* statisticsDestination() const final { return nullptr; }
0042     std::set<std::string> const* statisticsInfo() const final { return nullptr; }
0043     std::string const& siteName(void) const final { return m_emptyString; }
0044     std::string const& subSiteName(void) const final { return m_emptyString; }
0045     bool useLocalConnectString() const final { return false; }
0046     std::string const& localConnectPrefix() const final { return m_emptyString; }
0047     std::string const& localConnectSuffix() const final { return m_emptyString; }
0048 
0049   private:
0050     std::vector<std::string> m_trivialCatalogs;
0051     std::vector<edm::CatalogAttributes> m_catalogs;
0052     std::filesystem::path m_storageDescription_path;
0053     std::string m_emptyString;
0054   };
0055 
0056   inline edm::ServiceToken makeTestSiteLocalConfigToken() {
0057     //catalog for testing "prefix"
0058     edm::CatalogAttributes aCatalog;
0059     aCatalog.site = "T1_US_FNAL";
0060     aCatalog.subSite = "T1_US_FNAL";
0061     aCatalog.storageSite = "T1_US_FNAL";
0062     aCatalog.volume = "American_Federation";
0063     aCatalog.protocol = "XRootD";
0064     std::vector<edm::CatalogAttributes> tmp{aCatalog};
0065     //catalog for testing "rules"
0066     aCatalog.site = "T1_US_FNAL";
0067     aCatalog.subSite = "T1_US_FNAL";
0068     aCatalog.storageSite = "T1_US_FNAL";
0069     aCatalog.volume = "FNAL_dCache_EOS";
0070     aCatalog.protocol = "XRootD";
0071     tmp.push_back(aCatalog);
0072     //catalog for testing chained "rules"
0073     aCatalog.site = "T1_US_FNAL";
0074     aCatalog.subSite = "T1_US_FNAL";
0075     aCatalog.storageSite = "T1_US_FNAL";
0076     aCatalog.volume = "FNAL_dCache_EOS";
0077     aCatalog.protocol = "root";
0078     tmp.push_back(aCatalog);
0079 
0080     //create the services
0081     return edm::ServiceToken(edm::ServiceRegistry::createContaining(
0082         std::unique_ptr<edm::SiteLocalConfig>(std::make_unique<TestSiteLocalConfig>(std::move(tmp)))));
0083   }
0084 }  // namespace edmtest::catalog
0085 
0086 #endif