summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarijke Hengstmengel <MHengstmengel@users.noreply.github.com>2010-03-04 09:24:26 +0000
committerMarijke Hengstmengel <MHengstmengel@users.noreply.github.com>2010-03-04 09:24:26 +0000
commitf61aa7dff6c5008333ea526ee1f01e067e09ed9c (patch)
tree341baae89c09aeecccab7200c5b2a1f4aa386e84
parent0853828a839c56b39f20db360abce6af27d1cbc2 (diff)
downloadATCD-f61aa7dff6c5008333ea526ee1f01e067e09ed9c.tar.gz
Thu Mar 4 09:21:49 UTC 2010 Marijke Hengstmengel <mhengstmengel@remedy.nl>
* connectors/dds4ccm/performance-tests/Latency/Base/Latency_Test_Base.idl: * connectors/dds4ccm/performance-tests/Latency/descriptors/Plan.cdp: * connectors/dds4ccm/performance-tests/Latency/descriptors/Plan_pub.cdp: * connectors/dds4ccm/performance-tests/Latency/descriptors/Plan_sub.cdp: * connectors/dds4ccm/performance-tests/Latency/descriptors/README: * connectors/dds4ccm/performance-tests/Latency/descriptors/run_pub.pl: * connectors/dds4ccm/performance-tests/Latency/descriptors/run_sub.pl: * connectors/dds4ccm/performance-tests/Latency/descriptors/USER_QOS_PROFILES.xml: * connectors/dds4ccm/performance-tests/Latency/Receiver/Latency_Test_Receiver_exec.cpp: * connectors/dds4ccm/performance-tests/Latency/Sender/Latency_Test_Sender.idl: * connectors/dds4ccm/performance-tests/Latency/Sender/Latency_Test_Sender_exec.cpp: * connectors/dds4ccm/performance-tests/Latency/Sender/Latency_Test_Sender_exec.h: Add statistics, use only fixed size elements in topic and clean up code.
-rw-r--r--CIAO/ChangeLog17
-rw-r--r--CIAO/connectors/dds4ccm/performance-tests/Latency/Base/Latency_Test_Base.idl4
-rw-r--r--CIAO/connectors/dds4ccm/performance-tests/Latency/Receiver/Latency_Test_Receiver_exec.cpp2
-rw-r--r--CIAO/connectors/dds4ccm/performance-tests/Latency/Sender/Latency_Test_Sender.idl1
-rw-r--r--CIAO/connectors/dds4ccm/performance-tests/Latency/Sender/Latency_Test_Sender_exec.cpp183
-rw-r--r--CIAO/connectors/dds4ccm/performance-tests/Latency/Sender/Latency_Test_Sender_exec.h23
-rw-r--r--CIAO/connectors/dds4ccm/performance-tests/Latency/descriptors/Plan.cdp15
-rw-r--r--CIAO/connectors/dds4ccm/performance-tests/Latency/descriptors/Plan_pub.cdp13
-rw-r--r--CIAO/connectors/dds4ccm/performance-tests/Latency/descriptors/Plan_sub.cdp2
-rw-r--r--CIAO/connectors/dds4ccm/performance-tests/Latency/descriptors/README17
-rw-r--r--CIAO/connectors/dds4ccm/performance-tests/Latency/descriptors/USER_QOS_PROFILES.xml93
-rw-r--r--CIAO/connectors/dds4ccm/performance-tests/Latency/descriptors/run_pub.pl4
-rw-r--r--CIAO/connectors/dds4ccm/performance-tests/Latency/descriptors/run_sub.pl4
13 files changed, 246 insertions, 132 deletions
diff --git a/CIAO/ChangeLog b/CIAO/ChangeLog
index 8489ec6d59f..ef69bed8440 100644
--- a/CIAO/ChangeLog
+++ b/CIAO/ChangeLog
@@ -1,3 +1,20 @@
+Thu Mar 4 09:21:49 UTC 2010 Marijke Hengstmengel <mhengstmengel@remedy.nl>
+
+ * connectors/dds4ccm/performance-tests/Latency/Base/Latency_Test_Base.idl:
+ * connectors/dds4ccm/performance-tests/Latency/descriptors/Plan.cdp:
+ * connectors/dds4ccm/performance-tests/Latency/descriptors/Plan_pub.cdp:
+ * connectors/dds4ccm/performance-tests/Latency/descriptors/Plan_sub.cdp:
+ * connectors/dds4ccm/performance-tests/Latency/descriptors/README:
+ * connectors/dds4ccm/performance-tests/Latency/descriptors/run_pub.pl:
+ * connectors/dds4ccm/performance-tests/Latency/descriptors/run_sub.pl:
+ * connectors/dds4ccm/performance-tests/Latency/descriptors/USER_QOS_PROFILES.xml:
+ * connectors/dds4ccm/performance-tests/Latency/Receiver/Latency_Test_Receiver_exec.cpp:
+ * connectors/dds4ccm/performance-tests/Latency/Sender/Latency_Test_Sender.idl:
+ * connectors/dds4ccm/performance-tests/Latency/Sender/Latency_Test_Sender_exec.cpp:
+ * connectors/dds4ccm/performance-tests/Latency/Sender/Latency_Test_Sender_exec.h:
+ Add statistics, use only fixed size elements in topic and clean up code.
+
+
Thu Mar 4 09:06:49 UTC 2010 Marcel Smit <msmit@remedy.nl>
* bin/ciao_tests.lst:
diff --git a/CIAO/connectors/dds4ccm/performance-tests/Latency/Base/Latency_Test_Base.idl b/CIAO/connectors/dds4ccm/performance-tests/Latency/Base/Latency_Test_Base.idl
index 737864b741c..2c5d1abe554 100644
--- a/CIAO/connectors/dds4ccm/performance-tests/Latency/Base/Latency_Test_Base.idl
+++ b/CIAO/connectors/dds4ccm/performance-tests/Latency/Base/Latency_Test_Base.idl
@@ -11,10 +11,10 @@
#pragma ndds typesupport "Base/Latency_Test_BaseSupport.h"
const short MAX_DATA_SEQUENCE_LENGTH = 8192;
-typedef sequence<octet> OctetSeq;
+typedef sequence<octet, MAX_DATA_SEQUENCE_LENGTH> OctetSeq;
struct LatencyTest {
- string key;
+// string key;
long seq_num;
long ping;
OctetSeq data;
diff --git a/CIAO/connectors/dds4ccm/performance-tests/Latency/Receiver/Latency_Test_Receiver_exec.cpp b/CIAO/connectors/dds4ccm/performance-tests/Latency/Receiver/Latency_Test_Receiver_exec.cpp
index 5952a6ff9ad..56985aed704 100644
--- a/CIAO/connectors/dds4ccm/performance-tests/Latency/Receiver/Latency_Test_Receiver_exec.cpp
+++ b/CIAO/connectors/dds4ccm/performance-tests/Latency/Receiver/Latency_Test_Receiver_exec.cpp
@@ -31,7 +31,7 @@ namespace CIAO_Latency_Test_Receiver_Impl
{
this->callback_.write_one(an_instance);
}
- }
+ }
void
LatencyTest_Listener_exec_i::on_many_data (
diff --git a/CIAO/connectors/dds4ccm/performance-tests/Latency/Sender/Latency_Test_Sender.idl b/CIAO/connectors/dds4ccm/performance-tests/Latency/Sender/Latency_Test_Sender.idl
index a8b44055aa4..d57b08797a9 100644
--- a/CIAO/connectors/dds4ccm/performance-tests/Latency/Sender/Latency_Test_Sender.idl
+++ b/CIAO/connectors/dds4ccm/performance-tests/Latency/Sender/Latency_Test_Sender.idl
@@ -18,7 +18,6 @@ module Latency_Test
component Sender
{
port CCM_DDS::LatencyTest::DDS_Write info_write;
- attribute unsigned short keys;
attribute unsigned long iterations;
attribute unsigned short sleep;
attribute unsigned short datalen; //minimal 32
diff --git a/CIAO/connectors/dds4ccm/performance-tests/Latency/Sender/Latency_Test_Sender_exec.cpp b/CIAO/connectors/dds4ccm/performance-tests/Latency/Sender/Latency_Test_Sender_exec.cpp
index 66ae2f02a67..977950884dc 100644
--- a/CIAO/connectors/dds4ccm/performance-tests/Latency/Sender/Latency_Test_Sender_exec.cpp
+++ b/CIAO/connectors/dds4ccm/performance-tests/Latency/Sender/Latency_Test_Sender_exec.cpp
@@ -9,6 +9,7 @@
#include "ace/Reactor.h"
#include "ace/High_Res_Timer.h"
+
namespace CIAO_Latency_Test_Sender_Impl
{
//============================================================
@@ -32,13 +33,13 @@ namespace CIAO_Latency_Test_Sender_Impl
{
ACE_UINT64 receive_time = 0;
- //only interested in messages received with a latency_ping = 0 (messages sent beck by receiver)
+ //only interested in messages received with a latency_ping = 0 (messages sent back by receiver)
if( an_instance.ping == 0)
- {
- ACE_High_Res_Timer::gettimeofday_hr ().to_usec ( receive_time);
- this->callback_.read(an_instance, receive_time);
- }
- }
+ {
+ ACE_High_Res_Timer::gettimeofday_hr ().to_usec ( receive_time);
+ this->callback_.read(an_instance, receive_time);
+ }
+ }
void
LatencyTest_Listener_exec_i::on_many_data (
@@ -123,7 +124,6 @@ namespace CIAO_Latency_Test_Sender_Impl
//============================================================
Sender_exec_i::Sender_exec_i (void)
: iterations_ (1000),
- keys_ (1),
datalen_(100),
sleep_(10),
matched_(false),
@@ -135,7 +135,8 @@ namespace CIAO_Latency_Test_Sender_Impl
number_of_msg_(0), //number of sent messages
timer_(false),
received_(false),
- seq_num_(0)
+ seq_num_(0),
+ sigma_duration_squared_(0)
{
this->ticker_ = new WriteTicker (*this);
}
@@ -144,6 +145,11 @@ namespace CIAO_Latency_Test_Sender_Impl
{
}
+ static int compare_two_longs(const void *long1, const void *long2)
+ {
+ return (*(CORBA::Long*)long1 - *(CORBA::Long*)long2 );
+ }
+
void
Sender_exec_i::write_one (void)
{
@@ -152,9 +158,9 @@ namespace CIAO_Latency_Test_Sender_Impl
if( (this->number_of_msg_ == 0) || ( this->received_.value()))
{
// all messages send, stop timer
- if((this->iterations_ != 0) && (this->number_of_msg_ >= (this->iterations_ * this->keys_)))
+ if((this->iterations_ != 0) && (this->number_of_msg_ >= this->iterations_ ))
{
- this->context_->get_CCM_object()->_get_orb ()->orb_core ()->reactor ()->cancel_timer (this->ticker_);
+ this->stop();
this->timer_ = false;
}
else
@@ -162,20 +168,20 @@ namespace CIAO_Latency_Test_Sender_Impl
try
{
//send messages with indicator (ping = 1L) so that subscriber knows that this message has to sent back.
- this->last_key_->second->ping = 1L;
- this->last_key_->second->seq_num = this->number_of_msg_;
+ this->test_topic_.ping = 1L;
+ this->test_topic_.seq_num = this->number_of_msg_;;
//keep last sent seq_num, in order to control if message is sent back.
this->seq_num_ = this->number_of_msg_;
-
- ACE_High_Res_Timer::gettimeofday_hr ().to_usec (this->start_time_);
- this->writer_->write_one (this->last_key_->second, ::DDS::HANDLE_NIL);
- }
+ this->received_ = false;
+ ACE_High_Res_Timer::gettimeofday_hr ().to_usec (this->start_time_);
+ this->writer_->write_one (this->test_topic_, ::DDS::HANDLE_NIL);
+ }
catch (const CCM_DDS::InternalError& )
{
ACE_ERROR ((LM_ERROR, ACE_TEXT ("ERROR: Internal Error ")
- ACE_TEXT ("while updating writer info for <%C>.\n"),
- this->last_key_->first.c_str ()));
+ ACE_TEXT ("while updating writer info for <%u>.\n"),
+ this->test_topic_.seq_num));
}
++this->number_of_msg_;
}
@@ -183,7 +189,7 @@ namespace CIAO_Latency_Test_Sender_Impl
}
void
- Sender_exec_i::read(LatencyTest an_instance,ACE_UINT64 receive_time)
+ Sender_exec_i::read(LatencyTest an_instance,ACE_UINT64 receive_time)
{
if (an_instance.seq_num == this->seq_num_.value())
{
@@ -218,19 +224,6 @@ namespace CIAO_Latency_Test_Sender_Impl
{
ACE_GUARD_THROW_EX (TAO_SYNCH_MUTEX, _guard,
this->mutex_, CORBA::INTERNAL ());
- for (CORBA::UShort i = 1; i < this->keys_ + 1; ++i)
- {
- char key[7];
- LatencyTest *new_key = new LatencyTest;
- ACE_OS::sprintf (key, "KEY_%d", i);
- new_key->key = CORBA::string_dup(key);
- new_key->seq_num = 0;
- new_key->data.allocbuf(this->datalen_);
- // to do : freebuf, where ?
- this->samples_[key] = new_key;
- }
- this->last_key_ = this->samples_.begin ();
-
//this->sleep_ is in ms
unsigned int sec = this->sleep_/1000;
unsigned int usec = (this->sleep_ % 1000) * 1000;
@@ -251,9 +244,13 @@ namespace CIAO_Latency_Test_Sender_Impl
void
Sender_exec_i::record_time (ACE_UINT64 receive_time)
{
- ACE_UINT64 interval = ( receive_time - this->start_time_);
- ++this->count_;
+ ACE_UINT64 interval = ( receive_time - this->start_time_);
+ ++this->count_;
long duration = static_cast <CORBA::Long>(interval);
+ int i = this->count_;
+ // keep all duration times for statistics
+ this->duration_times[i-1] = duration;
+ this->sigma_duration_squared_ += (double)duration * (double)duration;
this->tv_total_ += duration;
if (duration > this->tv_max_.value ()|| (this->tv_max_.value () == 0L))
this->tv_max_ = duration;
@@ -270,19 +267,16 @@ Sender_exec_i::record_time (ACE_UINT64 receive_time)
void
Sender_exec_i::iterations (::CORBA::ULong iterations)
{
- this->iterations_ = iterations;
- }
-
- ::CORBA::UShort
- Sender_exec_i::keys (void)
- {
- return this->keys_;
- }
-
- void
- Sender_exec_i::keys (::CORBA::UShort keys)
- {
- this->keys_ = keys;
+ if (iterations == 0)
+ {
+ ACE_ERROR ((LM_ERROR,
+ ACE_TEXT ("ERROR: iterations must be greater as '0'\n")));
+ throw ::CORBA::BAD_PARAM ();
+ }
+ else
+ {
+ this->iterations_ = iterations;
+ }
}
::CORBA::UShort
@@ -325,8 +319,7 @@ Sender_exec_i::record_time (ACE_UINT64 receive_time)
void
Sender_exec_i::datalen (::CORBA::UShort datalen)
{
- // 7 is length of key, has to be removed
- int overhead_size = sizeof(CORBA::ULong) + sizeof(CORBA::ULong) + 7;
+ int overhead_size = sizeof(CORBA::ULong) + sizeof(CORBA::ULong);
if((datalen <= overhead_size) || (datalen > MAX_DATA_SEQUENCE_LENGTH))
{
ACE_ERROR ((LM_ERROR,
@@ -334,9 +327,9 @@ Sender_exec_i::record_time (ACE_UINT64 receive_time)
throw ::CORBA::BAD_PARAM ();
}
this->datalen_ = datalen - overhead_size;
+ this->duration_times = new CORBA::Long[this->iterations_];
}
-
void
Sender_exec_i::set_session_context (::Components::SessionContext_ptr ctx)
{
@@ -375,43 +368,81 @@ Sender_exec_i::record_time (ACE_UINT64 receive_time)
ACE_ERROR ((LM_ERROR,
ACE_TEXT ("ERROR: Sender_exec_i::ccm_activate: Unknown exception caught\n")));
}
+ //make instances of Topic
+ this->test_topic_.seq_num = 0;
+ this->test_topic_.ping = 0;
+ this->test_topic_.data.length (this->datalen_);
}
-
+
void
- Sender_exec_i::ccm_passivate (void)
+ Sender_exec_i::stop (void)
{
if (this->timer_.value ())
- this->context_->get_CCM_object()->_get_orb ()->orb_core ()->reactor ()->cancel_timer (this->ticker_);
+ {
+ this->context_->get_CCM_object()->_get_orb ()->orb_core ()->reactor ()->cancel_timer (this->ticker_);
+ ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("Sender_exec_i::stop : Timer canceled.\n")));
+ delete this->ticker_;
+ }
+ }
+
+ void
+ Sender_exec_i::ccm_passivate (void)
+ {
+ this->stop();
}
void
Sender_exec_i::ccm_remove (void)
{
- ACE_DEBUG ((LM_DEBUG, "SUMMARY SENDER number of messages sent: %u\n",
- (this->number_of_msg_ + 1)));
-
- if( this->count_.value () > 0)
- {
- double avg = this->tv_total_.value () / this->count_.value ();
- ACE_DEBUG ((LM_DEBUG,"Collecting statistics on %d samples with message size %u.\n"
- " TO DO: calculate stdev, 50%%,90%%,99%% and 99.99%%\n"
- "This is the roundtrip time, *not* the one-way-latency\n"
- "bytes ,stdev us,ave us, min us, 50%% us, 90%% us, 99%% us, 99.99%%, max us\n"
- "------,-------,-------,-------,-------,-------,-------,-------,-------\n"
- "%6d,-------,%7.1f,%7u,-------,-------,-------,-------,%7u\n",
- this->count_.value (),
- this->datalen_,
- this->datalen_,
- avg,
- this->tv_min_.value (),
- this->tv_max_.value ()));
- }
- else
- {
- ACE_ERROR ((LM_ERROR, "SUMMARY SENDER latency time:\n "
+ ACE_DEBUG ((LM_DEBUG, "SUMMARY SENDER number of messages sent: %u\n",
+ (this->number_of_msg_)));
+
+ //sort all duration times
+ qsort(this->duration_times, this->count_,sizeof(CORBA::Long), compare_two_longs);
+ /* Show latency_50_percentile, latency_90_percentile, latency_99_percentile and
+ * latency_99.99_percentile.
+ * For example duration_times[per50] is the median i.e. 50% of the
+ * samples have a latency time <= duration_times[per50]
+ */
+ int per50 = this->count_/2;
+ int per90 = (int)(this->count_ * 0.90);
+ int per99 = (int)(this->count_ * 0.990);
+ int per999 = (int)(this->count_ * 0.999);
+
+ double avg = this->tv_total_.value () / this->count_;
+ //calculate standard deviation
+ double _roundtrip_time_std = sqrt(
+ (this->sigma_duration_squared_ / (double)this->count_) -
+ (avg * avg));
+
+ int overhead_size = sizeof(CORBA::ULong) + sizeof(CORBA::ULong);
+ CORBA::UShort datalen = overhead_size + this->datalen_;
+// if( this->count_.value () > 0)
+ if( this->count_ > 0)
+ {
+ ACE_DEBUG ((LM_DEBUG,"Collecting statistics on %d samples with message size %u.\n"
+ "This is the roundtrip time, *not* the one-way-latency\n"
+ "bytes ,stdev us,ave us, min us, 50%% us, 90%% us, 99%% us, 99.9%%, max us\n"
+ "------,-------,-------,-------,-------,-------,-------,-------,-------\n"
+ "%6d,%7.1f,%7.1f,%7u,%7u,%7u,%7u,%7u,%7u\n",
+ this->count_,
+ datalen,
+ datalen,
+ _roundtrip_time_std,
+ avg,
+ this->tv_min_.value (),
+ this->duration_times[per50-1],
+ this->duration_times[per90-1],
+ this->duration_times[per99-1],
+ this->duration_times[per999-1],
+ this->tv_max_.value ()));
+ }
+ else
+ {
+ ACE_ERROR ((LM_ERROR, "SUMMARY SENDER latency time:\n "
"No samples reveived back.\n"));
- }
+ }
}
extern "C" SENDER_EXEC_Export ::Components::EnterpriseComponent_ptr
diff --git a/CIAO/connectors/dds4ccm/performance-tests/Latency/Sender/Latency_Test_Sender_exec.h b/CIAO/connectors/dds4ccm/performance-tests/Latency/Sender/Latency_Test_Sender_exec.h
index 407b8524f07..7ecd150c6d5 100644
--- a/CIAO/connectors/dds4ccm/performance-tests/Latency/Sender/Latency_Test_Sender_exec.h
+++ b/CIAO/connectors/dds4ccm/performance-tests/Latency/Sender/Latency_Test_Sender_exec.h
@@ -20,8 +20,8 @@
namespace CIAO_Latency_Test_Sender_Impl
{
typedef ACE_Atomic_Op <TAO_SYNCH_MUTEX, CORBA::Long > Atomic_Long;
- typedef ACE_Atomic_Op <TAO_SYNCH_MUTEX, CORBA::Long > Atomic_ULong;
- typedef ACE_Atomic_Op <TAO_SYNCH_MUTEX, CORBA::Boolean > Atomic_Boolean;
+ typedef ACE_Atomic_Op <TAO_SYNCH_MUTEX, CORBA::ULong > Atomic_ULong;
+ typedef ACE_Atomic_Op <ACE_Recursive_Thread_Mutex, CORBA::Boolean > Atomic_Boolean;
class Sender_exec_i;
//============================================================
@@ -116,9 +116,6 @@ class SENDER_EXEC_Export ConnectorStatusListener_exec_i
virtual ::CORBA::ULong iterations (void);
virtual void iterations (::CORBA::ULong iterations);
- virtual ::CORBA::UShort keys (void);
- virtual void keys (::CORBA::UShort keys);
-
virtual ::CORBA::UShort sleep (void);
virtual void sleep (::CORBA::UShort sleep);
@@ -136,7 +133,8 @@ class SENDER_EXEC_Export ConnectorStatusListener_exec_i
virtual void ccm_passivate (void);
virtual void ccm_remove (void);
- void start (void);
+ void start(void);
+ void stop (void);
void write_one (void);
void read(LatencyTest instance,ACE_UINT64 receive_time);
@@ -146,7 +144,6 @@ class SENDER_EXEC_Export ConnectorStatusListener_exec_i
WriteTicker *ticker_;
CORBA::UShort iterations_;
- CORBA::UShort keys_;
CORBA::UShort datalen_;
CORBA::UShort sleep_;
@@ -155,19 +152,19 @@ class SENDER_EXEC_Export ConnectorStatusListener_exec_i
Atomic_Long tv_total_;
Atomic_Long tv_max_;
Atomic_Long tv_min_;
- Atomic_Long count_;
+ CORBA::UShort count_;
CORBA::UShort number_of_msg_;
Atomic_Boolean timer_;
Atomic_Boolean received_;
Atomic_ULong seq_num_;
+ CORBA::Double sigma_duration_squared_;
ACE_UINT64 start_time_;
TAO_SYNCH_MUTEX mutex_;
- typedef std::map<ACE_CString, LatencyTest_var> Writer_Table;
- Writer_Table samples_;
-
- Writer_Table::iterator last_key_;
- };
+ LatencyTest test_topic_;
+ CORBA::Octet* buffer_;
+ CORBA::Long* duration_times;
+};
extern "C" SENDER_EXEC_Export ::Components::EnterpriseComponent_ptr
create_Latency_Test_Sender_Impl (void);
diff --git a/CIAO/connectors/dds4ccm/performance-tests/Latency/descriptors/Plan.cdp b/CIAO/connectors/dds4ccm/performance-tests/Latency/descriptors/Plan.cdp
index 33145eef113..dd5d8430507 100644
--- a/CIAO/connectors/dds4ccm/performance-tests/Latency/descriptors/Plan.cdp
+++ b/CIAO/connectors/dds4ccm/performance-tests/Latency/descriptors/Plan.cdp
@@ -232,24 +232,13 @@
<source/>
<implementation xmi:idref="SenderComponentImplementation" />
<configProperty>
- <name>keys</name>
- <value>
- <type>
- <kind>tk_ushort</kind>
- </type>
- <value>
- <ushort>1</ushort>
- </value>
- </value>
- </configProperty>
- <configProperty>
<name>iterations</name>
<value>
<type>
<kind>tk_ulong</kind>
</type>
<value>
- <ulong>10000</ulong>
+ <ulong>1000</ulong>
</value>
</value>
</configProperty>
@@ -260,7 +249,7 @@
<kind>tk_ushort</kind>
</type>
<value>
- <ushort>2</ushort>
+ <ushort>100</ushort>
</value>
</value>
</configProperty>
diff --git a/CIAO/connectors/dds4ccm/performance-tests/Latency/descriptors/Plan_pub.cdp b/CIAO/connectors/dds4ccm/performance-tests/Latency/descriptors/Plan_pub.cdp
index 2bd8d98972b..eb702b501a4 100644
--- a/CIAO/connectors/dds4ccm/performance-tests/Latency/descriptors/Plan_pub.cdp
+++ b/CIAO/connectors/dds4ccm/performance-tests/Latency/descriptors/Plan_pub.cdp
@@ -133,7 +133,7 @@
<kind>tk_string</kind>
</type>
<value>
- <string>HelloTest_Library#LatencyQoS</string>
+ <string>HelloTest_Library#LatencyPubQoS</string>
</value>
</value>
</configProperty>
@@ -145,17 +145,6 @@
<source/>
<implementation xmi:idref="SenderComponentImplementation" />
<configProperty>
- <name>keys</name>
- <value>
- <type>
- <kind>tk_ushort</kind>
- </type>
- <value>
- <ushort>1</ushort>
- </value>
- </value>
- </configProperty>
- <configProperty>
<name>iterations</name>
<value>
<type>
diff --git a/CIAO/connectors/dds4ccm/performance-tests/Latency/descriptors/Plan_sub.cdp b/CIAO/connectors/dds4ccm/performance-tests/Latency/descriptors/Plan_sub.cdp
index 5d8e36c520a..ec60487f40e 100644
--- a/CIAO/connectors/dds4ccm/performance-tests/Latency/descriptors/Plan_sub.cdp
+++ b/CIAO/connectors/dds4ccm/performance-tests/Latency/descriptors/Plan_sub.cdp
@@ -140,7 +140,7 @@
<kind>tk_string</kind>
</type>
<value>
- <string>HelloTest_Library#LatencyQoS</string>
+ <string>HelloTest_Library#LatencySubQoS</string>
</value>
</value>
</configProperty>
diff --git a/CIAO/connectors/dds4ccm/performance-tests/Latency/descriptors/README b/CIAO/connectors/dds4ccm/performance-tests/Latency/descriptors/README
new file mode 100644
index 00000000000..acc1aab79df
--- /dev/null
+++ b/CIAO/connectors/dds4ccm/performance-tests/Latency/descriptors/README
@@ -0,0 +1,17 @@
+
+This performace test shows the latency. The test can run with different options.
+
+- separate publisher and subscriber:
+ run_pub.pl and run_sub.pl with resp. Plan_pub.cdp and Plan_sub.cdp .
+
+- to check if test still compiles and runs , use this test
+ one publisher and one subscriber in 1 process :
+ run_test.pl with resp. Plan.cdp
+
+
+
+
+To test changes in the next attributes, changes this values in the publisher cdp-files:
+iterations : the number of messages from one instance to send. Has to be greater as 0.
+datalen: the datalen of a message (minimal 32).
+sleep: time in ms to sleep before writing the next message
diff --git a/CIAO/connectors/dds4ccm/performance-tests/Latency/descriptors/USER_QOS_PROFILES.xml b/CIAO/connectors/dds4ccm/performance-tests/Latency/descriptors/USER_QOS_PROFILES.xml
index 9b472b3f879..a69acd07537 100644
--- a/CIAO/connectors/dds4ccm/performance-tests/Latency/descriptors/USER_QOS_PROFILES.xml
+++ b/CIAO/connectors/dds4ccm/performance-tests/Latency/descriptors/USER_QOS_PROFILES.xml
@@ -39,7 +39,9 @@ RTI Data Distribution Service user manual.
<kind>KEEP_ALL_HISTORY_QOS</kind>
</history>
<durability>
- <kind>TRANSIENT_DURABILITY_QOS</kind>
+ <!--kind>TRANSIENT_DURABILITY_QOS</kind-->
+ <kind>VOLATILE_DURABILITY_QOS</kind>
+ <direct_communication>true</direct_communication>
</durability>
<resource_limits>
<max_instances>1</max_instances>
@@ -70,22 +72,86 @@ RTI Data Distribution Service user manual.
<max_samples_per_instance>LENGTH_UNLIMITED</max_samples_per_instance>
</resource_limits>
<durability>
- <kind>TRANSIENT_DURABILITY_QOS</kind>
+ <!--kind>TRANSIENT_DURABILITY_QOS</kind-->
+ <kind>VOLATILE_DURABILITY_QOS</kind>
+ <direct_communication>true</direct_communication>
</durability>
</datareader_qos>
-
</qos_profile>
- <qos_profile name="BestEffortQoS" is_default_qos="false">
+
+ <qos_profile name="LatencyPubQoS" is_default_qos="true">
+ <!-- QoS used to configure the data writer created in the example code -->
+ <datawriter_qos>
+ <reliability>
+ <kind>RELIABLE_RELIABILITY_QOS</kind>
+ <max_blocking_time>
+ <sec>DURATION_INFINITE_SEC</sec>
+ <nanosec>DURATION_INFINITE_NSEC</nanosec>
+ </max_blocking_time>
+ </reliability>
+ <history>
+ <kind>KEEP_ALL_HISTORY_QOS</kind>
+ </history>
+ <durability>
+ <!--kind>TRANSIENT_DURABILITY_QOS</kind-->
+ <kind>VOLATILE_DURABILITY_QOS</kind>
+ <direct_communication>true</direct_communication>
+ </durability>
+ <resource_limits>
+ <max_instances>1</max_instances>
+ <initial_instances>1</initial_instances>
+ <max_samples>LENGTH_UNLIMITED</max_samples>
+ <initial_samples>100</initial_samples>
+ <max_samples_per_instance>LENGTH_UNLIMITED</max_samples_per_instance>
+ </resource_limits>
+ <protocol>
+ <rtps_reliable_writer>
+ <max_heartbeat_retries>10</max_heartbeat_retries>
+ </rtps_reliable_writer>
+ </protocol>
+ </datawriter_qos>
+ <!-- QoS used to configure the data reader created in the example code -->
+ <datareader_qos>
+ <reliability>
+ <kind>RELIABLE_RELIABILITY_QOS</kind>
+ </reliability>
+ <history>
+ <kind>KEEP_ALL_HISTORY_QOS</kind>
+ </history>
+ <resource_limits>
+ <initial_samples>100</initial_samples>
+ <initial_instances>1</initial_instances>
+ <max_samples>LENGTH_UNLIMITED</max_samples>
+ <max_instances>1</max_instances>
+ <max_samples_per_instance>LENGTH_UNLIMITED</max_samples_per_instance>
+ </resource_limits>
+ <durability>
+ <!--kind>TRANSIENT_DURABILITY_QOS</kind-->
+ <kind>VOLATILE_DURABILITY_QOS</kind>
+ <direct_communication>true</direct_communication>
+ </durability>
+ <ownership>
+ <kind>EXCLUSIVE_OWNERSHIP_QOS</kind>
+ </ownership>
+ </datareader_qos>
+ </qos_profile>
+
+ <qos_profile name="LatencySubQoS" is_default_qos="true">
<!-- QoS used to configure the data writer created in the example code -->
<datawriter_qos>
<reliability>
- <kind>BEST_EFFORT_RELIABILITY_QOS</kind>
- </reliability>
+ <kind>RELIABLE_RELIABILITY_QOS</kind>
+ <max_blocking_time>
+ <sec>DURATION_INFINITE_SEC</sec>
+ <nanosec>DURATION_INFINITE_NSEC</nanosec>
+ </max_blocking_time>
+ </reliability>
<history>
<kind>KEEP_ALL_HISTORY_QOS</kind>
</history>
<durability>
- <kind>TRANSIENT_DURABILITY_QOS</kind>
+ <kind>VOLATILE_DURABILITY_QOS</kind>
+ <direct_communication>true</direct_communication>
</durability>
<resource_limits>
<max_instances>1</max_instances>
@@ -94,6 +160,12 @@ RTI Data Distribution Service user manual.
<initial_samples>100</initial_samples>
<max_samples_per_instance>LENGTH_UNLIMITED</max_samples_per_instance>
</resource_limits>
+ <ownership>
+ <kind>EXCLUSIVE_OWNERSHIP_QOS</kind>
+ </ownership>
+ <ownership_strength>
+ <value>2</value>
+ </ownership_strength>
<protocol>
<rtps_reliable_writer>
<max_heartbeat_retries>10</max_heartbeat_retries>
@@ -103,7 +175,7 @@ RTI Data Distribution Service user manual.
<!-- QoS used to configure the data reader created in the example code -->
<datareader_qos>
<reliability>
- <kind>BEST_EFFORT_RELIABILITY_QOS</kind>
+ <kind>RELIABLE_RELIABILITY_QOS</kind>
</reliability>
<history>
<kind>KEEP_ALL_HISTORY_QOS</kind>
@@ -116,9 +188,12 @@ RTI Data Distribution Service user manual.
<max_samples_per_instance>LENGTH_UNLIMITED</max_samples_per_instance>
</resource_limits>
<durability>
- <kind>TRANSIENT_DURABILITY_QOS</kind>
+ <!--kind>TRANSIENT_DURABILITY_QOS</kind-->
+ <kind>VOLATILE_DURABILITY_QOS</kind>
+ <direct_communication>true</direct_communication>
</durability>
</datareader_qos>
+
</qos_profile>
</qos_library>
diff --git a/CIAO/connectors/dds4ccm/performance-tests/Latency/descriptors/run_pub.pl b/CIAO/connectors/dds4ccm/performance-tests/Latency/descriptors/run_pub.pl
index 72c16054137..a6f39341bd8 100644
--- a/CIAO/connectors/dds4ccm/performance-tests/Latency/descriptors/run_pub.pl
+++ b/CIAO/connectors/dds4ccm/performance-tests/Latency/descriptors/run_pub.pl
@@ -206,8 +206,8 @@ for ($i = 0; $i < $nr_daemon; ++$i) {
}
}
-print "Sleeping 180 seconds to allow task to complete\n";
-sleep (180);
+print "Sleeping 300 seconds to allow task to complete\n";
+sleep (300);
# Invoke executor - stop the application -.
print "Invoking executor - stop the application -\n";
diff --git a/CIAO/connectors/dds4ccm/performance-tests/Latency/descriptors/run_sub.pl b/CIAO/connectors/dds4ccm/performance-tests/Latency/descriptors/run_sub.pl
index dae8581f1d5..babc6147d2b 100644
--- a/CIAO/connectors/dds4ccm/performance-tests/Latency/descriptors/run_sub.pl
+++ b/CIAO/connectors/dds4ccm/performance-tests/Latency/descriptors/run_sub.pl
@@ -206,8 +206,8 @@ for ($i = 0; $i < $nr_daemon; ++$i) {
}
}
-print "Sleeping 180 seconds to allow task to complete\n";
-sleep (180);
+print "Sleeping 300 seconds to allow task to complete\n";
+sleep (300);
# Invoke executor - stop the application -.
print "Invoking executor - stop the application -\n";