From 24ff324a44b19f63d50c56aadec23e5deca927ec Mon Sep 17 00:00:00 2001
From: Michael Davis <michael.davis@cern.ch>
Date: Wed, 22 Jan 2020 10:26:47 +0100
Subject: [PATCH] [ci] Fixes unit tests for getTapes()

---
 catalogue/CatalogueTest.cpp  | 27 ++++++++++++++-------------
 catalogue/RdbmsCatalogue.cpp |  2 +-
 2 files changed, 15 insertions(+), 14 deletions(-)

diff --git a/catalogue/CatalogueTest.cpp b/catalogue/CatalogueTest.cpp
index a164fb318a..e31180211e 100644
--- a/catalogue/CatalogueTest.cpp
+++ b/catalogue/CatalogueTest.cpp
@@ -3749,19 +3749,6 @@ TEST_P(cta_catalogue_CatalogueTest, createTape_many_tapes) {
     ASSERT_FALSE(vidToTape.begin()->second.full);
   }
 
-  {
-    catalogue::TapeSearchCriteria searchCriteria;
-    std::vector<std::string> diskFileIds;
-    diskFileIds.push_back("1");
-    searchCriteria.diskFileIds = diskFileIds;
-    const std::list<common::dataStructures::Tape> tapes = m_catalogue->getTapes(searchCriteria);
-    ASSERT_EQ(1, tapes.size());
-    const std::map<std::string, common::dataStructures::Tape> vidToTape = tapeListToMap(tapes);
-    ASSERT_EQ(1, vidToTape.size());
-    ASSERT_EQ("vid1", vidToTape.begin()->first);
-    ASSERT_EQ("vid1", vidToTape.begin()->second.vid);
-  }
-
   {
     catalogue::TapeSearchCriteria searchCriteria;
     searchCriteria.vid = "non_existent_vid";
@@ -3959,6 +3946,20 @@ TEST_P(cta_catalogue_CatalogueTest, createTape_1_tape_with_write_log_1_tape_with
     m_catalogue->filesWrittenToTape(file1WrittenSet);
   }
 
+  {
+    // Check that a lookup of diskFileId 5678 returns 1 tape
+    catalogue::TapeSearchCriteria searchCriteria;
+    std::vector<std::string> diskFileIds;
+    diskFileIds.push_back("5678");
+    searchCriteria.diskFileIds = diskFileIds;
+    const std::list<common::dataStructures::Tape> tapes = m_catalogue->getTapes(searchCriteria);
+    ASSERT_EQ(1, tapes.size());
+    const std::map<std::string, common::dataStructures::Tape> vidToTape = tapeListToMap(tapes);
+    ASSERT_EQ(1, vidToTape.size());
+    ASSERT_EQ("vid1", vidToTape.begin()->first);
+    ASSERT_EQ("vid1", vidToTape.begin()->second.vid);
+  }
+
   {
     const auto pools = m_catalogue->getTapePools();
     ASSERT_EQ(1, pools.size());
diff --git a/catalogue/RdbmsCatalogue.cpp b/catalogue/RdbmsCatalogue.cpp
index 5fcaea0d9e..87b44fcd11 100644
--- a/catalogue/RdbmsCatalogue.cpp
+++ b/catalogue/RdbmsCatalogue.cpp
@@ -2462,7 +2462,7 @@ std::list<common::dataStructures::Tape> RdbmsCatalogue::getTapes(rdbms::Conn &co
     if(searchCriteria.diskFileIds) {
       if(addedAWhereConstraint) sql += " AND ";
       sql += " VID IN ("
-         "SELECT UNIQUE A.VID "
+         "SELECT DISTINCT A.VID "
          "FROM "
            "TAPE_FILE A, ARCHIVE_FILE B "
          "WHERE "
-- 
GitLab