Skip to content
Snippets Groups Projects
Commit 373696be authored by Anastasia Karachaliou's avatar Anastasia Karachaliou
Browse files

correct Unittests in acsd deamon

parent 607c854b
Branches
Tags
No related merge requests found
......@@ -28,7 +28,8 @@
cta::mediachanger::acs::daemon::AcsdCmdLine::AcsdCmdLine():
foreground(false),
help(false),
configLocation(""){
configLocation(""),
readOnly(false){
}
//------------------------------------------------------------------------------
......@@ -38,14 +39,16 @@ cta::mediachanger::acs::daemon::AcsdCmdLine::AcsdCmdLine(const int argc,
char *const *const argv):
foreground(false), //< Prevents daemonisation
help(false), //< Help requested: will print out help and exit.
configLocation(""){ //< Location of the configuration file. Defaults to /etc/cta/cta-taped.conf
configLocation(""), //< Location of the configuration file. Defaults to /etc/cta/cta-taped.conf
readOnly(false){ //< True if the tape is to be mount for read-only access
static struct option longopts[] = {
// { .name, .has_args, .flag, .val } (see getopt.h))
{ "foreground", no_argument, NULL, 'f' },
{ "config", required_argument, NULL, 'c' },
{ "help", no_argument, NULL, 'h' },
{ "config", required_argument, NULL, 'c' },
{ "readOnly" , no_argument, NULL, 'r'},
{ NULL, 0, NULL, '\0' }
};
......@@ -55,27 +58,36 @@ static struct option longopts[] = {
// Prevent getopt from printing out errors on stdout
opterr=0;
// We ask getopt to not reshuffle argv ('+')
while ((c = getopt_long(argc, argv, "+fc:h", longopts, NULL)) != -1) {
while ((c = getopt_long(argc, argv, "fhc:r", longopts, NULL)) != -1) {
//log:write(LOG_INFO, "Usage: [options]\n");
switch (c) {
switch (c) {
case 'r':
readOnly = true;
break;
case 'f':
foreground = true;
break;
case 'c':
configLocation = optarg;
break;
case 'h':
case 'h':{
help = true;
std::cout<<"Usage: "<<"cta-acsd"<<" [options]\n"
"where options can be:\n"
"--foreground or -f Remain in the Foreground\n"
"--config <config-file> or -c Configuration file\n"
"--help or -h Print this help and exit\n";
std::ostringstream usage;
usage <<
"Usage: "<<"cta-acsd"<<" [options]\n"
"where options can be:\n"
"--foreground or -f Remain in the Foreground\n"
"--readOnly or -r Request the volume is mounted for read-only access\n"
"--config <config-file> or -c Configuration file\n"
"--help or -h Print this help and exit\n";}
break;
default:
break;
}
default:{
cta::exception::Exception ex;
ex.getMessage() <<
"getopt_long returned the following unknown value: 0x" <<
std::hex << (int)c;
throw ex;}
}
}
}
......@@ -54,6 +54,10 @@ public:
std::string configLocation;
/**
* True if the tape is to be mount for read-only access.
*/
bool readOnly;
};
......@@ -62,8 +66,3 @@ public:
}
}
......@@ -110,7 +110,6 @@ TEST_F(cta_mediachanger_acs_daemon_AcsdCmdLineTest, constructor_foreground) {
ASSERT_TRUE(acsdcmdLine1.foreground);
}
TEST_F(cta_mediachanger_acs_daemon_AcsdCmdLineTest, constructor_help) {
using namespace cta::mediachanger::acs::daemon;
......@@ -118,26 +117,40 @@ TEST_F(cta_mediachanger_acs_daemon_AcsdCmdLineTest, constructor_help) {
m_argsList.push_back(args);
args->argc = 2;
args->argv = new char *[3];
args->argv[0] = dupString("cta-mediachanger-acs-daemon");
args->argv[0] = dupString("cta-acsd");
args->argv[1] = dupString("-h");
args->argv[2] = NULL;
cta::mediachanger::acs::daemon::AcsdCmdLine acsdcmdLine2(args->argc, args->argv);
ASSERT_TRUE(acsdcmdLine2.help);
}
TEST_F(cta_mediachanger_acs_daemon_AcsdCmdLineTest, constructor_configLocation) {
using namespace cta::mediachanger::acs::daemon;
Argcv *args1 = new Argcv();
m_argsList.push_back(args1);
args1->argc = 2;
args1->argv = new char *[3];
args1->argv[0] = dupString("cta-mediachanger-acs-daemon");
args1->argc = 3;
args1->argv = new char *[4];
args1->argv[0] = dupString("cta-acsd");
args1->argv[1] = dupString("-c");
args1->argv[2] = NULL;
args1->argv[2] = dupString("");
args1->argv[3] = NULL;
cta::mediachanger::acs::daemon::AcsdCmdLine acsdcmdLine3(args1->argc, args1->argv);
ASSERT_EQ(acsdcmdLine3.configLocation,"");
}
TEST_F(cta_mediachanger_acs_daemon_AcsdCmdLineTest, constructor_readOnly) {
using namespace cta::mediachanger::acs::daemon;
Argcv *args = new Argcv();
m_argsList.push_back(args);
args->argc = 2;
args->argv = new char *[3];
args->argv[0] = dupString("cta-acsd");
args->argv[1] = dupString("-r");
args->argv[2] = NULL;
cta::mediachanger::acs::daemon::AcsdCmdLine acsdcmdLine4(args->argc, args->argv);
ASSERT_TRUE(acsdcmdLine4.readOnly);
}
} // namespace unitTests
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment