summaryrefslogtreecommitdiffstats
path: root/test
diff options
context:
space:
mode:
authorStefan Radomski <github@mintwerk.de>2017-04-12 07:19:13 (GMT)
committerStefan Radomski <github@mintwerk.de>2017-04-12 07:19:13 (GMT)
commit321faf9461274eb6758dbec5e070b4e4600d10b6 (patch)
treed911cbce893898e442fb8715199f84fc9b2c7f5b /test
parente0d37b8181e12030cc71d538ca08a80a924d5d4a (diff)
downloaduscxml-321faf9461274eb6758dbec5e070b4e4600d10b6.zip
uscxml-321faf9461274eb6758dbec5e070b4e4600d10b6.tar.gz
uscxml-321faf9461274eb6758dbec5e070b4e4600d10b6.tar.bz2
Reduced dependencies on XercesC
Diffstat (limited to 'test')
-rw-r--r--test/CMakeLists.txt65
-rw-r--r--test/ctest/scripts/test_generated_c.cmake37
-rw-r--r--test/src/test-gen-c.cpp71
-rwxr-xr-xtest/src/test-http-debugger.pl2
4 files changed, 154 insertions, 21 deletions
diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt
index 52ed33b..bc105cf 100644
--- a/test/CMakeLists.txt
+++ b/test/CMakeLists.txt
@@ -83,11 +83,15 @@ add_executable(test-state-pass src/test-state-pass.cpp ${GETOPT_FILES})
target_link_libraries(test-state-pass uscxml)
set_target_properties(test-state-pass PROPERTIES FOLDER "Tests")
-add_executable(test-gen-c
+set(TEST_GEN_C_DEFINITIONS "NO_XERCESC" "FEATS_ON_CMD")
+set(TEST_GEN_C_LIBRARIES ${LIBEVENT_LIBRARIES})
+set(TEST_GEN_C_FILES
src/test-gen-c.cpp
${PROJECT_SOURCE_DIR}/src/uscxml/interpreter/BasicDelayedEventQueue.cpp
${PROJECT_SOURCE_DIR}/src/uscxml/interpreter/BasicEventQueue.cpp
${PROJECT_SOURCE_DIR}/src/uscxml/interpreter/EventQueue.cpp
+ ${PROJECT_SOURCE_DIR}/src/uscxml/interpreter/ContentExecutor.cpp
+ ${PROJECT_SOURCE_DIR}/src/uscxml/interpreter/MicroStep.cpp
${PROJECT_SOURCE_DIR}/src/uscxml/interpreter/Logging.cpp
${PROJECT_SOURCE_DIR}/src/uscxml/interpreter/StdOutLogger.cpp
${PROJECT_SOURCE_DIR}/src/uscxml/util/UUID.cpp
@@ -102,13 +106,57 @@ add_executable(test-gen-c
${PROJECT_SOURCE_DIR}/src/uscxml/plugins/Factory.cpp
${PROJECT_SOURCE_DIR}/src/uscxml/plugins/DataModel.cpp
${PROJECT_SOURCE_DIR}/src/uscxml/plugins/Invoker.cpp
+ # ${PROJECT_SOURCE_DIR}/src/uscxml/plugins/invoker/dirmon/DirMonInvoker.cpp
+ # ${PROJECT_SOURCE_DIR}/src/uscxml/util/URL.cpp
+ # ${PROJECT_SOURCE_DIR}/contrib/src/uriparser/src/UriCommon.c
+ # ${PROJECT_SOURCE_DIR}/contrib/src/uriparser/src/UriCompare.c
+ # ${PROJECT_SOURCE_DIR}/contrib/src/uriparser/src/UriEscape.c
+ # ${PROJECT_SOURCE_DIR}/contrib/src/uriparser/src/UriFile.c
+ # ${PROJECT_SOURCE_DIR}/contrib/src/uriparser/src/UriIp4.c
+ # ${PROJECT_SOURCE_DIR}/contrib/src/uriparser/src/UriIp4Base.c
+ # ${PROJECT_SOURCE_DIR}/contrib/src/uriparser/src/UriNormalize.c
+ # ${PROJECT_SOURCE_DIR}/contrib/src/uriparser/src/UriNormalizeBase.c
+ # ${PROJECT_SOURCE_DIR}/contrib/src/uriparser/src/UriParse.c
+ # ${PROJECT_SOURCE_DIR}/contrib/src/uriparser/src/UriParseBase.c
+ # ${PROJECT_SOURCE_DIR}/contrib/src/uriparser/src/UriQuery.c
+ # ${PROJECT_SOURCE_DIR}/contrib/src/uriparser/src/UriRecompose.c
+ # ${PROJECT_SOURCE_DIR}/contrib/src/uriparser/src/UriResolve.c
+ # ${PROJECT_SOURCE_DIR}/contrib/src/uriparser/src/UriShorten.c
${PROJECT_SOURCE_DIR}/src/uscxml/plugins/IOProcessor.cpp
${PROJECT_SOURCE_DIR}/src/uscxml/plugins/datamodel/null/NullDataModel.cpp
- # ${PROJECT_SOURCE_DIR}/src/uscxml/plugins/datamodel/ecmascript/v8/V8DataModel.cpp
${PROJECT_SOURCE_DIR}/contrib/src/jsmn/jsmn.c
${PROJECT_SOURCE_DIR}/contrib/src/evws/evws.c
${GETOPT_FILES})
-target_link_libraries(test-gen-c ${LIBEVENT_LIBRARIES})
+
+if (${WITH_DM_ECMA_V8})
+ list (APPEND TEST_GEN_C_DEFINITIONS "WITH_DM_ECMA_V8")
+ list (APPEND TEST_GEN_C_FILES ${PROJECT_SOURCE_DIR}/src/uscxml/plugins/datamodel/ecmascript/v8/V8DataModel.cpp)
+ list (APPEND TEST_GEN_C_LIBRARIES ${V8_LIBRARY})
+endif()
+if (${WITH_DM_ECMA_JSC})
+ list (APPEND TEST_GEN_C_DEFINITIONS "WITH_DM_ECMA_JSC")
+ list (APPEND TEST_GEN_C_FILES ${PROJECT_SOURCE_DIR}/src/uscxml/plugins/datamodel/ecmascript/JavaScriptCore/JSCDataModel.cpp)
+ list (APPEND TEST_GEN_C_LIBRARIES ${JSC_LIBRARY})
+endif()
+if (${WITH_DM_LUA})
+ list (APPEND TEST_GEN_C_DEFINITIONS "WITH_DM_LUA")
+ list (APPEND TEST_GEN_C_FILES ${PROJECT_SOURCE_DIR}/src/uscxml/plugins/datamodel/lua/LuaDataModel.cpp)
+ list (APPEND TEST_GEN_C_LIBRARIES ${LUA_LIBRARIES})
+endif()
+if (${WITH_DM_PROMELA})
+ list (APPEND TEST_GEN_C_DEFINITIONS "WITH_DM_PROMELA")
+ list (APPEND TEST_GEN_C_FILES
+ ${PROJECT_SOURCE_DIR}/src/uscxml/plugins/datamodel/promela/PromelaDataModel.cpp
+ ${PROJECT_SOURCE_DIR}/src/uscxml/plugins/datamodel/promela/PromelaParser.cpp
+ ${PROJECT_SOURCE_DIR}/src/uscxml/plugins/datamodel/promela/parser/promela.lex.yy.cpp
+ ${PROJECT_SOURCE_DIR}/src/uscxml/plugins/datamodel/promela/parser/promela.tab.cpp
+ ${PROJECT_SOURCE_DIR}/src/uscxml/plugins/datamodel/promela/parser/promela.lex.yy.cpp
+ )
+endif()
+
+add_executable(test-gen-c ${TEST_GEN_C_FILES})
+target_link_libraries(test-gen-c ${TEST_GEN_C_LIBRARIES})
+# target_link_libraries(test-gen-c ${XercesC_LIBRARIES} ${LIBEVENT_LIBRARIES} ${CURL_LIBRARIES})
if (USCXML_PREREQS)
add_dependencies(test-gen-c ${USCXML_PREREQS})
@@ -121,7 +169,8 @@ if (UNIX)
target_link_libraries(test-gen-c pthread)
endif()
set_target_properties(test-gen-c PROPERTIES FOLDER "Tests")
-set_target_properties(test-gen-c PROPERTIES COMPILE_DEFINITIONS "NO_XERCESC;FEATS_ON_CMD")
+set_target_properties(test-gen-c PROPERTIES COMPILE_DEFINITIONS "${TEST_GEN_C_DEFINITIONS}")
+# set_target_properties(test-gen-c PROPERTIES COMPILE_DEFINITIONS "NO_XERCESC;FEATS_ON_CMD")
# issues
file(GLOB_RECURSE USCXML_ISSUES
@@ -329,7 +378,15 @@ if (NOT BUILD_MINIMAL)
-DOUTDIR:FILEPATH=${CMAKE_CURRENT_BINARY_DIR}/${TEST_CLASS}
-DTESTFILE:FILEPATH=${W3C_TEST}
-DTARGETLANG=${TEST_TARGET}
+ -DWITH_DM_ECMA_JSC:BOOL=${WITH_DM_ECMA_JSC}
+ -DJSC_INCLUDE_DIR:BOOL=${JSC_INCLUDE_DIR}
-DJSC_LIBRARY:FILEPATH=${JSC_LIBRARY}
+ -DWITH_DM_ECMA_V8:BOOL=${WITH_DM_ECMA_V8}
+ -DV8_LIBRARY:FILEPATH=${V8_LIBRARY}
+ -DV8_INCLUDE_DIR:BOOL=${V8_INCLUDE_DIR}
+ -DWITH_DM_LUA:BOOL=${WITH_DM_LUA}
+ -DLUA_LIBRARIES:FILEPATH=${LUA_LIBRARIES}
+ -DLUA_INCLUDE_DIR:FILEPATH=${LUA_INCLUDE_DIR}
-DUSCXML_TRANSFORM_BIN:FILEPATH=${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/uscxml-transform
-DANT_BIN:FILEPATH=${ANT_BIN}
-DCC_BIN:FILEPATH=${CC_BIN}
diff --git a/test/ctest/scripts/test_generated_c.cmake b/test/ctest/scripts/test_generated_c.cmake
index b130d29..240e560 100644
--- a/test/ctest/scripts/test_generated_c.cmake
+++ b/test/ctest/scripts/test_generated_c.cmake
@@ -15,24 +15,39 @@ if (CMD_RESULT)
endif ()
message(STATUS "time for transforming to c machine")
+set(LIBRARY_PATH "-L${CMAKE_LIBRARY_OUTPUT_DIRECTORY}" "-L/opt/local/lib")
+set(LIBRARY_FILE "-luscxml")
+set(INCLUDE_PATH
+ "-I${PROJECT_SOURCE_DIR}/contrib/src"
+ "-I${PROJECT_SOURCE_DIR}/src"
+ "-I${PROJECT_BINARY_DIR}"
+ "-I${LIBEVENT_INCLUDE_DIR}"
+)
+
+# if (WITH_DM_ECMA_JSC AND JSC_INCLUDE_DIR)
+# message(FATAL_ERROR "${JSC_INCLUDE_DIR}")
+# if (JSC_LIBRARY)
+# list (APPEND LIBRARY_FILE ${JSC_LIBRARY})
+# endif()
+# list (APPEND INCLUDE_PATH "-I${JSC_INCLUDE_DIR}")
+# endif()
+#
+# if (WITH_DM_ECMA_V8 AND V8_INCLUDE_DIR)
+# # message(FATAL_ERROR "${V8_INCLUDE_DIR}")
+# # list (APPEND LIBRARY_FILE ${V8_LIBRARY})
+# list (APPEND INCLUDE_PATH "-I${V8_INCLUDE_DIR}")
+# endif()
+
set(COMPILE_CMD_BIN
"-O0"
"-std=c++11"
"-Wl,-search_paths_first"
"-Wl,-headerpad_max_install_names"
"-o" "${OUTDIR}/${TEST_FILE_NAME}"
- "-L${CMAKE_LIBRARY_OUTPUT_DIRECTORY}"
- "-L${PROJECT_BINARY_DIR}/deps/xerces-c/lib"
- "-L/opt/local/lib"
- "-luscxml"
- "-lxerces-c"
+ ${LIBRARY_PATH}
+ ${LIBRARY_FILE}
+ ${INCLUDE_PATH}
"-include" "${OUTDIR}/${TEST_FILE_NAME}.machine.c"
- "-I${PROJECT_SOURCE_DIR}/contrib/src"
- "-I${PROJECT_SOURCE_DIR}/src"
- "-I${PROJECT_BINARY_DIR}"
- "-I${XercesC_INCLUDE_DIRS}"
- "-I${URIPARSER_INCLUDE_DIR}"
- "-I${LIBEVENT_INCLUDE_DIR}"
"-Wl,-rpath,${CMAKE_LIBRARY_OUTPUT_DIRECTORY}"
"-DAUTOINCLUDE_TEST=ON"
"${SCAFFOLDING_FOR_GENERATED_C}")
diff --git a/test/src/test-gen-c.cpp b/test/src/test-gen-c.cpp
index 0b03129..8e164fa 100644
--- a/test/src/test-gen-c.cpp
+++ b/test/src/test-gen-c.cpp
@@ -9,6 +9,7 @@
#include <iostream>
#define USCXML_VERBOSE
+#define WITH_DM_ECMA_JSC
#include "uscxml/config.h"
@@ -19,8 +20,9 @@
#endif
#ifndef AUTOINCLUDE_TEST
-#include "test-c-machine.scxml.c"
-//#include "/Users/sradomski/Documents/TK/Code/uscxml/build/cli/test/gen/c/ecma/test446.scxml.machine.c"
+//#include "test-c-machine.scxml.c"
+#include "/Users/sradomski/Documents/TK/Code/uscxml/build/cli/test/gen/c/ecma/test446.scxml.machine.c"
+//#include "/Users/sradomski/Desktop/Puneet/foo.c"
#endif
//#include "uscxml/util/URL.h"
@@ -28,10 +30,26 @@
//#include "uscxml/dom/DOMUtils.h"
#include "uscxml/plugins/Factory.h"
#include "uscxml/plugins/IOProcessorImpl.h"
+#include "uscxml/plugins/InvokerImpl.h"
//#include "uscxml/Interpreter.h"
#include "uscxml/util/UUID.h"
//#include "uscxml/server/HTTPServer.h"
+//#include "uscxml/plugins/invoker/dirmon/DirMonInvoker.h"
+#include "uscxml/plugins/datamodel/promela/PromelaDataModel.h"
+
+#ifdef FEATS_ON_CMD
+#ifdef WITH_DM_ECMA_V8
+#include "uscxml/plugins/datamodel/ecmascript/v8/V8DataModel.h"
+#endif
+#ifdef WITH_DM_ECMA_JSC
+#include "uscxml/plugins/datamodel/ecmascript/JavaScriptCore/JSCDataModel.h"
+#endif
+#ifdef WITH_DM_LUA
+#include "uscxml/plugins/datamodel/lua/LuaDataModel.h"
+#endif
+#endif
+
#include "uscxml/interpreter/InterpreterImpl.h"
#include "uscxml/interpreter/BasicEventQueue.h"
#include "uscxml/interpreter/BasicDelayedEventQueue.h"
@@ -50,13 +68,17 @@ class DOMNode;
}
-class StateMachine : public DataModelCallbacks, public IOProcessorCallbacks, public DelayedEventQueueCallbacks {
+class StateMachine : public DataModelCallbacks, public IOProcessorCallbacks, public DelayedEventQueueCallbacks, public InvokerCallbacks {
public:
StateMachine(const uscxml_machine* machine) : machine(machine), parentMachine(NULL), topMostMachine(NULL), invocation(NULL) {
allMachines[sessionId] = this;
topMostMachine = this;
currentMachine = allMachines.begin();
- init();
+ try {
+ init();
+ } catch (ErrorEvent e) {
+ LOGD(USCXML_FATAL) << e;
+ }
}
StateMachine(StateMachine* parent, const uscxml_machine* machine, const uscxml_elem_invoke* invoke) : machine(machine), invocation(invoke) {
@@ -65,6 +87,18 @@ public:
init();
}
+ ActionLanguage* getActionLanguage() {
+ return NULL;
+ }
+
+ std::set<InterpreterMonitor*> getMonitors() {
+ return std::set<InterpreterMonitor*>();
+ }
+
+ std::string getBaseURL() {
+ return "";
+ }
+
virtual Logger getLogger() {
return Logger::getDefault();
}
@@ -310,6 +344,8 @@ public:
topMachine->invocationIds.erase(invocation);
}
} else {
+ // TODO: Uninvoke other types of invokers
+
return USCXML_ERR_UNSUPPORTED;
}
} else {
@@ -334,6 +370,16 @@ public:
}
allMachines[invokedMachine->invokeId] = invokedMachine;
topMachine->invocationIds[invocation] = invokedMachine->invokeId;
+
+ } else if (Factory::getInstance()->hasInvoker(invocation->type)) {
+
+ Event invokeEvent; // see BasicContentExecutor::384ff
+ // TODO: Establish the invokeEvent
+ if (invocation->params != NULL) {
+ }
+ Invoker inv = Factory::getInstance()->createInvoker(invocation->type, USER_DATA(ctx));
+ inv.invoke("", invokeEvent);
+ USER_DATA(ctx)->_invocations[invocation] = inv;
} else {
return USCXML_ERR_UNSUPPORTED;
}
@@ -681,6 +727,7 @@ public:
if (data->content) {
content << data->content;
} else {
+// avoid dependency on URL.cpp -> urlparser -> curl
#if 0
URL sourceURL(data->src);
if (USER_DATA(ctx)->baseURL.size() > 0) {
@@ -942,6 +989,8 @@ NEXT_DESC:
const uscxml_elem_invoke* invocation;
std::map<std::string, Data> invokeData;
+ std::map<const uscxml_elem_invoke*, Invoker> _invocations;
+
std::deque<Event> iq;
std::deque<Event> eq;
@@ -983,13 +1032,25 @@ int main(int argc, char** argv) {
size_t microSteps = 0;
+#ifdef FEATS_ON_CMD
+ Factory::getInstance()->registerDataModel(new PromelaDataModel());
+#ifdef WITH_DM_ECMA_V8
+ Factory::getInstance()->registerDataModel(new V8DataModel());
+#endif
+#ifdef WITH_DM_ECMA_JSC
+ Factory::getInstance()->registerDataModel(new JSCDataModel());
+#endif
+#ifdef WITH_DM_LUA
+ Factory::getInstance()->registerDataModel(new LuaDataModel());
+#endif
+#endif
+
StateMachine rootMachine(&USCXML_MACHINE);
while(remainingRuns-- > 0) {
microSteps = 0;
-
for (;;) {
err = rootMachine.step();
if (rootMachine.isDone())
diff --git a/test/src/test-http-debugger.pl b/test/src/test-http-debugger.pl
index a43478c..fcc675f 100755
--- a/test/src/test-http-debugger.pl
+++ b/test/src/test-http-debugger.pl
@@ -26,7 +26,7 @@ my @breakpointSeq;
my $pid = fork;
if (!$pid) {
- # exec("$scxmlBin -t4088 -d");
+ exec("$scxmlBin -t4088 -d");
exit;
}