diff options
Diffstat (limited to 'TAO')
28 files changed, 263 insertions, 133 deletions
diff --git a/TAO/ChangeLog b/TAO/ChangeLog index afe2e010c07..6b600ddfd74 100644 --- a/TAO/ChangeLog +++ b/TAO/ChangeLog @@ -1,3 +1,46 @@ +Thu Sep 23 12:50:25 UTC 2010 Vladimir Zykov <vladimir.zykov@prismtech.com> + + * orbsvcs/orbsvcs/Trader/Service_Type_Repository.h: + * orbsvcs/orbsvcs/Trader/Trader_Utils.h: + * orbsvcs/orbsvcs/Trader/Trader_Interfaces.h: + * orbsvcs/FT_ReplicationManager/FT_DefaultFaultAnalyzer.cpp: + Removed non-ASCII characters in comments. + + * orbsvcs/examples/ImR/Combined_Service/start_all.conf: + * orbsvcs/examples/ImR/Combined_Service/run_test.pl: + Extended timeouts. Previous ones were too short on valgrind builds. + + * tao/PortableServer/RequestProcessingStrategyDefaultServant.cpp: + * tao/PortableServer/RequestProcessingStrategyServantActivator.cpp: + * tao/PortableServer/RequestProcessingStrategyAOMOnly.cpp: + * tao/PortableServer/RequestProcessingStrategyServantLocator.cpp: + Added code that ignores any exception from the servant's cleanup. + This fixes a problem where servant wasn't removed from a poa in case + servant's destructor threw an exception. + + * tests/ORB_shutdown/Foo_Bar.cpp: + Don't allow exceptions to propagate out of the servant's destructor. + + * performance-tests/Cubit/TAO/IDL_Cubit/run_test.pl: + Extended the test so that it can run without SHMIOP part. + + * tests/Bug_1361_Regression/Server_Thread_Pool.cpp: + * tests/Bug_1476_Regression/Sender_i.h: + * tests/Codec/client.cpp: + * tests/DII_AMI_Forward/server_interceptor.cpp: + * tests/NestedUpcall/Triangle_Test/initiator.cpp: + * tests/NestedUpcall/Triangle_Test/Object_A_i.cpp: + * tests/NestedUpcall/Triangle_Test/Object_B_i.cpp: + * tests/NestedUpcall/Triangle_Test/Object_A_i.h: + * tests/NestedUpcall/Triangle_Test/Object_B_i.h: + * tests/NestedUpcall/Triangle_Test/Triangle_Test.idl: + * tests/NestedUpcall/Triangle_Test/run_test.pl: + * tests/AMH_Exceptions/server.cpp: + * tests/MProfile_Connection_Timeout/client.cpp: + * tests/Oneways_Invoking_Twoways/Sender_i.h: + * tests/Bug_1476_Test/client.cpp: + Fixed memory leaks local to these tests. + Thu Sep 23 09:34:36 UTC 2010 Johnny Willemsen <jwillemsen@remedy.nl> * tao/ZIOP/ZIOP.h: diff --git a/TAO/orbsvcs/FT_ReplicationManager/FT_DefaultFaultAnalyzer.cpp b/TAO/orbsvcs/FT_ReplicationManager/FT_DefaultFaultAnalyzer.cpp index 03de6907c61..5b4e4c34e88 100644 --- a/TAO/orbsvcs/FT_ReplicationManager/FT_DefaultFaultAnalyzer.cpp +++ b/TAO/orbsvcs/FT_ReplicationManager/FT_DefaultFaultAnalyzer.cpp @@ -83,7 +83,7 @@ int TAO::FT_DefaultFaultAnalyzer::validate_event_type ( // // The filterable_data part of the event body contains the // identity of the crashed object as four name-value pairs: the - // fault tolerance domain identifier, the member�s location + // fault tolerance domain identifier, the member's location // identifier, the repository identifier and the object group // identifier. The Fault Notifier filters events based on the // domain_name, the type_name, and the four identifiers. All diff --git a/TAO/orbsvcs/examples/ImR/Combined_Service/run_test.pl b/TAO/orbsvcs/examples/ImR/Combined_Service/run_test.pl index 52eca0765a0..c6d66ff9da2 100755 --- a/TAO/orbsvcs/examples/ImR/Combined_Service/run_test.pl +++ b/TAO/orbsvcs/examples/ImR/Combined_Service/run_test.pl @@ -69,8 +69,8 @@ my $status = 0; sub print_output { my $output_file = $_[0]; - open( TEST_OUTPUT, "< $output_file" ) or return -1; - while( <TEST_OUTPUT> ) { + open (TEST_OUTPUT, "< $output_file" ) or return -1; + while (<TEST_OUTPUT>) { print; } close (TEST_OUTPUT); @@ -125,7 +125,7 @@ sub do_test } ## Wait a little bit for everything to get started - sleep(2); + sleep(10); print STDERR "Starting test_server -orbuseimr 1 $imr_initref\n"; $SERV->Arguments ("-ORBLogFile $output_files[$id_serv_log] -orbuseimr 1 $imr_initref"); @@ -136,7 +136,7 @@ sub do_test } ## Wait a little bit for everything to get started - sleep(2); + sleep(10); print STDERR "Starting client\n"; # The client should pass the simple test diff --git a/TAO/orbsvcs/examples/ImR/Combined_Service/start_all.conf b/TAO/orbsvcs/examples/ImR/Combined_Service/start_all.conf index 23e3db5379c..08164baf6be 100644 --- a/TAO/orbsvcs/examples/ImR/Combined_Service/start_all.conf +++ b/TAO/orbsvcs/examples/ImR/Combined_Service/start_all.conf @@ -1,2 +1,2 @@ -dynamic ImR_Locator_Loader Service_Object * TAO_ImR_Locator:_make_ImR_Locator_Loader() '-orbcollocation no -orbobjrefstyle url -t 5 -d 2 -orbendpoint iiop://:9999' +dynamic ImR_Locator_Loader Service_Object * TAO_ImR_Locator:_make_ImR_Locator_Loader() '-orbcollocation no -orbobjrefstyle url -t 10 -d 2 -orbendpoint iiop://:9999' dynamic ImR_Activator_Loader Service_Object * TAO_ImR_Activator:_make_ImR_Activator_Loader() '-orbcollocation per-orb -d 2 -orbinitref ImplRepoService=corbaloc::localhost:9999/ImplRepoService' diff --git a/TAO/orbsvcs/orbsvcs/Trader/Service_Type_Repository.h b/TAO/orbsvcs/orbsvcs/Trader/Service_Type_Repository.h index 4c6add58960..d247e3754a1 100644 --- a/TAO/orbsvcs/orbsvcs/Trader/Service_Type_Repository.h +++ b/TAO/orbsvcs/orbsvcs/Trader/Service_Type_Repository.h @@ -73,7 +73,7 @@ public: // If the "name" parameter is malformed, then the // CosTrading::IllegalServiceType exception is raised. If the type - // already exists, then the ServiceTypeExists exception is raised. ° + // already exists, then the ServiceTypeExists exception is raised. // If the "if_name" parameter is not a sub-type of the interface // associated with a service type from which this service type is // derived, such that substitutability would be violated, then the diff --git a/TAO/orbsvcs/orbsvcs/Trader/Trader_Interfaces.h b/TAO/orbsvcs/orbsvcs/Trader/Trader_Interfaces.h index c9c562d8d3a..8548c920629 100644 --- a/TAO/orbsvcs/orbsvcs/Trader/Trader_Interfaces.h +++ b/TAO/orbsvcs/orbsvcs/Trader/Trader_Interfaces.h @@ -137,7 +137,7 @@ public: // constraint. // The returned offers are passed back in one of two ways (or a - // combination of both). °The "offers" return result conveys a list + // combination of both). The "offers" return result conveys a list // of offers and the "offer_itr" is a reference to an interface at // which offers can be obtained. The "how_many" parameter states // how many offers are to be returned via the "offers" result, any @@ -297,14 +297,14 @@ public: // identifies the service type, which contains the interface type of // the "reference" and a set of named property types that may be // used in further describing this offer (i.e., it restricts what is - // acceptable in the properties parameter). ° + // acceptable in the properties parameter). // If the string // representation of the "type" does not obey the rules for - // identifiers, then an IllegalServiceType exception is raised. ° If + // identifiers, then an IllegalServiceType exception is raised. If // the "type" is correct syntactically but a trader is able to // unambiguously determine that it is not a recognized service type, - // then an UnknownServiceType exception is raised. ° + // then an UnknownServiceType exception is raised. // If the trader // can determine that the interface type of the "reference" @@ -314,21 +314,21 @@ public: // the property value types defined for those names. They describe // the service being offered. This description typically covers // behavioral, non-functional, and non-computational aspects of the - // service. ° + // service. // If any of the property names do not obey the syntax // rules for PropertyNames, then an IllegalPropertyName exception is - // raised. ° + // raised. // If the type of any of the property values is not the // same as the declared type (declared in the service type), then a // PropertyTypeMismatch exception is raised. - // ° If an attempt is made to assign a dynamic property value to a + // If an attempt is made to assign a dynamic property value to a // readonly property, then the ReadonlyDynamicProperty exception is - // raised. ° If the "properties" parameter omits any property + // raised. If the "properties" parameter omits any property // declared in the service type with a mode of mandatory, then a - // MissingMandatoryProperty exception is raised. ° If two or more + // MissingMandatoryProperty exception is raised. If two or more // properties with the same property name are included in this // parameter, the DuplicatePropertyName exception is raised. // END SPEC @@ -339,11 +339,11 @@ public: // The withdraw operation removes the service offer from the trader // (i.e., after withdraw the offer can no longer be returned as the // result of a query). The offer is identified by the "id" parameter - // which was originally returned by export. ° If the string + // which was originally returned by export. If the string // representation of "id" does not obey the rules for offer - // identifiers, then an IllegalOfferId exception is raised. ° If the + // identifiers, then an IllegalOfferId exception is raised. If the // "id" is legal but there is no offer within the trader with that - // "id," then an UnknownOfferId exception is raised. ° If the "id" + // "id," then an UnknownOfferId exception is raised. If the "id" // identifies a proxy offer rather than an ordinary offer, then a // ProxyOfferId exception is raised. // END SPEC @@ -357,11 +357,11 @@ public: // of the offered service, the "type" of the service offer, and the // "properties" that describe this offer of service. The offer is // identified by the "id" parameter which was originally returned by - // export. ° If the string representation of "id" does not obey the + // export. If the string representation of "id" does not obey the // rules for object identifiers, then an IllegalOfferId exception is - // raised. ° If the "id" is legal but there is no offer within the + // raised. If the "id" is legal but there is no offer within the // trader with that "id," then an UnknownOfferId exception is - // raised. ° If the "id" identifies a proxy offer rather than an + // raised. If the "id" identifies a proxy offer rather than an // ordinary offer, then a ProxyOfferId exception is raised. // END SPEC @@ -373,30 +373,30 @@ public: // The modify operation is used to change the description of a // service as held within a service offer. The object reference and // the service type associated with the offer cannot be - // changed. This operation may: ° add new (non-mandatory) properties - // to describe an offer, ° change the values of some existing (not - // readonly) properties, or ° delete existing (neither mandatory nor + // changed. This operation may: add new (non-mandatory) properties + // to describe an offer, change the values of some existing (not + // readonly) properties, or delete existing (neither mandatory nor // readonly) properties. // The modify operation either succeeds completely or it fails // completely. The offer is identified by the "id" parameter which - // was originally returned by export. ° If the string representation + // was originally returned by export. If the string representation // of "id" does not obey the rules for offer identifiers, then an - // IllegalOfferId exception is raised. ° If the "id" is legal but + // IllegalOfferId exception is raised. If the "id" is legal but // there is no offer within the trader with that "id," then an - // UnknownOfferId exception is raised. ° If the "id" identifies a + // UnknownOfferId exception is raised. If the "id" identifies a // proxy offer rather than an ordinary offer, then a ProxyOfferId // exception is raised. // The "del_list" parameter gives the names of the properties that // are no longer to be recorded for the identified offer. Future - // query and describe operations will not see these properties. ° If + // query and describe operations will not see these properties. If // any of the names within the "del_list" do not obey the rules for // PropertyName's, then an IllegalPropertyName exception is - // raised. ° If a "name" is legal but there is no property for the + // raised. If a "name" is legal but there is no property for the // offer with that "name," then an UnknownPropertyName exception is - // raised. ° If the list includes a property that has a mandatory - // mode, then the MandatoryProperty exception is raised. ° If the + // raised. If the list includes a property that has a mandatory + // mode, then the MandatoryProperty exception is raised. If the // same property name is included two or more times in this // parameter, the DuplicatePropertyName exception is raised. @@ -404,17 +404,17 @@ public: // properties to be changed. If the property is not in the offer, // then the modify operation adds it. The modified (or added) // property values are returned in future query and describe - // operations in place of the original values. ° If any of the names + // operations in place of the original values. If any of the names // within the "modify_list" do not obey the rules for // PropertyName's, then an IllegalPropertyName exception is - // raised. ° If the list includes a property that has a readonly + // raised. If the list includes a property that has a readonly // mode, then the ReadonlyProperty exception is raised unless that // readonly property is not currently recorded for the offer. The // ReadonlyDynamicProperty exception is raised if an attempt is made - // to assign a dynamic property value to a readonly property. ° If + // to assign a dynamic property value to a readonly property. If // the value of any modified property is of a type that is not the // same as the type expected, then the PropertyTypeMismatch - // exception is raised. ° If two or more properties with the same + // exception is raised. If two or more properties with the same // property name are included in this argument, the // DuplicatePropertyName exception is raised. @@ -434,16 +434,16 @@ public: // The "type" parameter conveys the required service type. Each // offer of the specified type will have the constraint expression // applied to it. If it matches the constraint expression, then the - // offer will be withdrawn.° If "type" does not obey the rules for - // service types, then an IllegalServiceType exception is raised. ° + // offer will be withdrawn. If "type" does not obey the rules for + // service types, then an IllegalServiceType exception is raised. // If the "type" is correct syntactically but is not recognized as a // service type by the trader, then an UnknownServiceType exception // is raised. // The constraint "constr" is the means by which the client // restricts the set of offers to those that are intended for - // withdrawal. ° If "constr" does not obey the syntax rules for a - // constraint then an IllegalConstraint exception is raised. ° If + // withdrawal. If "constr" does not obey the syntax rules for a + // constraint then an IllegalConstraint exception is raised. If // the constraint fails to match with any offer of the specified // service type, then a NoMatchingOffers exception is raised. // END SPEC @@ -456,13 +456,13 @@ public: // another trader. In particular, it is used when exporting to a // trader that is known by a name rather than by an object // reference. The client provides the name, which will be a sequence - // of name components. ° If the content of the parameter cannot + // of name components. If the content of the parameter cannot // yield legal syntax for the first component, then the // IllegalTraderName exception is raised. Otherwise, the first name - // component is compared against the name held in each link. ° If no + // component is compared against the name held in each link. If no // match is found, or the trader does not support links, the // UnknownTraderName exception is raised. Otherwise, the trader - // obtains the register_if held as part of the matched link. ° If + // obtains the register_if held as part of the matched link. If // the Register interface is not nil, then the trader binds to the // Register interface and invokes resolve but passes the TraderName // with the first component removed; if it is nil, then the @@ -587,10 +587,10 @@ public: // offers are not returned via this operation. If the trader does // not support the Register interface, the NotImplemented exception // is raised. The returned identifiers are passed back in one of two - // ways (or a combination of both). ° The "ids" return result + // ways (or a combination of both). The "ids" return result // conveys a list of offer identifiers and the "id_itr" is a // reference to an interface at which additional offer identities - // can be obtained. ° The "how_many" parameter states how many + // can be obtained. The "how_many" parameter states how many // identifiers are to be returned via the "ids" result; any // remaining are available via the iterator interface. If the // "how_many" exceeds the number of offers held in the trader, then @@ -705,9 +705,9 @@ public: // IllegalLinkName is raised. An UnknownLinkName exception is raised // if the named link is not found in the trader. - // The operation returns a LinkInfo structure comprising: ° the - // Lookup interface of the target trading service, ° the Register - // interface of the target trading service, and ° the default, as + // The operation returns a LinkInfo structure comprising: the + // Lookup interface of the target trading service, the Register + // interface of the target trading service, and the default, as // well as the limiting follow behavior of the named link. // If the target service does not support the Register interface, diff --git a/TAO/orbsvcs/orbsvcs/Trader/Trader_Utils.h b/TAO/orbsvcs/orbsvcs/Trader/Trader_Utils.h index 03fae65eb2f..6a539435f81 100644 --- a/TAO/orbsvcs/orbsvcs/Trader/Trader_Utils.h +++ b/TAO/orbsvcs/orbsvcs/Trader/Trader_Utils.h @@ -261,14 +261,14 @@ public: // implementation of the trader. However, some names are // standardized where they effect the interpretation of other // parameters or where they may impact linking and federation of - // traders. ° If a policy name in this parameter does not obey the + // traders. If a policy name in this parameter does not obey the // syntactic rules for legal PolicyName's, then an IllegalPolicyName - // exception is raised. ° If the type of the value associated with a + // exception is raised. If the type of the value associated with a // policy differs from that specified in this specification, then a - // PolicyTypeMismatch exception is raised. ° If subsequent + // PolicyTypeMismatch exception is raised. If subsequent // processing of a PolicyValue yields any errors (e.g., the // starting_trader policy value is malformed), then an - // InvalidPolicyValue exception is raised. ° If the same policy name + // InvalidPolicyValue exception is raised. If the same policy name // is included two or more times in this parameter, then the // DuplicatePolicyName exception is raised. // END SPEC diff --git a/TAO/performance-tests/Cubit/TAO/IDL_Cubit/run_test.pl b/TAO/performance-tests/Cubit/TAO/IDL_Cubit/run_test.pl index 4b43bc84400..e7c0f004f10 100755 --- a/TAO/performance-tests/Cubit/TAO/IDL_Cubit/run_test.pl +++ b/TAO/performance-tests/Cubit/TAO/IDL_Cubit/run_test.pl @@ -36,6 +36,7 @@ $client->DeleteFile($iorbase); $client_flags = ""; $server_flags = ""; $quiet_flag = " -q "; +$shmiop = 1; ############################################################################### # Parse the arguments @@ -48,6 +49,7 @@ for ($i = 0; $i <= $#ARGV; $i++) { print "-n num -- client uses <num> iterations\n"; print "-debug -- sets the debug flag for both client and " . "server\n"; + print "-noshmiop -- don't run SHMIOP test\n"; exit; } elsif ($ARGV[$i] eq "-debug") { @@ -61,6 +63,9 @@ for ($i = 0; $i <= $#ARGV; $i++) { elsif ($ARGV[$i] eq "-verbose") { $quiet_flag = ""; } + elsif ($ARGV[$i] eq "-noshmiop") { + $shmiop = 0; + } else { print STDERR "ERROR: Unknown Option: ".$ARGV[$i]."\n"; } @@ -142,12 +147,14 @@ if ($OSNAME ne "MSWin32" && $OSNAME ne "VMS") { run_test_helper (); } -print STDERR "============================================================\n"; -print STDERR "Running IDL_Cubit with the SHMIOP protocol.\n\n"; +if ($shmiop) { + print STDERR "============================================================\n"; + print STDERR "Running IDL_Cubit with the SHMIOP protocol.\n\n"; -$SV->Arguments ("$server_stdarg -ORBEndpoint shmiop:// -ORBSvcconf $server_shmiop_conf "); + $SV->Arguments ("$server_stdarg -ORBEndpoint shmiop:// -ORBSvcconf $server_shmiop_conf "); -run_test_helper (); + run_test_helper (); +} # Clean up SHMIOP files PerlACE::check_n_cleanup_files ("server_shmiop_*"); diff --git a/TAO/tao/PortableServer/RequestProcessingStrategyAOMOnly.cpp b/TAO/tao/PortableServer/RequestProcessingStrategyAOMOnly.cpp index b42e3f30173..37cdca63018 100644 --- a/TAO/tao/PortableServer/RequestProcessingStrategyAOMOnly.cpp +++ b/TAO/tao/PortableServer/RequestProcessingStrategyAOMOnly.cpp @@ -105,7 +105,14 @@ namespace TAO Non_Servant_Upcall non_servant_upcall (*this->poa_); ACE_UNUSED_ARG (non_servant_upcall); - servant->_remove_ref (); + try + { + servant->_remove_ref (); + } + catch (...) + { + // Ignore exceptions from servant cleanup. + } } // This operation causes the association of the Object Id specified diff --git a/TAO/tao/PortableServer/RequestProcessingStrategyDefaultServant.cpp b/TAO/tao/PortableServer/RequestProcessingStrategyDefaultServant.cpp index 331fa1eb987..5d32202278f 100644 --- a/TAO/tao/PortableServer/RequestProcessingStrategyDefaultServant.cpp +++ b/TAO/tao/PortableServer/RequestProcessingStrategyDefaultServant.cpp @@ -185,7 +185,14 @@ namespace TAO Non_Servant_Upcall non_servant_upcall (*this->poa_); ACE_UNUSED_ARG (non_servant_upcall); - servant->_remove_ref (); + try + { + servant->_remove_ref (); + } + catch (...) + { + // Ignore exceptions from servant cleanup. + } } // This operation causes the association of the Object Id specified diff --git a/TAO/tao/PortableServer/RequestProcessingStrategyServantActivator.cpp b/TAO/tao/PortableServer/RequestProcessingStrategyServantActivator.cpp index a9ba9d5033b..1f72006203e 100644 --- a/TAO/tao/PortableServer/RequestProcessingStrategyServantActivator.cpp +++ b/TAO/tao/PortableServer/RequestProcessingStrategyServantActivator.cpp @@ -279,7 +279,14 @@ namespace TAO Non_Servant_Upcall non_servant_upcall (*this->poa_); ACE_UNUSED_ARG (non_servant_upcall); - servant->_remove_ref (); + try + { + servant->_remove_ref (); + } + catch (...) + { + // Ignore exceptions from servant cleanup. + } } } diff --git a/TAO/tao/PortableServer/RequestProcessingStrategyServantLocator.cpp b/TAO/tao/PortableServer/RequestProcessingStrategyServantLocator.cpp index 32f186c9de2..e1beec91ede 100644 --- a/TAO/tao/PortableServer/RequestProcessingStrategyServantLocator.cpp +++ b/TAO/tao/PortableServer/RequestProcessingStrategyServantLocator.cpp @@ -172,7 +172,14 @@ namespace TAO Non_Servant_Upcall non_servant_upcall (*this->poa_); ACE_UNUSED_ARG (non_servant_upcall); - servant->_remove_ref (); + try + { + servant->_remove_ref (); + } + catch (...) + { + // Ignore exceptions from servant cleanup. + } } // This operation causes the association of the Object Id specified diff --git a/TAO/tests/AMH_Exceptions/server.cpp b/TAO/tests/AMH_Exceptions/server.cpp index 276beac855d..f8132bca70e 100644 --- a/TAO/tests/AMH_Exceptions/server.cpp +++ b/TAO/tests/AMH_Exceptions/server.cpp @@ -24,7 +24,7 @@ public: //FUZZ: disable check_for_lack_ACE_OS protected: - CORBA::ORB_ptr orb_; + CORBA::ORB_var orb_; }; diff --git a/TAO/tests/Bug_1361_Regression/Server_Thread_Pool.cpp b/TAO/tests/Bug_1361_Regression/Server_Thread_Pool.cpp index 565d5ebc65a..083131a18b4 100644 --- a/TAO/tests/Bug_1361_Regression/Server_Thread_Pool.cpp +++ b/TAO/tests/Bug_1361_Regression/Server_Thread_Pool.cpp @@ -45,7 +45,7 @@ Thread_Pool::shutdown (void) i + 1)); ACE_Message_Block *mb1; ACE_NEW_RETURN (mb1, - ACE_Message_Block ((char*)0), + ACE_Message_Block ((char*) Test::Echo::_nil ()), -1); mb1->length (0); @@ -125,8 +125,7 @@ Thread_Pool::svc (void) Test::Echo_var echo = (Test::Echo_ptr)mb->base(); - // Echo_var is responsible for deallocating this. - // mb->release (); + mb->release (); if (CORBA::is_nil(echo.in())) { diff --git a/TAO/tests/Bug_1476_Regression/Sender_i.h b/TAO/tests/Bug_1476_Regression/Sender_i.h index d600e7a32e0..773e07812e1 100644 --- a/TAO/tests/Bug_1476_Regression/Sender_i.h +++ b/TAO/tests/Bug_1476_Regression/Sender_i.h @@ -42,7 +42,7 @@ public: private: /// Our local ORB ptr - CORBA::ORB_ptr orb_; + CORBA::ORB_var orb_; /// Number of active objects who are trying to connect CORBA::ULong active_objects_; diff --git a/TAO/tests/Bug_1476_Test/client.cpp b/TAO/tests/Bug_1476_Test/client.cpp index da751521269..f803832567c 100644 --- a/TAO/tests/Bug_1476_Test/client.cpp +++ b/TAO/tests/Bug_1476_Test/client.cpp @@ -94,61 +94,68 @@ ACE_TMAIN(int argc, ACE_TCHAR *argv[]) CORBA::Object_var tmp = orb->string_to_object(ior); - if (CORBA::is_nil (tmp.in ())) { - ACE_ERROR_RETURN ((LM_ERROR, "Invalid IOR.\n") - ,1); - } + if (CORBA::is_nil (tmp.in ())) + { + ACE_ERROR_RETURN ((LM_ERROR, "Invalid IOR.\n") + ,1); + } { - // Set the Synch Scopes + // Set the Synch Scopes - CORBA::Any scope_as_any; + CORBA::Any scope_as_any; - if (synch_none == true) - { - ACE_DEBUG ((LM_DEBUG, "(%P|%t) - Applying SYNC_NONE.\n")); - scope_as_any <<= Messaging::SYNC_NONE; - } - else if (synch_delayed == true) - { - ACE_DEBUG ((LM_DEBUG, "(%P|%t) - Applying SYNC_DELAYED_BUFFERING.\n")); - scope_as_any <<= TAO::SYNC_DELAYED_BUFFERING; - } + if (synch_none == true) + { + ACE_DEBUG ((LM_DEBUG, "(%P|%t) - Applying SYNC_NONE.\n")); + scope_as_any <<= Messaging::SYNC_NONE; + } + else if (synch_delayed == true) + { + ACE_DEBUG ((LM_DEBUG, + "(%P|%t) - Applying SYNC_DELAYED_BUFFERING.\n")); + scope_as_any <<= TAO::SYNC_DELAYED_BUFFERING; + } - CORBA::PolicyList policies (1); - policies.length (1); - policies[0] = - orb->create_policy (Messaging::SYNC_SCOPE_POLICY_TYPE, - scope_as_any); + CORBA::PolicyList policies (1); + policies.length (1); + policies[0] = + orb->create_policy (Messaging::SYNC_SCOPE_POLICY_TYPE, + scope_as_any); - if (level_thread == true) - { - ACE_DEBUG ((LM_DEBUG, "(%P|%t) - Applying Synch Scope at thread level.\n")); + if (level_thread == true) + { + ACE_DEBUG ((LM_DEBUG, + "(%P|%t) - Applying Synch Scope at thread level.\n")); - CORBA::Object_var object = - orb->resolve_initial_references ("PolicyCurrent"); - CORBA::PolicyCurrent_var policy_current = - CORBA::PolicyCurrent::_narrow (object.in ()); + CORBA::Object_var object = + orb->resolve_initial_references ("PolicyCurrent"); + CORBA::PolicyCurrent_var policy_current = + CORBA::PolicyCurrent::_narrow (object.in ()); - policy_current->set_policy_overrides (policies, CORBA::ADD_OVERRIDE); - } - else if (level_orb == true) - { - ACE_DEBUG ((LM_DEBUG, "(%P|%t) - Applying Synch Scope at orb level.\n")); + policy_current->set_policy_overrides (policies, + CORBA::ADD_OVERRIDE); + } + else if (level_orb == true) + { + ACE_DEBUG ((LM_DEBUG, + "(%P|%t) - Applying Synch Scope at orb level.\n")); - CORBA::Object_var obj = - orb->resolve_initial_references("ORBPolicyManager"); - CORBA::PolicyManager_var policy_manager = - CORBA::PolicyManager::_narrow(obj.in()); + CORBA::Object_var obj = + orb->resolve_initial_references("ORBPolicyManager"); + CORBA::PolicyManager_var policy_manager = + CORBA::PolicyManager::_narrow(obj.in()); - policy_manager->set_policy_overrides (policies, CORBA::ADD_OVERRIDE); - } - else if (level_obj == true) - { - ACE_DEBUG ((LM_DEBUG, "(%P|%t) - Applying Synch Scope at Object level.\n")); + policy_manager->set_policy_overrides (policies, + CORBA::ADD_OVERRIDE); + } + else if (level_obj == true) + { + ACE_DEBUG ((LM_DEBUG, + "(%P|%t) - Applying Synch Scope at Object level.\n")); - tmp = tmp->_set_policy_overrides (policies, CORBA::SET_OVERRIDE); - } + tmp = tmp->_set_policy_overrides (policies, CORBA::SET_OVERRIDE); + } policies[0]->destroy (); } @@ -156,12 +163,13 @@ ACE_TMAIN(int argc, ACE_TCHAR *argv[]) Test::Hello_var hello = Test::Hello::_narrow(tmp.in ()); - if (CORBA::is_nil (hello.in ())) { - ACE_ERROR_RETURN ((LM_ERROR, - "Nil Test::Hello reference <%s>\n", - ior), - 1); - } + if (CORBA::is_nil (hello.in ())) + { + ACE_ERROR_RETURN ((LM_ERROR, + "Nil Test::Hello reference <%s>\n", + ior), + 1); + } // If a blocking connection is initiated in the next step // the test will get an exception indicating test failure. @@ -172,18 +180,21 @@ ACE_TMAIN(int argc, ACE_TCHAR *argv[]) TAO::Transport_Cache_Manager &tcm = hello->orb_core ()->lane_resources ().transport_cache (); - TAO_Transport *transport = 0; - TAO_Base_Transport_Property desc (hello->_stubobj ()->profile_in_use()->endpoint ()); + TAO_Base_Transport_Property desc (hello->_stubobj ()->profile_in_use ()->endpoint ()); - if (tcm.current_size() == 0) { - ACE_ERROR_RETURN ((LM_ERROR, - "The Transport Cache shouldn't be empty here.\n"), - 1); - } + if (tcm.current_size() == 0) + { + ACE_ERROR_RETURN ((LM_ERROR, + "The Transport Cache shouldn't be empty here.\n"), + 1); + } size_t busy_count = 0; + TAO_Transport *transport = 0; TAO::Transport_Cache_Manager::Find_Result find_result = tcm.find_transport (&desc, transport, busy_count); + // We don't need this transport any more. Release the ownership. + transport->remove_reference (); switch (find_result){ case TAO::Transport_Cache_Manager::CACHE_FOUND_NONE: @@ -219,7 +230,6 @@ ACE_TMAIN(int argc, ACE_TCHAR *argv[]) } } - orb->destroy (); } catch (const CORBA::Exception &ex) diff --git a/TAO/tests/Codec/client.cpp b/TAO/tests/Codec/client.cpp index c6e569609d7..a884ba63952 100644 --- a/TAO/tests/Codec/client.cpp +++ b/TAO/tests/Codec/client.cpp @@ -78,7 +78,7 @@ test_codec (IOP::Codec_ptr codec) const CORBA::Long B = -3427; const CORBA::ULongLong C = ACE_UINT64_LITERAL (2001); const CORBA::Char D[] = "I'm Batman."; - const CORBA::WChar* E = gen_wstring (25); + CORBA::WChar* E = gen_wstring (25); // Create the structure to be encoded. Foo::Bar value; @@ -88,6 +88,8 @@ test_codec (IOP::Codec_ptr codec) value.D = CORBA::string_dup (D); value.E = CORBA::wstring_dup (E); + CORBA::wstring_free (E); + CORBA::Any data; data <<= value; diff --git a/TAO/tests/DII_AMI_Forward/server_interceptor.cpp b/TAO/tests/DII_AMI_Forward/server_interceptor.cpp index 4ac94e07c1a..82d60fb0298 100644 --- a/TAO/tests/DII_AMI_Forward/server_interceptor.cpp +++ b/TAO/tests/DII_AMI_Forward/server_interceptor.cpp @@ -8,7 +8,9 @@ #include "ace/Thread.h" ForwardTest_Request_Interceptor::ForwardTest_Request_Interceptor (void) - : myname_ ("ForwardTest_Interceptor") + : myname_ ("ForwardTest_Interceptor"), + forward_location_ (CORBA::Object::_nil ()), + forward_location_done_ (false) { } diff --git a/TAO/tests/MProfile_Connection_Timeout/client.cpp b/TAO/tests/MProfile_Connection_Timeout/client.cpp index d3f3fac6c8f..7c33f5ac8fd 100644 --- a/TAO/tests/MProfile_Connection_Timeout/client.cpp +++ b/TAO/tests/MProfile_Connection_Timeout/client.cpp @@ -74,10 +74,10 @@ ACE_TMAIN(int argc, ACE_TCHAR *argv[]) orb->string_to_object (name); // Get an object reference for the ORBs IORManipultion object! - CORBA::Object_ptr IORM = + CORBA::Object_var IORM = orb->resolve_initial_references (TAO_OBJID_IORMANIPULATION, 0); - TAO_IOP::TAO_IOR_Manipulation_ptr iorm = + TAO_IOP::TAO_IOR_Manipulation_var iorm = TAO_IOP::TAO_IOR_Manipulation::_narrow (IORM); TAO_IOP::TAO_IOR_Manipulation::IORList iors (2); diff --git a/TAO/tests/NestedUpcall/Triangle_Test/Object_A_i.cpp b/TAO/tests/NestedUpcall/Triangle_Test/Object_A_i.cpp index 8a5a2e8bc88..98e7790d2ee 100644 --- a/TAO/tests/NestedUpcall/Triangle_Test/Object_A_i.cpp +++ b/TAO/tests/NestedUpcall/Triangle_Test/Object_A_i.cpp @@ -57,3 +57,13 @@ Object_A_i::finish (void) this->finish_two_way_call_ = 1; } + +void +Object_A_i::shutdown (void) +{ + int argc = 0; + ACE_TCHAR **argv = 0; + CORBA::ORB_var orb = CORBA::ORB_init (argc, argv); + + orb->shutdown (); +} diff --git a/TAO/tests/NestedUpcall/Triangle_Test/Object_A_i.h b/TAO/tests/NestedUpcall/Triangle_Test/Object_A_i.h index 567412b6d83..6373eb3e5ff 100644 --- a/TAO/tests/NestedUpcall/Triangle_Test/Object_A_i.h +++ b/TAO/tests/NestedUpcall/Triangle_Test/Object_A_i.h @@ -38,6 +38,8 @@ public: virtual void finish (void); + virtual void shutdown (void); + unsigned long finish_two_way_call_; }; diff --git a/TAO/tests/NestedUpcall/Triangle_Test/Object_B_i.cpp b/TAO/tests/NestedUpcall/Triangle_Test/Object_B_i.cpp index 4506293e4eb..6005f4947fb 100644 --- a/TAO/tests/NestedUpcall/Triangle_Test/Object_B_i.cpp +++ b/TAO/tests/NestedUpcall/Triangle_Test/Object_B_i.cpp @@ -58,3 +58,13 @@ Object_B_i::foo (Object_A_ptr theObject_A_ptr) } } + +void +Object_B_i::shutdown (void) +{ + int argc = 0; + ACE_TCHAR **argv = 0; + CORBA::ORB_var orb = CORBA::ORB_init (argc, argv); + + orb->shutdown (); +} diff --git a/TAO/tests/NestedUpcall/Triangle_Test/Object_B_i.h b/TAO/tests/NestedUpcall/Triangle_Test/Object_B_i.h index 2eed4c74f4b..ff31c25e3c3 100644 --- a/TAO/tests/NestedUpcall/Triangle_Test/Object_B_i.h +++ b/TAO/tests/NestedUpcall/Triangle_Test/Object_B_i.h @@ -35,6 +35,8 @@ public: // Destructor. virtual void foo(Object_A_ptr theObject_A_ptr); + + virtual void shutdown (void); }; #endif /* OBJECT_B_IMPL_H */ diff --git a/TAO/tests/NestedUpcall/Triangle_Test/Triangle_Test.idl b/TAO/tests/NestedUpcall/Triangle_Test/Triangle_Test.idl index a99b5829bcc..e3704bec89b 100644 --- a/TAO/tests/NestedUpcall/Triangle_Test/Triangle_Test.idl +++ b/TAO/tests/NestedUpcall/Triangle_Test/Triangle_Test.idl @@ -29,10 +29,14 @@ interface Object_A { oneway void finish (); + oneway void shutdown (); + }; interface Object_B { void foo (in Object_A theObject_A); + oneway void shutdown (); + }; diff --git a/TAO/tests/NestedUpcall/Triangle_Test/initiator.cpp b/TAO/tests/NestedUpcall/Triangle_Test/initiator.cpp index 92500938f11..6f1a67dde02 100644 --- a/TAO/tests/NestedUpcall/Triangle_Test/initiator.cpp +++ b/TAO/tests/NestedUpcall/Triangle_Test/initiator.cpp @@ -141,10 +141,11 @@ Initiator_Server::init (int argc, try { + CORBA::ORB_var orb = this->orb_manager_.orb(); // Get Object A CORBA::Object_var object_A_obj_var = - this->orb_manager_.orb()->string_to_object (this->object_A_key_); + orb->string_to_object (this->object_A_key_); this->object_A_var_ = Object_A::_narrow (object_A_obj_var.in()); @@ -166,7 +167,7 @@ Initiator_Server::init (int argc, // Get Object B CORBA::Object_var object_B_obj_var = - this->orb_manager_.orb()->string_to_object (this->object_B_key_); + orb->string_to_object (this->object_B_key_); this->object_B_var_ = Object_B::_narrow (object_B_obj_var.in()); @@ -253,6 +254,9 @@ Initiator_Server::~Initiator_Server (void) if (this->object_B_key_ != 0) ACE_Allocator::instance ()->free (this->object_B_key_); + this->object_A_var_->shutdown (); + this->object_B_var_->shutdown (); + try { this->orb_manager_.deactivate (this->str_.in ()); diff --git a/TAO/tests/NestedUpcall/Triangle_Test/run_test.pl b/TAO/tests/NestedUpcall/Triangle_Test/run_test.pl index d84559551a2..2e9c16d2cba 100755 --- a/TAO/tests/NestedUpcall/Triangle_Test/run_test.pl +++ b/TAO/tests/NestedUpcall/Triangle_Test/run_test.pl @@ -114,14 +114,14 @@ if ($client_status != 0) { $status = 1; } -$server_status = $SV1->TerminateWaitKill ($server_a->ProcessStopWaitInterval()); +$server_status = $SV1->WaitKill ($server_a->ProcessStopWaitInterval()); if ($server_status != 0) { print STDERR "ERROR: server returned $server_status\n"; $status = 1; } -$server_status = $SV2->TerminateWaitKill ($server_b->ProcessStopWaitInterval()); +$server_status = $SV2->WaitKill ($server_b->ProcessStopWaitInterval()); if ($server_status != 0) { print STDERR "ERROR: server returned $server_status\n"; diff --git a/TAO/tests/ORB_shutdown/Foo_Bar.cpp b/TAO/tests/ORB_shutdown/Foo_Bar.cpp index e155bf1ea1f..a55aa17b7e1 100644 --- a/TAO/tests/ORB_shutdown/Foo_Bar.cpp +++ b/TAO/tests/ORB_shutdown/Foo_Bar.cpp @@ -12,5 +12,12 @@ Foo_Bar::~Foo_Bar (void) ACE_DEBUG ((LM_DEBUG, "(%P|%t) Shutting down the ORB again\n")); - this->orb_->shutdown (1); + try + { + this->orb_->shutdown (1); + } + catch (...) + { + // Don't allow exceptions to leave the destructor. + } } diff --git a/TAO/tests/Oneways_Invoking_Twoways/Sender_i.h b/TAO/tests/Oneways_Invoking_Twoways/Sender_i.h index ab267b02277..e566594f46e 100644 --- a/TAO/tests/Oneways_Invoking_Twoways/Sender_i.h +++ b/TAO/tests/Oneways_Invoking_Twoways/Sender_i.h @@ -43,7 +43,7 @@ public: private: /// Our local ORB ptr - CORBA::ORB_ptr orb_; + CORBA::ORB_var orb_; /// Number of invocations to be made on the receiver CORBA::ULong number_; |