diff options
author | Stefan Radomski <github@mintwerk.de> | 2017-04-12 07:19:13 (GMT) |
---|---|---|
committer | Stefan Radomski <github@mintwerk.de> | 2017-04-12 07:19:13 (GMT) |
commit | 321faf9461274eb6758dbec5e070b4e4600d10b6 (patch) | |
tree | d911cbce893898e442fb8715199f84fc9b2c7f5b /test | |
parent | e0d37b8181e12030cc71d538ca08a80a924d5d4a (diff) | |
download | uscxml-321faf9461274eb6758dbec5e070b4e4600d10b6.zip uscxml-321faf9461274eb6758dbec5e070b4e4600d10b6.tar.gz uscxml-321faf9461274eb6758dbec5e070b4e4600d10b6.tar.bz2 |
Reduced dependencies on XercesC
Diffstat (limited to 'test')
-rw-r--r-- | test/CMakeLists.txt | 65 | ||||
-rw-r--r-- | test/ctest/scripts/test_generated_c.cmake | 37 | ||||
-rw-r--r-- | test/src/test-gen-c.cpp | 71 | ||||
-rwxr-xr-x | test/src/test-http-debugger.pl | 2 |
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; } |