|
From: <ma...@us...> - 2011-08-16 17:39:57
|
Revision: 1183
http://scstudio.svn.sourceforge.net/scstudio/?rev=1183&view=rev
Author: madzin
Date: 2011-08-16 17:39:51 +0000 (Tue, 16 Aug 2011)
Log Message:
-----------
Add test results, change error messages and patch possible segmentation fault
Modified Paths:
--------------
trunk/src/membership/membership_alg.cpp
trunk/src/membership/membership_base.h
trunk/src/membership/membership_time.cpp
trunk/tests/membership/CMakeLists.txt
Added Paths:
-----------
trunk/tests/membership/bmsc_spec4_pat.mpr.result
trunk/tests/membership/bmsc_spec5_pat.mpr.result
trunk/tests/membership/coregion_absolute_pat1.mpr.result
trunk/tests/membership/coregion_absolute_pat2.mpr.result
trunk/tests/membership/coregion_absolute_pat3.mpr.result
trunk/tests/membership/coregion_absolute_pat4.mpr.result
trunk/tests/membership/coregion_absolute_pat5.mpr.result
Modified: trunk/src/membership/membership_alg.cpp
===================================================================
--- trunk/src/membership/membership_alg.cpp 2011-08-16 16:59:19 UTC (rev 1182)
+++ trunk/src/membership/membership_alg.cpp 2011-08-16 17:39:51 UTC (rev 1183)
@@ -515,7 +515,7 @@
bool strict_coregion(MembershipContext* c, StrictOrderAreaPtr node_strict, std::vector<Event*>& node_events,
CoregionAreaPtr b_coregion, std::vector<Event*>& b_events)
{
- c->get_mem()->print_report(RS_ERROR, L"unsuported function: Flow cannot contain coregion.");
+ c->get_mem()->print_report(RS_ERROR, L"Error: Unsuported function (flow cannot contain coregion).");
return false;
}
Modified: trunk/src/membership/membership_base.h
===================================================================
--- trunk/src/membership/membership_base.h 2011-08-16 16:59:19 UTC (rev 1182)
+++ trunk/src/membership/membership_base.h 2011-08-16 17:39:51 UTC (rev 1183)
@@ -43,7 +43,7 @@
enum check_type {membership, receive_ordering};
enum TopBottom {top, bottom};
enum DiffType {NOT_DIFF, MESSAGE, ATTRIBUTE};
-enum checkingTimeMode{NO_TIME, RELATIVE_TIME, ABSOLUTE_TIME};
+enum checkingTimeMode{NO_TIME, RELATIVE_TIME, ABSOLUTE_TIME, RELATIVE_ABSOLUTE_TIME};
typedef boost::intrusive_ptr<Position> PositionPtr;
typedef boost::intrusive_ptr<Configuration> ConfigurationPtr;
@@ -156,6 +156,7 @@
public:
MembershipAbsoluteTime(AbsoluteTimePtr abs, HMscNodePtr ref_node)
+
{
this->abs = abs;
this->ref_node = ref_node;
@@ -571,6 +572,11 @@
return result;
}
+ /*
+ * parameters: e - event in the flow diagram
+ * list - list of time relations connected to event in the specification
+ * node_e - event from the specification to which time relations of list are connected.
+ */
void add_relative_time(Event* e, TimeRelationEventPtrList list, Event* node_e)
{
std::map<TimeRelationEventPtr, std::vector<MembershipTimeRelationPtr> >::iterator map_it;
@@ -646,7 +652,7 @@
}
}
- std::stack<std::map<TimeRelationEventPtr, std::vector<MembershipTimeRelationPtr> > >get_relative_time()
+ std::stack<std::map<TimeRelationEventPtr, std::vector<MembershipTimeRelationPtr> > > get_relative_time()
{
return relative_time;
}
Modified: trunk/src/membership/membership_time.cpp
===================================================================
--- trunk/src/membership/membership_time.cpp 2011-08-16 16:59:19 UTC (rev 1182)
+++ trunk/src/membership/membership_time.cpp 2011-08-16 17:39:51 UTC (rev 1183)
@@ -65,6 +65,7 @@
std::map<Event*, MembershipAbsoluteTimePtrList> absolute_time;
std::set<MembershipTimeRelationPtr> ref_node_time;
+ //time constraints from specification which has to be satisfied
relative_time = merge_relative_time_constraints(c);
absolute_time = merge_absolute_time_constraints(c);
ref_node_time = merge_ref_node_time_constraints(c);
@@ -250,6 +251,12 @@
AbsoluteTimePtr start_abs = *(start_e->get_absolut_times().begin());
AbsoluteTimePtr end_abs = *(end_e->get_absolut_times().begin());
+ if(start_abs == NULL || end_abs == NULL)
+ {
+ c->get_mem()->print_report(RS_ERROR, L"Error: Not able to check absolute time constraints (some flow event does not have absolute time constraint).");
+ c->add_not_covered_interval((*relative_it)->get_original_rel(), (*relative_it)->get_ref_node());
+ }
+
MscTimeIntervalSetD start_i = start_abs->get_interval_set();
MscTimeIntervalSetD end_i = end_abs->get_interval_set();
@@ -506,14 +513,19 @@
case NO_TIME: if(absolute_time.size() == 0 && relative_time.size() == 0 && ref_node_time.size() == 0)
return true;
else
- {
- //TODO
- std::cerr << "Nieco nie je pokryte" << std::endl;
- return false;
- }
+ //TODO refactoring, it could be done with better complexity
+ //absolute is not able to be run because no absolute constraints are in the flow
+ //and all time intervals in the flow are (-inf, inf), in this case check_time_method
+ //mark any time constraint from the specification which is not (-inf, inf).
+ return check_time_relative_mode(c, relative_time, absolute_time, ref_node_time);
case ABSOLUTE_TIME: return check_time_absolute_mode(c, relative_time, absolute_time, ref_node_time);
case RELATIVE_TIME: return check_time_relative_mode(c, relative_time, absolute_time, ref_node_time);
+
+ case RELATIVE_ABSOLUTE_TIME:
+ c->get_mem()->print_report(RS_ERROR, L"Error: Unable to check time constraints (flow contains relative and absolute time constraints).");
+ return true;
+
default: throw std::runtime_error("Error: Internal error 01");
}
}
@@ -860,13 +872,16 @@
if(node_e->get_time_relations().size() > 0)
c->add_relative_time(b_e, node_e->get_time_relations(), node_e);
+ //set the type of recognized time constraints in flow
+ if(c->get_checking_time_mode() == RELATIVE_ABSOLUTE_TIME)
+ return ;
+
if(b_e->get_absolut_times().size() > 0)
{
if(c->get_checking_time_mode() != RELATIVE_TIME)
c->set_checking_time_mode(ABSOLUTE_TIME);
else
- //TODO
- std::cerr << "Error: both absolute and relative time constraints were used" << std::endl;
+ c->set_checking_time_mode(RELATIVE_ABSOLUTE_TIME);
}
if(b_e->get_time_relations().size() > 0)
@@ -874,8 +889,7 @@
if(c->get_checking_time_mode() != ABSOLUTE_TIME)
c->set_checking_time_mode(RELATIVE_TIME);
else
- //TODO
- std::cerr << "Error: both absolute and relative time constraints were used" << std::endl;
+ c->set_checking_time_mode(RELATIVE_ABSOLUTE_TIME);
}
}
Modified: trunk/tests/membership/CMakeLists.txt
===================================================================
--- trunk/tests/membership/CMakeLists.txt 2011-08-16 16:59:19 UTC (rev 1182)
+++ trunk/tests/membership/CMakeLists.txt 2011-08-16 17:39:51 UTC (rev 1183)
@@ -234,8 +234,12 @@
ADD_MEMBER_TEST(bmsc_spec_absolute4.mpr bmsc_absolute_pat2_4.mpr 1)
ADD_MEMBER_TEST(bmsc_spec_absolute5.mpr bmsc_absolute_pat2_5.mpr 1)
-ADD_MEMBER_TEST(coregion_absolute.mpr coregion_absolute_part1.mpr 1)
-ADD_MEMBER_TEST(coregion_absolute.mpr coregion_absolute_part2.mpr 1)
-ADD_MEMBER_TEST(coregion_absolute.mpr coregion_absolute_part3.mpr 1)
-ADD_MEMBER_TEST(coregion_absolute.mpr coregion_absolute_part4.mpr 1)
-ADD_MEMBER_TEST(coregion_absolute.mpr coregion_absolute_part5.mpr 1)
+ADD_MEMBER_TEST(coregion_absolute.mpr coregion_absolute_pat1.mpr 1)
+ADD_MEMBER_TEST(coregion_absolute.mpr coregion_absolute_pat2.mpr 1)
+ADD_MEMBER_TEST(coregion_absolute.mpr coregion_absolute_pat3.mpr 1)
+ADD_MEMBER_TEST(coregion_absolute.mpr coregion_absolute_pat4.mpr 1)
+ADD_MEMBER_TEST(coregion_absolute.mpr coregion_absolute_pat5.mpr 1)
+
+ADD_MEMBER_TEST(bmsc_spec4.mpr bmsc_spec4_pat.mpr 1)
+ADD_MEMBER_TEST(bmsc_spec5.mpr bmsc_spec5_pat.mpr 1)
+
Added: trunk/tests/membership/bmsc_spec4_pat.mpr.result
===================================================================
--- trunk/tests/membership/bmsc_spec4_pat.mpr.result (rev 0)
+++ trunk/tests/membership/bmsc_spec4_pat.mpr.result 2011-08-16 17:39:51 UTC (rev 1183)
@@ -0,0 +1,25 @@
+Flow "Page_1 not found. Unsatisfied time constraint(s). Some interval(s) are only partialy satisfied:
+mscdocument bmsc_spec4;
+msc Page_1;
+inst PC;
+inst Router;
+inst Server;
+PC: instance;
+out c,0 to Router;
+endinstance;
+Router: instance;
+in c,0 from PC;
+label e0;
+out a,1 to Server;
+time/* NOT_FULL_COVER */
+ e1 [0,1];
+label e1;
+out b,2 to Server;
+in b,3 from Server;
+endinstance;
+Server: instance;
+in a,1 from Router;
+in b,2 from Router;
+out b,3 to Router;
+endinstance;
+endmsc;
Added: trunk/tests/membership/bmsc_spec5_pat.mpr.result
===================================================================
--- trunk/tests/membership/bmsc_spec5_pat.mpr.result (rev 0)
+++ trunk/tests/membership/bmsc_spec5_pat.mpr.result 2011-08-16 17:39:51 UTC (rev 1183)
@@ -0,0 +1 @@
+Flow "Page_1" found.
Added: trunk/tests/membership/coregion_absolute_pat1.mpr.result
===================================================================
--- trunk/tests/membership/coregion_absolute_pat1.mpr.result (rev 0)
+++ trunk/tests/membership/coregion_absolute_pat1.mpr.result 2011-08-16 17:39:51 UTC (rev 1183)
@@ -0,0 +1,2 @@
+Error: Unable to check time constraints (flow contains relative and absolute time constraints).
+Flow "Page_1" found.
Added: trunk/tests/membership/coregion_absolute_pat2.mpr.result
===================================================================
--- trunk/tests/membership/coregion_absolute_pat2.mpr.result (rev 0)
+++ trunk/tests/membership/coregion_absolute_pat2.mpr.result 2011-08-16 17:39:51 UTC (rev 1183)
@@ -0,0 +1,2 @@
+Error: Unable to check time constraints (flow contains relative and absolute time constraints).
+Flow "Page_1" found.
Added: trunk/tests/membership/coregion_absolute_pat3.mpr.result
===================================================================
--- trunk/tests/membership/coregion_absolute_pat3.mpr.result (rev 0)
+++ trunk/tests/membership/coregion_absolute_pat3.mpr.result 2011-08-16 17:39:51 UTC (rev 1183)
@@ -0,0 +1,2 @@
+Error: Unable to check time constraints (flow contains relative and absolute time constraints).
+Flow "Page_1" found.
Added: trunk/tests/membership/coregion_absolute_pat4.mpr.result
===================================================================
--- trunk/tests/membership/coregion_absolute_pat4.mpr.result (rev 0)
+++ trunk/tests/membership/coregion_absolute_pat4.mpr.result 2011-08-16 17:39:51 UTC (rev 1183)
@@ -0,0 +1,2 @@
+Error: Unable to check time constraints (flow contains relative and absolute time constraints).
+Flow "Page_1" found.
Added: trunk/tests/membership/coregion_absolute_pat5.mpr.result
===================================================================
--- trunk/tests/membership/coregion_absolute_pat5.mpr.result (rev 0)
+++ trunk/tests/membership/coregion_absolute_pat5.mpr.result 2011-08-16 17:39:51 UTC (rev 1183)
@@ -0,0 +1,2 @@
+Error: Unable to check time constraints (flow contains relative and absolute time constraints).
+Flow "Page_1" found.
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|