summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authormcorino <mcorino@users.noreply.github.com>2006-11-08 13:24:37 +0000
committermcorino <mcorino@users.noreply.github.com>2006-11-08 13:24:37 +0000
commitaa10c2e42b5e96e9a0e638cb4424b587fed38d8b (patch)
treefc1f2d91025710eee8b0fe631aede73a9346d1c9
parent1e40b7de63bd62890b60410c0b3c000353553b7b (diff)
downloadATCD-aa10c2e42b5e96e9a0e638cb4424b587fed38d8b.tar.gz
ChangeLogTag: Wed Nov 8 13:22:12 UTC 2006 Martin Corino <mcorino@remedy.nl>
-rw-r--r--TAO/ChangeLog10
-rw-r--r--TAO/tests/Muxing/Receiver.cpp10
-rw-r--r--TAO/tests/Muxing/Receiver.h8
-rw-r--r--TAO/tests/Muxing/Test.idl3
-rw-r--r--TAO/tests/Muxing/client.cpp51
-rwxr-xr-xTAO/tests/Muxing/run_test.pl9
-rw-r--r--TAO/tests/Muxing/server.cpp2
7 files changed, 68 insertions, 25 deletions
diff --git a/TAO/ChangeLog b/TAO/ChangeLog
index 10d4eee2b6e..de85dbd9da0 100644
--- a/TAO/ChangeLog
+++ b/TAO/ChangeLog
@@ -1,3 +1,13 @@
+Wed Nov 8 13:22:12 UTC 2006 Martin Corino <mcorino@remedy.nl>
+
+ * tests/Muxing/Test.idl:
+ * tests/Muxing/Receiver{.h .cpp}:
+ * tests/Muxing/server.cpp:
+ * tests/Muxing/client.cpp:
+ * tests/Muxing/run_test.pl:
+
+ Added clean shutdown option.
+
Wed Nov 8 13:14:12 UTC 2006 Martin Corino <mcorino@remedy.nl>
* tests/Bug_2654_Regression/Hello.cpp:
diff --git a/TAO/tests/Muxing/Receiver.cpp b/TAO/tests/Muxing/Receiver.cpp
index 6ffff418f91..d1cd37643c1 100644
--- a/TAO/tests/Muxing/Receiver.cpp
+++ b/TAO/tests/Muxing/Receiver.cpp
@@ -5,9 +5,10 @@
ACE_RCSID(Muxing, Receiver, "$Id$")
-Receiver::Receiver (void)
+Receiver::Receiver (CORBA::ORB_ptr orb)
: message_count_ (0)
, byte_count_ (0)
+ , orb_ (CORBA::ORB::_duplicate (orb))
{
}
@@ -39,3 +40,10 @@ Receiver::get_event_count (ACE_ENV_SINGLE_ARG_DECL_NOT_USED)
ACE_GUARD_RETURN (ACE_SYNCH_MUTEX, ace_mon, this->mutex_, 0);
return this->message_count_;
}
+
+void
+Receiver::shutdown (ACE_ENV_SINGLE_ARG_DECL)
+ ACE_THROW_SPEC ((CORBA::SystemException))
+{
+ this->orb_->shutdown (0 ACE_ENV_ARG_PARAMETER);
+}
diff --git a/TAO/tests/Muxing/Receiver.h b/TAO/tests/Muxing/Receiver.h
index d8db9cc926b..c297521ed30 100644
--- a/TAO/tests/Muxing/Receiver.h
+++ b/TAO/tests/Muxing/Receiver.h
@@ -22,7 +22,7 @@ class Receiver
{
public:
/// Constructor
- Receiver (void);
+ Receiver (CORBA::ORB_ptr orb);
/// Print out the results
void dump_results (void);
@@ -34,10 +34,16 @@ public:
virtual CORBA::Long get_event_count (ACE_ENV_SINGLE_ARG_DECL)
ACE_THROW_SPEC ((CORBA::SystemException));
+ virtual void shutdown (ACE_ENV_SINGLE_ARG_DECL)
+ ACE_THROW_SPEC ((CORBA::SystemException));
+
private:
ACE_SYNCH_MUTEX mutex_;
CORBA::ULong message_count_;
CORBA::ULong byte_count_;
+ /// Use an ORB reference to shutdown
+ /// the application.
+ CORBA::ORB_var orb_;
};
#if defined(_MSC_VER)
diff --git a/TAO/tests/Muxing/Test.idl b/TAO/tests/Muxing/Test.idl
index 6a3b8921c78..af7010bd6c0 100644
--- a/TAO/tests/Muxing/Test.idl
+++ b/TAO/tests/Muxing/Test.idl
@@ -12,5 +12,8 @@ module Test
/// Return the number of messages received so far
long get_event_count ();
+
+ /// A method to shutdown the ORB
+ oneway void shutdown ();
};
};
diff --git a/TAO/tests/Muxing/client.cpp b/TAO/tests/Muxing/client.cpp
index 460d623719e..e149b323d49 100644
--- a/TAO/tests/Muxing/client.cpp
+++ b/TAO/tests/Muxing/client.cpp
@@ -6,11 +6,12 @@
ACE_RCSID(Muxing, client, "$Id$")
const char *ior = "file://test.ior";
+bool shutdown_srv = false;
int
parse_args (int argc, char *argv[])
{
- ACE_Get_Opt get_opts (argc, argv, "k:");
+ ACE_Get_Opt get_opts (argc, argv, "k:x");
int c;
while ((c = get_opts ()) != -1)
@@ -19,11 +20,15 @@ parse_args (int argc, char *argv[])
case 'k':
ior = get_opts.opt_arg ();
break;
+ case 'x':
+ shutdown_srv = true;
+ break;
case '?':
default:
ACE_ERROR_RETURN ((LM_ERROR,
"usage: %s "
- "-k <ior>"
+ "-k <ior> "
+ "[-x]"
"\n",
argv [0]),
-1);
@@ -60,28 +65,34 @@ main (int argc, char *argv[])
1);
}
-
- Client_Task client_task (receiver.in (),
+ if (shutdown_srv)
+ {
+ receiver->shutdown ();
+ }
+ else
+ {
+
+ Client_Task client_task (receiver.in (),
#if defined (ACE_OPENVMS)
- 750, /* test takes much longer on OpenVMS */
+ 750, /* test takes much longer on OpenVMS */
#else
- 1000,
+ 1000,
#endif
- 32768,
- ACE_Thread_Manager::instance ());
-
- if (client_task.activate (THR_NEW_LWP | THR_JOINABLE, 4, 1) == -1)
- {
- ACE_ERROR ((LM_ERROR, "Error activating client task\n"));
+ 32768,
+ ACE_Thread_Manager::instance ());
+
+ if (client_task.activate (THR_NEW_LWP | THR_JOINABLE, 4, 1) == -1)
+ {
+ ACE_ERROR ((LM_ERROR, "Error activating client task\n"));
+ }
+ ACE_Thread_Manager::instance ()->wait ();
+
+ CORBA::Long count = receiver->get_event_count (ACE_ENV_SINGLE_ARG_PARAMETER);
+ ACE_TRY_CHECK;
+
+ ACE_DEBUG ((LM_DEBUG, "(%P) - Receiver got %d messages\n",
+ count));
}
- ACE_Thread_Manager::instance ()->wait ();
-
- CORBA::Long count = receiver->get_event_count (ACE_ENV_SINGLE_ARG_PARAMETER);
- ACE_TRY_CHECK;
-
- ACE_DEBUG ((LM_DEBUG, "(%P) - Receiver got %d messages\n",
- count));
-
orb->destroy (ACE_ENV_SINGLE_ARG_PARAMETER);
ACE_TRY_CHECK;
}
diff --git a/TAO/tests/Muxing/run_test.pl b/TAO/tests/Muxing/run_test.pl
index fc7be2d21e1..4dd9dbdc537 100755
--- a/TAO/tests/Muxing/run_test.pl
+++ b/TAO/tests/Muxing/run_test.pl
@@ -23,7 +23,7 @@ $CL2 = new PerlACE::Process ("client", " -k file://$iorfile");
$SV->Spawn ();
-if (PerlACE::waitforfile_timed ($iorfile, 15) == -1) {
+if (PerlACE::waitforfile_timed ($iorfile, $PerlACE::wait_interval_for_process_creation) == -1) {
print STDERR "ERROR: cannot find file <$iorfile>\n";
$SV->Kill (); $SV->TimedWait (1);
exit 1;
@@ -51,7 +51,12 @@ if ($client2 != 0) {
$status = 1;
}
-$server = $SV->TerminateWaitKill (5);
+# shutdown
+$CLx = new PerlACE::Process ("client", " -k file://$iorfile -x");
+$CLx->Spawn (60);
+$CLx->WaitKill (15);
+
+$server = $SV->WaitKill (15);
if ($server != 0) {
print STDERR "ERROR: server returned $server\n";
diff --git a/TAO/tests/Muxing/server.cpp b/TAO/tests/Muxing/server.cpp
index 06a120b2183..ad2a9a98241 100644
--- a/TAO/tests/Muxing/server.cpp
+++ b/TAO/tests/Muxing/server.cpp
@@ -64,7 +64,7 @@ main (int argc, char *argv[])
Receiver *receiver_impl;
ACE_NEW_RETURN (receiver_impl,
- Receiver,
+ Receiver (orb.in ()),
1);
PortableServer::ServantBase_var receiver_owner_transfer(receiver_impl);