added getSchedulerTime() function
This commit is contained in:
parent
8ef10ef1ba
commit
cb38affb2a
|
@ -21,7 +21,7 @@
|
|||
#
|
||||
#
|
||||
# Author : $Author: maroy $
|
||||
# Version : $Revision: 1.1 $
|
||||
# Version : $Revision: 1.2 $
|
||||
# Location : $Source: /home/paul/cvs2svn-livesupport/newcvsrepo/livesupport/modules/schedulerClient/etc/Makefile.in,v $
|
||||
#
|
||||
# @configure_input@
|
||||
|
@ -63,6 +63,12 @@ CORE_LIB_DIR = ${CORE_DIR}/lib
|
|||
CORE_LIB = livesupport_core
|
||||
CORE_LIB_FILE = ${CORE_LIB_DIR}/lib${CORE_LIB}.a
|
||||
|
||||
AUTHENTICATION_DIR = ${MODULES_DIR}/authentication
|
||||
AUTHENTICATION_INCLUDE_DIR = ${AUTHENTICATION_DIR}/include
|
||||
AUTHENTICATION_LIB_DIR = ${AUTHENTICATION_DIR}/lib
|
||||
AUTHENTICATION_LIB = livesupport_authentication
|
||||
AUTHENTICATION_LIB_FILE = ${AUTHENTICATION_LIB_DIR}/lib${AUTHENTICATION_LIB}.a
|
||||
|
||||
PRODUCTS_DIR = ${BASE_DIR}/../../products
|
||||
|
||||
SCHEDULER_DIR = ${PRODUCTS_DIR}/scheduler
|
||||
|
@ -94,8 +100,13 @@ CXXFLAGS = @CXXFLAGS@ @DEFS@ @COVERAGE_CXXFLAGS@ -pthread \
|
|||
-I${BOOST_INCLUDE_DIR} \
|
||||
-I${LIBXMLPP_INCLUDE_DIR} \
|
||||
-I${CORE_INCLUDE_DIR} \
|
||||
-I${AUTHENTICATION_INCLUDE_DIR} \
|
||||
-I${INCLUDE_DIR} -I${TMP_DIR}
|
||||
LDFLAGS = @LDFLAGS@ -pthread -L${USR_LIB_DIR} -L${CORE_LIB_DIR} -L${LIB_DIR}
|
||||
LDFLAGS = @LDFLAGS@ -pthread \
|
||||
-L${USR_LIB_DIR} \
|
||||
-L${CORE_LIB_DIR} \
|
||||
-L${AUTHENTICATION_LIB_DIR} \
|
||||
-L${LIB_DIR}
|
||||
|
||||
|
||||
#-------------------------------------------------------------------------------
|
||||
|
@ -108,7 +119,10 @@ TEST_RUNNER_OBJS = ${TMP_DIR}/TestRunner.o \
|
|||
${TMP_DIR}/SchedulerDaemonXmlRpcClientTest.o \
|
||||
${TMP_DIR}/SchedulerClientFactoryTest.o
|
||||
|
||||
TEST_RUNNER_LIBS = -l${SCHEDULER_CLIENT_LIB} -l${CORE_LIB} -lxml++-1.0 \
|
||||
TEST_RUNNER_LIBS = -l${SCHEDULER_CLIENT_LIB} \
|
||||
-l${CORE_LIB} \
|
||||
-l${AUTHENTICATION_LIB} \
|
||||
-lboost_date_time-gcc -lxml++-1.0 \
|
||||
-lcppunit -ldl -lxmlrpc++ -lssl
|
||||
|
||||
|
||||
|
@ -136,6 +150,8 @@ docclean:
|
|||
${RM} ${TEST_RESULTS}
|
||||
|
||||
depclean: clean
|
||||
${MAKE} -C ${AUTHENTICATION_DIR} clean
|
||||
${MAKE} -C ${CORE_DIR} clean
|
||||
|
||||
distclean: clean docclean
|
||||
${RMDIR} ${TMP_DIR}/config* ${TMP_DIR}/autom4te*
|
||||
|
@ -176,6 +192,9 @@ ${TEST_RUNNER}: ${CORE_LIB_FILE} ${TEST_RUNNER_OBJS} ${SCHEDULER_CLIENT_LIB_FILE
|
|||
${CORE_LIB_FILE}:
|
||||
${MAKE} -C ${CORE_DIR}
|
||||
|
||||
${AUTHENTICATION_LIB_FILE}:
|
||||
${MAKE} -C ${AUTHENTICATION_DIR}
|
||||
|
||||
${SCHEDULER_EXE}:
|
||||
${MAKE} -C ${SCHEDULER_DIR}
|
||||
|
||||
|
|
|
@ -21,7 +21,7 @@ dnl Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
|||
dnl
|
||||
dnl
|
||||
dnl Author : $Author: maroy $
|
||||
dnl Version : $Revision: 1.1 $
|
||||
dnl Version : $Revision: 1.2 $
|
||||
dnl Location : $Source: /home/paul/cvs2svn-livesupport/newcvsrepo/livesupport/modules/schedulerClient/etc/configure.ac,v $
|
||||
dnl-----------------------------------------------------------------------------
|
||||
|
||||
|
@ -35,14 +35,14 @@ dnl-----------------------------------------------------------------------------
|
|||
AC_INIT(StorageClient, 1.0, bugs@campware.org)
|
||||
AC_PREREQ(2.59)
|
||||
AC_COPYRIGHT([Copyright (c) 2004 Media Development Loan Fund under the GNU GPL])
|
||||
AC_REVISION($Revision: 1.1 $)
|
||||
AC_REVISION($Revision: 1.2 $)
|
||||
|
||||
AC_CONFIG_SRCDIR(../include/LiveSupport/SchedulerClient/SchedulerClientFactory.h)
|
||||
|
||||
AC_CONFIG_HEADERS(configure.h)
|
||||
AC_PROG_CXX()
|
||||
|
||||
AC_CHECK_HEADERS(getopt.h)
|
||||
AC_CHECK_HEADERS(getopt.h sys/time.h)
|
||||
|
||||
dnl-----------------------------------------------------------------------------
|
||||
dnl enable compilaton for code coverage data
|
||||
|
|
|
@ -22,7 +22,7 @@
|
|||
|
||||
|
||||
Author : $Author: maroy $
|
||||
Version : $Revision: 1.1 $
|
||||
Version : $Revision: 1.2 $
|
||||
Location : $Source: /home/paul/cvs2svn-livesupport/newcvsrepo/livesupport/modules/schedulerClient/include/LiveSupport/SchedulerClient/SchedulerClientInterface.h,v $
|
||||
|
||||
------------------------------------------------------------------------------*/
|
||||
|
@ -41,8 +41,10 @@
|
|||
#endif
|
||||
|
||||
#include <stdexcept>
|
||||
#include "boost/date_time/posix_time/posix_time.hpp"
|
||||
|
||||
#include "LiveSupport/Core/Ptr.h"
|
||||
#include "LiveSupport/Core/SessionId.h"
|
||||
|
||||
namespace LiveSupport {
|
||||
namespace SchedulerClient {
|
||||
|
@ -62,7 +64,7 @@ using namespace LiveSupport::Core;
|
|||
* An interface to access the scheduler daemon as a client.
|
||||
*
|
||||
* @author $Author: maroy $
|
||||
* @version $Revision: 1.1 $
|
||||
* @version $Revision: 1.2 $
|
||||
*/
|
||||
class SchedulerClientInterface
|
||||
{
|
||||
|
@ -76,6 +78,18 @@ class SchedulerClientInterface
|
|||
virtual Ptr<const std::string>::Ref
|
||||
getVersion(void) throw ()
|
||||
= 0;
|
||||
|
||||
/**
|
||||
* Return the current time at the scheduler server.
|
||||
*
|
||||
* @param sessionId a sessionId previously acquired by successfully
|
||||
* authenticating with the authentication module
|
||||
* @return the current time at the scheduler server.
|
||||
*/
|
||||
virtual Ptr<const boost::posix_time::ptime>::Ref
|
||||
getSchedulerTime(Ptr<SessionId>::Ref sessionId)
|
||||
throw ()
|
||||
= 0;
|
||||
};
|
||||
|
||||
|
||||
|
|
|
@ -22,7 +22,7 @@
|
|||
|
||||
|
||||
Author : $Author: maroy $
|
||||
Version : $Revision: 1.1 $
|
||||
Version : $Revision: 1.2 $
|
||||
Location : $Source: /home/paul/cvs2svn-livesupport/newcvsrepo/livesupport/modules/schedulerClient/src/SchedulerDaemonXmlRpcClient.cxx,v $
|
||||
|
||||
------------------------------------------------------------------------------*/
|
||||
|
@ -39,6 +39,7 @@
|
|||
#include <XmlRpcClient.h>
|
||||
#include <XmlRpcValue.h>
|
||||
|
||||
#include "LiveSupport/Core/TimeConversion.h"
|
||||
#include "SchedulerDaemonXmlRpcClient.h"
|
||||
|
||||
using namespace boost::posix_time;
|
||||
|
@ -150,3 +151,39 @@ SchedulerDaemonXmlRpcClient :: getVersion(void) throw ()
|
|||
return result;
|
||||
}
|
||||
|
||||
|
||||
/*------------------------------------------------------------------------------
|
||||
* Get the current time from the server.
|
||||
*----------------------------------------------------------------------------*/
|
||||
Ptr<const ptime>::Ref
|
||||
SchedulerDaemonXmlRpcClient :: getSchedulerTime(
|
||||
Ptr<SessionId>::Ref sessionId)
|
||||
throw ()
|
||||
{
|
||||
XmlRpcValue xmlRpcParams;
|
||||
XmlRpcValue xmlRpcResult;
|
||||
Ptr<const ptime>::Ref result;
|
||||
|
||||
XmlRpcClient xmlRpcClient(xmlRpcHost->c_str(),
|
||||
xmlRpcPort,
|
||||
xmlRpcUri->c_str(),
|
||||
false);
|
||||
|
||||
xmlRpcResult.clear();
|
||||
xmlRpcParams["sessionId"] = sessionId->getId();
|
||||
xmlRpcClient.execute("getSchedulerTime", xmlRpcParams, xmlRpcResult);
|
||||
|
||||
if (xmlRpcResult.hasMember("schedulerTime")) {
|
||||
struct tm time = xmlRpcResult["schedulerTime"];
|
||||
|
||||
try {
|
||||
result = TimeConversion::tmToPtime(&time);
|
||||
} catch (std::out_of_range &e) {
|
||||
// TODO: report error, for some reason the returned time is wrong
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
|
|
|
@ -22,7 +22,7 @@
|
|||
|
||||
|
||||
Author : $Author: maroy $
|
||||
Version : $Revision: 1.1 $
|
||||
Version : $Revision: 1.2 $
|
||||
Location : $Source: /home/paul/cvs2svn-livesupport/newcvsrepo/livesupport/modules/schedulerClient/src/SchedulerDaemonXmlRpcClient.h,v $
|
||||
|
||||
------------------------------------------------------------------------------*/
|
||||
|
@ -90,7 +90,7 @@ using namespace LiveSupport::Core;
|
|||
* </code></pre>
|
||||
*
|
||||
* @author $Author: maroy $
|
||||
* @version $Revision: 1.1 $
|
||||
* @version $Revision: 1.2 $
|
||||
*/
|
||||
class SchedulerDaemonXmlRpcClient :
|
||||
virtual public Configurable,
|
||||
|
@ -162,6 +162,14 @@ class SchedulerDaemonXmlRpcClient :
|
|||
*/
|
||||
virtual Ptr<const std::string>::Ref
|
||||
getVersion(void) throw ();
|
||||
|
||||
/**
|
||||
* Return the current time at the scheduler server.
|
||||
*
|
||||
* @return the current time at the scheduler server.
|
||||
*/
|
||||
virtual Ptr<const boost::posix_time::ptime>::Ref
|
||||
getSchedulerTime(Ptr<SessionId>::Ref sessionId) throw ();
|
||||
};
|
||||
|
||||
|
||||
|
|
|
@ -22,7 +22,7 @@
|
|||
|
||||
|
||||
Author : $Author: maroy $
|
||||
Version : $Revision: 1.1 $
|
||||
Version : $Revision: 1.2 $
|
||||
Location : $Source: /home/paul/cvs2svn-livesupport/newcvsrepo/livesupport/modules/schedulerClient/src/SchedulerDaemonXmlRpcClientTest.cxx,v $
|
||||
|
||||
------------------------------------------------------------------------------*/
|
||||
|
@ -44,10 +44,15 @@
|
|||
#include <fstream>
|
||||
#include <iostream>
|
||||
|
||||
#include "LiveSupport/Core/TimeConversion.h"
|
||||
#include "LiveSupport/Authentication/AuthenticationClientFactory.h"
|
||||
#include "SchedulerDaemonXmlRpcClientTest.h"
|
||||
|
||||
|
||||
using namespace boost::posix_time;
|
||||
|
||||
using namespace LiveSupport::Core;
|
||||
using namespace LiveSupport::Authentication;
|
||||
using namespace LiveSupport::SchedulerClient;
|
||||
|
||||
/* =================================================== local data structures */
|
||||
|
@ -62,12 +67,34 @@ CPPUNIT_TEST_SUITE_REGISTRATION(SchedulerDaemonXmlRpcClientTest);
|
|||
*/
|
||||
static const std::string configFileName = "etc/schedulerDaemonXmlRpcClient.xml";
|
||||
|
||||
/**
|
||||
* The name of the configuration file for the authentication client factory.
|
||||
*/
|
||||
static const std::string authenticationClientConfigFileName =
|
||||
"etc/authenticationClient.xml";
|
||||
|
||||
|
||||
/* =============================================== local function prototypes */
|
||||
|
||||
|
||||
/* ============================================================= module code */
|
||||
|
||||
/*------------------------------------------------------------------------------ * Configure a Configurable with an XML file.
|
||||
*----------------------------------------------------------------------------*/void
|
||||
SchedulerDaemonXmlRpcClientTest :: configure(
|
||||
Ptr<Configurable>::Ref configurable,
|
||||
const std::string & fileName)
|
||||
throw (std::invalid_argument,
|
||||
xmlpp::exception)
|
||||
{
|
||||
Ptr<xmlpp::DomParser>::Ref parser(new xmlpp::DomParser(fileName, true));
|
||||
const xmlpp::Document * document = parser->get_document();
|
||||
const xmlpp::Element * root = document->get_root_node();
|
||||
|
||||
configurable->configure(*root);
|
||||
}
|
||||
|
||||
|
||||
/*------------------------------------------------------------------------------
|
||||
* Set up the test environment
|
||||
*----------------------------------------------------------------------------*/
|
||||
|
@ -87,6 +114,24 @@ SchedulerDaemonXmlRpcClientTest :: setUp(void) throw ()
|
|||
} catch (xmlpp::exception &e) {
|
||||
CPPUNIT_FAIL("error parsing configuration file");
|
||||
}
|
||||
|
||||
try {
|
||||
Ptr<AuthenticationClientFactory>::Ref acf;
|
||||
acf = AuthenticationClientFactory::getInstance();
|
||||
configure(acf, authenticationClientConfigFileName);
|
||||
authentication = acf->getAuthenticationClient();
|
||||
} catch (std::invalid_argument &e) {
|
||||
std::cerr << e.what() << std::endl;
|
||||
CPPUNIT_FAIL("semantic error in authentication configuration file");
|
||||
} catch (xmlpp::exception &e) {
|
||||
std::cerr << e.what() << std::endl;
|
||||
CPPUNIT_FAIL("error parsing authentication configuration file");
|
||||
}
|
||||
|
||||
if (!(sessionId = authentication->login("root", "q"))) {
|
||||
CPPUNIT_FAIL("could not log in to authentication server");
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
@ -97,14 +142,18 @@ void
|
|||
SchedulerDaemonXmlRpcClientTest :: tearDown(void) throw ()
|
||||
{
|
||||
schedulerClient.reset();
|
||||
|
||||
authentication->logout(sessionId);
|
||||
sessionId.reset();
|
||||
authentication.reset();
|
||||
}
|
||||
|
||||
|
||||
/*------------------------------------------------------------------------------
|
||||
* Test to see if we can log on and off
|
||||
* Test to see if we can get the version string of the scheduler.
|
||||
*----------------------------------------------------------------------------*/
|
||||
void
|
||||
SchedulerDaemonXmlRpcClientTest :: firstTest(void)
|
||||
SchedulerDaemonXmlRpcClientTest :: getVersionTest(void)
|
||||
throw (CPPUNIT_NS::Exception)
|
||||
{
|
||||
Ptr<const std::string>::Ref version = schedulerClient->getVersion();
|
||||
|
@ -112,3 +161,20 @@ SchedulerDaemonXmlRpcClientTest :: firstTest(void)
|
|||
CPPUNIT_ASSERT(version.get());
|
||||
}
|
||||
|
||||
|
||||
/*------------------------------------------------------------------------------
|
||||
* Test to see if we can get the time of the scheduler.
|
||||
*----------------------------------------------------------------------------*/
|
||||
void
|
||||
SchedulerDaemonXmlRpcClientTest :: getSchedulerTimeTest(void)
|
||||
throw (CPPUNIT_NS::Exception)
|
||||
{
|
||||
Ptr<const ptime>::Ref time = schedulerClient->getSchedulerTime(sessionId);
|
||||
Ptr<const ptime>::Ref now = TimeConversion::now();
|
||||
|
||||
CPPUNIT_ASSERT(time.get());
|
||||
// assume that the scheduler and the client is in the same year
|
||||
// this can break at new year's eve - so don't run the test then :)
|
||||
CPPUNIT_ASSERT(time->date().year() == now->date().year());
|
||||
}
|
||||
|
||||
|
|
|
@ -22,7 +22,7 @@
|
|||
|
||||
|
||||
Author : $Author: maroy $
|
||||
Version : $Revision: 1.1 $
|
||||
Version : $Revision: 1.2 $
|
||||
Location : $Source: /home/paul/cvs2svn-livesupport/newcvsrepo/livesupport/modules/schedulerClient/src/SchedulerDaemonXmlRpcClientTest.h,v $
|
||||
|
||||
------------------------------------------------------------------------------*/
|
||||
|
@ -42,6 +42,7 @@
|
|||
|
||||
#include <cppunit/extensions/HelperMacros.h>
|
||||
|
||||
#include "LiveSupport/Core/AuthenticationClientInterface.h"
|
||||
#include "SchedulerDaemonXmlRpcClient.h"
|
||||
|
||||
namespace LiveSupport {
|
||||
|
@ -61,13 +62,14 @@ using namespace LiveSupport::Core;
|
|||
* Unit test for the SchedulerDaemonXmlRpcClient class.
|
||||
*
|
||||
* @author $Author: maroy $
|
||||
* @version $Revision: 1.1 $
|
||||
* @version $Revision: 1.2 $
|
||||
* @see SchedulerDaemonXmlRpcClient
|
||||
*/
|
||||
class SchedulerDaemonXmlRpcClientTest : public CPPUNIT_NS::TestFixture
|
||||
{
|
||||
CPPUNIT_TEST_SUITE(SchedulerDaemonXmlRpcClientTest);
|
||||
CPPUNIT_TEST(firstTest);
|
||||
CPPUNIT_TEST(getVersionTest);
|
||||
CPPUNIT_TEST(getSchedulerTimeTest);
|
||||
CPPUNIT_TEST_SUITE_END();
|
||||
|
||||
private:
|
||||
|
@ -76,15 +78,49 @@ class SchedulerDaemonXmlRpcClientTest : public CPPUNIT_NS::TestFixture
|
|||
*/
|
||||
Ptr<SchedulerDaemonXmlRpcClient>::Ref schedulerClient;
|
||||
|
||||
/**
|
||||
* An authentication client.
|
||||
*/
|
||||
Ptr<AuthenticationClientInterface>::Ref authentication;
|
||||
|
||||
/**
|
||||
* A session ID from the authentication client login() method.
|
||||
*/
|
||||
Ptr<SessionId>::Ref sessionId;
|
||||
|
||||
/**
|
||||
* Configure a configurable with an XML file.
|
||||
*
|
||||
* @param configurable configure this
|
||||
* @param fileName the name of the XML file to configure with.
|
||||
* @exception std::invalid_argument on configuration errors.
|
||||
* @exception xmlpp::exception on XML parsing errors.
|
||||
*/
|
||||
void
|
||||
configure(Ptr<Configurable>::Ref configurable,
|
||||
const std::string & fileName)
|
||||
throw (std::invalid_argument,
|
||||
xmlpp::exception);
|
||||
|
||||
|
||||
protected:
|
||||
|
||||
/**
|
||||
* A simple test.
|
||||
* A simple test, just to get the version string from the scheduler.
|
||||
*
|
||||
* @exception CPPUNIT_NS::Exception on test failures.
|
||||
*/
|
||||
void
|
||||
firstTest(void) throw (CPPUNIT_NS::Exception);
|
||||
getVersionTest(void) throw (CPPUNIT_NS::Exception);
|
||||
|
||||
/**
|
||||
* A test to check the getSchedulerTime XML-RPC method.
|
||||
*
|
||||
* @exception CPPUNIT_NS::Exception on test failures.
|
||||
*/
|
||||
void
|
||||
getSchedulerTimeTest(void) throw (CPPUNIT_NS::Exception);
|
||||
|
||||
|
||||
public:
|
||||
|
||||
|
|
Loading…
Reference in New Issue