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
25
#include "
StatechartPerformanceTest.h
"
26
27
#include <
ArmarXCore/core/services/tasks/ThreadList.h
>
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
41
StatechartPerformanceTest::onInitStatechart
()
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://////"
));
49
SingleTypeVariantListPtr
list
=
50
new
SingleTypeVariantList
(
VariantType::Map
(
VariantType::Float
));
51
StringValueMapPtr
map =
new
StringValueMap
(
VariantType::Float
);
52
map->addVariant(
"left"
, 0.3f);
53
list
->addElement(map);
54
input
[
"sampleList"
] =
list
;
55
setToplevelState
(
Statechart_StatechartPerfomanceTest::createInstance
(),
input
);
56
}
57
58
void
59
StatechartPerformanceTest::onConnectStatechart
()
60
{
61
ARMARX_INFO
<<
"Starting StatechartPerfomanceTest"
;
62
}
63
64
void
65
StatechartPerformanceTest::onExitStatechart
()
66
{
67
ARMARX_VERBOSE
<<
"thread count: "
68
<<
ThreadList::getApplicationThreadList
()->getRunningTaskNames().size();
69
}
70
#endif
71
72
73
void
74
Statechart_StatechartPerfomanceTest::defineParameters
()
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
85
Statechart_StatechartPerfomanceTest::defineSubstates
()
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
119
StateRun::defineParameters
()
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
129
StateRun::onEnter
()
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
172
StateRun::onExit
()
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
ArmarXCore
applications
StateChartExamples
StatechartPerformanceTest
StatechartPerformanceTest.cpp
Generated on Sat Mar 29 2025 09:17:20 for armarx_documentation by
1.8.17