|
From: <ma...@us...> - 2010-09-15 20:32:01
|
Revision: 932
http://scstudio.svn.sourceforge.net/scstudio/?rev=932&view=rev
Author: madzin
Date: 2010-09-15 20:31:55 +0000 (Wed, 15 Sep 2010)
Log Message:
-----------
repair small bugs and add test
Modified Paths:
--------------
trunk/src/membership/membership_alg.cpp
trunk/src/membership/membership_alg.h
trunk/tests/membership/CMakeLists.txt
trunk/tests/membership/complete_pat2.mpr
Added Paths:
-----------
trunk/tests/membership/complete1.mpr
trunk/tests/membership/complete_pat5.mpr
trunk/tests/membership/partial_mem_easy.mpr
trunk/tests/membership/test_bmsc32.mpr
trunk/tests/membership/test_bmsc32_1.mpr
trunk/tests/membership/test_bmsc32_2.mpr
trunk/tests/membership/test_bmsc33.mpr
trunk/tests/membership/test_bmsc33_1.mpr
trunk/tests/membership/test_bmsc34.mpr
trunk/tests/membership/test_hmsc33.mpr
Modified: trunk/src/membership/membership_alg.cpp
===================================================================
--- trunk/src/membership/membership_alg.cpp 2010-09-15 19:47:49 UTC (rev 931)
+++ trunk/src/membership/membership_alg.cpp 2010-09-15 20:31:55 UTC (rev 932)
@@ -267,23 +267,86 @@
Searcher::PreconditionList MembershipAlg::get_preconditions(MscPtr msc) const
{
Searcher::PreconditionList result;
+
+ result.push_back(PrerequisiteCheck(L"Correct Time Constraint Syntax", PrerequisiteCheck::PP_REQUIRED));
+ result.push_back(PrerequisiteCheck(L"Time Consistent", PrerequisiteCheck::PP_REQUIRED));
+
return result;
}
/*
+bool check_time_consistency_and_syntax(MscPtr msc, MscPtr bmsc)
+{
+ HMscPtr hmsc = boost::dynamic_pointer_cast<HMsc > (msc);
+ BMscPtr bmsc_f = boost::dynamic_pointer_cast<BMsc > (bmsc);
+ ChannelMapperPtr mapper;
+ ConsistencyChecker checker;
+ ConstraintsChecker checker2;
+ SRChannelMapperPtr srm = SRChannelMapper::instance(); //sender-receiver
+// SRMChannelMapperPtr srlm = SRMChannelMapper::instance(); //sender-receiver-label
+
+ if (bmsc_f == NULL)
+ {
+ mem->print_report(RS_ERROR, L"MSC which is looked for, must be bMSC.");
+ return NULL;
+ }
+
+ std::list<BMscPtr> consistency_results = checker.check(bmsc_f,srm);
+ std::list<BMscPtr> constraints_results = checker2.check(bmsc_f,srm);
+
+ if(!consistency_results.empty() || !consistency_results.empty())
+ {
+ mem->print_report(RS_ERROR, L"MSC which is looked for, is not time consistent or time constraints.");
+ return false;
+ }
+
+ if (hmsc == NULL)
+ {
+ BMscPtr bmsc_scecification = boost::dynamic_pointer_cast<BMsc > (msc);
+
+ if(bmsc_scecification != NULL)
+ {
+ std::list<BMscPtr> consistency_resultsII = checker.check(bmsc_scecification,srm);
+ std::list<BMscPtr> constraints_resultsII = checker2.check(bmsc_scecification,srm);
+
+ if(!consistency_resultsII.empty() || !constraints_resultsII.empty())
+ {
+ mem->print_report(RS_ERROR, L"MSC which is specification, is not time consistent or time constraints.");
+ return false;
+ }
+ }
+ }
+ else
+ {
+// std::list<HMscPtr> consistency_resultsIII = checker.check(hmsc,srm);
+// if(!consistency_resultsIII.empty())
+// {
+// mem->print_report(RS_ERROR, L"MSC which is specification, is not time consistent.");
+// return false;
+// }
+ }
+
+ return true;
+}
+*/
+
+/*
* Tries finding bMsc in Msc
*/
MscPtr MembershipAlg::find(MscPtr msc, MscPtr bmsc)
{
mem = this;
+// if(!check_time_consistency_and_syntax(msc, bmsc))
+// return false;
+
HMscPtr hmsc = boost::dynamic_pointer_cast<HMsc > (msc);
BMscPtr bmsc_f = boost::dynamic_pointer_cast<BMsc > (bmsc);
+
if (bmsc_f == NULL)
{
- print_report(RS_ERROR,
- stringize() << "MSC which is looked for, must be bMSC.");
+ print_report(RS_ERROR, L"MSC which is looked for, must be bMSC.");
return NULL;
}
@@ -446,11 +509,14 @@
}
//checks time constraints for this node
- if(!check_node_time(node, old_config_II))
+ if(focused_instances.empty())
{
- remove_events_attributes(attributed_events);
- attributed_events.clear();
- return false;
+ if(!check_node_time(node, old_config_II))
+ {
+ remove_events_attributes(attributed_events);
+ attributed_events.clear();
+ return false;
+ }
}
//checks the ordering of events (by attribute which was set at check_node(node, membership,b))
Modified: trunk/src/membership/membership_alg.h
===================================================================
--- trunk/src/membership/membership_alg.h 2010-09-15 19:47:49 UTC (rev 931)
+++ trunk/src/membership/membership_alg.h 2010-09-15 20:31:55 UTC (rev 932)
@@ -22,6 +22,7 @@
#include "data/searcher.h"
#include "membership/export.h"
#include "check/pseudocode/msc_duplicators.h"
+#include "check/time/constraint_syntax.h"
bool contain_focused_instances(std::wstring instance);
Modified: trunk/tests/membership/CMakeLists.txt
===================================================================
--- trunk/tests/membership/CMakeLists.txt 2010-09-15 19:47:49 UTC (rev 931)
+++ trunk/tests/membership/CMakeLists.txt 2010-09-15 20:31:55 UTC (rev 932)
@@ -219,9 +219,9 @@
ADD_TEST(membership_test-94 ${MEMBERSHIP_TEST_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/coregion_minimal.mpr ${CMAKE_CURRENT_SOURCE_DIR}/coregion_minimal_pat2.mpr 0)
-ADD_TEST(membership_test-95 ${MEMBERSHIP_TEST_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/coregion_minimal.mpr ${CMAKE_CURRENT_SOURCE_DIR}/coregion_minimal_pat3.mpr )
+ADD_TEST(membership_test-95 ${MEMBERSHIP_TEST_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/coregion_minimal.mpr ${CMAKE_CURRENT_SOURCE_DIR}/coregion_minimal_pat3.mpr 0)
-ADD_TEST(membership_test-96 ${MEMBERSHIP_TEST_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/coregion_minimal.mpr ${CMAKE_CURRENT_SOURCE_DIR}/coregion_minimal_pat4.mpr )
+ADD_TEST(membership_test-96 ${MEMBERSHIP_TEST_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/coregion_minimal.mpr ${CMAKE_CURRENT_SOURCE_DIR}/coregion_minimal_pat4.mpr 0)
ADD_TEST(membership_test-97 ${MEMBERSHIP_TEST_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/coregion_minimal.mpr ${CMAKE_CURRENT_SOURCE_DIR}/coregion_minimal_pat5.mpr 1)
@@ -231,3 +231,35 @@
ADD_TEST(membership_test-100 ${MEMBERSHIP_TEST_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/coregion_minimal.mpr ${CMAKE_CURRENT_SOURCE_DIR}/coregion_minimal_pat8.mpr 0)
+#partial membership
+ADD_TEST(membership_test-101 ${MEMBERSHIP_TEST_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/partial_mem_easy.mpr ${CMAKE_CURRENT_SOURCE_DIR}/partial_mem_easy_pat1.mpr 1 A)
+
+ADD_TEST(membership_test-102 ${MEMBERSHIP_TEST_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/partial_mem_easy.mpr ${CMAKE_CURRENT_SOURCE_DIR}/partial_mem_easy_pat1.mpr 0 A B)
+
+ADD_TEST(membership_test-103 ${MEMBERSHIP_TEST_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/partial_mem_easy.mpr ${CMAKE_CURRENT_SOURCE_DIR}/partial_mem_easy.mpr 1 A B)
+
+ADD_TEST(membership_test-104 ${MEMBERSHIP_TEST_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/partial_mem_easy.mpr ${CMAKE_CURRENT_SOURCE_DIR}/partial_mem_easy.mpr 1 A B C)
+
+
+
+
+ADD_TEST(membership_test-105 ${MEMBERSHIP_TEST_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/complete.mpr ${CMAKE_CURRENT_SOURCE_DIR}/complete_pat1.mpr 0)
+
+ADD_TEST(membership_test-106 ${MEMBERSHIP_TEST_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/complete.mpr ${CMAKE_CURRENT_SOURCE_DIR}/complete_pat5.mpr 1)
+
+ADD_TEST(membership_test-107 ${MEMBERSHIP_TEST_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/complete.mpr ${CMAKE_CURRENT_SOURCE_DIR}/complete_pat2.mpr 0)
+
+ADD_TEST(membership_test-108 ${MEMBERSHIP_TEST_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/complete1.mpr ${CMAKE_CURRENT_SOURCE_DIR}/complete_pat3.mpr 1)
+
+ADD_TEST(membership_test-109 ${MEMBERSHIP_TEST_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/complete.mpr ${CMAKE_CURRENT_SOURCE_DIR}/complete_pat1.mpr 1 PC)
+
+
+#complete.mpr separeted into small pieces
+ADD_TEST(membership_test-115 ${MEMBERSHIP_TEST_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/test_bmsc32.mpr ${CMAKE_CURRENT_SOURCE_DIR}/test_bmsc32_1.mpr 1)
+
+ADD_TEST(membership_test-116 ${MEMBERSHIP_TEST_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/test_bmsc33.mpr ${CMAKE_CURRENT_SOURCE_DIR}/test_bmsc33_1.mpr 1)
+
+ADD_TEST(membership_test-117 ${MEMBERSHIP_TEST_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/test_hmsc33.mpr ${CMAKE_CURRENT_SOURCE_DIR}/test_bmsc33_1.mpr 1)
+
+#do not meet preconditions
+#ADD_TEST(membership_test-118 ${MEMBERSHIP_TEST_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/test_bmsc32.mpr ${CMAKE_CURRENT_SOURCE_DIR}/test_bmsc32_2.mpr 0)
Added: trunk/tests/membership/complete1.mpr
===================================================================
--- trunk/tests/membership/complete1.mpr (rev 0)
+++ trunk/tests/membership/complete1.mpr 2010-09-15 20:31:55 UTC (rev 932)
@@ -0,0 +1,100 @@
+/* remove some time intervals in HMSC, otherwise same as complete.mpr */
+
+mscdocument complete.vsd;
+msc Page_1;
+initial connect L0;
+L0: reference A connect L1;
+L1: connect L2, L3;
+L2: reference C connect L4;
+L3: reference B time [1];
+ connect L5;
+L4: reference D connect L5;
+L5: connect L6;
+L6: final;
+endmsc;
+msc A;
+inst PC;
+inst Router;
+inst Server;
+PC: instance;
+label e0;
+out c,0 to Router;
+time e1 [0,1);
+endinstance;
+Router: instance;
+concurrent;
+label e1;
+in c,0 from PC;
+label e2;
+out a,1 to Server before e3;
+time e3 [1,2];
+label e3;
+out b,2 to Server;
+endconcurrent;
+endinstance;
+Server: instance;
+in a,1 from Router;
+in b,2 from Router;
+endinstance;
+endmsc;
+msc B;
+inst PC;
+inst Router;
+inst Server;
+PC: instance;
+in c,0 from Server;
+out b,1 to Router;
+endinstance;
+Router: instance;
+in c,2 from Server;
+in b,1 from PC;
+endinstance;
+Server: instance;
+concurrent;
+out c,2 to Router;
+out c,0 to PC;
+endconcurrent;
+endinstance;
+endmsc;
+msc C;
+inst PC;
+inst Router;
+inst Server;
+PC: instance;
+out a,0 to Router;
+out a,1 to Router;
+endinstance;
+Router: instance;
+in a,0 from PC;
+in b,2 from Server;
+in a,1 from PC;
+endinstance;
+Server: instance;
+out b,2 to Router;
+endinstance;
+endmsc;
+msc D;
+inst PC;
+inst Router;
+inst Server;
+PC: instance;
+in b,0 from Router;
+out c,1 to Router;
+endinstance;
+Router: instance;
+concurrent;
+in a,2 from Server;
+in a,3 from Server;
+in b,4 from Server;
+out b,0 to PC;
+endconcurrent;
+in c,1 from PC;
+endinstance;
+Server: instance;
+concurrent;
+out a,2 to Router;
+out a,3 to Router;
+out b,4 to Router;
+endconcurrent;
+endinstance;
+endmsc;
Modified: trunk/tests/membership/complete_pat2.mpr
===================================================================
--- trunk/tests/membership/complete_pat2.mpr 2010-09-15 19:47:49 UTC (rev 931)
+++ trunk/tests/membership/complete_pat2.mpr 2010-09-15 20:31:55 UTC (rev 932)
@@ -36,7 +36,7 @@
in b,3 from Router;
label e10;
out c,5 to Router;
-time e8 [0], e11 [0,1);
+time e8 [0], e11 [1];
label e11;
out c,1 to PC;
time e2 [0];
Added: trunk/tests/membership/complete_pat5.mpr
===================================================================
--- trunk/tests/membership/complete_pat5.mpr (rev 0)
+++ trunk/tests/membership/complete_pat5.mpr 2010-09-15 20:31:55 UTC (rev 932)
@@ -0,0 +1,44 @@
+mscdocument complete_pat1.vsd;
+msc Page_1;
+inst PC;
+inst Router;
+inst Server;
+PC: instance;
+label e0;
+out c,0 to Router;
+time e1 [0,1);
+label e2;
+in c,1 from Server;
+time e3 [0];
+label e3;
+out b,2 to Router;
+time e4 [0];
+endinstance;
+Router: instance;
+label e1;
+in c,0 from PC;
+label e5;
+out a,3 to Server;
+time e6 [1,2];
+label e6;
+out b,4 to Server;
+time e7 [5,6];
+label e8;
+in c,5 from Server;
+label e4;
+in b,2 from PC;
+endinstance;
+Server: instance;
+label e9;
+in a,3 from Router;
+time e5 [0,1);
+label e7;
+in b,4 from Router;
+label e10;
+out c,5 to Router;
+time e8 [0], e11 [1];
+label e11;
+out c,1 to PC;
+time e2 [0];
+endinstance;
+endmsc;
Added: trunk/tests/membership/partial_mem_easy.mpr
===================================================================
--- trunk/tests/membership/partial_mem_easy.mpr (rev 0)
+++ trunk/tests/membership/partial_mem_easy.mpr 2010-09-15 20:31:55 UTC (rev 932)
@@ -0,0 +1,20 @@
+mscdocument partial_mem_easy.vsd;
+msc Page_1;
+inst A;
+inst B;
+inst C;
+A: instance;
+out a,0 to B;
+in e,1 from B;
+endinstance;
+B: instance;
+in a,0 from A;
+out b,2 to C;
+in c,3 from C;
+out e,1 to A;
+endinstance;
+C: instance;
+in b,2 from B;
+out c,3 to B;
+endinstance;
+endmsc;
Added: trunk/tests/membership/test_bmsc32.mpr
===================================================================
--- trunk/tests/membership/test_bmsc32.mpr (rev 0)
+++ trunk/tests/membership/test_bmsc32.mpr 2010-09-15 20:31:55 UTC (rev 932)
@@ -0,0 +1,25 @@
+msc A;
+inst PC;
+inst Router;
+inst Server;
+PC: instance;
+label e0;
+out c,0 to Router;
+time e1 [0,1);
+endinstance;
+Router: instance;
+concurrent;
+label e1;
+in c,0 from PC;
+label e2;
+out a,1 to Server before e3;
+time e3 [1,2];
+label e3;
+out b,2 to Server;
+endconcurrent;
+endinstance;
+Server: instance;
+in a,1 from Router;
+in b,2 from Router;
+endinstance;
+endmsc;
Added: trunk/tests/membership/test_bmsc32_1.mpr
===================================================================
--- trunk/tests/membership/test_bmsc32_1.mpr (rev 0)
+++ trunk/tests/membership/test_bmsc32_1.mpr 2010-09-15 20:31:55 UTC (rev 932)
@@ -0,0 +1,27 @@
+msc Page_1;
+inst PC;
+inst Router;
+inst Server;
+PC: instance;
+label e0;
+out c,0 to Router;
+time e1 [0,1);
+endinstance;
+Router: instance;
+label e1;
+in c,0 from PC;
+label e5;
+out a,3 to Server;
+time e6 [1,2];
+label e6;
+out b,4 to Server;
+time e7 [5,6];
+endinstance;
+Server: instance;
+label e9;
+in a,3 from Router;
+time e5 [1];
+label e7;
+in b,4 from Router;
+endinstance;
+endmsc;
Added: trunk/tests/membership/test_bmsc32_2.mpr
===================================================================
--- trunk/tests/membership/test_bmsc32_2.mpr (rev 0)
+++ trunk/tests/membership/test_bmsc32_2.mpr 2010-09-15 20:31:55 UTC (rev 932)
@@ -0,0 +1,27 @@
+msc Page_1;
+inst PC;
+inst Router;
+inst Server;
+PC: instance;
+label e0;
+out c,0 to Router;
+time e1 [0,1);
+endinstance;
+Router: instance;
+label e1;
+in c,0 from PC;
+label e5;
+out b,3 to Server;
+time e6 [5,6);
+label e7;
+out a,4 to Server;
+time e5 [-2,-1];
+endinstance;
+Server: instance;
+label e9;
+in a,4 from Router;
+time e7 [0,1);
+label e6;
+in b,3 from Router;
+endinstance;
+endmsc;
Added: trunk/tests/membership/test_bmsc33.mpr
===================================================================
--- trunk/tests/membership/test_bmsc33.mpr (rev 0)
+++ trunk/tests/membership/test_bmsc33.mpr 2010-09-15 20:31:55 UTC (rev 932)
@@ -0,0 +1,19 @@
+msc B;
+inst PC;
+inst Router;
+inst Server;
+PC: instance;
+in c,0 from Server;
+out b,1 to Router;
+endinstance;
+Router: instance;
+in c,2 from Server;
+in b,1 from PC;
+endinstance;
+Server: instance;
+concurrent;
+out c,2 to Router;
+out c,0 to PC;
+endconcurrent;
+endinstance;
+endmsc;
Added: trunk/tests/membership/test_bmsc33_1.mpr
===================================================================
--- trunk/tests/membership/test_bmsc33_1.mpr (rev 0)
+++ trunk/tests/membership/test_bmsc33_1.mpr 2010-09-15 20:31:55 UTC (rev 932)
@@ -0,0 +1,28 @@
+msc Page_1;
+inst PC;
+inst Router;
+inst Server;
+PC: instance;
+label e2;
+in c,1 from Server;
+time e3 [0];
+label e3;
+out b,2 to Router;
+time e4 [0];
+endinstance;
+Router: instance;
+label e8;
+in c,5 from Server;
+label e4;
+in b,2 from PC;
+endinstance;
+Server: instance;
+label e10;
+out c,5 to Router;
+time e8 [0], e11 [1];
+label e11;
+out c,1 to PC;
+time e2 [0];
+endinstance;
+endmsc;
+
Added: trunk/tests/membership/test_bmsc34.mpr
===================================================================
--- trunk/tests/membership/test_bmsc34.mpr (rev 0)
+++ trunk/tests/membership/test_bmsc34.mpr 2010-09-15 20:31:55 UTC (rev 932)
@@ -0,0 +1,25 @@
+msc A;
+inst PC;
+inst Router;
+inst Server;
+PC: instance;
+label e0;
+out c,0 to Router;
+time e1 [0,1);
+endinstance;
+Router: instance;
+concurrent;
+label e1;
+in c,0 from PC;
+label e2;
+out a,1 to Server;
+time e3 [1,2];
+label e3;
+out b,2 to Server;
+endconcurrent;
+endinstance;
+Server: instance;
+in a,1 from Router;
+in b,2 from Router;
+endinstance;
+endmsc;
Added: trunk/tests/membership/test_hmsc33.mpr
===================================================================
--- trunk/tests/membership/test_hmsc33.mpr (rev 0)
+++ trunk/tests/membership/test_hmsc33.mpr 2010-09-15 20:31:55 UTC (rev 932)
@@ -0,0 +1,25 @@
+msc Page_1;
+initial connect L0;
+L0: reference B time [1]; connect L1;
+L1: final;
+endmsc;
+
+msc B;
+inst PC;
+inst Router;
+inst Server;
+PC: instance;
+in c,0 from Server;
+out b,1 to Router;
+endinstance;
+Router: instance;
+in c,2 from Server;
+in b,1 from PC;
+endinstance;
+Server: instance;
+concurrent;
+out c,2 to Router;
+out c,0 to PC;
+endconcurrent;
+endinstance;
+endmsc;
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|