StatechartPerformanceTest.cpp
Go to the documentation of this file.
1 /*
2 * This file is part of ArmarX.
3 *
4 * Copyright (C) 2011-2016, High Performance Humanoid Technologies (H2T), Karlsruhe Institute of Technology (KIT), all rights reserved.
5 *
6 * ArmarX is free software; you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License version 2 as
8 * published by the Free Software Foundation.
9 *
10 * ArmarX is distributed in the hope that it will be useful, but
11 * WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 * GNU General Public License for more details.
14 *
15 * You should have received a copy of the GNU General Public License
16 * along with this program. If not, see <http://www.gnu.org/licenses/>.
17 *
18 * @package ArmarX::StatechartPerfomanceTest
19 * @author ( at kit dot edu)
20 * @date
21 * @copyright http://www.gnu.org/licenses/gpl-2.0.txt
22 * GNU General Public License
23 */
24 
26 
28 
29 namespace armarx
30 {
31 
32 
33 #ifdef REMOTE
34  void
35  StatechartPerfomanceTest::onInitRemoteStateOfferer()
36  {
37  addState<Statechart_StatechartPerfomanceTest>("PerfTest");
38  }
39 #else
40  void
42  {
43  std::cout << "onInitComponent" << std::endl;
44  StringVariantContainerBaseMap input;
45 
46  input["Timeout"] = new SingleVariant(4);
47  input["name"] = new SingleVariant(std::string("myname"));
48  input["file"] = new SingleVariant(std::string("file://////"));
52  map->addVariant("left", 0.3f);
53  list->addElement(map);
54  input["sampleList"] = list;
56  }
57 
58  void
60  {
61  ARMARX_INFO << "Starting StatechartPerfomanceTest";
62  }
63 
64  void
66  {
67  ARMARX_VERBOSE << "thread count: "
68  << ThreadList::getApplicationThreadList()->getRunningTaskNames().size();
69  }
70 #endif
71 
72 
73  void
75  {
76  setLocalMinimumLoggingLevel(MessageTypeT::WARN);
77 
78  addToInput("Timeout", VariantType::Int, false);
79  addToInput("name", VariantType::String, false);
80  addToInput("file", VariantType::String, false);
81  addToInput("sampleList", VariantType::List(VariantType::Map(VariantType::Float)), false);
82  }
83 
84  void
86  {
87 
88  PMPtr mapping = createMapping()
89  ->mapFromParent("Timeout", "Timeout")
90  ->mapFromParent("name", "name")
91  ->mapFromParent("file", "file")
92  ->mapFromParent("sampleList");
93  //add substates
94 
95 
96  StatePtr stateRun = addState<StateRun>("Running");
97 
98  StatePtr stateRun2 = addState<StateRun>("Running2");
99  setInitState(stateRun, mapping);
100  StatePtr stateSuccess = addState<SuccessState>(
101  "Success"); // preimplemented state derived from FinalState, that triggers a transition on the upper state
102  StatePtr stateFailure = addState<FailureState>(
103  "Failure"); // preimplemented state derived from FinalState, that triggers a transition on the upper state
104 
105 
106  // add transitions
107  // addTransition<EvNext>(getInitState(), stateRun, mapping);
108  addTransition<EvNext>(stateRun, stateRun2, mapping);
109  addTransition<EvTimeout>(stateRun, stateRun2, mapping);
110  addTransitionFromAllStates<Failure>(stateFailure, mapping);
111  addTransition<EvNext>(stateRun2, stateRun, mapping);
112  addTransition<EvTimeout>(stateRun2, stateRun, mapping);
113  addTransition<Success>(stateRun, stateSuccess);
114  addTransition<Success>(stateRun2, stateSuccess);
115  // ...add more transitions
116  }
117 
118  void
120  {
121  addToInput("Timeout", VariantType::Int, false);
122  addToInput("name", VariantType::String, false);
123  addToInput("file", VariantType::String, false);
124  addToInput("sampleList", VariantType::List(VariantType::Map(VariantType::Float)), false);
125  counter = 0;
126  }
127 
128  void
130  {
131 
132  // lastCall = IceUtil::Time::now();
133  // if(counter <= 2)
134  // setTimeoutEvent(100, createEvent<EvTimeout>());
135  if (counter == 0)
136  {
137  lastCall = IceUtil::Time::now();
138  }
139 
140  counter++;
141 
142  //sleep(1);
143  if (counter > 1000)
144  {
145  IceUtil::Time dura = IceUtil::Time::now() - lastCall;
146  ARMARX_ERROR << "c: " << counter << " Dura total: " << dura.toMilliSeconds()
147  << " avg Duration in ms: " << dura.toMilliSecondsDouble() / counter / 2
148  << flush;
149  ARMARX_ERROR << "Timeout: " << getInput<int>("Timeout") << flush;
150  ARMARX_ERROR << "List Entry: "
151  << getInput<SingleTypeVariantList>("sampleList")
152  ->getElement<StringValueMap>(0)
153  ->getVariant("left")
154  ->getFloat()
155  << flush;
156  counter = 0;
157  lastCall = IceUtil::Time::now();
158  sendEvent<Failure>();
159  }
160  else
161  {
162  // ARMARX_VERBOSE << "counter :" << counter << std::endl;
163  // setTimeoutEvent(100, createEvent<EvNext>());
164  sendEvent<EvNext>();
165  // ARMARX_VERBOSE << "counter after:" << counter << std::endl;
166  }
167 
168  // usleep(100000);
169  }
170 
171  void
173  {
174  ARMARX_VERBOSE << "exiting StateRun" << std::endl;
175  }
176 
177 
178 } // namespace armarx
ARMARX_VERBOSE
#define ARMARX_VERBOSE
Definition: Logging.h:187
armarx::VariantType::Float
const VariantTypeId Float
Definition: Variant.h:919
armarx::VariantType::List
const VariantContainerType List
Definition: SingleTypeVariantList.h:204
armarx::MessageTypeT::WARN
@ WARN
armarx::StateRun::onEnter
void onEnter() override
Definition: StatechartPerformanceTest.cpp:129
list
list(APPEND SOURCES ${QT_RESOURCES}) set(COMPONENT_LIBS ArmarXGui ArmarXCoreObservers ArmarXCoreEigen3Variants PlotterController $
Definition: CMakeLists.txt:49
armarx::VariantType::Map
const VariantContainerType Map
Definition: StringValueMap.h:263
armarx::StateRun::defineParameters
void defineParameters() override
Definition: StatechartPerformanceTest.cpp:119
armarx::ThreadList::getApplicationThreadList
static ThreadListPtr getApplicationThreadList()
getApplicationThreadList retrieves the ThreadList, that contains all TimerTasks and PeriodicTasks in ...
Definition: ThreadList.cpp:206
armarx::createMapping
ParameterMappingPtr createMapping()
Returns a new and empty instance of ParameterMapping.
Definition: ParameterMapping.cpp:251
armarx::VariantType::StringValueMap
const VariantTypeId StringValueMap
Definition: StringValueMap.h:265
IceInternal::Handle< SingleTypeVariantList >
armarx::StatechartContext::setToplevelState
bool setToplevelState(const armarx::StatePtr &newToplevelState, StringVariantContainerBaseMap startParameters=StringVariantContainerBaseMap())
setToplevelState initializes newToplevelState with the current StatechartContext and the current Stat...
Definition: StatechartContext.cpp:195
armarx::StateRun::lastCall
IceUtil::Time lastCall
Definition: StatechartPerformanceTest.h:87
armarx::SingleVariant
The SingleVariant class is required to store single Variant instances in VariantContainer subclasses.
Definition: VariantContainer.h:107
armarx::flush
const LogSender::manipulator flush
Definition: LogSender.h:251
armarx::aron::input
ReaderT::InputType & input
Definition: rw.h:12
ThreadList.h
armarx::StatechartPerformanceTest::onInitStatechart
void onInitStatechart() override
onInitStatechart this method is called when the statechart is started.
Definition: StatechartPerformanceTest.cpp:41
ARMARX_ERROR
#define ARMARX_ERROR
Definition: Logging.h:196
armarx::Statechart_StatechartPerfomanceTest::defineParameters
void defineParameters() override
Definition: StatechartPerformanceTest.cpp:74
armarx::armem::Time
armarx::core::time::DateTime Time
Definition: forward_declarations.h:13
ARMARX_INFO
#define ARMARX_INFO
Definition: Logging.h:181
armarx::StatechartPerformanceTest::onConnectStatechart
void onConnectStatechart() override
onConnectStatechart is called before armarx::StatechartContext::startStatechart() and after armarx::S...
Definition: StatechartPerformanceTest.cpp:59
armarx::StateRun::counter
int counter
Definition: StatechartPerformanceTest.h:88
armarx::VariantType::Int
const VariantTypeId Int
Definition: Variant.h:917
armarx::StatechartPerformanceTest::onExitStatechart
void onExitStatechart() override
onExitStatechart can be implemented by subclasses
Definition: StatechartPerformanceTest.cpp:65
StatechartPerformanceTest.h
armarx::StateRun::onExit
void onExit() override
Definition: StatechartPerformanceTest.cpp:172
armarx::StateTemplate< Statechart_StatechartPerfomanceTest >::createInstance
static IceInternal::Handle< StateType > createInstance(std::string stateName="")
Creates a new state instance of the type of the template parameter.
Definition: StateTemplate.h:98
armarx::Statechart_StatechartPerfomanceTest::defineSubstates
void defineSubstates() override
Definition: StatechartPerformanceTest.cpp:85
armarx::VariantType::String
const VariantTypeId String
Definition: Variant.h:921
armarx::StringValueMap
The StringValueMap class is a subclass of VariantContainer and is comparable to a std::map<std::strin...
Definition: StringValueMap.h:47
armarx::VariantType::SingleTypeVariantList
const VariantTypeId SingleTypeVariantList
Definition: SingleTypeVariantList.h:206
armarx
This file offers overloads of toIce() and fromIce() functions for STL container types.
Definition: ArmarXTimeserver.cpp:27