Skip to content
Snippets Groups Projects
Commit 71dc2079 authored by Eric Cano's avatar Eric Cano
Browse files

Created a unit test for showqueues and fixed bug.

Wrong parameter passing fixed.
parent 2df7bba4
Branches
Tags
No related merge requests found
......@@ -25,7 +25,7 @@ namespace cta {
namespace common {
namespace dataStructures {
QueueAndMountSummary& QueueAndMountSummary::getOrCreateEntry(std::list<QueueAndMountSummary> summaryList, MountType mountType, const std::string& tapePool, const std::string vid) {
QueueAndMountSummary& QueueAndMountSummary::getOrCreateEntry(std::list<QueueAndMountSummary> & summaryList, MountType mountType, const std::string& tapePool, const std::string vid) {
for (auto & summary: summaryList) {
if ((mountType==MountType::Archive && summary.tapePool==tapePool) ||
(mountType==MountType::Retrieve && summary.vid==vid))
......
......@@ -49,7 +49,7 @@ struct QueueAndMountSummary {
uint64_t disabledTapes=0;
uint64_t writableTapes=0;
static QueueAndMountSummary & getOrCreateEntry(std::list<QueueAndMountSummary> summaryList, MountType mountType, const std::string & tapePool, const std::string vid);
static QueueAndMountSummary & getOrCreateEntry(std::list<QueueAndMountSummary> & summaryList, MountType mountType, const std::string & tapePool, const std::string vid);
};
}}} //namespace cta::common::dataStructures
\ No newline at end of file
......@@ -662,6 +662,7 @@ std::list<common::dataStructures::QueueAndMountSummary> Scheduler::getQueuesAndM
std::list<common::dataStructures::QueueAndMountSummary> ret;
// Extract relevant information from the object store.
auto mountDecisionInfo=m_db.getMountInfoNoLock();
auto & mdi __attribute__((unused)) = *mountDecisionInfo;
for (auto & pm: mountDecisionInfo->potentialMounts) {
// Find or create the relevant entry.
auto & summary = common::dataStructures::QueueAndMountSummary::getOrCreateEntry(ret, pm.type, pm.tapePool, pm.vid);
......
......@@ -635,6 +635,49 @@ TEST_P(SchedulerTest, retrieve_non_existing_file) {
}
}
TEST_P(SchedulerTest, showqueues) {
using namespace cta;
setupDefaultCatalogue();
Scheduler &scheduler = getScheduler();
log::DummyLogger dl("");
log::LogContext lc(dl);
uint64_t archiveFileId __attribute__((unused));
{
// Queue an archive request.
cta::common::dataStructures::EntryLog creationLog;
creationLog.host="host2";
creationLog.time=0;
creationLog.username="admin1";
cta::common::dataStructures::DiskFileInfo diskFileInfo;
diskFileInfo.recoveryBlob="blob";
diskFileInfo.group="group2";
diskFileInfo.owner="cms_user";
diskFileInfo.path="path/to/file";
cta::common::dataStructures::ArchiveRequest request;
request.checksumType="ADLER32";
request.checksumValue="1111";
request.creationLog=creationLog;
request.diskFileInfo=diskFileInfo;
request.diskFileID="diskFileID";
request.fileSize=100*1000*1000;
cta::common::dataStructures::UserIdentity requester;
requester.name = s_userName;
requester.group = "userGroup";
request.requester = requester;
request.srcURL="srcURL";
request.storageClass=s_storageClassName;
archiveFileId = scheduler.queueArchive(s_diskInstance, request, lc);
}
// get the queues from scheduler
auto queuesSummary = scheduler.getQueuesAndMountSummaries(lc);
ASSERT_EQ(1, queuesSummary.size());
}
#undef TEST_MOCK_DB
#ifdef TEST_MOCK_DB
static cta::MockSchedulerDatabaseFactory mockDbFactory;
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment