[asterisk-scf-commits] asterisk-scf/integration/ice-util-cpp.git branch "test-utf" updated.

Commits to the Asterisk SCF project code repositories asterisk-scf-commits at lists.digium.com
Thu Apr 7 13:35:19 CDT 2011


branch "test-utf" has been updated
       via  d44d47af554d41e1326ae6bbf03fca6cc93cdd32 (commit)
      from  853b36ba80ed5692b9f4b2acbfaa22f5f65cff2d (commit)

Summary of changes:
 CMakeLists.txt                                     |    1 +
 TestFixture/CMakeLists.txt                         |   16 ++++
 TestFixture/include/AsteriskSCF/IceBoxBoostTest.h  |   85 ++++++++++++++++++++
 .../test.cpp => TestFixture/src/TestFixture.cpp    |    5 +-
 4 files changed, 105 insertions(+), 2 deletions(-)
 create mode 100644 TestFixture/CMakeLists.txt
 create mode 100644 TestFixture/include/AsteriskSCF/IceBoxBoostTest.h
 copy AmiCollector/test/test.cpp => TestFixture/src/TestFixture.cpp (86%)


- Log -----------------------------------------------------------------
commit d44d47af554d41e1326ae6bbf03fca6cc93cdd32
Author: Ken Hunt <ken.hunt at digium.com>
Date:   Thu Apr 7 13:33:21 2011 -0500

    A header file that handles placing a boost unit test under an icebox service.

diff --git a/CMakeLists.txt b/CMakeLists.txt
index 67c5652..b092bc7 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -6,3 +6,4 @@ endif()
 add_subdirectory(SmartProxy)
 add_subdirectory(StateReplicator)
 add_subdirectory(AmiCollector)
+add_subdirectory(TestFixture)
diff --git a/TestFixture/CMakeLists.txt b/TestFixture/CMakeLists.txt
new file mode 100644
index 0000000..26d5897
--- /dev/null
+++ b/TestFixture/CMakeLists.txt
@@ -0,0 +1,16 @@
+asterisk_scf_component_init(testfixture CXX)
+
+include_directories(include)
+
+asterisk_scf_component_add_file(testfixture include/AsteriskSCF/IceBoxBoostTest.h)
+asterisk_scf_component_add_file(testfixture src/TestFixture.cpp)
+
+asterisk_scf_component_add_boost_libraries(testfixture  unit_test_framework)
+
+# don't install the component.  it's just there to make Visual Studio happy
+# _do_ install the header files
+asterisk_scf_headers_install(include/)
+
+include_directories(include)
+
+asterisk_scf_component_build_icebox(testfixture)
diff --git a/TestFixture/include/AsteriskSCF/IceBoxBoostTest.h b/TestFixture/include/AsteriskSCF/IceBoxBoostTest.h
new file mode 100644
index 0000000..46fef08
--- /dev/null
+++ b/TestFixture/include/AsteriskSCF/IceBoxBoostTest.h
@@ -0,0 +1,85 @@
+/*
+ * Asterisk SCF -- An open-source communications framework.
+ *
+ * Copyright (C) 2010-2011, Digium, Inc.
+ *
+ * See http://www.asterisk.org for more information about
+ * the Asterisk SCF project. Please do not directly contact
+ * any of the maintainers of this project for assistance;
+ * the project provides a web site, mailing lists and IRC
+ * channels for your use.
+ *
+ * This program is free software, distributed under the terms of
+ * the GNU General Public License Version 2. See the LICENSE.txt file
+ * at the top of the source tree.
+ */
+#pragma once
+
+// We'll take care of kicking off the boost test in the IceBox start() handler.
+#define BOOST_TEST_NO_MAIN 
+
+#include <boost/test/unit_test.hpp>
+
+#include <Ice/Ice.h>
+#include <IceBox/IceBox.h>
+
+/* Cache for the command line arguments and other info that the tests may want. */
+struct IceBoxTestEnv
+{
+public:
+    int argc;
+    char **argv;
+    Ice::CommunicatorPtr communicator; 
+    std::string serviceName;
+    Ice::ObjectAdapterPtr adapter;  // Set by test-specific global fixture if servants are required.
+};
+static IceBoxTestEnv IceBoxTestEnv;
+
+/**
+ * Test service for loading into icebox. This utility caches the arguments passed in
+ * to the boost unit test, then calls the standard boost unit_test_main. 
+ */
+class IceBoxTest : public IceBox::Service
+{
+public:
+    /**
+     * Override of the IceBox::Service start() handler.
+     */
+    void start(std::string const &name,
+        Ice::CommunicatorPtr const &communicator,
+        Ice::StringSeq const &args)
+    {
+        std::vector<char const *> argv;
+        argv.push_back(name.c_str());
+        for (Ice::StringSeq::const_iterator i = args.begin(); i != args.end(); ++i)
+        {
+            argv.push_back(i->c_str());
+        }
+
+        // null terminate list
+        argv.push_back((char const *) 0);
+
+        IceBoxTestEnv.communicator = communicator;
+        IceBoxTestEnv.serviceName = name;
+        IceBoxTestEnv.argc = argv.size() - 1;
+        IceBoxTestEnv.argv = (char**)&argv[0];
+
+        int r = ::boost::unit_test::unit_test_main(&init_unit_test, IceBoxTestEnv.argc, IceBoxTestEnv.argv);
+        exit(r);
+    }
+
+    /**
+     * Override of the IceBox::Service stop() handler.
+     */
+    void stop()
+    {
+    }
+};
+
+extern "C"
+{
+ASTERISK_SCF_ICEBOX_EXPORT IceBox::Service* create(Ice::CommunicatorPtr communicator)
+{
+    return new IceBoxTest;
+}
+}
diff --git a/TestFixture/src/TestFixture.cpp b/TestFixture/src/TestFixture.cpp
new file mode 100644
index 0000000..718456c
--- /dev/null
+++ b/TestFixture/src/TestFixture.cpp
@@ -0,0 +1,19 @@
+/*
+ * Asterisk SCF -- An open-source communications framework.
+ *
+ * Copyright (C) 2010, Digium, Inc.
+ *
+ * See http://www.asterisk.org for more information about
+ * the Asterisk SCF project. Please do not directly contact
+ * any of the maintainers of this project for assistance;
+ * the project provides a web site, mailing lists and IRC
+ * channels for your use.
+ *
+ * This program is free software, distributed under the terms of
+ * the GNU General Public License Version 2. See the LICENSE.txt file
+ * at the top of the source tree.
+ */
+
+#define BOOST_TEST_MODULE DummyTestName
+
+#include  <AsteriskSCF/IceBoxBoostTest.h>

-----------------------------------------------------------------------


-- 
asterisk-scf/integration/ice-util-cpp.git



More information about the asterisk-scf-commits mailing list