summaryrefslogtreecommitdiff
path: root/TAO/orbsvcs/tests/Bug_2137_Regression
diff options
context:
space:
mode:
authorWilliam R. Otte <wotte@dre.vanderbilt.edu>2006-07-24 15:50:21 +0000
committerWilliam R. Otte <wotte@dre.vanderbilt.edu>2006-07-24 15:50:21 +0000
commit3aff90f4a822fcf5d902bbfbcc9fa931d6191a8c (patch)
tree197c810e5f5bce17b1233a7cb8d7b50c0bcd25e2 /TAO/orbsvcs/tests/Bug_2137_Regression
parent6b846cf03c0bcbd8c276cb0af61a181e5f98eaae (diff)
downloadATCD-3aff90f4a822fcf5d902bbfbcc9fa931d6191a8c.tar.gz
Repo restructuring
Diffstat (limited to 'TAO/orbsvcs/tests/Bug_2137_Regression')
-rwxr-xr-xTAO/orbsvcs/tests/Bug_2137_Regression/Bug_2137_Regression.mpc8
-rw-r--r--TAO/orbsvcs/tests/Bug_2137_Regression/Makefile.am65
-rwxr-xr-xTAO/orbsvcs/tests/Bug_2137_Regression/README15
-rwxr-xr-xTAO/orbsvcs/tests/Bug_2137_Regression/client.cpp312
-rwxr-xr-xTAO/orbsvcs/tests/Bug_2137_Regression/ep1.ior1
-rwxr-xr-xTAO/orbsvcs/tests/Bug_2137_Regression/ep1_d1_g1_v1.ior1
-rwxr-xr-xTAO/orbsvcs/tests/Bug_2137_Regression/ep1_d1_g1_v2.ior1
-rwxr-xr-xTAO/orbsvcs/tests/Bug_2137_Regression/ep1_d1_g2_v1.ior1
-rwxr-xr-xTAO/orbsvcs/tests/Bug_2137_Regression/ep1_d2_g1_v1.ior1
-rwxr-xr-xTAO/orbsvcs/tests/Bug_2137_Regression/ep2.ior1
-rwxr-xr-xTAO/orbsvcs/tests/Bug_2137_Regression/ep2_d1_g1_v1.ior1
-rwxr-xr-xTAO/orbsvcs/tests/Bug_2137_Regression/ep2_d1_g1_v2.ior1
-rwxr-xr-xTAO/orbsvcs/tests/Bug_2137_Regression/ep2_d1_g2_v1.ior1
-rwxr-xr-xTAO/orbsvcs/tests/Bug_2137_Regression/ep2_d2_g1_v1.ior1
-rwxr-xr-xTAO/orbsvcs/tests/Bug_2137_Regression/run_test.pl34
15 files changed, 444 insertions, 0 deletions
diff --git a/TAO/orbsvcs/tests/Bug_2137_Regression/Bug_2137_Regression.mpc b/TAO/orbsvcs/tests/Bug_2137_Regression/Bug_2137_Regression.mpc
new file mode 100755
index 00000000000..b357718f9d3
--- /dev/null
+++ b/TAO/orbsvcs/tests/Bug_2137_Regression/Bug_2137_Regression.mpc
@@ -0,0 +1,8 @@
+// -*- MPC -*-
+// $Id$
+
+project(*Client): taoclient, ftclientorb {
+ Source_Files {
+ client.cpp
+ }
+}
diff --git a/TAO/orbsvcs/tests/Bug_2137_Regression/Makefile.am b/TAO/orbsvcs/tests/Bug_2137_Regression/Makefile.am
new file mode 100644
index 00000000000..2d5d4b4e89f
--- /dev/null
+++ b/TAO/orbsvcs/tests/Bug_2137_Regression/Makefile.am
@@ -0,0 +1,65 @@
+## Process this file with automake to create Makefile.in
+##
+## $Id$
+##
+## This file was generated by MPC. Any changes made directly to
+## this file will be lost the next time it is generated.
+##
+## MPC Command:
+## ../bin/mwc.pl -type automake -noreldefs TAO.mwc
+
+ACE_BUILDDIR = $(top_builddir)/..
+ACE_ROOT = $(top_srcdir)/..
+TAO_BUILDDIR = $(top_builddir)
+TAO_ROOT = $(top_srcdir)
+
+
+## Makefile.Bug_2137_Regression_Client.am
+
+if BUILD_ACE_UUID
+if BUILD_CORBA_MESSAGING
+if BUILD_INTERCEPTORS
+if !BUILD_ACE_FOR_TAO
+if !BUILD_MINIMUM_CORBA
+
+noinst_PROGRAMS = client
+
+client_CPPFLAGS = \
+ -I$(ACE_ROOT) \
+ -I$(ACE_BUILDDIR) \
+ -I$(TAO_ROOT) \
+ -I$(TAO_BUILDDIR) \
+ -I$(TAO_ROOT)/orbsvcs \
+ -I$(TAO_BUILDDIR)/orbsvcs
+
+client_SOURCES = \
+ client.cpp
+
+client_LDADD = \
+ $(TAO_BUILDDIR)/orbsvcs/orbsvcs/libTAO_FT_ClientORB.la \
+ $(TAO_BUILDDIR)/orbsvcs/orbsvcs/libTAO_FTORB_Utils.la \
+ $(TAO_BUILDDIR)/orbsvcs/orbsvcs/libTAO_PortableGroup.la \
+ $(TAO_BUILDDIR)/tao/libTAO_Messaging.la \
+ $(TAO_BUILDDIR)/tao/libTAO_PI.la \
+ $(TAO_BUILDDIR)/tao/libTAO_CodecFactory.la \
+ $(TAO_BUILDDIR)/tao/libTAO_Valuetype.la \
+ $(TAO_BUILDDIR)/orbsvcs/orbsvcs/libTAO_CosNaming.la \
+ $(TAO_BUILDDIR)/tao/libTAO_PortableServer.la \
+ $(TAO_BUILDDIR)/tao/libTAO_IORManip.la \
+ $(TAO_BUILDDIR)/tao/libTAO_AnyTypeCode.la \
+ $(TAO_BUILDDIR)/tao/libTAO.la \
+ $(ACE_BUILDDIR)/ace/libACE.la
+
+endif !BUILD_MINIMUM_CORBA
+endif !BUILD_ACE_FOR_TAO
+endif BUILD_INTERCEPTORS
+endif BUILD_CORBA_MESSAGING
+endif BUILD_ACE_UUID
+
+## Clean up template repositories, etc.
+clean-local:
+ -rm -f *~ *.bak *.rpo *.sym lib*.*_pure_* core core.*
+ -rm -f gcctemp.c gcctemp so_locations *.ics
+ -rm -rf cxx_repository ptrepository ti_files
+ -rm -rf templateregistry ir.out
+ -rm -rf ptrepository SunWS_cache Templates.DB
diff --git a/TAO/orbsvcs/tests/Bug_2137_Regression/README b/TAO/orbsvcs/tests/Bug_2137_Regression/README
new file mode 100755
index 00000000000..67181578d9e
--- /dev/null
+++ b/TAO/orbsvcs/tests/Bug_2137_Regression/README
@@ -0,0 +1,15 @@
+// $Id$
+
+This test proves that TAOs Fault Tolerant object group equivalence comparison is according to the spec. Any error (assuming the Fault Tolerance orbsvcs library, and all its prerequisites, is available on the test platform) will indicate a regression or some sort of IOR demarshalling problem.
+
+client.cpp ::string_to_object's the pair combinations of the IORs in this directory in a reasonably exhaustive manner and checks that the result of ::is_equivalent matches the expected result as per the spec. All the IORs have a single profile.
+
+Ep1 and Ep2 have an IIOP profile for differing endpoints (same host but port differs) and are not IOGRs (i.e. they have no FT tagged components).
+
+All other IORs are IOGRs, having an IIOP profile corresponding to the endpoint of either Ep1.ior or Ep2.ior, as indicated by the first part of the file name. This profile is set to be the primary and additionally the profile has an FT group tagged component (FT::TagFTGroupTaggedComponent) that contains values as indicated by the following IOR file name values:
+
+d1 / d2 -> group_domain_id == "Domain_1" / group_domain_id == "Domain_2"
+g1 / g2 -> object_group_id == 1 / object_group_id == 2
+v1 / v2 -> object_group_ref_version == 1 / object_group_ref_version == 2
+
+See Bugzilla #2137 for more.
diff --git a/TAO/orbsvcs/tests/Bug_2137_Regression/client.cpp b/TAO/orbsvcs/tests/Bug_2137_Regression/client.cpp
new file mode 100755
index 00000000000..46148e21dee
--- /dev/null
+++ b/TAO/orbsvcs/tests/Bug_2137_Regression/client.cpp
@@ -0,0 +1,312 @@
+// -*- C++ -*-
+// $Id$
+
+#include "ace/Get_Opt.h"
+#include "orbsvcs/FaultTolerance/FT_ClientService_Activate.h"
+#include "tao/corba.h"
+#include "tao/PI/PI.h"
+
+CORBA::ORB_var orb = CORBA::ORB::_nil ();
+
+int
+parse_args (int argc, char *argv[])
+{
+ ACE_Get_Opt get_opts (argc, argv, "");
+ int c;
+
+ while ((c = get_opts ()) != -1)
+ switch (c)
+ {
+ case '?':
+ default:
+ ACE_ERROR_RETURN ((LM_ERROR,
+ "usage: %s "
+ "\n",
+ argv [0]),
+ -1);
+ }
+ // Indicates sucessful parsing of the command line
+ return 0;
+}
+
+// Returns false if calling is_equivalent in both directions on the two supplied
+// IORs does not produce expected result.
+CORBA::Boolean
+check_is_equivalent (const char* ior1, const char * ior2, CORBA::Boolean expected_result)
+{
+ CORBA::Boolean result = 1;
+ ACE_TRY_NEW_ENV
+ {
+ CORBA::Object_var object1 =
+ orb->string_to_object(ior1 ACE_ENV_ARG_PARAMETER);
+ ACE_TRY_CHECK;
+
+ CORBA::Object_var object2 =
+ orb->string_to_object (ior2 ACE_ENV_ARG_PARAMETER);
+ ACE_TRY_CHECK;
+
+ const char* expected_result_string = (expected_result ? "true" : "false");
+
+ if ((object1->_is_equivalent (object2.in ())) != expected_result)
+ {
+ ACE_DEBUG ((LM_ERROR, "Error: Result of <%s>->_is_equivalent (<%s>) is not %s when it should be...\n",
+ ior1, ior2, expected_result_string));
+ result = 0;
+ }
+
+ if ((object2->_is_equivalent (object1.in ())) != expected_result)
+ {
+ ACE_DEBUG ((LM_ERROR, "Error: Result of <%s>->_is_equivalent (<%s>) is not %s when it should be...\n",
+ ior2, ior1, expected_result_string));
+ result = 0;
+ }
+ }
+ ACE_CATCHANY
+ {
+ ACE_DEBUG ((LM_ERROR, "Vastly unexpected exception comparing %s and %s:\n", ior1, ior2));
+ ACE_PRINT_EXCEPTION (ACE_ANY_EXCEPTION,
+ "Exception:");
+ result = 0;
+ }
+ ACE_ENDTRY;
+ return result;
+}
+
+int
+main (int argc, char *argv[])
+{
+ CORBA::Boolean result = 0;
+ ACE_TRY_NEW_ENV
+ {
+ orb =
+ CORBA::ORB_init (argc, argv, "" ACE_ENV_ARG_PARAMETER);
+ ACE_TRY_CHECK;
+
+ if (parse_args (argc, argv) != 0)
+ return 1;
+
+ // ep1 is equivalent to no other IORs - it is not an IOGR, and ep2 is a different endpoint.
+ // The next nine should all be false.
+ if (! check_is_equivalent ("file://ep1.ior", "file://ep1_d1_g1_v1.ior", 0))
+ {
+ ACE_DEBUG ((LM_ERROR, "... it should be false because an IOR is never equivalent to an IOGR\n\n"));
+ result = 1;
+ }
+
+ if (! check_is_equivalent ("file://ep1.ior", "file://ep1_d1_g1_v2.ior", 0))
+ {
+ ACE_DEBUG ((LM_ERROR, "... it should be false because an IOR is never equivalent to an IOGR\n\n"));
+ result = 1;
+ }
+
+ if (! check_is_equivalent ("file://ep1.ior", "file://ep1_d1_g2_v1.ior", 0))
+ {
+ ACE_DEBUG ((LM_ERROR, "... it should be false because an IOR is never equivalent to an IOGR\n\n"));
+ result = 1;
+ }
+
+ if (! check_is_equivalent ("file://ep1.ior", "file://ep1_d2_g1_v1.ior", 0))
+ {
+ ACE_DEBUG ((LM_ERROR, "... it should be false because an IOR is never equivalent to an IOGR\n\n"));
+ result = 1;
+ }
+
+ if (! check_is_equivalent ("file://ep1.ior", "file://ep2.ior", 0))
+ {
+ ACE_DEBUG ((LM_ERROR, "... it should be false because these are IORs with different endpoints.\n\n"));
+ result = 1;
+ }
+
+ if (! check_is_equivalent ("file://ep1.ior", "file://ep2_d1_g1_v1.ior", 0))
+ {
+ ACE_DEBUG ((LM_ERROR, "... it should be false because an IOR is never equivalent to an IOGR\n\n"));
+ result = 1;
+ }
+
+ if (! check_is_equivalent ("file://ep1.ior", "file://ep2_d1_g1_v2.ior", 0))
+ {
+ ACE_DEBUG ((LM_ERROR, "... it should be false because an IOR is never equivalent to an IOGR\n\n"));
+ result = 1;
+ }
+
+ if (! check_is_equivalent ("file://ep1.ior", "file://ep1_d1_g2_v1.ior", 0))
+ {
+ ACE_DEBUG ((LM_ERROR, "... it should be false because an IOR is never equivalent to an IOGR\n\n"));
+ result = 1;
+ }
+
+ if (! check_is_equivalent ("file://ep1.ior", "file://ep1_d2_g1_v1.ior", 0))
+ {
+ ACE_DEBUG ((LM_ERROR, "... it should be false because an IOR is never equivalent to an IOGR\n\n"));
+ result = 1;
+ }
+
+ if (! check_is_equivalent ("file://ep1_d1_g1_v1.ior", "file://ep1_d1_g1_v2.ior", 1))
+ {
+ ACE_DEBUG ((LM_ERROR, "... it should be true because both are IOGRs and the domain and group ids match.\n\n"));
+ result = 1;
+ }
+
+ if (! check_is_equivalent ("file://ep1_d1_g1_v1.ior", "file://ep1_d1_g2_v1.ior", 0))
+ {
+ ACE_DEBUG ((LM_ERROR, "... it should be false because both are IOGRs but the domain and group ids don't match.\n\n"));
+ result = 1;
+ }
+
+ if (! check_is_equivalent ("file://ep1_d1_g1_v1.ior", "file://ep1_d2_g1_v1.ior", 0))
+ {
+ ACE_DEBUG ((LM_ERROR, "... it should be false because both are IOGRs but the domain and group ids don't match.\n\n"));
+ result = 1;
+ }
+
+ if (! check_is_equivalent ("file://ep1_d1_g1_v1.ior", "file://ep2.ior", 0))
+ {
+ ACE_DEBUG ((LM_ERROR, "... it should be false because an IOR is never equivalent to an IOGR\n\n"));
+ result = 1;
+ }
+
+ if (! check_is_equivalent ("file://ep1_d1_g1_v1.ior", "file://ep2_d1_g1_v1.ior", 1))
+ {
+ ACE_DEBUG ((LM_ERROR, "... it should be true because both are IOGRs and the domain and group ids match.\n\n"));
+ result = 1;
+ }
+
+ if (! check_is_equivalent ("file://ep1_d1_g1_v1.ior", "file://ep2_d1_g1_v2.ior", 1))
+ {
+ ACE_DEBUG ((LM_ERROR, "... it should be true because both are IOGRs and the domain and group ids match.\n\n"));
+ result = 1;
+ }
+
+ if (! check_is_equivalent ("file://ep1_d1_g1_v1.ior", "file://ep2_d1_g2_v1.ior", 0))
+ {
+ ACE_DEBUG ((LM_ERROR, "... it should be false because both are IOGRs but the domain and group ids don't match.\n\n"));
+ result = 1;
+ }
+
+ if (! check_is_equivalent ("file://ep1_d1_g1_v1.ior", "file://ep2_d2_g1_v1.ior", 0))
+ {
+ ACE_DEBUG ((LM_ERROR, "... it should be false because both are IOGRs but the domain and group ids don't match.\n\n"));
+ result = 1;
+ }
+
+ if (! check_is_equivalent ("file://ep1_d1_g1_v2.ior", "file://ep1_d1_g2_v1.ior", 0))
+ {
+ ACE_DEBUG ((LM_ERROR, "... it should be false because both are IOGRs but the domain and group ids don't match.\n\n"));
+ result = 1;
+ }
+
+ if (! check_is_equivalent ("file://ep1_d1_g1_v2.ior", "file://ep1_d2_g1_v1.ior", 0))
+ {
+ ACE_DEBUG ((LM_ERROR, "... it should be false because both are IOGRs but the domain and group ids don't match.\n\n"));
+ result = 1;
+ }
+
+ if (! check_is_equivalent ("file://ep1_d1_g1_v2.ior", "file://ep2.ior", 0))
+ {
+ ACE_DEBUG ((LM_ERROR, "... it should be false because an IOR is never equivalent to an IOGR\n\n"));
+ result = 1;
+ }
+
+ if (! check_is_equivalent ("file://ep1_d1_g1_v2.ior", "file://ep2_d1_g1_v1.ior", 1))
+ {
+ ACE_DEBUG ((LM_ERROR, "... it should be true because both are IOGRs and the domain and group ids match.\n\n"));
+ result = 1;
+ }
+
+ if (! check_is_equivalent ("file://ep1_d1_g1_v2.ior", "file://ep2_d1_g1_v2.ior", 1))
+ {
+ ACE_DEBUG ((LM_ERROR, "... it should be true because both are IOGRs and the domain and group ids match.\n\n"));
+ result = 1;
+ }
+
+ if (! check_is_equivalent ("file://ep1_d1_g1_v2.ior", "file://ep2_d1_g2_v1.ior", 0))
+ {
+ ACE_DEBUG ((LM_ERROR, "... it should be false because both are IOGRs but the domain and group ids don't match.\n\n"));
+ result = 1;
+ }
+
+ if (! check_is_equivalent ("file://ep1_d1_g1_v2.ior", "file://ep2_d2_g1_v1.ior", 0))
+ {
+ ACE_DEBUG ((LM_ERROR, "... it should be false because both are IOGRs but the domain and group ids don't match.\n\n"));
+ result = 1;
+ }
+
+ if (! check_is_equivalent ("file://ep1_d1_g2_v1.ior", "file://ep1_d2_g1_v1.ior", 0))
+ {
+ ACE_DEBUG ((LM_ERROR, "... it should be false because both are IOGRs but the domain and group ids don't match.\n\n"));
+ result = 1;
+ }
+
+ if (! check_is_equivalent ("file://ep1_d1_g2_v1.ior", "file://ep2.ior", 0))
+ {
+ ACE_DEBUG ((LM_ERROR, "... it should be false because an IOR is never equivalent to an IOGR\n\n"));
+ result = 1;
+ }
+
+ if (! check_is_equivalent ("file://ep1_d1_g2_v1.ior", "file://ep2_d1_g1_v1.ior", 0))
+ {
+ ACE_DEBUG ((LM_ERROR, "... it should be false because both are IOGRs but the domain and group ids don't match.\n\n"));
+ result = 1;
+ }
+
+ if (! check_is_equivalent ("file://ep1_d1_g2_v1.ior", "file://ep2_d1_g1_v2.ior", 0))
+ {
+ ACE_DEBUG ((LM_ERROR, "... it should be false because both are IOGRs but the domain and group ids don't match.\n\n"));
+ result = 1;
+ }
+
+ if (! check_is_equivalent ("file://ep1_d1_g2_v1.ior", "file://ep2_d1_g2_v1.ior", 1))
+ {
+ ACE_DEBUG ((LM_ERROR, "... it should be true because both are IOGRs and the domain and group ids match.\n\n"));
+ result = 1;
+ }
+
+ if (! check_is_equivalent ("file://ep1_d1_g2_v1.ior", "file://ep2_d2_g1_v1.ior", 0))
+ {
+ ACE_DEBUG ((LM_ERROR, "... it should be false because both are IOGRs but the domain and group ids don't match.\n\n"));
+ result = 1;
+ }
+
+ if (! check_is_equivalent ("file://ep1_d2_g1_v1.ior", "file://ep2.ior", 0))
+ {
+ ACE_DEBUG ((LM_ERROR, "... it should be false because an IOR is never equivalent to an IOGR\n\n"));
+ result = 1;
+ }
+
+ if (! check_is_equivalent ("file://ep1_d2_g1_v1.ior", "file://ep2_d1_g1_v1.ior", 0))
+ {
+ ACE_DEBUG ((LM_ERROR, "... it should be false because both are IOGRs but the domain and group ids don't match.\n\n"));
+ result = 1;
+ }
+
+ if (! check_is_equivalent ("file://ep1_d2_g1_v1.ior", "file://ep2_d1_g1_v1.ior", 0))
+ {
+ ACE_DEBUG ((LM_ERROR, "... it should be false because both are IOGRs but the domain and group ids don't match.\n\n"));
+ result = 1;
+ }
+
+ if (! check_is_equivalent ("file://ep1_d2_g1_v1.ior", "file://ep2_d1_g1_v1.ior", 0))
+ {
+ ACE_DEBUG ((LM_ERROR, "... it should be false because both are IOGRs but the domain and group ids don't match.\n\n"));
+ result = 1;
+ }
+
+ if (! check_is_equivalent ("file://ep1_d2_g1_v1.ior", "file://ep2_d1_g1_v1.ior", 0))
+ {
+ ACE_DEBUG ((LM_ERROR, "... it should be false because both are IOGRs but the domain and group ids don't match.\n\n"));
+ result = 1;
+ }
+
+ orb->destroy (ACE_ENV_SINGLE_ARG_PARAMETER);
+ ACE_TRY_CHECK;
+ }
+ ACE_CATCHANY
+ {
+ ACE_PRINT_EXCEPTION (ACE_ANY_EXCEPTION,
+ "Exception caught:");
+ return 1;
+ }
+ ACE_ENDTRY;
+
+ return result;
+}
diff --git a/TAO/orbsvcs/tests/Bug_2137_Regression/ep1.ior b/TAO/orbsvcs/tests/Bug_2137_Regression/ep1.ior
new file mode 100755
index 00000000000..c5cef0a821a
--- /dev/null
+++ b/TAO/orbsvcs/tests/Bug_2137_Regression/ep1.ior
@@ -0,0 +1 @@
+IOR:010000001300000049444c3a546573742f48656c6c6f3a312e300000010000000000000080000000010102cd0d0000003231332e34382e39312e343500cd30083300000014010f004e5550000000170000000001000000526f6f74504f41006d795f706f610000000000010000007365727665725f6964cd02000000000000000800000001cdcdcd004f4154010000001400000001cdcdcd01000100000000000901010000000000 \ No newline at end of file
diff --git a/TAO/orbsvcs/tests/Bug_2137_Regression/ep1_d1_g1_v1.ior b/TAO/orbsvcs/tests/Bug_2137_Regression/ep1_d1_g1_v1.ior
new file mode 100755
index 00000000000..61b660bd170
--- /dev/null
+++ b/TAO/orbsvcs/tests/Bug_2137_Regression/ep1_d1_g1_v1.ior
@@ -0,0 +1 @@
+IOR:010000001300000049444c3a546573742f48656c6c6f3a312e3000000100000000000000b6000000010102cd0d0000003231332e34382e39312e343500cd30083300000014010f004e5550000000170000000001000000526f6f74504f41006d795f706f610000000000010000007365727665725f6964cd04000000000000000800000001cdcdcd004f4154010000001400000001cdcdcd010001000000000009010100000000001b00000024000000010100cd09000000446f6d61696e5f3100cdcdcdcdcdcdcd0100000000000000010000001c000000020000000101 \ No newline at end of file
diff --git a/TAO/orbsvcs/tests/Bug_2137_Regression/ep1_d1_g1_v2.ior b/TAO/orbsvcs/tests/Bug_2137_Regression/ep1_d1_g1_v2.ior
new file mode 100755
index 00000000000..67ac3da96f9
--- /dev/null
+++ b/TAO/orbsvcs/tests/Bug_2137_Regression/ep1_d1_g1_v2.ior
@@ -0,0 +1 @@
+IOR:010000001300000049444c3a546573742f48656c6c6f3a312e3000000100000000000000b6000000010102cd0d0000003231332e34382e39312e343500cd30083300000014010f004e5550000000170000000001000000526f6f74504f41006d795f706f610000000000010000007365727665725f6964cd04000000000000000800000001cdcdcd004f4154010000001400000001cdcdcd010001000000000009010100000000001b00000024000000010100cd09000000446f6d61696e5f3100cdcdcdcdcdcdcd0100000000000000020000001c000000020000000101 \ No newline at end of file
diff --git a/TAO/orbsvcs/tests/Bug_2137_Regression/ep1_d1_g2_v1.ior b/TAO/orbsvcs/tests/Bug_2137_Regression/ep1_d1_g2_v1.ior
new file mode 100755
index 00000000000..8c81850cfad
--- /dev/null
+++ b/TAO/orbsvcs/tests/Bug_2137_Regression/ep1_d1_g2_v1.ior
@@ -0,0 +1 @@
+IOR:010000001300000049444c3a546573742f48656c6c6f3a312e3000000100000000000000b6000000010102cd0d0000003231332e34382e39312e343500cd30083300000014010f004e5550000000170000000001000000526f6f74504f41006d795f706f610000000000010000007365727665725f6964cd04000000000000000800000001cdcdcd004f4154010000001400000001cdcdcd010001000000000009010100000000001b00000024000000010100cd09000000446f6d61696e5f3100cdcdcdcdcdcdcd0200000000000000010000001c000000020000000101 \ No newline at end of file
diff --git a/TAO/orbsvcs/tests/Bug_2137_Regression/ep1_d2_g1_v1.ior b/TAO/orbsvcs/tests/Bug_2137_Regression/ep1_d2_g1_v1.ior
new file mode 100755
index 00000000000..e8768bfcbaa
--- /dev/null
+++ b/TAO/orbsvcs/tests/Bug_2137_Regression/ep1_d2_g1_v1.ior
@@ -0,0 +1 @@
+IOR:010000001300000049444c3a546573742f48656c6c6f3a312e3000000100000000000000b6000000010102cd0d0000003231332e34382e39312e343500cd30083300000014010f004e5550000000170000000001000000526f6f74504f41006d795f706f610000000000010000007365727665725f6964cd04000000000000000800000001cdcdcd004f4154010000001400000001cdcdcd010001000000000009010100000000001b00000024000000010100cd09000000446f6d61696e5f3200cdcdcdcdcdcdcd0100000000000000010000001c000000020000000101 \ No newline at end of file
diff --git a/TAO/orbsvcs/tests/Bug_2137_Regression/ep2.ior b/TAO/orbsvcs/tests/Bug_2137_Regression/ep2.ior
new file mode 100755
index 00000000000..e6aaf10387d
--- /dev/null
+++ b/TAO/orbsvcs/tests/Bug_2137_Regression/ep2.ior
@@ -0,0 +1 @@
+IOR:010000001300000049444c3a546573742f48656c6c6f3a312e300000010000000000000080000000010102cd0d0000003231332e34382e39312e343500cde7063300000014010f004e5550000000170000000001000000526f6f74504f41006d795f706f610000000000010000007365727665725f6964cd02000000000000000800000001cdcdcd004f4154010000001400000001cdcdcd01000100000000000901010000000000 \ No newline at end of file
diff --git a/TAO/orbsvcs/tests/Bug_2137_Regression/ep2_d1_g1_v1.ior b/TAO/orbsvcs/tests/Bug_2137_Regression/ep2_d1_g1_v1.ior
new file mode 100755
index 00000000000..5df5438dedc
--- /dev/null
+++ b/TAO/orbsvcs/tests/Bug_2137_Regression/ep2_d1_g1_v1.ior
@@ -0,0 +1 @@
+IOR:010000001300000049444c3a546573742f48656c6c6f3a312e3000000100000000000000b6000000010102cd0d0000003231332e34382e39312e343500cde7063300000014010f004e5550000000170000000001000000526f6f74504f41006d795f706f610000000000010000007365727665725f6964cd04000000000000000800000001cdcdcd004f4154010000001400000001cdcdcd010001000000000009010100000000001b00000024000000010100cd09000000446f6d61696e5f3100cdcdcdcdcdcdcd0100000000000000010000001c000000020000000101 \ No newline at end of file
diff --git a/TAO/orbsvcs/tests/Bug_2137_Regression/ep2_d1_g1_v2.ior b/TAO/orbsvcs/tests/Bug_2137_Regression/ep2_d1_g1_v2.ior
new file mode 100755
index 00000000000..a1c3e447fcd
--- /dev/null
+++ b/TAO/orbsvcs/tests/Bug_2137_Regression/ep2_d1_g1_v2.ior
@@ -0,0 +1 @@
+IOR:010000001300000049444c3a546573742f48656c6c6f3a312e3000000100000000000000b6000000010102cd0d0000003231332e34382e39312e343500cde7063300000014010f004e5550000000170000000001000000526f6f74504f41006d795f706f610000000000010000007365727665725f6964cd04000000000000000800000001cdcdcd004f4154010000001400000001cdcdcd010001000000000009010100000000001b00000024000000010100cd09000000446f6d61696e5f3100cdcdcdcdcdcdcd0100000000000000020000001c000000020000000101 \ No newline at end of file
diff --git a/TAO/orbsvcs/tests/Bug_2137_Regression/ep2_d1_g2_v1.ior b/TAO/orbsvcs/tests/Bug_2137_Regression/ep2_d1_g2_v1.ior
new file mode 100755
index 00000000000..6ec08959fb1
--- /dev/null
+++ b/TAO/orbsvcs/tests/Bug_2137_Regression/ep2_d1_g2_v1.ior
@@ -0,0 +1 @@
+IOR:010000001300000049444c3a546573742f48656c6c6f3a312e3000000100000000000000b6000000010102cd0d0000003231332e34382e39312e343500cde7063300000014010f004e5550000000170000000001000000526f6f74504f41006d795f706f610000000000010000007365727665725f6964cd04000000000000000800000001cdcdcd004f4154010000001400000001cdcdcd010001000000000009010100000000001b00000024000000010100cd09000000446f6d61696e5f3100cdcdcdcdcdcdcd0200000000000000010000001c000000020000000101 \ No newline at end of file
diff --git a/TAO/orbsvcs/tests/Bug_2137_Regression/ep2_d2_g1_v1.ior b/TAO/orbsvcs/tests/Bug_2137_Regression/ep2_d2_g1_v1.ior
new file mode 100755
index 00000000000..7e16895b241
--- /dev/null
+++ b/TAO/orbsvcs/tests/Bug_2137_Regression/ep2_d2_g1_v1.ior
@@ -0,0 +1 @@
+IOR:010000001300000049444c3a546573742f48656c6c6f3a312e3000000100000000000000b6000000010102cd0d0000003231332e34382e39312e343500cde7063300000014010f004e5550000000170000000001000000526f6f74504f41006d795f706f610000000000010000007365727665725f6964cd04000000000000000800000001cdcdcd004f4154010000001400000001cdcdcd010001000000000009010100000000001b00000024000000010100cd09000000446f6d61696e5f3200cdcdcdcdcdcdcd0100000000000000010000001c000000020000000101 \ No newline at end of file
diff --git a/TAO/orbsvcs/tests/Bug_2137_Regression/run_test.pl b/TAO/orbsvcs/tests/Bug_2137_Regression/run_test.pl
new file mode 100755
index 00000000000..78eb7b2641e
--- /dev/null
+++ b/TAO/orbsvcs/tests/Bug_2137_Regression/run_test.pl
@@ -0,0 +1,34 @@
+eval '(exit $?0)' && eval 'exec perl -S $0 ${1+"$@"}'
+ & eval 'exec perl -S $0 $argv:q'
+ if 0;
+
+# -*- perl -*-
+# $Id$
+
+use lib '../../../../bin';
+use PerlACE::Run_Test;
+
+print STDERR "\n\n==== Running Bug_2137_Regression (FT ::is_equivalent) test\n";
+
+if (PerlACE::is_vxworks_test())
+{
+ $T = new PerlACE::ProcessVX ("client");
+}
+else
+{
+ $T = new PerlACE::Process ("client");
+}
+
+$test = $T->SpawnWaitKill (15);
+
+if ($test != 0)
+{
+ print STDERR "ERROR: Bug_2137_Regression test returned $test\n";
+ exit 1;
+}
+else
+{
+ print STDERR "SUCCESS: Bug_2137_Regression test returned $test\n";
+}
+
+exit 0;