11 #include <hlt/softwaretrigger/core/SoftwareTriggerDBHandler.h>
12 #include <framework/database/Configuration.h>
13 #include <framework/database/Database.h>
15 #include <framework/utilities/TestHelpers.h>
16 #include <gtest/gtest.h>
25 namespace SoftwareTrigger {
38 DataStore::Instance().setInitializeActive(
true);
39 evtPtr.registerInDataStore();
40 DataStore::Instance().setInitializeActive(
false);
43 auto& conf = Conditions::Configuration::getInstance();
44 conf.setNewPayloadLocation(m_tmpDir->
getTempDir() +
"/testPayloads/TestDatabase.txt");
45 conf.prependTestingPayloadLocation(m_tmpDir->
getTempDir() +
"/testPayloads/TestDatabase.txt");
52 DBStore::Instance().reset();
53 DataStore::Instance().reset();
60 TEST_F(SoftwareTriggerDBHandlerTest, downloadAndChanged)
62 SoftwareTriggerObject preFilledObject;
67 const auto& cutOne = SoftwareTriggerCut::compile(
"1 == 1", 1);
70 SoftwareTriggerDBHandler::upload(cutOne,
"test",
"cutOne", iov);
73 SoftwareTriggerDBHandler::uploadTriggerMenu(
"test", {
"cutOne",
"cutTwo"},
true, iov);
74 EXPECT_B2FATAL(SoftwareTriggerDBHandler(
"test"));
77 SoftwareTriggerDBHandler::uploadTriggerMenu(
"test", {
"cutOne"},
true, iov);
79 SoftwareTriggerDBHandler dbHandler(
"test");
80 const auto& cutsWithNames = dbHandler.getCutsWithNames();
81 EXPECT_EQ(SoftwareTriggerCutResult::c_accept,
82 cutsWithNames.at(
"software_trigger_cut&test&cutOne")->checkPreScaled(preFilledObject));
83 EXPECT_THROW(cutsWithNames.at(
"software_trigger_cut&test&cutTwo"), std::out_of_range);
86 const auto& cutTwo = SoftwareTriggerCut::compile(
"1 == 2", 1);
89 SoftwareTriggerDBHandler::upload(cutOne,
"test2",
"cutOne", iov);
90 SoftwareTriggerDBHandler::upload(cutTwo,
"test2",
"cutTwo", iov);
93 SoftwareTriggerDBHandler::uploadTriggerMenu(
"test2", {
"cutOne",
"cutTwo"},
true, iov);
95 SoftwareTriggerDBHandler otherDBHandler(
"test2");
96 const auto& otherCutsWithNames = otherDBHandler.getCutsWithNames();
98 EXPECT_EQ(SoftwareTriggerCutResult::c_accept,
99 otherCutsWithNames.at(
"software_trigger_cut&test2&cutOne")->checkPreScaled(preFilledObject));
100 EXPECT_EQ(SoftwareTriggerCutResult::c_noResult,
101 otherCutsWithNames.at(
"software_trigger_cut&test2&cutTwo")->checkPreScaled(preFilledObject));
106 TEST_F(SoftwareTriggerDBHandlerTest, pythonUpAndDownload)
108 IntervalOfValidity iov(0, 0, -1, -1);
111 auto cutOne = SoftwareTriggerCut::compile(
"1 == 1", 1);
113 SoftwareTriggerDBHandler::upload(cutOne,
"test",
"cutOne1", iov);
114 auto downloadedCutOne = SoftwareTriggerDBHandler::download(
"test",
"cutOne1");
116 ASSERT_NE(downloadedCutOne,
nullptr);
118 EXPECT_EQ(cutOne->decompile(), downloadedCutOne->decompile());
119 EXPECT_EQ(cutOne->getPreScaleFactor(), downloadedCutOne->getPreScaleFactor());
120 EXPECT_EQ(cutOne->isRejectCut(), downloadedCutOne->isRejectCut());
123 const auto& cutTwo = SoftwareTriggerCut::compile(
"1 == 2", 1,
true);
125 SoftwareTriggerDBHandler::upload(cutTwo,
"test",
"cutTwo2", iov);
126 const auto& downloadedCutTwo = SoftwareTriggerDBHandler::download(
"test",
"cutTwo2");
128 ASSERT_NE(downloadedCutTwo,
nullptr);
130 EXPECT_EQ(cutTwo->decompile(), downloadedCutTwo->decompile());
131 EXPECT_EQ(cutTwo->getPreScaleFactor(), downloadedCutTwo->getPreScaleFactor());
132 EXPECT_EQ(cutTwo->isRejectCut(), downloadedCutTwo->isRejectCut());