From aad08ba810038c07f6e0b676e727677a4a6383a1 Mon Sep 17 00:00:00 2001
From: Daniele Kruse <dkruse@cern.ch>
Date: Mon, 9 Mar 2015 18:26:47 +0100
Subject: [PATCH] Fixed small bug with xattr plus created stub VFS test

---
 libs/middletier/CMakeLists.txt |  3 ++-
 libs/middletier/Vfs.cpp        | 10 +++++-----
 libs/middletier/VfsTest.cpp    | 24 ++++++++++++++++++++++++
 3 files changed, 31 insertions(+), 6 deletions(-)
 create mode 100644 libs/middletier/VfsTest.cpp

diff --git a/libs/middletier/CMakeLists.txt b/libs/middletier/CMakeLists.txt
index 4fae59d9a3..06d656a090 100644
--- a/libs/middletier/CMakeLists.txt
+++ b/libs/middletier/CMakeLists.txt
@@ -62,7 +62,8 @@ set (MIDDLE_TIER_UNIT_TESTS_LIB_SRC_FILES
   MockTapePoolTableTest.cpp
   SqliteMiddleTierAdminTest.cpp
   SqliteMiddleTierUserTest.cpp
-  UtilsTest.cpp)
+  UtilsTest.cpp
+  VfsTest.cpp)
 
 add_library (ctamiddletierunittests SHARED
   ${MIDDLE_TIER_UNIT_TESTS_LIB_SRC_FILES})
diff --git a/libs/middletier/Vfs.cpp b/libs/middletier/Vfs.cpp
index f7e5a32afa..b3c39e3eef 100644
--- a/libs/middletier/Vfs.cpp
+++ b/libs/middletier/Vfs.cpp
@@ -68,7 +68,7 @@ cta::Vfs::Vfs() {
     throw(Exception(message.str()));
   }
   
-  rc = setxattr(m_fsDir.c_str(), "CTAStorageClass", (void *)"", 0, XATTR_REPLACE);
+  rc = setxattr(m_fsDir.c_str(), "user.CTAStorageClass", (void *)"", 0, 0);
   if(rc != 0) {
     char buf[256];
     std::ostringstream message;
@@ -91,7 +91,7 @@ void cta::Vfs::setDirectoryStorageClass(const SecurityIdentity &requester, const
   cta::Utils::checkAbsolutePathSyntax(path);
   checkDirectoryExists(m_fsDir+path);
   
-  int rc = setxattr((m_fsDir+path).c_str(), "CTAStorageClass", (void *)(storageClassName.c_str()), storageClassName.length(), XATTR_REPLACE);
+  int rc = setxattr((m_fsDir+path).c_str(), "user.CTAStorageClass", (void *)(storageClassName.c_str()), storageClassName.length(), 0);
   if(rc != 0) {
     char buf[256];
     std::ostringstream message;
@@ -107,7 +107,7 @@ void cta::Vfs::clearDirectoryStorageClass(const SecurityIdentity &requester, con
   cta::Utils::checkAbsolutePathSyntax(path);
   checkDirectoryExists(m_fsDir+path);
   
-  int rc = removexattr((m_fsDir+path).c_str(), "CTAStorageClass");
+  int rc = removexattr((m_fsDir+path).c_str(), "user.CTAStorageClass");
   if(rc != 0) {
     char buf[256];
     std::ostringstream message;
@@ -124,11 +124,11 @@ std::string cta::Vfs::getDirectoryStorageClass(const SecurityIdentity &requester
   checkDirectoryExists(m_fsDir+path);
   
   char value[1024];
-  int rc = getxattr((m_fsDir+path).c_str(), "CTAStorageClass", (void *)value, 1024);
+  int rc = getxattr((m_fsDir+path).c_str(), "user.CTAStorageClass", (void *)value, 1024);
   if(rc != 0) {
     char buf[256];
     std::ostringstream message;
-    message << "setDirectoryStorageClass() - " << m_fsDir+path << " setxattr error. Reason: " << strerror_r(errno, buf, 256);
+    message << "setDirectoryStorageClass() - " << m_fsDir+path << " getxattr error. Reason: " << strerror_r(errno, buf, 256);
     throw(Exception(message.str()));
   }
   return std::string(value);
diff --git a/libs/middletier/VfsTest.cpp b/libs/middletier/VfsTest.cpp
new file mode 100644
index 0000000000..d6e43a10f2
--- /dev/null
+++ b/libs/middletier/VfsTest.cpp
@@ -0,0 +1,24 @@
+#include "Vfs.hpp"
+
+#include <gtest/gtest.h>
+
+namespace unitTests {
+
+class cta_VfsTest: public ::testing::Test {
+protected:
+
+  virtual void SetUp() {
+  }
+
+  virtual void TearDown() {
+  }
+};
+
+TEST_F(cta_VfsTest, trimSlashes_emptyString) {
+  using namespace cta;
+
+  Vfs vfs;
+  const std::string s;
+}
+
+}
\ No newline at end of file
-- 
GitLab