diff options
author | Matthew Newhook <matthew@zeroc.com> | 2008-02-29 15:51:11 +0800 |
---|---|---|
committer | Matthew Newhook <matthew@zeroc.com> | 2008-02-29 16:39:54 +0800 |
commit | fb4132881dde7c9b135d713a06a3b64db1f706db (patch) | |
tree | 8a037e9d4cae7ed15360ab0878d14b32ac3150a4 /cpp/test | |
parent | fixing mode on php/config/Make.rules.mak (diff) | |
download | ice-fb4132881dde7c9b135d713a06a3b64db1f706db.tar.bz2 ice-fb4132881dde7c9b135d713a06a3b64db1f706db.tar.xz ice-fb4132881dde7c9b135d713a06a3b64db1f706db.zip |
Merge HA IceStorm branch.
- http://bugzilla/bugzilla/show_bug.cgi?id=2706
- http://bugzilla/bugzilla/show_bug.cgi?id=2705
Diffstat (limited to 'cpp/test')
83 files changed, 2894 insertions, 757 deletions
diff --git a/cpp/test/IceStorm/Makefile b/cpp/test/IceStorm/Makefile index 1fc080ddd3e..c31494dc138 100644 --- a/cpp/test/IceStorm/Makefile +++ b/cpp/test/IceStorm/Makefile @@ -14,7 +14,10 @@ include $(top_srcdir)/config/Make.rules SUBDIRS = single \ federation \ federation2 \ - stress + stress \ + rep1 \ + repstress \ + repgrid $(EVERYTHING):: @for subdir in $(SUBDIRS); \ diff --git a/cpp/test/IceStorm/Makefile.mak b/cpp/test/IceStorm/Makefile.mak index 26d6110a05e..189028c5bc6 100644 --- a/cpp/test/IceStorm/Makefile.mak +++ b/cpp/test/IceStorm/Makefile.mak @@ -14,7 +14,10 @@ top_srcdir = ..\.. SUBDIRS = single \ federation \ federation2 \ - stress + stress \ + rep1 \ + repstress \ + repgrid $(EVERYTHING):: @for %i in ( $(SUBDIRS) ) do \ diff --git a/cpp/test/IceStorm/federation/.depend b/cpp/test/IceStorm/federation/.depend index 17947ebeaa9..46c15001bb1 100644 --- a/cpp/test/IceStorm/federation/.depend +++ b/cpp/test/IceStorm/federation/.depend @@ -1,5 +1,5 @@ -Event$(OBJEXT): Event.cpp Event.h $(includedir)/Ice/LocalObjectF.h $(includedir)/IceUtil/Shared.h $(includedir)/IceUtil/Config.h $(includedir)/Ice/Handle.h $(includedir)/IceUtil/Handle.h $(includedir)/IceUtil/Exception.h $(includedir)/Ice/Config.h $(includedir)/Ice/ProxyHandle.h $(includedir)/Ice/ProxyF.h $(includedir)/Ice/ObjectF.h $(includedir)/Ice/GCCountMap.h $(includedir)/Ice/GCShared.h $(includedir)/Ice/Exception.h $(includedir)/Ice/LocalObject.h $(includedir)/Ice/Proxy.h $(includedir)/IceUtil/Mutex.h $(includedir)/IceUtil/Lock.h $(includedir)/IceUtil/ThreadException.h $(includedir)/IceUtil/Time.h $(includedir)/Ice/ProxyFactoryF.h $(includedir)/Ice/ConnectionIF.h $(includedir)/Ice/RequestHandlerF.h $(includedir)/Ice/EndpointIF.h $(includedir)/Ice/Endpoint.h $(includedir)/Ice/UndefSysMacros.h $(includedir)/Ice/ObjectAdapterF.h $(includedir)/Ice/ReferenceF.h $(includedir)/Ice/OutgoingAsyncF.h $(includedir)/Ice/Current.h $(includedir)/Ice/ConnectionF.h $(includedir)/Ice/Identity.h $(includedir)/Ice/StreamF.h $(includedir)/Ice/CommunicatorF.h $(includedir)/Ice/Object.h $(includedir)/Ice/IncomingAsyncF.h $(includedir)/Ice/Outgoing.h $(includedir)/IceUtil/Monitor.h $(includedir)/IceUtil/Cond.h $(includedir)/Ice/InstanceF.h $(includedir)/Ice/BasicStream.h $(includedir)/Ice/ObjectFactoryF.h $(includedir)/Ice/Buffer.h $(includedir)/Ice/Protocol.h $(includedir)/Ice/StringConverter.h $(includedir)/IceUtil/Unicode.h $(includedir)/Ice/Incoming.h $(includedir)/Ice/ServantLocatorF.h $(includedir)/Ice/ServantManagerF.h $(includedir)/Ice/Direct.h $(includedir)/Ice/LocalException.h $(includedir)/Ice/BuiltinSequences.h $(includedir)/Ice/ObjectFactory.h $(includedir)/IceUtil/Iterator.h $(includedir)/IceUtil/ScopedArray.h -Publisher$(OBJEXT): Publisher.cpp $(includedir)/Ice/Ice.h $(includedir)/Ice/Initialize.h $(includedir)/Ice/CommunicatorF.h $(includedir)/Ice/LocalObjectF.h $(includedir)/IceUtil/Shared.h $(includedir)/IceUtil/Config.h $(includedir)/Ice/Handle.h $(includedir)/IceUtil/Handle.h $(includedir)/IceUtil/Exception.h $(includedir)/Ice/Config.h $(includedir)/Ice/ProxyHandle.h $(includedir)/Ice/ProxyF.h $(includedir)/Ice/ObjectF.h $(includedir)/Ice/GCCountMap.h $(includedir)/Ice/GCShared.h $(includedir)/Ice/Exception.h $(includedir)/Ice/LocalObject.h $(includedir)/Ice/UndefSysMacros.h $(includedir)/Ice/PropertiesF.h $(includedir)/Ice/Proxy.h $(includedir)/IceUtil/Mutex.h $(includedir)/IceUtil/Lock.h $(includedir)/IceUtil/ThreadException.h $(includedir)/IceUtil/Time.h $(includedir)/Ice/ProxyFactoryF.h $(includedir)/Ice/ConnectionIF.h $(includedir)/Ice/RequestHandlerF.h $(includedir)/Ice/EndpointIF.h $(includedir)/Ice/Endpoint.h $(includedir)/Ice/ObjectAdapterF.h $(includedir)/Ice/ReferenceF.h $(includedir)/Ice/OutgoingAsyncF.h $(includedir)/Ice/Current.h $(includedir)/Ice/ConnectionF.h $(includedir)/Ice/Identity.h $(includedir)/Ice/StreamF.h $(includedir)/Ice/Object.h $(includedir)/Ice/IncomingAsyncF.h $(includedir)/Ice/InstanceF.h $(includedir)/Ice/LoggerF.h $(includedir)/Ice/StatsF.h $(includedir)/Ice/StringConverter.h $(includedir)/Ice/BuiltinSequences.h $(includedir)/Ice/LocalException.h $(includedir)/Ice/Properties.h $(includedir)/Ice/Outgoing.h $(includedir)/IceUtil/Monitor.h $(includedir)/IceUtil/Cond.h $(includedir)/Ice/BasicStream.h $(includedir)/Ice/ObjectFactoryF.h $(includedir)/Ice/Buffer.h $(includedir)/Ice/Protocol.h $(includedir)/IceUtil/Unicode.h $(includedir)/Ice/OutgoingAsync.h $(includedir)/IceUtil/Timer.h $(includedir)/IceUtil/Thread.h $(includedir)/Ice/Incoming.h $(includedir)/Ice/ServantLocatorF.h $(includedir)/Ice/ServantManagerF.h $(includedir)/Ice/Direct.h $(includedir)/Ice/Logger.h $(includedir)/Ice/LoggerUtil.h $(includedir)/Ice/Stats.h $(includedir)/Ice/Communicator.h $(includedir)/Ice/RouterF.h $(includedir)/Ice/LocatorF.h $(includedir)/Ice/PluginF.h $(includedir)/Ice/ImplicitContextF.h $(includedir)/Ice/ObjectFactory.h $(includedir)/Ice/ObjectAdapter.h $(includedir)/Ice/FacetMap.h $(includedir)/Ice/ServantLocator.h $(includedir)/Ice/IncomingAsync.h $(includedir)/Ice/Process.h $(includedir)/Ice/Application.h $(includedir)/Ice/Connection.h $(includedir)/Ice/Functional.h $(includedir)/IceUtil/Functional.h $(includedir)/Ice/Stream.h $(includedir)/Ice/ImplicitContext.h $(includedir)/Ice/Locator.h $(includedir)/Ice/UserExceptionFactory.h $(includedir)/Ice/FactoryTable.h $(includedir)/Ice/FactoryTableDef.h $(includedir)/IceUtil/StaticMutex.h $(includedir)/Ice/UserExceptionFactoryF.h $(includedir)/Ice/ProcessF.h $(includedir)/Ice/Router.h $(includedir)/Ice/DispatchInterceptor.h $(includedir)/Ice/IconvStringConverter.h $(includedir)/IceStorm/IceStorm.h $(includedir)/Ice/SliceChecksumDict.h Event.h -Subscriber$(OBJEXT): Subscriber.cpp $(includedir)/IceUtil/DisableWarnings.h $(includedir)/Ice/Ice.h $(includedir)/Ice/Initialize.h $(includedir)/Ice/CommunicatorF.h $(includedir)/Ice/LocalObjectF.h $(includedir)/IceUtil/Shared.h $(includedir)/IceUtil/Config.h $(includedir)/Ice/Handle.h $(includedir)/IceUtil/Handle.h $(includedir)/IceUtil/Exception.h $(includedir)/Ice/Config.h $(includedir)/Ice/ProxyHandle.h $(includedir)/Ice/ProxyF.h $(includedir)/Ice/ObjectF.h $(includedir)/Ice/GCCountMap.h $(includedir)/Ice/GCShared.h $(includedir)/Ice/Exception.h $(includedir)/Ice/LocalObject.h $(includedir)/Ice/UndefSysMacros.h $(includedir)/Ice/PropertiesF.h $(includedir)/Ice/Proxy.h $(includedir)/IceUtil/Mutex.h $(includedir)/IceUtil/Lock.h $(includedir)/IceUtil/ThreadException.h $(includedir)/IceUtil/Time.h $(includedir)/Ice/ProxyFactoryF.h $(includedir)/Ice/ConnectionIF.h $(includedir)/Ice/RequestHandlerF.h $(includedir)/Ice/EndpointIF.h $(includedir)/Ice/Endpoint.h $(includedir)/Ice/ObjectAdapterF.h $(includedir)/Ice/ReferenceF.h $(includedir)/Ice/OutgoingAsyncF.h $(includedir)/Ice/Current.h $(includedir)/Ice/ConnectionF.h $(includedir)/Ice/Identity.h $(includedir)/Ice/StreamF.h $(includedir)/Ice/Object.h $(includedir)/Ice/IncomingAsyncF.h $(includedir)/Ice/InstanceF.h $(includedir)/Ice/LoggerF.h $(includedir)/Ice/StatsF.h $(includedir)/Ice/StringConverter.h $(includedir)/Ice/BuiltinSequences.h $(includedir)/Ice/LocalException.h $(includedir)/Ice/Properties.h $(includedir)/Ice/Outgoing.h $(includedir)/IceUtil/Monitor.h $(includedir)/IceUtil/Cond.h $(includedir)/Ice/BasicStream.h $(includedir)/Ice/ObjectFactoryF.h $(includedir)/Ice/Buffer.h $(includedir)/Ice/Protocol.h $(includedir)/IceUtil/Unicode.h $(includedir)/Ice/OutgoingAsync.h $(includedir)/IceUtil/Timer.h $(includedir)/IceUtil/Thread.h $(includedir)/Ice/Incoming.h $(includedir)/Ice/ServantLocatorF.h $(includedir)/Ice/ServantManagerF.h $(includedir)/Ice/Direct.h $(includedir)/Ice/Logger.h $(includedir)/Ice/LoggerUtil.h $(includedir)/Ice/Stats.h $(includedir)/Ice/Communicator.h $(includedir)/Ice/RouterF.h $(includedir)/Ice/LocatorF.h $(includedir)/Ice/PluginF.h $(includedir)/Ice/ImplicitContextF.h $(includedir)/Ice/ObjectFactory.h $(includedir)/Ice/ObjectAdapter.h $(includedir)/Ice/FacetMap.h $(includedir)/Ice/ServantLocator.h $(includedir)/Ice/IncomingAsync.h $(includedir)/Ice/Process.h $(includedir)/Ice/Application.h $(includedir)/Ice/Connection.h $(includedir)/Ice/Functional.h $(includedir)/IceUtil/Functional.h $(includedir)/Ice/Stream.h $(includedir)/Ice/ImplicitContext.h $(includedir)/Ice/Locator.h $(includedir)/Ice/UserExceptionFactory.h $(includedir)/Ice/FactoryTable.h $(includedir)/Ice/FactoryTableDef.h $(includedir)/IceUtil/StaticMutex.h $(includedir)/Ice/UserExceptionFactoryF.h $(includedir)/Ice/ProcessF.h $(includedir)/Ice/Router.h $(includedir)/Ice/DispatchInterceptor.h $(includedir)/Ice/IconvStringConverter.h $(includedir)/IceStorm/IceStorm.h $(includedir)/Ice/SliceChecksumDict.h Event.h ../../include/TestCommon.h +Event$(OBJEXT): Event.cpp Event.h $(includedir)/Ice/LocalObjectF.h $(includedir)/IceUtil/Shared.h $(includedir)/IceUtil/Config.h $(includedir)/IceUtil/Mutex.h $(includedir)/IceUtil/Lock.h $(includedir)/IceUtil/ThreadException.h $(includedir)/IceUtil/Exception.h $(includedir)/IceUtil/Time.h $(includedir)/Ice/Handle.h $(includedir)/IceUtil/Handle.h $(includedir)/Ice/Config.h $(includedir)/Ice/ProxyHandle.h $(includedir)/Ice/ProxyF.h $(includedir)/Ice/ObjectF.h $(includedir)/Ice/GCCountMap.h $(includedir)/Ice/GCShared.h $(includedir)/Ice/Exception.h $(includedir)/Ice/LocalObject.h $(includedir)/Ice/Proxy.h $(includedir)/Ice/ProxyFactoryF.h $(includedir)/Ice/ConnectionIF.h $(includedir)/Ice/RequestHandlerF.h $(includedir)/Ice/EndpointIF.h $(includedir)/Ice/Endpoint.h $(includedir)/Ice/UndefSysMacros.h $(includedir)/Ice/ObjectAdapterF.h $(includedir)/Ice/ReferenceF.h $(includedir)/Ice/OutgoingAsyncF.h $(includedir)/Ice/Current.h $(includedir)/Ice/ConnectionF.h $(includedir)/Ice/Identity.h $(includedir)/Ice/StreamF.h $(includedir)/Ice/CommunicatorF.h $(includedir)/Ice/Object.h $(includedir)/Ice/IncomingAsyncF.h $(includedir)/Ice/Outgoing.h $(includedir)/IceUtil/Monitor.h $(includedir)/IceUtil/Cond.h $(includedir)/Ice/InstanceF.h $(includedir)/Ice/BasicStream.h $(includedir)/Ice/ObjectFactoryF.h $(includedir)/Ice/Buffer.h $(includedir)/Ice/Protocol.h $(includedir)/Ice/StringConverter.h $(includedir)/IceUtil/Unicode.h $(includedir)/Ice/Incoming.h $(includedir)/Ice/ServantLocatorF.h $(includedir)/Ice/ServantManagerF.h $(includedir)/Ice/Direct.h $(includedir)/Ice/LocalException.h $(includedir)/Ice/BuiltinSequences.h $(includedir)/Ice/ObjectFactory.h $(includedir)/IceUtil/Iterator.h $(includedir)/IceUtil/ScopedArray.h +Publisher$(OBJEXT): Publisher.cpp $(includedir)/Ice/Ice.h $(includedir)/Ice/Initialize.h $(includedir)/Ice/CommunicatorF.h $(includedir)/Ice/LocalObjectF.h $(includedir)/IceUtil/Shared.h $(includedir)/IceUtil/Config.h $(includedir)/IceUtil/Mutex.h $(includedir)/IceUtil/Lock.h $(includedir)/IceUtil/ThreadException.h $(includedir)/IceUtil/Exception.h $(includedir)/IceUtil/Time.h $(includedir)/Ice/Handle.h $(includedir)/IceUtil/Handle.h $(includedir)/Ice/Config.h $(includedir)/Ice/ProxyHandle.h $(includedir)/Ice/ProxyF.h $(includedir)/Ice/ObjectF.h $(includedir)/Ice/GCCountMap.h $(includedir)/Ice/GCShared.h $(includedir)/Ice/Exception.h $(includedir)/Ice/LocalObject.h $(includedir)/Ice/UndefSysMacros.h $(includedir)/Ice/PropertiesF.h $(includedir)/Ice/Proxy.h $(includedir)/Ice/ProxyFactoryF.h $(includedir)/Ice/ConnectionIF.h $(includedir)/Ice/RequestHandlerF.h $(includedir)/Ice/EndpointIF.h $(includedir)/Ice/Endpoint.h $(includedir)/Ice/ObjectAdapterF.h $(includedir)/Ice/ReferenceF.h $(includedir)/Ice/OutgoingAsyncF.h $(includedir)/Ice/Current.h $(includedir)/Ice/ConnectionF.h $(includedir)/Ice/Identity.h $(includedir)/Ice/StreamF.h $(includedir)/Ice/Object.h $(includedir)/Ice/IncomingAsyncF.h $(includedir)/Ice/InstanceF.h $(includedir)/Ice/LoggerF.h $(includedir)/Ice/StatsF.h $(includedir)/Ice/StringConverter.h $(includedir)/Ice/BuiltinSequences.h $(includedir)/Ice/LocalException.h $(includedir)/Ice/Properties.h $(includedir)/Ice/Outgoing.h $(includedir)/IceUtil/Monitor.h $(includedir)/IceUtil/Cond.h $(includedir)/Ice/BasicStream.h $(includedir)/Ice/ObjectFactoryF.h $(includedir)/Ice/Buffer.h $(includedir)/Ice/Protocol.h $(includedir)/IceUtil/Unicode.h $(includedir)/Ice/OutgoingAsync.h $(includedir)/IceUtil/Timer.h $(includedir)/IceUtil/Thread.h $(includedir)/Ice/Incoming.h $(includedir)/Ice/ServantLocatorF.h $(includedir)/Ice/ServantManagerF.h $(includedir)/Ice/Direct.h $(includedir)/Ice/Logger.h $(includedir)/Ice/LoggerUtil.h $(includedir)/Ice/Stats.h $(includedir)/Ice/Communicator.h $(includedir)/Ice/RouterF.h $(includedir)/Ice/LocatorF.h $(includedir)/Ice/PluginF.h $(includedir)/Ice/ImplicitContextF.h $(includedir)/Ice/ObjectFactory.h $(includedir)/Ice/ObjectAdapter.h $(includedir)/Ice/FacetMap.h $(includedir)/Ice/ServantLocator.h $(includedir)/Ice/IncomingAsync.h $(includedir)/Ice/Process.h $(includedir)/Ice/Application.h $(includedir)/Ice/Connection.h $(includedir)/Ice/Functional.h $(includedir)/IceUtil/Functional.h $(includedir)/Ice/Stream.h $(includedir)/Ice/ImplicitContext.h $(includedir)/Ice/Locator.h $(includedir)/Ice/UserExceptionFactory.h $(includedir)/Ice/FactoryTable.h $(includedir)/Ice/FactoryTableDef.h $(includedir)/IceUtil/StaticMutex.h $(includedir)/Ice/UserExceptionFactoryF.h $(includedir)/Ice/ProcessF.h $(includedir)/Ice/Router.h $(includedir)/Ice/DispatchInterceptor.h $(includedir)/Ice/IconvStringConverter.h $(includedir)/IceStorm/IceStorm.h $(includedir)/Ice/SliceChecksumDict.h Event.h +Subscriber$(OBJEXT): Subscriber.cpp $(includedir)/IceUtil/DisableWarnings.h $(includedir)/Ice/Ice.h $(includedir)/Ice/Initialize.h $(includedir)/Ice/CommunicatorF.h $(includedir)/Ice/LocalObjectF.h $(includedir)/IceUtil/Shared.h $(includedir)/IceUtil/Config.h $(includedir)/IceUtil/Mutex.h $(includedir)/IceUtil/Lock.h $(includedir)/IceUtil/ThreadException.h $(includedir)/IceUtil/Exception.h $(includedir)/IceUtil/Time.h $(includedir)/Ice/Handle.h $(includedir)/IceUtil/Handle.h $(includedir)/Ice/Config.h $(includedir)/Ice/ProxyHandle.h $(includedir)/Ice/ProxyF.h $(includedir)/Ice/ObjectF.h $(includedir)/Ice/GCCountMap.h $(includedir)/Ice/GCShared.h $(includedir)/Ice/Exception.h $(includedir)/Ice/LocalObject.h $(includedir)/Ice/UndefSysMacros.h $(includedir)/Ice/PropertiesF.h $(includedir)/Ice/Proxy.h $(includedir)/Ice/ProxyFactoryF.h $(includedir)/Ice/ConnectionIF.h $(includedir)/Ice/RequestHandlerF.h $(includedir)/Ice/EndpointIF.h $(includedir)/Ice/Endpoint.h $(includedir)/Ice/ObjectAdapterF.h $(includedir)/Ice/ReferenceF.h $(includedir)/Ice/OutgoingAsyncF.h $(includedir)/Ice/Current.h $(includedir)/Ice/ConnectionF.h $(includedir)/Ice/Identity.h $(includedir)/Ice/StreamF.h $(includedir)/Ice/Object.h $(includedir)/Ice/IncomingAsyncF.h $(includedir)/Ice/InstanceF.h $(includedir)/Ice/LoggerF.h $(includedir)/Ice/StatsF.h $(includedir)/Ice/StringConverter.h $(includedir)/Ice/BuiltinSequences.h $(includedir)/Ice/LocalException.h $(includedir)/Ice/Properties.h $(includedir)/Ice/Outgoing.h $(includedir)/IceUtil/Monitor.h $(includedir)/IceUtil/Cond.h $(includedir)/Ice/BasicStream.h $(includedir)/Ice/ObjectFactoryF.h $(includedir)/Ice/Buffer.h $(includedir)/Ice/Protocol.h $(includedir)/IceUtil/Unicode.h $(includedir)/Ice/OutgoingAsync.h $(includedir)/IceUtil/Timer.h $(includedir)/IceUtil/Thread.h $(includedir)/Ice/Incoming.h $(includedir)/Ice/ServantLocatorF.h $(includedir)/Ice/ServantManagerF.h $(includedir)/Ice/Direct.h $(includedir)/Ice/Logger.h $(includedir)/Ice/LoggerUtil.h $(includedir)/Ice/Stats.h $(includedir)/Ice/Communicator.h $(includedir)/Ice/RouterF.h $(includedir)/Ice/LocatorF.h $(includedir)/Ice/PluginF.h $(includedir)/Ice/ImplicitContextF.h $(includedir)/Ice/ObjectFactory.h $(includedir)/Ice/ObjectAdapter.h $(includedir)/Ice/FacetMap.h $(includedir)/Ice/ServantLocator.h $(includedir)/Ice/IncomingAsync.h $(includedir)/Ice/Process.h $(includedir)/Ice/Application.h $(includedir)/Ice/Connection.h $(includedir)/Ice/Functional.h $(includedir)/IceUtil/Functional.h $(includedir)/Ice/Stream.h $(includedir)/Ice/ImplicitContext.h $(includedir)/Ice/Locator.h $(includedir)/Ice/UserExceptionFactory.h $(includedir)/Ice/FactoryTable.h $(includedir)/Ice/FactoryTableDef.h $(includedir)/IceUtil/StaticMutex.h $(includedir)/Ice/UserExceptionFactoryF.h $(includedir)/Ice/ProcessF.h $(includedir)/Ice/Router.h $(includedir)/Ice/DispatchInterceptor.h $(includedir)/Ice/IconvStringConverter.h $(includedir)/IceStorm/IceStorm.h $(includedir)/Ice/SliceChecksumDict.h Event.h ../../include/TestCommon.h Event.cpp: Event.ice Event.ice: $(SLICE2CPP) $(SLICEPARSERLIB) diff --git a/cpp/test/IceStorm/federation/.gitignore b/cpp/test/IceStorm/federation/.gitignore index 08f28c36e0f..f6811ab9123 100644 --- a/cpp/test/IceStorm/federation/.gitignore +++ b/cpp/test/IceStorm/federation/.gitignore @@ -7,3 +7,6 @@ Event.cpp Event.h build.txt db/* +0.db/* +1.db/* +2.db/* diff --git a/cpp/test/IceStorm/federation/0.db/.gitignore b/cpp/test/IceStorm/federation/0.db/.gitignore new file mode 100644 index 00000000000..72e8ffc0db8 --- /dev/null +++ b/cpp/test/IceStorm/federation/0.db/.gitignore @@ -0,0 +1 @@ +* diff --git a/cpp/test/IceStorm/federation/1.db/.gitignore b/cpp/test/IceStorm/federation/1.db/.gitignore new file mode 100644 index 00000000000..72e8ffc0db8 --- /dev/null +++ b/cpp/test/IceStorm/federation/1.db/.gitignore @@ -0,0 +1 @@ +* diff --git a/cpp/test/IceStorm/federation/2.db/.gitignore b/cpp/test/IceStorm/federation/2.db/.gitignore new file mode 100644 index 00000000000..72e8ffc0db8 --- /dev/null +++ b/cpp/test/IceStorm/federation/2.db/.gitignore @@ -0,0 +1 @@ +* diff --git a/cpp/test/IceStorm/federation/Makefile b/cpp/test/IceStorm/federation/Makefile index ffc90c7dfba..b1ef9bd92bd 100644 --- a/cpp/test/IceStorm/federation/Makefile +++ b/cpp/test/IceStorm/federation/Makefile @@ -42,5 +42,8 @@ $(SUBSCRIBER): $(OBJS) $(SOBJS) clean:: -rm -f build.txt -rm -f db/* + -rm -f 0.db/* + -rm -f 1.db/* + -rm -f 2.db/* include .depend diff --git a/cpp/test/IceStorm/federation/Makefile.mak b/cpp/test/IceStorm/federation/Makefile.mak index 30d7eab0b51..fa8da0b91a0 100644 --- a/cpp/test/IceStorm/federation/Makefile.mak +++ b/cpp/test/IceStorm/federation/Makefile.mak @@ -61,5 +61,8 @@ clean:: del /q Event.cpp Event.h del /q db\topicmanager db\log.* for %f in (db\*) do if not %f == db\.gitignore del /q %f + for %f in (0.db\*) do if not %f == 0.db\.gitignore del /q %f + for %f in (1.db\*) do if not %f == 1.db\.gitignore del /q %f + for %f in (2.db\*) do if not %f == 2.db\.gitignore del /q %f !include .depend diff --git a/cpp/test/IceStorm/federation/Publisher.cpp b/cpp/test/IceStorm/federation/Publisher.cpp index 93bf778fc69..bcd8d254cdd 100644 --- a/cpp/test/IceStorm/federation/Publisher.cpp +++ b/cpp/test/IceStorm/federation/Publisher.cpp @@ -20,7 +20,7 @@ int run(int argc, char* argv[], const CommunicatorPtr& communicator) { PropertiesPtr properties = communicator->getProperties(); - const char* managerProxyProperty = "IceStorm.TopicManager.Proxy"; + const char* managerProxyProperty = "IceStormAdmin.TopicManager.Default"; string managerProxy = properties->getProperty(managerProxyProperty); if(managerProxy.empty()) { diff --git a/cpp/test/IceStorm/federation/Subscriber.cpp b/cpp/test/IceStorm/federation/Subscriber.cpp index b7447abd108..6bef00cd002 100644 --- a/cpp/test/IceStorm/federation/Subscriber.cpp +++ b/cpp/test/IceStorm/federation/Subscriber.cpp @@ -95,7 +95,7 @@ run(int argc, char* argv[], const CommunicatorPtr& communicator) } PropertiesPtr properties = communicator->getProperties(); - const char* managerProxyProperty = "IceStorm.TopicManager.Proxy"; + const char* managerProxyProperty = "IceStormAdmin.TopicManager.Default"; string managerProxy = properties->getProperty(managerProxyProperty); if(managerProxy.empty()) { diff --git a/cpp/test/IceStorm/federation/db/.gitignore b/cpp/test/IceStorm/federation/db/.gitignore index 39af5887579..dc8ec467d5f 100644 --- a/cpp/test/IceStorm/federation/db/.gitignore +++ b/cpp/test/IceStorm/federation/db/.gitignore @@ -1 +1,2 @@ +* # Dummy file, so that git retains this otherwise empty directory. diff --git a/cpp/test/IceStorm/federation/run.py b/cpp/test/IceStorm/federation/run.py index 3f36ce46a4c..0cf7f0f5ae9 100755 --- a/cpp/test/IceStorm/federation/run.py +++ b/cpp/test/IceStorm/federation/run.py @@ -1,7 +1,7 @@ #!/usr/bin/env python # ********************************************************************** # -# Copyright (c) 2003-2008 ZeroC, Inc. All rights reserved. +# Copyright (c) 2003-2007 ZeroC, Inc. All rights reserved. # # This copy of Ice is licensed to you under the terms described in the # ICE_LICENSE file included in this distribution. @@ -25,25 +25,9 @@ TestUtil.processCmdLine() name = os.path.join("IceStorm", "federation") testdir = os.path.dirname(os.path.abspath(__file__)) -iceBox = TestUtil.getIceBox(testdir) -iceBoxAdmin = os.path.join(TestUtil.getBinDir(__file__), "iceboxadmin") -iceStormAdmin = os.path.join(TestUtil.getBinDir(__file__), "icestormadmin") +import IceStormUtil -iceStormService = " --IceBox.Service.IceStorm=IceStormService," + TestUtil.getIceSoVersion() + ":createIceStorm" + \ - ' --IceStorm.TopicManager.Endpoints="default -p 12011"' + \ - ' --IceStorm.Publish.Endpoints="default"' + \ - " --IceBox.PrintServicesReady=IceStorm" + \ - " --IceBox.InheritProperties=1" + \ - ' --Ice.Admin.Endpoints="default -p 12010"' + \ - " --Ice.Admin.InstanceName=IceBox" - -serviceManagerProxy = ' --IceBoxAdmin.ServiceManager.Proxy="IceBox/admin -f IceBox.ServiceManager:default -p 12010"' - -iceStormReference = ' --IceStorm.TopicManager.Proxy="IceStorm/TopicManager:default -p 12011"' - -def doTest(batch): - global testdir - global iceStormReference +def doTest(icestorm, batch): publisher = os.path.join(testdir, "publisher") subscriber = os.path.join(testdir, "subscriber") @@ -55,7 +39,7 @@ def doTest(batch): name = "subscriber" batchOptions = "" - subscriberPipe = TestUtil.startServer(subscriber, batchOptions + iceStormReference + " 2>&1") + subscriberPipe = TestUtil.startServer(subscriber, batchOptions + icestorm.reference() + " 2>&1") TestUtil.getServerPid(subscriberPipe) TestUtil.getAdapterReady(subscriberPipe) @@ -63,7 +47,7 @@ def doTest(batch): # Start the publisher. This should publish events which eventually # causes subscriber to terminate. # - publisherPipe = TestUtil.startClient(publisher, iceStormReference + " 2>&1") + publisherPipe = TestUtil.startClient(publisher, icestorm.reference() + " 2>&1") TestUtil.printOutputFromPipe(publisherPipe) @@ -72,65 +56,51 @@ def doTest(batch): return subscriberStatus or publisherStatus -dbHome = os.path.join(testdir, "db") -TestUtil.cleanDbDir(dbHome) -iceStormDBEnv=" --Freeze.DbEnv.IceStorm.DbHome=" + dbHome - -print "starting icestorm service...", -iceBoxPipe = TestUtil.startServer(iceBox, iceStormService + iceStormDBEnv + " 2>&1") -TestUtil.getServerPid(iceBoxPipe) -TestUtil.waitServiceReady(iceBoxPipe, "IceStorm") -print "ok" - -print "setting up topics...", -iceStormAdminPipe = TestUtil.startClient(iceStormAdmin, iceStormReference + \ - r' -e "create fed1 fed2 fed3; link fed1 fed2 10; link fed2 fed3 5" 2>&1') -iceStormAdminStatus = TestUtil.closePipe(iceStormAdminPipe) -if iceStormAdminStatus: - TestUtil.killServers() - sys.exit(1) -print "ok" +def runtest(type, **args): + icestorm = IceStormUtil.init(toplevel, testdir, type, **args) -# -# Test oneway subscribers. -# -print "testing oneway subscribers...", -sys.stdout.flush() -onewayStatus = doTest(0) -print "ok" + icestorm.start() -# -# Test batch oneway subscribers. -# -print "testing batch subscribers...", -sys.stdout.flush() -batchStatus = doTest(1) -print "ok" + print "setting up topics...", + sys.stdout.flush() + icestorm.admin("create fed1 fed2 fed3; link fed1 fed2 10; link fed2 fed3 5") + print "ok" -# -# Destroy the topics. -# -print "destroying topics...", -iceStormAdminPipe = TestUtil.startClient(iceStormAdmin, iceStormReference + r' -e "destroy fed1 fed2 fed3" 2>&1') -iceStormAdminStatus = TestUtil.closePipe(iceStormAdminPipe) -if iceStormAdminStatus: - TestUtil.killServers() - sys.exit(1) -print "ok" + # + # Test oneway subscribers. + # + print "testing oneway subscribers...", + sys.stdout.flush() + onewayStatus = doTest(icestorm, 0) + print "ok" -# -# Shutdown icestorm. -# -print "shutting down icestorm service...", -iceBoxAdminPipe = TestUtil.startClient(iceBoxAdmin, serviceManagerProxy + r' shutdown 2>&1') -iceBoxAdminStatus = TestUtil.closePipe(iceBoxAdminPipe) -if iceBoxAdminStatus: - TestUtil.killServers() - sys.exit(1) -print "ok" - -if TestUtil.serverStatus() or onewayStatus or batchStatus: - TestUtil.killServers() - sys.exit(1) + # + # Test batch oneway subscribers. + # + print "testing batch subscribers...", + sys.stdout.flush() + batchStatus = doTest(icestorm, 1) + print "ok" + + # + # Destroy the topics. + # + print "destroying topics...", + icestorm.admin("destroy fed1 fed2 fed3") + print "ok" + + # + # Shutdown icestorm. + # + icestorm.stop() + + if TestUtil.serverStatus() or onewayStatus or batchStatus: + TestUtil.killServers() + sys.exit(1) + +runtest("persistent") +runtest("transient") +runtest("replicated", replicatedPublisher = False) +runtest("replicated", replicatedPublisher = True) sys.exit(0) diff --git a/cpp/test/IceStorm/federation2/.depend b/cpp/test/IceStorm/federation2/.depend index 17947ebeaa9..8f10780e93b 100644 --- a/cpp/test/IceStorm/federation2/.depend +++ b/cpp/test/IceStorm/federation2/.depend @@ -1,5 +1,5 @@ -Event$(OBJEXT): Event.cpp Event.h $(includedir)/Ice/LocalObjectF.h $(includedir)/IceUtil/Shared.h $(includedir)/IceUtil/Config.h $(includedir)/Ice/Handle.h $(includedir)/IceUtil/Handle.h $(includedir)/IceUtil/Exception.h $(includedir)/Ice/Config.h $(includedir)/Ice/ProxyHandle.h $(includedir)/Ice/ProxyF.h $(includedir)/Ice/ObjectF.h $(includedir)/Ice/GCCountMap.h $(includedir)/Ice/GCShared.h $(includedir)/Ice/Exception.h $(includedir)/Ice/LocalObject.h $(includedir)/Ice/Proxy.h $(includedir)/IceUtil/Mutex.h $(includedir)/IceUtil/Lock.h $(includedir)/IceUtil/ThreadException.h $(includedir)/IceUtil/Time.h $(includedir)/Ice/ProxyFactoryF.h $(includedir)/Ice/ConnectionIF.h $(includedir)/Ice/RequestHandlerF.h $(includedir)/Ice/EndpointIF.h $(includedir)/Ice/Endpoint.h $(includedir)/Ice/UndefSysMacros.h $(includedir)/Ice/ObjectAdapterF.h $(includedir)/Ice/ReferenceF.h $(includedir)/Ice/OutgoingAsyncF.h $(includedir)/Ice/Current.h $(includedir)/Ice/ConnectionF.h $(includedir)/Ice/Identity.h $(includedir)/Ice/StreamF.h $(includedir)/Ice/CommunicatorF.h $(includedir)/Ice/Object.h $(includedir)/Ice/IncomingAsyncF.h $(includedir)/Ice/Outgoing.h $(includedir)/IceUtil/Monitor.h $(includedir)/IceUtil/Cond.h $(includedir)/Ice/InstanceF.h $(includedir)/Ice/BasicStream.h $(includedir)/Ice/ObjectFactoryF.h $(includedir)/Ice/Buffer.h $(includedir)/Ice/Protocol.h $(includedir)/Ice/StringConverter.h $(includedir)/IceUtil/Unicode.h $(includedir)/Ice/Incoming.h $(includedir)/Ice/ServantLocatorF.h $(includedir)/Ice/ServantManagerF.h $(includedir)/Ice/Direct.h $(includedir)/Ice/LocalException.h $(includedir)/Ice/BuiltinSequences.h $(includedir)/Ice/ObjectFactory.h $(includedir)/IceUtil/Iterator.h $(includedir)/IceUtil/ScopedArray.h -Publisher$(OBJEXT): Publisher.cpp $(includedir)/Ice/Ice.h $(includedir)/Ice/Initialize.h $(includedir)/Ice/CommunicatorF.h $(includedir)/Ice/LocalObjectF.h $(includedir)/IceUtil/Shared.h $(includedir)/IceUtil/Config.h $(includedir)/Ice/Handle.h $(includedir)/IceUtil/Handle.h $(includedir)/IceUtil/Exception.h $(includedir)/Ice/Config.h $(includedir)/Ice/ProxyHandle.h $(includedir)/Ice/ProxyF.h $(includedir)/Ice/ObjectF.h $(includedir)/Ice/GCCountMap.h $(includedir)/Ice/GCShared.h $(includedir)/Ice/Exception.h $(includedir)/Ice/LocalObject.h $(includedir)/Ice/UndefSysMacros.h $(includedir)/Ice/PropertiesF.h $(includedir)/Ice/Proxy.h $(includedir)/IceUtil/Mutex.h $(includedir)/IceUtil/Lock.h $(includedir)/IceUtil/ThreadException.h $(includedir)/IceUtil/Time.h $(includedir)/Ice/ProxyFactoryF.h $(includedir)/Ice/ConnectionIF.h $(includedir)/Ice/RequestHandlerF.h $(includedir)/Ice/EndpointIF.h $(includedir)/Ice/Endpoint.h $(includedir)/Ice/ObjectAdapterF.h $(includedir)/Ice/ReferenceF.h $(includedir)/Ice/OutgoingAsyncF.h $(includedir)/Ice/Current.h $(includedir)/Ice/ConnectionF.h $(includedir)/Ice/Identity.h $(includedir)/Ice/StreamF.h $(includedir)/Ice/Object.h $(includedir)/Ice/IncomingAsyncF.h $(includedir)/Ice/InstanceF.h $(includedir)/Ice/LoggerF.h $(includedir)/Ice/StatsF.h $(includedir)/Ice/StringConverter.h $(includedir)/Ice/BuiltinSequences.h $(includedir)/Ice/LocalException.h $(includedir)/Ice/Properties.h $(includedir)/Ice/Outgoing.h $(includedir)/IceUtil/Monitor.h $(includedir)/IceUtil/Cond.h $(includedir)/Ice/BasicStream.h $(includedir)/Ice/ObjectFactoryF.h $(includedir)/Ice/Buffer.h $(includedir)/Ice/Protocol.h $(includedir)/IceUtil/Unicode.h $(includedir)/Ice/OutgoingAsync.h $(includedir)/IceUtil/Timer.h $(includedir)/IceUtil/Thread.h $(includedir)/Ice/Incoming.h $(includedir)/Ice/ServantLocatorF.h $(includedir)/Ice/ServantManagerF.h $(includedir)/Ice/Direct.h $(includedir)/Ice/Logger.h $(includedir)/Ice/LoggerUtil.h $(includedir)/Ice/Stats.h $(includedir)/Ice/Communicator.h $(includedir)/Ice/RouterF.h $(includedir)/Ice/LocatorF.h $(includedir)/Ice/PluginF.h $(includedir)/Ice/ImplicitContextF.h $(includedir)/Ice/ObjectFactory.h $(includedir)/Ice/ObjectAdapter.h $(includedir)/Ice/FacetMap.h $(includedir)/Ice/ServantLocator.h $(includedir)/Ice/IncomingAsync.h $(includedir)/Ice/Process.h $(includedir)/Ice/Application.h $(includedir)/Ice/Connection.h $(includedir)/Ice/Functional.h $(includedir)/IceUtil/Functional.h $(includedir)/Ice/Stream.h $(includedir)/Ice/ImplicitContext.h $(includedir)/Ice/Locator.h $(includedir)/Ice/UserExceptionFactory.h $(includedir)/Ice/FactoryTable.h $(includedir)/Ice/FactoryTableDef.h $(includedir)/IceUtil/StaticMutex.h $(includedir)/Ice/UserExceptionFactoryF.h $(includedir)/Ice/ProcessF.h $(includedir)/Ice/Router.h $(includedir)/Ice/DispatchInterceptor.h $(includedir)/Ice/IconvStringConverter.h $(includedir)/IceStorm/IceStorm.h $(includedir)/Ice/SliceChecksumDict.h Event.h -Subscriber$(OBJEXT): Subscriber.cpp $(includedir)/IceUtil/DisableWarnings.h $(includedir)/Ice/Ice.h $(includedir)/Ice/Initialize.h $(includedir)/Ice/CommunicatorF.h $(includedir)/Ice/LocalObjectF.h $(includedir)/IceUtil/Shared.h $(includedir)/IceUtil/Config.h $(includedir)/Ice/Handle.h $(includedir)/IceUtil/Handle.h $(includedir)/IceUtil/Exception.h $(includedir)/Ice/Config.h $(includedir)/Ice/ProxyHandle.h $(includedir)/Ice/ProxyF.h $(includedir)/Ice/ObjectF.h $(includedir)/Ice/GCCountMap.h $(includedir)/Ice/GCShared.h $(includedir)/Ice/Exception.h $(includedir)/Ice/LocalObject.h $(includedir)/Ice/UndefSysMacros.h $(includedir)/Ice/PropertiesF.h $(includedir)/Ice/Proxy.h $(includedir)/IceUtil/Mutex.h $(includedir)/IceUtil/Lock.h $(includedir)/IceUtil/ThreadException.h $(includedir)/IceUtil/Time.h $(includedir)/Ice/ProxyFactoryF.h $(includedir)/Ice/ConnectionIF.h $(includedir)/Ice/RequestHandlerF.h $(includedir)/Ice/EndpointIF.h $(includedir)/Ice/Endpoint.h $(includedir)/Ice/ObjectAdapterF.h $(includedir)/Ice/ReferenceF.h $(includedir)/Ice/OutgoingAsyncF.h $(includedir)/Ice/Current.h $(includedir)/Ice/ConnectionF.h $(includedir)/Ice/Identity.h $(includedir)/Ice/StreamF.h $(includedir)/Ice/Object.h $(includedir)/Ice/IncomingAsyncF.h $(includedir)/Ice/InstanceF.h $(includedir)/Ice/LoggerF.h $(includedir)/Ice/StatsF.h $(includedir)/Ice/StringConverter.h $(includedir)/Ice/BuiltinSequences.h $(includedir)/Ice/LocalException.h $(includedir)/Ice/Properties.h $(includedir)/Ice/Outgoing.h $(includedir)/IceUtil/Monitor.h $(includedir)/IceUtil/Cond.h $(includedir)/Ice/BasicStream.h $(includedir)/Ice/ObjectFactoryF.h $(includedir)/Ice/Buffer.h $(includedir)/Ice/Protocol.h $(includedir)/IceUtil/Unicode.h $(includedir)/Ice/OutgoingAsync.h $(includedir)/IceUtil/Timer.h $(includedir)/IceUtil/Thread.h $(includedir)/Ice/Incoming.h $(includedir)/Ice/ServantLocatorF.h $(includedir)/Ice/ServantManagerF.h $(includedir)/Ice/Direct.h $(includedir)/Ice/Logger.h $(includedir)/Ice/LoggerUtil.h $(includedir)/Ice/Stats.h $(includedir)/Ice/Communicator.h $(includedir)/Ice/RouterF.h $(includedir)/Ice/LocatorF.h $(includedir)/Ice/PluginF.h $(includedir)/Ice/ImplicitContextF.h $(includedir)/Ice/ObjectFactory.h $(includedir)/Ice/ObjectAdapter.h $(includedir)/Ice/FacetMap.h $(includedir)/Ice/ServantLocator.h $(includedir)/Ice/IncomingAsync.h $(includedir)/Ice/Process.h $(includedir)/Ice/Application.h $(includedir)/Ice/Connection.h $(includedir)/Ice/Functional.h $(includedir)/IceUtil/Functional.h $(includedir)/Ice/Stream.h $(includedir)/Ice/ImplicitContext.h $(includedir)/Ice/Locator.h $(includedir)/Ice/UserExceptionFactory.h $(includedir)/Ice/FactoryTable.h $(includedir)/Ice/FactoryTableDef.h $(includedir)/IceUtil/StaticMutex.h $(includedir)/Ice/UserExceptionFactoryF.h $(includedir)/Ice/ProcessF.h $(includedir)/Ice/Router.h $(includedir)/Ice/DispatchInterceptor.h $(includedir)/Ice/IconvStringConverter.h $(includedir)/IceStorm/IceStorm.h $(includedir)/Ice/SliceChecksumDict.h Event.h ../../include/TestCommon.h +Event$(OBJEXT): Event.cpp Event.h $(includedir)/Ice/LocalObjectF.h $(includedir)/IceUtil/Shared.h $(includedir)/IceUtil/Config.h $(includedir)/IceUtil/Mutex.h $(includedir)/IceUtil/Lock.h $(includedir)/IceUtil/ThreadException.h $(includedir)/IceUtil/Exception.h $(includedir)/IceUtil/Time.h $(includedir)/Ice/Handle.h $(includedir)/IceUtil/Handle.h $(includedir)/Ice/Config.h $(includedir)/Ice/ProxyHandle.h $(includedir)/Ice/ProxyF.h $(includedir)/Ice/ObjectF.h $(includedir)/Ice/GCCountMap.h $(includedir)/Ice/GCShared.h $(includedir)/Ice/Exception.h $(includedir)/Ice/LocalObject.h $(includedir)/Ice/Proxy.h $(includedir)/Ice/ProxyFactoryF.h $(includedir)/Ice/ConnectionIF.h $(includedir)/Ice/RequestHandlerF.h $(includedir)/Ice/EndpointIF.h $(includedir)/Ice/Endpoint.h $(includedir)/Ice/UndefSysMacros.h $(includedir)/Ice/ObjectAdapterF.h $(includedir)/Ice/ReferenceF.h $(includedir)/Ice/OutgoingAsyncF.h $(includedir)/Ice/Current.h $(includedir)/Ice/ConnectionF.h $(includedir)/Ice/Identity.h $(includedir)/Ice/StreamF.h $(includedir)/Ice/CommunicatorF.h $(includedir)/Ice/Object.h $(includedir)/Ice/IncomingAsyncF.h $(includedir)/Ice/Outgoing.h $(includedir)/IceUtil/Monitor.h $(includedir)/IceUtil/Cond.h $(includedir)/Ice/InstanceF.h $(includedir)/Ice/BasicStream.h $(includedir)/Ice/ObjectFactoryF.h $(includedir)/Ice/Buffer.h $(includedir)/Ice/Protocol.h $(includedir)/Ice/StringConverter.h $(includedir)/IceUtil/Unicode.h $(includedir)/Ice/Incoming.h $(includedir)/Ice/ServantLocatorF.h $(includedir)/Ice/ServantManagerF.h $(includedir)/Ice/Direct.h $(includedir)/Ice/LocalException.h $(includedir)/Ice/BuiltinSequences.h $(includedir)/Ice/ObjectFactory.h $(includedir)/IceUtil/Iterator.h $(includedir)/IceUtil/ScopedArray.h +Publisher$(OBJEXT): Publisher.cpp $(includedir)/IceUtil/IceUtil.h $(includedir)/IceUtil/Config.h $(includedir)/IceUtil/AbstractMutex.h $(includedir)/IceUtil/Lock.h $(includedir)/IceUtil/ThreadException.h $(includedir)/IceUtil/Exception.h $(includedir)/IceUtil/Time.h $(includedir)/IceUtil/Cache.h $(includedir)/IceUtil/Handle.h $(includedir)/IceUtil/Mutex.h $(includedir)/IceUtil/CountDownLatch.h $(includedir)/IceUtil/Cond.h $(includedir)/IceUtil/CtrlCHandler.h $(includedir)/IceUtil/Functional.h $(includedir)/IceUtil/Monitor.h $(includedir)/IceUtil/RWRecMutex.h $(includedir)/IceUtil/Thread.h $(includedir)/IceUtil/Shared.h $(includedir)/IceUtil/RecMutex.h $(includedir)/IceUtil/StaticMutex.h $(includedir)/IceUtil/Timer.h $(includedir)/IceUtil/UUID.h $(includedir)/IceUtil/Unicode.h $(includedir)/IceUtil/Options.h $(includedir)/Ice/Ice.h $(includedir)/Ice/Initialize.h $(includedir)/Ice/CommunicatorF.h $(includedir)/Ice/LocalObjectF.h $(includedir)/Ice/Handle.h $(includedir)/Ice/Config.h $(includedir)/Ice/ProxyHandle.h $(includedir)/Ice/ProxyF.h $(includedir)/Ice/ObjectF.h $(includedir)/Ice/GCCountMap.h $(includedir)/Ice/GCShared.h $(includedir)/Ice/Exception.h $(includedir)/Ice/LocalObject.h $(includedir)/Ice/UndefSysMacros.h $(includedir)/Ice/PropertiesF.h $(includedir)/Ice/Proxy.h $(includedir)/Ice/ProxyFactoryF.h $(includedir)/Ice/ConnectionIF.h $(includedir)/Ice/RequestHandlerF.h $(includedir)/Ice/EndpointIF.h $(includedir)/Ice/Endpoint.h $(includedir)/Ice/ObjectAdapterF.h $(includedir)/Ice/ReferenceF.h $(includedir)/Ice/OutgoingAsyncF.h $(includedir)/Ice/Current.h $(includedir)/Ice/ConnectionF.h $(includedir)/Ice/Identity.h $(includedir)/Ice/StreamF.h $(includedir)/Ice/Object.h $(includedir)/Ice/IncomingAsyncF.h $(includedir)/Ice/InstanceF.h $(includedir)/Ice/LoggerF.h $(includedir)/Ice/StatsF.h $(includedir)/Ice/StringConverter.h $(includedir)/Ice/BuiltinSequences.h $(includedir)/Ice/LocalException.h $(includedir)/Ice/Properties.h $(includedir)/Ice/Outgoing.h $(includedir)/Ice/BasicStream.h $(includedir)/Ice/ObjectFactoryF.h $(includedir)/Ice/Buffer.h $(includedir)/Ice/Protocol.h $(includedir)/Ice/OutgoingAsync.h $(includedir)/Ice/Incoming.h $(includedir)/Ice/ServantLocatorF.h $(includedir)/Ice/ServantManagerF.h $(includedir)/Ice/Direct.h $(includedir)/Ice/Logger.h $(includedir)/Ice/LoggerUtil.h $(includedir)/Ice/Stats.h $(includedir)/Ice/Communicator.h $(includedir)/Ice/RouterF.h $(includedir)/Ice/LocatorF.h $(includedir)/Ice/PluginF.h $(includedir)/Ice/ImplicitContextF.h $(includedir)/Ice/ObjectFactory.h $(includedir)/Ice/ObjectAdapter.h $(includedir)/Ice/FacetMap.h $(includedir)/Ice/ServantLocator.h $(includedir)/Ice/IncomingAsync.h $(includedir)/Ice/Process.h $(includedir)/Ice/Application.h $(includedir)/Ice/Connection.h $(includedir)/Ice/Functional.h $(includedir)/Ice/Stream.h $(includedir)/Ice/ImplicitContext.h $(includedir)/Ice/Locator.h $(includedir)/Ice/UserExceptionFactory.h $(includedir)/Ice/FactoryTable.h $(includedir)/Ice/FactoryTableDef.h $(includedir)/Ice/UserExceptionFactoryF.h $(includedir)/Ice/ProcessF.h $(includedir)/Ice/Router.h $(includedir)/Ice/DispatchInterceptor.h $(includedir)/Ice/IconvStringConverter.h $(includedir)/IceStorm/IceStorm.h $(includedir)/Ice/SliceChecksumDict.h Event.h +Subscriber$(OBJEXT): Subscriber.cpp $(includedir)/IceUtil/DisableWarnings.h $(includedir)/Ice/Ice.h $(includedir)/Ice/Initialize.h $(includedir)/Ice/CommunicatorF.h $(includedir)/Ice/LocalObjectF.h $(includedir)/IceUtil/Shared.h $(includedir)/IceUtil/Config.h $(includedir)/IceUtil/Mutex.h $(includedir)/IceUtil/Lock.h $(includedir)/IceUtil/ThreadException.h $(includedir)/IceUtil/Exception.h $(includedir)/IceUtil/Time.h $(includedir)/Ice/Handle.h $(includedir)/IceUtil/Handle.h $(includedir)/Ice/Config.h $(includedir)/Ice/ProxyHandle.h $(includedir)/Ice/ProxyF.h $(includedir)/Ice/ObjectF.h $(includedir)/Ice/GCCountMap.h $(includedir)/Ice/GCShared.h $(includedir)/Ice/Exception.h $(includedir)/Ice/LocalObject.h $(includedir)/Ice/UndefSysMacros.h $(includedir)/Ice/PropertiesF.h $(includedir)/Ice/Proxy.h $(includedir)/Ice/ProxyFactoryF.h $(includedir)/Ice/ConnectionIF.h $(includedir)/Ice/RequestHandlerF.h $(includedir)/Ice/EndpointIF.h $(includedir)/Ice/Endpoint.h $(includedir)/Ice/ObjectAdapterF.h $(includedir)/Ice/ReferenceF.h $(includedir)/Ice/OutgoingAsyncF.h $(includedir)/Ice/Current.h $(includedir)/Ice/ConnectionF.h $(includedir)/Ice/Identity.h $(includedir)/Ice/StreamF.h $(includedir)/Ice/Object.h $(includedir)/Ice/IncomingAsyncF.h $(includedir)/Ice/InstanceF.h $(includedir)/Ice/LoggerF.h $(includedir)/Ice/StatsF.h $(includedir)/Ice/StringConverter.h $(includedir)/Ice/BuiltinSequences.h $(includedir)/Ice/LocalException.h $(includedir)/Ice/Properties.h $(includedir)/Ice/Outgoing.h $(includedir)/IceUtil/Monitor.h $(includedir)/IceUtil/Cond.h $(includedir)/Ice/BasicStream.h $(includedir)/Ice/ObjectFactoryF.h $(includedir)/Ice/Buffer.h $(includedir)/Ice/Protocol.h $(includedir)/IceUtil/Unicode.h $(includedir)/Ice/OutgoingAsync.h $(includedir)/IceUtil/Timer.h $(includedir)/IceUtil/Thread.h $(includedir)/Ice/Incoming.h $(includedir)/Ice/ServantLocatorF.h $(includedir)/Ice/ServantManagerF.h $(includedir)/Ice/Direct.h $(includedir)/Ice/Logger.h $(includedir)/Ice/LoggerUtil.h $(includedir)/Ice/Stats.h $(includedir)/Ice/Communicator.h $(includedir)/Ice/RouterF.h $(includedir)/Ice/LocatorF.h $(includedir)/Ice/PluginF.h $(includedir)/Ice/ImplicitContextF.h $(includedir)/Ice/ObjectFactory.h $(includedir)/Ice/ObjectAdapter.h $(includedir)/Ice/FacetMap.h $(includedir)/Ice/ServantLocator.h $(includedir)/Ice/IncomingAsync.h $(includedir)/Ice/Process.h $(includedir)/Ice/Application.h $(includedir)/Ice/Connection.h $(includedir)/Ice/Functional.h $(includedir)/IceUtil/Functional.h $(includedir)/Ice/Stream.h $(includedir)/Ice/ImplicitContext.h $(includedir)/Ice/Locator.h $(includedir)/Ice/UserExceptionFactory.h $(includedir)/Ice/FactoryTable.h $(includedir)/Ice/FactoryTableDef.h $(includedir)/IceUtil/StaticMutex.h $(includedir)/Ice/UserExceptionFactoryF.h $(includedir)/Ice/ProcessF.h $(includedir)/Ice/Router.h $(includedir)/Ice/DispatchInterceptor.h $(includedir)/Ice/IconvStringConverter.h $(includedir)/IceStorm/IceStorm.h $(includedir)/Ice/SliceChecksumDict.h Event.h ../../include/TestCommon.h Event.cpp: Event.ice Event.ice: $(SLICE2CPP) $(SLICEPARSERLIB) diff --git a/cpp/test/IceStorm/federation2/.gitignore b/cpp/test/IceStorm/federation2/.gitignore index f01afc6f930..1e15a552882 100644 --- a/cpp/test/IceStorm/federation2/.gitignore +++ b/cpp/test/IceStorm/federation2/.gitignore @@ -8,3 +8,9 @@ Event.h build.txt db/* db2/* +0.db/* +0.db2/* +1.db/* +1.db2/* +2.db/* +2.db2/* diff --git a/cpp/test/IceStorm/federation2/0.db/.gitignore b/cpp/test/IceStorm/federation2/0.db/.gitignore new file mode 100644 index 00000000000..72e8ffc0db8 --- /dev/null +++ b/cpp/test/IceStorm/federation2/0.db/.gitignore @@ -0,0 +1 @@ +* diff --git a/cpp/test/IceStorm/federation2/0.db2/.gitignore b/cpp/test/IceStorm/federation2/0.db2/.gitignore new file mode 100644 index 00000000000..72e8ffc0db8 --- /dev/null +++ b/cpp/test/IceStorm/federation2/0.db2/.gitignore @@ -0,0 +1 @@ +* diff --git a/cpp/test/IceStorm/federation2/1.db/.gitignore b/cpp/test/IceStorm/federation2/1.db/.gitignore new file mode 100644 index 00000000000..72e8ffc0db8 --- /dev/null +++ b/cpp/test/IceStorm/federation2/1.db/.gitignore @@ -0,0 +1 @@ +* diff --git a/cpp/test/IceStorm/federation2/1.db2/.gitignore b/cpp/test/IceStorm/federation2/1.db2/.gitignore new file mode 100644 index 00000000000..72e8ffc0db8 --- /dev/null +++ b/cpp/test/IceStorm/federation2/1.db2/.gitignore @@ -0,0 +1 @@ +* diff --git a/cpp/test/IceStorm/federation2/2.db/.gitignore b/cpp/test/IceStorm/federation2/2.db/.gitignore new file mode 100644 index 00000000000..72e8ffc0db8 --- /dev/null +++ b/cpp/test/IceStorm/federation2/2.db/.gitignore @@ -0,0 +1 @@ +* diff --git a/cpp/test/IceStorm/federation2/2.db2/.gitignore b/cpp/test/IceStorm/federation2/2.db2/.gitignore new file mode 100644 index 00000000000..72e8ffc0db8 --- /dev/null +++ b/cpp/test/IceStorm/federation2/2.db2/.gitignore @@ -0,0 +1 @@ +* diff --git a/cpp/test/IceStorm/federation2/Makefile b/cpp/test/IceStorm/federation2/Makefile index 3c3daff5e3e..decde782e42 100644 --- a/cpp/test/IceStorm/federation2/Makefile +++ b/cpp/test/IceStorm/federation2/Makefile @@ -42,5 +42,8 @@ $(SUBSCRIBER): $(OBJS) $(SOBJS) clean:: -rm -f build.txt -rm -f db/* db2/* + -rm -f 0.db/* 0.db2/* + -rm -f 1.db/* 1.db2/* + -rm -f 2.db/* 2.db2/* include .depend diff --git a/cpp/test/IceStorm/federation2/Makefile.mak b/cpp/test/IceStorm/federation2/Makefile.mak index 84101991865..ddc23c4ef4d 100644 --- a/cpp/test/IceStorm/federation2/Makefile.mak +++ b/cpp/test/IceStorm/federation2/Makefile.mak @@ -60,6 +60,12 @@ clean:: del /q build.txt del /q Event.cpp Event.h for %f in (db\*) do if not %f == db\.gitignore del /q %f + for %f in (0.db\*) do if not %f == 0.db\.gitignore del /q %f + for %f in (1.db\*) do if not %f == 1.db\.gitignore del /q %f + for %f in (2.db\*) do if not %f == 2.db\.gitignore del /q %f for %f in (db2\*) do if not %f == db2\.gitignore del /q %f + for %f in (0.db2\*) do if not %f == 0.db2\.gitignore del /q %f + for %f in (1.db2\*) do if not %f == 1.db2\.gitignore del /q %f + for %f in (2.db2\*) do if not %f == 2.db2\.gitignore del /q %f !include .depend diff --git a/cpp/test/IceStorm/federation2/Publisher.cpp b/cpp/test/IceStorm/federation2/Publisher.cpp index c53ce9f1ce9..7a8fdc4b3ba 100644 --- a/cpp/test/IceStorm/federation2/Publisher.cpp +++ b/cpp/test/IceStorm/federation2/Publisher.cpp @@ -7,6 +7,8 @@ // // ********************************************************************** +#include <IceUtil/IceUtil.h> +#include <IceUtil/Options.h> #include <Ice/Ice.h> #include <IceStorm/IceStorm.h> #include <Event.h> @@ -19,8 +21,21 @@ using namespace Test; int run(int argc, char* argv[], const CommunicatorPtr& communicator) { + IceUtilInternal::Options opts; + opts.addOpt("", "count", IceUtilInternal::Options::NeedArg); + + try + { + opts.parse(argc, (const char**)argv); + } + catch(const IceUtilInternal::BadOptException& e) + { + cerr << argv[0] << ": " << e.reason << endl; + return EXIT_FAILURE; + } + PropertiesPtr properties = communicator->getProperties(); - const char* managerProxyProperty = "IceStorm.TopicManager.Proxy"; + const char* managerProxyProperty = "IceStormAdmin.TopicManager.Default"; string managerProxy = properties->getProperty(managerProxyProperty); if(managerProxy.empty()) { @@ -50,16 +65,32 @@ run(int argc, char* argv[], const CommunicatorPtr& communicator) EventPrx eventFed1 = EventPrx::uncheckedCast(fed1->getPublisher()->ice_oneway()); - for(int i = 0; i < 10; ++i) + string arg = opts.optArg("count"); + int count = 1; + if(arg.empty()) { - eventFed1->pub("fed1"); + count = atoi(arg.c_str()); } + + while(true) + { + for(int i = 0; i < 10; ++i) + { + eventFed1->pub("fed1"); + } + // + // Before we exit, we ping all proxies as twoway, to make sure + // that all oneways are delivered. + // + EventPrx::uncheckedCast(eventFed1->ice_twoway())->ice_ping(); - // - // Before we exit, we ping all proxies as twoway, to make sure - // that all oneways are delivered. - // - EventPrx::uncheckedCast(eventFed1->ice_twoway())->ice_ping(); + if(count == 0) + { + break; + } + --count; + IceUtil::ThreadControl::sleep(IceUtil::Time::seconds(1)); + } return EXIT_SUCCESS; } diff --git a/cpp/test/IceStorm/federation2/Subscriber.cpp b/cpp/test/IceStorm/federation2/Subscriber.cpp index 5846d9903c0..da68ccc5bb5 100644 --- a/cpp/test/IceStorm/federation2/Subscriber.cpp +++ b/cpp/test/IceStorm/federation2/Subscriber.cpp @@ -103,7 +103,7 @@ run(int argc, char* argv[], const CommunicatorPtr& communicator) } PropertiesPtr properties = communicator->getProperties(); - const char* managerProxyProperty = "IceStorm.TopicManager.Proxy"; + const char* managerProxyProperty = "IceStormAdmin.TopicManager.Default"; string managerProxy = properties->getProperty(managerProxyProperty); if(managerProxy.empty()) { diff --git a/cpp/test/IceStorm/federation2/run.py b/cpp/test/IceStorm/federation2/run.py index 411533e1ff0..a66c664d724 100755 --- a/cpp/test/IceStorm/federation2/run.py +++ b/cpp/test/IceStorm/federation2/run.py @@ -1,7 +1,7 @@ #!/usr/bin/env python # ********************************************************************** # -# Copyright (c) 2003-2008 ZeroC, Inc. All rights reserved. +# Copyright (c) 2003-2007 ZeroC, Inc. All rights reserved. # # This copy of Ice is licensed to you under the terms described in the # ICE_LICENSE file included in this distribution. @@ -24,45 +24,51 @@ TestUtil.processCmdLine() name = os.path.join("IceStorm", "federation2") testdir = os.path.dirname(os.path.abspath(__file__)) -exedir = testdir +import IceStormUtil -iceBox = TestUtil.getIceBox(exedir) -iceBoxAdmin = os.path.join(TestUtil.getBinDir(__file__), "iceboxadmin") -iceStormAdmin = os.path.join(TestUtil.getBinDir(__file__), "icestormadmin") +iceBox = TestUtil.getIceBox(testdir) +iceBoxAdmin = os.path.join(TestUtil.getBinDir(testdir), "iceboxadmin") +iceStormAdmin = os.path.join(TestUtil.getBinDir(testdir), "icestormadmin") -iceBoxEndpoints = ' --IceBox.ServiceManager.Endpoints="default -p 12010" --Ice.Default.Locator=' - -iceStormService = " --IceBox.Service.IceStorm=IceStormService," + TestUtil.getIceSoVersion() + ":createIceStorm" + \ - ' --IceStorm.TopicManager.Endpoints="default -p 12011"' + \ - ' --IceStorm.Publish.Endpoints="default -p 12012"' + \ - ' --IceStorm.InstanceName=TestIceStorm1 ' + \ - ' --IceStorm.Discard.Interval=2' + \ - ' --IceBox.PrintServicesReady=IceStorm' + \ - " --IceBox.InheritProperties=1" -iceStormReference = ' --IceStorm.TopicManager.Proxy="TestIceStorm1/TopicManager: default -p 12011"' - -iceBoxEndpoints2 = ' --IceBox.ServiceManager.Endpoints="default -p 12020" --Ice.Default.Locator=' +publisher = os.path.join(testdir, "publisher") +subscriber = os.path.join(testdir, "subscriber") + +def admin(ref, command): + pipe = TestUtil.startClient(iceStormAdmin, ref + r' -e "%s"' % command) + all = "" + while True: + line = pipe.readline(); + if not line: + break + all = all + line + status = TestUtil.closePipe(pipe) + if status: + TestUtil.killServers() + sys.exit(1) + return all -iceStormService2 = " --IceBox.Service.IceStorm=IceStormService," + TestUtil.getIceSoVersion() + ":createIceStorm" + \ - ' --IceStorm.TopicManager.Endpoints="default -p 12021"' + \ - ' --IceStorm.Publish.Endpoints="default -p 12022"' + \ - ' --IceStorm.InstanceName=TestIceStorm2 ' + \ - ' --IceStorm.Discard.Interval=2' + \ - ' --IceBox.PrintServicesReady=IceStorm' + \ - " --IceBox.InheritProperties=1" -iceStormReference2 = ' --IceStorm.TopicManager.Proxy="TestIceStorm2/TopicManager: default -p 12021"' +def printOutput(pipe): + try: + while True: + line = pipe.readline() + if not line: + break + print line, + sys.stdout.flush() + except IOError: + pass -adminIceStormReference = ' --IceStormAdmin.TopicManager.Proxy="TestIceStorm1/TopicManager: default -p 12011" ' + \ - '--IceStormAdmin.TopicManager.Proxy2="TestIceStorm2/TopicManager: default -p 12021"' +def runPublisher(icestorm1, opt = ""): + publisherPipe = TestUtil.startClient(publisher, opt + icestorm1.reference()) -def doTest(batch, subscriberRef = None): - global testdir - global iceStormReference - global iceStormReference2 + printOutput(publisherPipe) - publisher = os.path.join(testdir, "publisher") - subscriber = os.path.join(testdir, "subscriber") + publisherStatus = TestUtil.closePipe(publisherPipe) + if publisherStatus: + TestUtil.killServers() + sys.exit(1) +def doTest(icestorm1, icestorm2, batch, subscriberRef = None): if batch: name = "batch subscriber" batchOptions = " -b" @@ -71,10 +77,9 @@ def doTest(batch, subscriberRef = None): batchOptions = "" if subscriberRef == None: - subscriberRef = iceStormReference2 + subscriberRef = icestorm2.reference() - - subscriberPipe = TestUtil.startServer(subscriber, batchOptions + subscriberRef + " 2>&1") + subscriberPipe = TestUtil.startServer(subscriber, batchOptions + subscriberRef) TestUtil.getServerPid(subscriberPipe) TestUtil.getAdapterReady(subscriberPipe) @@ -82,56 +87,10 @@ def doTest(batch, subscriberRef = None): # Start the publisher. This should publish events which eventually # causes subscriber to terminate. # - publisherPipe = TestUtil.startClient(publisher, iceStormReference + " 2>&1") - - TestUtil.printOutputFromPipe(publisherPipe) + runPublisher(icestorm1) subscriberStatus = TestUtil.specificServerStatus(subscriberPipe, 30) - publisherStatus = TestUtil.closePipe(publisherPipe) - - return subscriberStatus or publisherStatus - -def startServers(): - global iceBox - global iceBoxEndpoints - global iceBoxEndpoints2 - global iceStormService - global iceStormService2 - global iceStormDBEnv - global iceStormDBEnv2 - iceBoxPipe = TestUtil.startServer(iceBox, iceBoxEndpoints + iceStormService + iceStormDBEnv) - TestUtil.getServerPid(iceBoxPipe) - TestUtil.waitServiceReady(iceBoxPipe, "IceStorm") - iceBoxPipe2 = TestUtil.startServer(iceBox, iceBoxEndpoints2 + iceStormService2 + iceStormDBEnv2) - TestUtil.getServerPid(iceBoxPipe2) - TestUtil.waitServiceReady(iceBoxPipe2, "IceStorm") - - return iceBoxPipe, iceBoxPipe2 - -def stopServers(p1, p2 = None): - global iceBox - global iceBoxAdmin - global iceBoxEndpoints - global iceBoxEndpoints2 - pipe = TestUtil.startClient(iceBoxAdmin, iceBoxEndpoints + r' shutdown' + " 2>&1") - status = TestUtil.closePipe(pipe) - if status or TestUtil.specificServerStatus(p1): - TestUtil.killServers() - sys.exit(1) - if p2: - pipe = TestUtil.startClient(iceBoxAdmin, iceBoxEndpoints2 + r' shutdown' + " 2>&1") - status = TestUtil.closePipe(pipe) - if status or TestUtil.specificServerStatus(p2): - TestUtil.killServers() - sys.exit(1) - -dbHome = os.path.join(testdir, "db") -TestUtil.cleanDbDir(dbHome) -iceStormDBEnv=" --Freeze.DbEnv.IceStorm.DbHome=" + dbHome - -dbHome2 = os.path.join(testdir, "db2") -TestUtil.cleanDbDir(dbHome2) -iceStormDBEnv2=" --Freeze.DbEnv.IceStorm.DbHome=" + dbHome2 + return subscriberStatus # # Test #1: @@ -139,296 +98,269 @@ iceStormDBEnv2=" --Freeze.DbEnv.IceStorm.DbHome=" + dbHome2 # create a cross service link fed1->fed2 and ensure the events are # published between them correctly. # -print "starting IceStorm services...", -sys.stdout.flush() -iceBoxPipe1, iceBoxPipe2 = startServers() -print "ok" - -print "setting up the topics...", -sys.stdout.flush() -command = r' -e "create TestIceStorm1/fed1 TestIceStorm2/fed1; link TestIceStorm1/fed1 TestIceStorm2/fed1"' -iceStormAdminPipe = TestUtil.startClient(iceStormAdmin, adminIceStormReference + command + " 2>&1") -iceStormAdminStatus = TestUtil.closePipe(iceStormAdminPipe) -if iceStormAdminStatus: - TestUtil.killServers() - sys.exit(1) -print "ok" +def runtest(type, **args): + icestorm1 = IceStormUtil.init(toplevel, testdir, type, additional = '--IceStorm.Discard.Interval=2', + dbDir = "db", instanceName = "TestIceStorm1", port = 12000, **args) + icestorm1.start() + icestorm2 = IceStormUtil.init(toplevel, testdir, type, additional = '--IceStorm.Discard.Interval=2', + dbDir = "db2", instanceName = "TestIceStorm2", port = 12500, **args) + icestorm2.start() -# -# Test oneway subscribers. -# -print "testing federation with oneway subscribers...", -sys.stdout.flush() -onewayStatus = doTest(0) -print "ok" - -# -# Test batch oneway subscribers. -# -print "testing federation with batch subscribers...", -sys.stdout.flush() -batchStatus = doTest(1) -print "ok" + adminIceStormReference = ' --IceStormAdmin.TopicManager.Proxy="%s" --IceStormAdmin.TopicManager.Proxy2="%s"' % ( + icestorm1.proxy(), icestorm2.proxy()) -if onewayStatus or batchStatus: - TestUtil.killServers() - sys.exit(1) + print "setting up the topics...", + sys.stdout.flush() + admin(adminIceStormReference, "create TestIceStorm1/fed1 TestIceStorm2/fed1; link TestIceStorm1/fed1 TestIceStorm2/fed1") + print "ok" -# -# Test #2: -# -# Stop and restart the service and repeat the test. This ensures that -# the database is correct. -# -print "restarting services to ensure that the database content is preserved...", -sys.stdout.flush() - -# -# Shutdown icestorm. -# -stopServers(iceBoxPipe1, iceBoxPipe2) - -iceBoxPipe1, iceBoxPipe2 = startServers() -print "ok" - -# -# Test oneway subscribers. -# -print "retesting federation with oneway subscribers... ", -sys.stdout.flush() -onewayStatus = doTest(0) -print "ok" - -# -# Test batch oneway subscribers. -# -print "retesting federation with batch subscribers... ", -sys.stdout.flush() -batchStatus = doTest(1) -print "ok" - -if onewayStatus or batchStatus: - TestUtil.killServers() - sys.exit(1) - -# -# Shutdown icestorm. -# -stopServers(iceBoxPipe1, iceBoxPipe2) + # + # Test oneway subscribers. + # + print "testing federation with oneway subscribers...", + sys.stdout.flush() + onewayStatus = doTest(icestorm1, icestorm2, 0) + print "ok" -# -# This is used by the below test to confirm that the link warning is -# emitted. This class conforms with the TestUtil.ReaderThread protocol. -# -class ExpectorThread(threading.Thread): - def __init__(self, pipe): - self.mutex = threading.Lock() - self.pipe = pipe - # Suppress "adapter ready" messages. Under windows the eol isn't \n. - self.re = [ [ re.compile(" ready\r?\n$"), 0 ] ] - threading.Thread.__init__(self) - - def run(self): - try: - while 1: - line = self.pipe.readline() - if not line: break - found = False; - self.mutex.acquire() - for item in self.re: - if item[0].search(line): - found = True - item[1] = item[1] + 1 - break - self.mutex.release() - if not found: - print line, - except IOError: - pass - - self.status = TestUtil.closePipe(self.pipe) - - # To comply with the ReaderThread protocol. - def getPipe(self): - return self.pipe - - # To comply with the ReaderThread protocol. - def getStatus(self): - return self.status - - def matches(self, index): - self.mutex.acquire() - m = self.re[index][1] - self.mutex.release() - return m - - def expect(self, r): - self.mutex.acquire() - self.re.append([r, 0]) - l = len(self.re)-1 - self.mutex.release() - return l + # + # Test batch oneway subscribers. + # + print "testing federation with batch subscribers...", + sys.stdout.flush() + batchStatus = doTest(icestorm1, icestorm2, 1) + print "ok" -# -# Test #3: -# -# Restart the first server and publish some events. Attach a -# subscriber to the channel and make sure the events are received. -# -# Then re-start the linked downstream server and publish the events. -# Ensure they are received by the linked server. -# -print "restarting only one IceStorm server...", -sys.stdout.flush() -iceBoxPipe1 = TestUtil.startServer(iceBox, iceBoxEndpoints + iceStormService + iceStormDBEnv + " 2>&1") -TestUtil.getServerPid(iceBoxPipe1) -TestUtil.waitServiceReady(iceBoxPipe1, "IceStorm", False) -expectorThread = ExpectorThread(iceBoxPipe1) -expectorThread.start() -global serverThreads -TestUtil.serverThreads.append(expectorThread) -index = expectorThread.expect(re.compile("fed1.link.*link offline")) -expectorThread.expect(re.compile("connection refused")) -print "ok" + if onewayStatus or batchStatus: + TestUtil.killServers() + sys.exit(1) -# -# Test oneway subscribers. -# -print "testing that the federation link reports an error...", -sys.stdout.flush() -onewayStatus = doTest(0, iceStormReference) -print "ok" + # + # Test #2: + # + # Stop and restart the service and repeat the test. This ensures that + # the database is correct. + # + print "restarting services to ensure that the database content is preserved...", + sys.stdout.flush() -# -# Give some time for the error to be reported -# -time.sleep(2) + # + # Shutdown icestorm. + # + icestorm1.stop() + icestorm2.stop() -if onewayStatus or expectorThread.matches(index) != 1: - TestUtil.killServers() - sys.exit(1) + icestorm1.start(echo=False) + icestorm2.start(echo=False) + print "ok" -print "starting downstream icestorm server...", -sys.stdout.flush() -iceBoxPipe2 = TestUtil.startServer(iceBox, iceBoxEndpoints2 + iceStormService2 + iceStormDBEnv2 + " 2>&1") -TestUtil.getServerPid(iceBoxPipe2) -TestUtil.waitServiceReady(iceBoxPipe2, "IceStorm") -print "ok" + # + # Test oneway subscribers. + # + print "retesting federation with oneway subscribers... ", + sys.stdout.flush() + onewayStatus = doTest(icestorm1, icestorm2, 0) + print "ok" -# -# Need to sleep for at least the discard interval. -# -time.sleep(3) + # + # Test batch oneway subscribers. + # + print "retesting federation with batch subscribers... ", + sys.stdout.flush() + batchStatus = doTest(icestorm1, icestorm2, 1) + print "ok" -# -# Test oneway subscribers. -# -print "testing link is reestablished...", -sys.stdout.flush() -onewayStatus = doTest(0) -print "ok" + if onewayStatus or batchStatus: + TestUtil.killServers() + sys.exit(1) -if onewayStatus or expectorThread.matches(index) != 1: - TestUtil.killServers() - sys.exit(1) + # + # Shutdown icestorm. + # + icestorm1.stop() + icestorm2.stop() -# -# Test #4: -# -# Trash the TestIceStorm2 database. Then restart the servers and -# verify that the link is removed. -# -print "destroying the downstream IceStorm service database...", -sys.stdout.flush() -stopServers(iceBoxPipe1, iceBoxPipe2) - -TestUtil.cleanDbDir(dbHome2) -print "ok" - -print "restarting IceStorm servers...", -sys.stdout.flush() -iceBoxPipe1, iceBoxPipe2 = startServers() -print "ok" - -print "checking link still exists...", -iceStormAdminPipe = TestUtil.startClient(iceStormAdmin, adminIceStormReference + r' -e "links TestIceStorm1"') -line = iceStormAdminPipe.readline() -if not re.compile("fed1 with cost 0").search(line): - print line - TestUtil.killServers() - sys.exit(1) -iceStormAdminStatus = TestUtil.closePipe(iceStormAdminPipe) -if iceStormAdminStatus: - TestUtil.killServers() - sys.exit(1) -print "ok" - -print "publishing some events...", -sys.stdout.flush() -publisher = os.path.join(testdir, "publisher") -publisherPipe = TestUtil.startClient(publisher, iceStormReference + " 2>&1") + # + # This is used by the below test to confirm that the link warning is + # emitted. This class conforms with the TestUtil.ReaderThread protocol. + # + class ExpectorThread(threading.Thread): + def __init__(self, pipe): + self.mutex = threading.Lock() + self.pipe = pipe + # Suppress "adapter ready" messages. Under windows the eol isn't \n. + self.re = [ [ re.compile(" ready\r?\n$"), 0 ] ] + threading.Thread.__init__(self) + + def run(self): + try: + while 1: + line = self.pipe.readline() + if not line: break + found = False + self.mutex.acquire() + for item in self.re: + if item[0].search(line): + found = True + item[1] = item[1] + 1 + break + self.mutex.release() + if not found: + print line, + except IOError: + pass + + self.status = TestUtil.closePipe(self.pipe) + + # To comply with the ReaderThread protocol. + def getPipe(self): + return self.pipe + + # To comply with the ReaderThread protocol. + def getStatus(self): + return self.status + + def matches(self, index): + self.mutex.acquire() + m = self.re[index][1] + self.mutex.release() + return m + + def expect(self, r): + self.mutex.acquire() + self.re.append([r, 0]) + l = len(self.re)-1 + self.mutex.release() + return l -TestUtil.printOutputFromPipe(publisherPipe) + # + # Test #3: + # + # Restart the first server and publish some events. Attach a + # subscriber to the channel and make sure the events are received. + # + # Then re-start the linked downstream server and publish the events. + # Ensure they are received by the linked server. + # + if type != "replicated": + print "restarting only one IceStorm server...", + sys.stdout.flush() + pipe = icestorm1.start(echo=False, createThread = False) + expectorThread = ExpectorThread(pipe) + expectorThread.start() + global serverThreads + + TestUtil.serverThreads.append(expectorThread) + index = expectorThread.expect(re.compile("topic.fed1.*subscriber offline")) + expectorThread.expect(re.compile("connection refused")) + print "ok" + + # + # Test oneway subscribers. + # + print "testing that the federation link reports an error...", + sys.stdout.flush() + onewayStatus = doTest(icestorm1, icestorm2, 0, icestorm1.reference()) + + # Give some time for the output to be sent. + time.sleep(2) + + if onewayStatus or expectorThread.matches(index) != 1: + TestUtil.killServers() + sys.exit(1) + print "ok" + + print "starting downstream icestorm server...", + sys.stdout.flush() + icestorm2.start(echo=False) + print "ok" + + # + # Need to sleep for at least the discard interval. + # + time.sleep(3) + + # + # Test oneway subscribers. + # + print "testing link is reestablished...", + sys.stdout.flush() + onewayStatus = doTest(icestorm1, icestorm2, 0) + print "ok" + + if onewayStatus or expectorThread.matches(index) != 1: + TestUtil.killServers() + sys.exit(1) -publisherStatus = TestUtil.closePipe(publisherPipe) -if publisherStatus: - TestUtil.killServers() - sys.exit(1) + icestorm1.stop() + icestorm2.stop() -# The publisher must be run twice because all the events can be sent -# out in one batch to the linked subscriber which means that the link -# is not reaped until the next batch is sent. -time.sleep(1) -publisher = os.path.join(testdir, "publisher") -publisherPipe = TestUtil.startClient(publisher, iceStormReference + iceStormReference + " 2>&1") -print "ok" - -TestUtil.printOutputFromPipe(publisherPipe) - -publisherStatus = TestUtil.closePipe(publisherPipe) -if publisherStatus: - TestUtil.killServers() - sys.exit(1) - -# Verify that the link has disappeared. -print "verifying that the link has been destroyed...", -sys.stdout.flush() -iceStormAdminPipe = TestUtil.startClient(iceStormAdmin, adminIceStormReference + r' -e "links TestIceStorm1"' + " 2>&1") -line = iceStormAdminPipe.readline() -try: - if line and len(line) > 0: + # + # Test #4: + # + # Trash the TestIceStorm2 database. Then restart the servers and + # verify that the link is removed. + # + print "destroying the downstream IceStorm service database...", + sys.stdout.flush() + icestorm2.clean() + + print "ok" + + print "restarting IceStorm servers...", + sys.stdout.flush() + icestorm1.start(echo = False) + icestorm2.start(echo = False) + print "ok" + + print "checking link still exists...", + line = admin(adminIceStormReference, "links TestIceStorm1") + if not re.compile("fed1 with cost 0").search(line): + print line + TestUtil.killServers() + sys.exit(1) + print "ok" + + print "publishing some events...", + sys.stdout.flush() + # The publisher must be run twice because all the events can be + # sent out in one batch to the linked subscriber which means that + # the link is not reaped until the next batch is + # sent. Furthermore, with a replicated IceStorm both sets of + # events must be set to the same replica. + runPublisher(icestorm1, opt = " --count 2") + print "ok" + + # Give the unsubscription time to propagate. + time.sleep(1) + + # Verify that the link has disappeared. + print "verifying that the link has been destroyed...", + sys.stdout.flush() + line = admin(adminIceStormReference, "links TestIceStorm1") + if len(line) > 0: + print line TestUtil.killServers() sys.exit(1) -except IOError: - pass -iceStormAdminStatus = TestUtil.closePipe(iceStormAdminPipe) -if iceStormAdminStatus: - print iceStormAdminStatus - TestUtil.killServers() - sys.exit(1) -print "ok" + print "ok" -# -# Destroy the remaining topic. -# -print "destroying topics...", -command = r' -e "destroy TestIceStorm1/fed1"' + " 2>&1" -iceStormAdminPipe = TestUtil.startClient(iceStormAdmin, adminIceStormReference + command + " 2>&1") -iceStormAdminStatus = TestUtil.closePipe(iceStormAdminPipe) -if iceStormAdminStatus: - TestUtil.killServers() - sys.exit(1) -print "ok" + # + # Destroy the remaining topic. + # + print "destroying topics...", + admin(adminIceStormReference, "destroy TestIceStorm1/fed1") + print "ok" -# -# Shutdown icestorm. -# -print "shutting down icestorm services...", -sys.stdout.flush() -stopServers(iceBoxPipe1, iceBoxPipe2) -if TestUtil.serverStatus(): - TestUtil.killServers() - sys.exit(1) -print "ok" + # + # Shutdown icestorm. + # + print "shutting down icestorm services...", + sys.stdout.flush() + icestorm1.stop() + icestorm2.stop() + print "ok" + +runtest("persistent") +runtest("replicated", replicatedPublisher = False) +runtest("replicated", replicatedPublisher = True) sys.exit(0) diff --git a/cpp/test/IceStorm/rep1/.depend b/cpp/test/IceStorm/rep1/.depend new file mode 100644 index 00000000000..db57f903939 --- /dev/null +++ b/cpp/test/IceStorm/rep1/.depend @@ -0,0 +1,6 @@ +Sub$(OBJEXT): Sub.cpp $(includedir)/IceUtil/DisableWarnings.h $(includedir)/IceUtil/IceUtil.h $(includedir)/IceUtil/Config.h $(includedir)/IceUtil/AbstractMutex.h $(includedir)/IceUtil/Lock.h $(includedir)/IceUtil/ThreadException.h $(includedir)/IceUtil/Exception.h $(includedir)/IceUtil/Time.h $(includedir)/IceUtil/Cache.h $(includedir)/IceUtil/Handle.h $(includedir)/IceUtil/Mutex.h $(includedir)/IceUtil/CountDownLatch.h $(includedir)/IceUtil/Cond.h $(includedir)/IceUtil/CtrlCHandler.h $(includedir)/IceUtil/Functional.h $(includedir)/IceUtil/Monitor.h $(includedir)/IceUtil/RWRecMutex.h $(includedir)/IceUtil/Thread.h $(includedir)/IceUtil/Shared.h $(includedir)/IceUtil/RecMutex.h $(includedir)/IceUtil/StaticMutex.h $(includedir)/IceUtil/Timer.h $(includedir)/IceUtil/UUID.h $(includedir)/IceUtil/Unicode.h $(includedir)/IceUtil/Options.h $(includedir)/Ice/Ice.h $(includedir)/Ice/Initialize.h $(includedir)/Ice/CommunicatorF.h $(includedir)/Ice/LocalObjectF.h $(includedir)/Ice/Handle.h $(includedir)/Ice/Config.h $(includedir)/Ice/ProxyHandle.h $(includedir)/Ice/ProxyF.h $(includedir)/Ice/ObjectF.h $(includedir)/Ice/GCCountMap.h $(includedir)/Ice/GCShared.h $(includedir)/Ice/Exception.h $(includedir)/Ice/LocalObject.h $(includedir)/Ice/UndefSysMacros.h $(includedir)/Ice/PropertiesF.h $(includedir)/Ice/Proxy.h $(includedir)/Ice/ProxyFactoryF.h $(includedir)/Ice/ConnectionIF.h $(includedir)/Ice/RequestHandlerF.h $(includedir)/Ice/EndpointIF.h $(includedir)/Ice/Endpoint.h $(includedir)/Ice/ObjectAdapterF.h $(includedir)/Ice/ReferenceF.h $(includedir)/Ice/OutgoingAsyncF.h $(includedir)/Ice/Current.h $(includedir)/Ice/ConnectionF.h $(includedir)/Ice/Identity.h $(includedir)/Ice/StreamF.h $(includedir)/Ice/Object.h $(includedir)/Ice/IncomingAsyncF.h $(includedir)/Ice/InstanceF.h $(includedir)/Ice/LoggerF.h $(includedir)/Ice/StatsF.h $(includedir)/Ice/StringConverter.h $(includedir)/Ice/BuiltinSequences.h $(includedir)/Ice/LocalException.h $(includedir)/Ice/Properties.h $(includedir)/Ice/Outgoing.h $(includedir)/Ice/BasicStream.h $(includedir)/Ice/ObjectFactoryF.h $(includedir)/Ice/Buffer.h $(includedir)/Ice/Protocol.h $(includedir)/Ice/OutgoingAsync.h $(includedir)/Ice/Incoming.h $(includedir)/Ice/ServantLocatorF.h $(includedir)/Ice/ServantManagerF.h $(includedir)/Ice/Direct.h $(includedir)/Ice/Logger.h $(includedir)/Ice/LoggerUtil.h $(includedir)/Ice/Stats.h $(includedir)/Ice/Communicator.h $(includedir)/Ice/RouterF.h $(includedir)/Ice/LocatorF.h $(includedir)/Ice/PluginF.h $(includedir)/Ice/ImplicitContextF.h $(includedir)/Ice/ObjectFactory.h $(includedir)/Ice/ObjectAdapter.h $(includedir)/Ice/FacetMap.h $(includedir)/Ice/ServantLocator.h $(includedir)/Ice/IncomingAsync.h $(includedir)/Ice/Process.h $(includedir)/Ice/Application.h $(includedir)/Ice/Connection.h $(includedir)/Ice/Functional.h $(includedir)/Ice/Stream.h $(includedir)/Ice/ImplicitContext.h $(includedir)/Ice/Locator.h $(includedir)/Ice/UserExceptionFactory.h $(includedir)/Ice/FactoryTable.h $(includedir)/Ice/FactoryTableDef.h $(includedir)/Ice/UserExceptionFactoryF.h $(includedir)/Ice/ProcessF.h $(includedir)/Ice/Router.h $(includedir)/Ice/DispatchInterceptor.h $(includedir)/Ice/IconvStringConverter.h $(includedir)/IceStorm/IceStorm.h $(includedir)/Ice/SliceChecksumDict.h Single.h ../../include/TestCommon.h +Single$(OBJEXT): Single.cpp Single.h $(includedir)/Ice/LocalObjectF.h $(includedir)/IceUtil/Shared.h $(includedir)/IceUtil/Config.h $(includedir)/IceUtil/Mutex.h $(includedir)/IceUtil/Lock.h $(includedir)/IceUtil/ThreadException.h $(includedir)/IceUtil/Exception.h $(includedir)/IceUtil/Time.h $(includedir)/Ice/Handle.h $(includedir)/IceUtil/Handle.h $(includedir)/Ice/Config.h $(includedir)/Ice/ProxyHandle.h $(includedir)/Ice/ProxyF.h $(includedir)/Ice/ObjectF.h $(includedir)/Ice/GCCountMap.h $(includedir)/Ice/GCShared.h $(includedir)/Ice/Exception.h $(includedir)/Ice/LocalObject.h $(includedir)/Ice/Proxy.h $(includedir)/Ice/ProxyFactoryF.h $(includedir)/Ice/ConnectionIF.h $(includedir)/Ice/RequestHandlerF.h $(includedir)/Ice/EndpointIF.h $(includedir)/Ice/Endpoint.h $(includedir)/Ice/UndefSysMacros.h $(includedir)/Ice/ObjectAdapterF.h $(includedir)/Ice/ReferenceF.h $(includedir)/Ice/OutgoingAsyncF.h $(includedir)/Ice/Current.h $(includedir)/Ice/ConnectionF.h $(includedir)/Ice/Identity.h $(includedir)/Ice/StreamF.h $(includedir)/Ice/CommunicatorF.h $(includedir)/Ice/Object.h $(includedir)/Ice/IncomingAsyncF.h $(includedir)/Ice/Outgoing.h $(includedir)/IceUtil/Monitor.h $(includedir)/IceUtil/Cond.h $(includedir)/Ice/InstanceF.h $(includedir)/Ice/BasicStream.h $(includedir)/Ice/ObjectFactoryF.h $(includedir)/Ice/Buffer.h $(includedir)/Ice/Protocol.h $(includedir)/Ice/StringConverter.h $(includedir)/IceUtil/Unicode.h $(includedir)/Ice/Incoming.h $(includedir)/Ice/ServantLocatorF.h $(includedir)/Ice/ServantManagerF.h $(includedir)/Ice/Direct.h $(includedir)/Ice/LocalException.h $(includedir)/Ice/BuiltinSequences.h $(includedir)/Ice/ObjectFactory.h $(includedir)/IceUtil/Iterator.h $(includedir)/IceUtil/ScopedArray.h +Publisher$(OBJEXT): Publisher.cpp $(includedir)/Ice/Ice.h $(includedir)/Ice/Initialize.h $(includedir)/Ice/CommunicatorF.h $(includedir)/Ice/LocalObjectF.h $(includedir)/IceUtil/Shared.h $(includedir)/IceUtil/Config.h $(includedir)/IceUtil/Mutex.h $(includedir)/IceUtil/Lock.h $(includedir)/IceUtil/ThreadException.h $(includedir)/IceUtil/Exception.h $(includedir)/IceUtil/Time.h $(includedir)/Ice/Handle.h $(includedir)/IceUtil/Handle.h $(includedir)/Ice/Config.h $(includedir)/Ice/ProxyHandle.h $(includedir)/Ice/ProxyF.h $(includedir)/Ice/ObjectF.h $(includedir)/Ice/GCCountMap.h $(includedir)/Ice/GCShared.h $(includedir)/Ice/Exception.h $(includedir)/Ice/LocalObject.h $(includedir)/Ice/UndefSysMacros.h $(includedir)/Ice/PropertiesF.h $(includedir)/Ice/Proxy.h $(includedir)/Ice/ProxyFactoryF.h $(includedir)/Ice/ConnectionIF.h $(includedir)/Ice/RequestHandlerF.h $(includedir)/Ice/EndpointIF.h $(includedir)/Ice/Endpoint.h $(includedir)/Ice/ObjectAdapterF.h $(includedir)/Ice/ReferenceF.h $(includedir)/Ice/OutgoingAsyncF.h $(includedir)/Ice/Current.h $(includedir)/Ice/ConnectionF.h $(includedir)/Ice/Identity.h $(includedir)/Ice/StreamF.h $(includedir)/Ice/Object.h $(includedir)/Ice/IncomingAsyncF.h $(includedir)/Ice/InstanceF.h $(includedir)/Ice/LoggerF.h $(includedir)/Ice/StatsF.h $(includedir)/Ice/StringConverter.h $(includedir)/Ice/BuiltinSequences.h $(includedir)/Ice/LocalException.h $(includedir)/Ice/Properties.h $(includedir)/Ice/Outgoing.h $(includedir)/IceUtil/Monitor.h $(includedir)/IceUtil/Cond.h $(includedir)/Ice/BasicStream.h $(includedir)/Ice/ObjectFactoryF.h $(includedir)/Ice/Buffer.h $(includedir)/Ice/Protocol.h $(includedir)/IceUtil/Unicode.h $(includedir)/Ice/OutgoingAsync.h $(includedir)/IceUtil/Timer.h $(includedir)/IceUtil/Thread.h $(includedir)/Ice/Incoming.h $(includedir)/Ice/ServantLocatorF.h $(includedir)/Ice/ServantManagerF.h $(includedir)/Ice/Direct.h $(includedir)/Ice/Logger.h $(includedir)/Ice/LoggerUtil.h $(includedir)/Ice/Stats.h $(includedir)/Ice/Communicator.h $(includedir)/Ice/RouterF.h $(includedir)/Ice/LocatorF.h $(includedir)/Ice/PluginF.h $(includedir)/Ice/ImplicitContextF.h $(includedir)/Ice/ObjectFactory.h $(includedir)/Ice/ObjectAdapter.h $(includedir)/Ice/FacetMap.h $(includedir)/Ice/ServantLocator.h $(includedir)/Ice/IncomingAsync.h $(includedir)/Ice/Process.h $(includedir)/Ice/Application.h $(includedir)/Ice/Connection.h $(includedir)/Ice/Functional.h $(includedir)/IceUtil/Functional.h $(includedir)/Ice/Stream.h $(includedir)/Ice/ImplicitContext.h $(includedir)/Ice/Locator.h $(includedir)/Ice/UserExceptionFactory.h $(includedir)/Ice/FactoryTable.h $(includedir)/Ice/FactoryTableDef.h $(includedir)/IceUtil/StaticMutex.h $(includedir)/Ice/UserExceptionFactoryF.h $(includedir)/Ice/ProcessF.h $(includedir)/Ice/Router.h $(includedir)/Ice/DispatchInterceptor.h $(includedir)/Ice/IconvStringConverter.h $(includedir)/IceUtil/Options.h $(includedir)/IceUtil/RecMutex.h $(includedir)/IceUtil/IceUtil.h $(includedir)/IceUtil/AbstractMutex.h $(includedir)/IceUtil/Cache.h $(includedir)/IceUtil/CountDownLatch.h $(includedir)/IceUtil/CtrlCHandler.h $(includedir)/IceUtil/RWRecMutex.h $(includedir)/IceUtil/UUID.h $(includedir)/IceStorm/IceStorm.h $(includedir)/Ice/SliceChecksumDict.h Single.h +Subscriber$(OBJEXT): Subscriber.cpp $(includedir)/IceUtil/DisableWarnings.h $(includedir)/IceUtil/IceUtil.h $(includedir)/IceUtil/Config.h $(includedir)/IceUtil/AbstractMutex.h $(includedir)/IceUtil/Lock.h $(includedir)/IceUtil/ThreadException.h $(includedir)/IceUtil/Exception.h $(includedir)/IceUtil/Time.h $(includedir)/IceUtil/Cache.h $(includedir)/IceUtil/Handle.h $(includedir)/IceUtil/Mutex.h $(includedir)/IceUtil/CountDownLatch.h $(includedir)/IceUtil/Cond.h $(includedir)/IceUtil/CtrlCHandler.h $(includedir)/IceUtil/Functional.h $(includedir)/IceUtil/Monitor.h $(includedir)/IceUtil/RWRecMutex.h $(includedir)/IceUtil/Thread.h $(includedir)/IceUtil/Shared.h $(includedir)/IceUtil/RecMutex.h $(includedir)/IceUtil/StaticMutex.h $(includedir)/IceUtil/Timer.h $(includedir)/IceUtil/UUID.h $(includedir)/IceUtil/Unicode.h $(includedir)/IceUtil/Options.h $(includedir)/Ice/Ice.h $(includedir)/Ice/Initialize.h $(includedir)/Ice/CommunicatorF.h $(includedir)/Ice/LocalObjectF.h $(includedir)/Ice/Handle.h $(includedir)/Ice/Config.h $(includedir)/Ice/ProxyHandle.h $(includedir)/Ice/ProxyF.h $(includedir)/Ice/ObjectF.h $(includedir)/Ice/GCCountMap.h $(includedir)/Ice/GCShared.h $(includedir)/Ice/Exception.h $(includedir)/Ice/LocalObject.h $(includedir)/Ice/UndefSysMacros.h $(includedir)/Ice/PropertiesF.h $(includedir)/Ice/Proxy.h $(includedir)/Ice/ProxyFactoryF.h $(includedir)/Ice/ConnectionIF.h $(includedir)/Ice/RequestHandlerF.h $(includedir)/Ice/EndpointIF.h $(includedir)/Ice/Endpoint.h $(includedir)/Ice/ObjectAdapterF.h $(includedir)/Ice/ReferenceF.h $(includedir)/Ice/OutgoingAsyncF.h $(includedir)/Ice/Current.h $(includedir)/Ice/ConnectionF.h $(includedir)/Ice/Identity.h $(includedir)/Ice/StreamF.h $(includedir)/Ice/Object.h $(includedir)/Ice/IncomingAsyncF.h $(includedir)/Ice/InstanceF.h $(includedir)/Ice/LoggerF.h $(includedir)/Ice/StatsF.h $(includedir)/Ice/StringConverter.h $(includedir)/Ice/BuiltinSequences.h $(includedir)/Ice/LocalException.h $(includedir)/Ice/Properties.h $(includedir)/Ice/Outgoing.h $(includedir)/Ice/BasicStream.h $(includedir)/Ice/ObjectFactoryF.h $(includedir)/Ice/Buffer.h $(includedir)/Ice/Protocol.h $(includedir)/Ice/OutgoingAsync.h $(includedir)/Ice/Incoming.h $(includedir)/Ice/ServantLocatorF.h $(includedir)/Ice/ServantManagerF.h $(includedir)/Ice/Direct.h $(includedir)/Ice/Logger.h $(includedir)/Ice/LoggerUtil.h $(includedir)/Ice/Stats.h $(includedir)/Ice/Communicator.h $(includedir)/Ice/RouterF.h $(includedir)/Ice/LocatorF.h $(includedir)/Ice/PluginF.h $(includedir)/Ice/ImplicitContextF.h $(includedir)/Ice/ObjectFactory.h $(includedir)/Ice/ObjectAdapter.h $(includedir)/Ice/FacetMap.h $(includedir)/Ice/ServantLocator.h $(includedir)/Ice/IncomingAsync.h $(includedir)/Ice/Process.h $(includedir)/Ice/Application.h $(includedir)/Ice/Connection.h $(includedir)/Ice/Functional.h $(includedir)/Ice/Stream.h $(includedir)/Ice/ImplicitContext.h $(includedir)/Ice/Locator.h $(includedir)/Ice/UserExceptionFactory.h $(includedir)/Ice/FactoryTable.h $(includedir)/Ice/FactoryTableDef.h $(includedir)/Ice/UserExceptionFactoryF.h $(includedir)/Ice/ProcessF.h $(includedir)/Ice/Router.h $(includedir)/Ice/DispatchInterceptor.h $(includedir)/Ice/IconvStringConverter.h $(includedir)/IceStorm/IceStorm.h $(includedir)/Ice/SliceChecksumDict.h Single.h ../../include/TestCommon.h +Single.cpp: Single.ice +Single.ice: $(SLICE2CPP) $(SLICEPARSERLIB) diff --git a/cpp/test/IceStorm/rep1/.gitignore b/cpp/test/IceStorm/rep1/.gitignore new file mode 100644 index 00000000000..a6eaee14920 --- /dev/null +++ b/cpp/test/IceStorm/rep1/.gitignore @@ -0,0 +1,12 @@ +// Generated by makegitignore.py + +// IMPORTANT: Do not edit this file -- any edits made here will be lost! +publisher +subscriber +sub +Single.cpp +Single.h +build.txt +0.db/* +1.db/* +2.db/* diff --git a/cpp/test/IceStorm/rep1/0.db/.gitignore b/cpp/test/IceStorm/rep1/0.db/.gitignore new file mode 100644 index 00000000000..72e8ffc0db8 --- /dev/null +++ b/cpp/test/IceStorm/rep1/0.db/.gitignore @@ -0,0 +1 @@ +* diff --git a/cpp/test/IceStorm/rep1/1.db/.gitignore b/cpp/test/IceStorm/rep1/1.db/.gitignore new file mode 100644 index 00000000000..72e8ffc0db8 --- /dev/null +++ b/cpp/test/IceStorm/rep1/1.db/.gitignore @@ -0,0 +1 @@ +* diff --git a/cpp/test/IceStorm/rep1/2.db/.gitignore b/cpp/test/IceStorm/rep1/2.db/.gitignore new file mode 100644 index 00000000000..72e8ffc0db8 --- /dev/null +++ b/cpp/test/IceStorm/rep1/2.db/.gitignore @@ -0,0 +1 @@ +* diff --git a/cpp/test/IceStorm/rep1/Makefile b/cpp/test/IceStorm/rep1/Makefile new file mode 100644 index 00000000000..e3aea6fb383 --- /dev/null +++ b/cpp/test/IceStorm/rep1/Makefile @@ -0,0 +1,56 @@ +# ********************************************************************** +# +# Copyright (c) 2003-2007 ZeroC, Inc. All rights reserved. +# +# This copy of Ice is licensed to you under the terms described in the +# ICE_LICENSE file included in this distribution. +# +# ********************************************************************** + +top_srcdir = ../../.. + +PUBLISHER = publisher +SUBSCRIBER = subscriber +SUB = sub + +TARGETS = $(PUBLISHER) $(SUBSCRIBER) $(SUB) + +OBJS = Single.o + +POBJS = Publisher.o + +SOBJS = Subscriber.o + +SUB_OBJS = Sub.o + +SRCS = $(SUB_OBJS:.o=.cpp) \ + $(OBJS:.o=.cpp) \ + $(POBJS:.o=.cpp) \ + $(SOBJS:.o=.cpp) + +SLICE_SRCS = Single.ice + +include $(top_srcdir)/config/Make.rules + +CPPFLAGS := -I. -I../../include $(CPPFLAGS) +LIBS := -lIceStorm $(LIBS) + +$(PUBLISHER): $(OBJS) $(POBJS) + rm -f $@ + $(CXX) $(LDFLAGS) -o $@ $(OBJS) $(POBJS) $(LIBS) + +$(SUBSCRIBER): $(OBJS) $(SOBJS) + rm -f $@ + $(CXX) $(LDFLAGS) -o $@ $(OBJS) $(SOBJS) $(LIBS) + +$(SUB): $(OBJS) $(SUB_OBJS) + rm -f $@ + $(CXX) $(LDFLAGS) -o $@ $(OBJS) $(SUB_OBJS) $(LIBS) + +clean:: + -rm -f build.txt + -rm -f 0.db/* + -rm -f 1.db/* + -rm -f 2.db/* + +include .depend diff --git a/cpp/test/IceStorm/rep1/Makefile.mak b/cpp/test/IceStorm/rep1/Makefile.mak new file mode 100644 index 00000000000..566c9d4868e --- /dev/null +++ b/cpp/test/IceStorm/rep1/Makefile.mak @@ -0,0 +1,76 @@ +# ********************************************************************** +# +# Copyright (c) 2003-2007 ZeroC, Inc. All rights reserved. +# +# This copy of Ice is licensed to you under the terms described in the +# ICE_LICENSE file included in this distribution. +# +# ********************************************************************** + +top_srcdir = ..\..\.. + +PUBLISHER = publisher.exe +SUBSCRIBER = subscriber.exe +SUB = sub.exe + +TARGETS = $(PUBLISHER) $(SUBSCRIBER) $(SUB) + +OBJS = Single.obj + +POBJS = Publisher.obj + +SOBJS = Subscriber.obj + +SUB_OBJS = Sub.obj + +SRCS = $(OBJS:.obj=.cpp) \ + $(POBJS:.obj=.cpp) \ + $(SOBJS:.obj=.cpp) \ + $(SUB_OBJS:.obj=.cpp) + +!include $(top_srcdir)/config/Make.rules.mak + +CPPFLAGS = -I. -I../../include $(CPPFLAGS) -DWIN32_LEAN_AND_MEAN +LIBS = icestorm$(LIBSUFFIX).lib $(LIBS) + +!if "$(CPP_COMPILER)" != "BCC2006" && "$(OPTIMIZE)" != "yes" +PPDBFLAGS = /pdb:$(PUBLISHER:.exe=.pdb) +SPDBFLAGS = /pdb:$(SUBSCRIBER:.exe=.pdb) +SUB_PDBFLAGS = /pdb:$(SUB:.exe=.pdb) +!endif + +$(PUBLISHER): $(OBJS) $(POBJS) + $(LINK) $(LD_EXEFLAGS) $(PPDBFLAGS) $(SETARGV) $(OBJS) $(POBJS) $(PREOUT)$@ $(PRELIBS)$(LIBS) + @if exist $@.manifest echo ^ ^ ^ Embedding manifest using $(MT) && \ + $(MT) -nologo -manifest $@.manifest -outputresource:$@;#1 && del /q $@.manifest + +$(SUBSCRIBER): $(OBJS) $(SOBJS) + $(LINK) $(LD_EXEFLAGS) $(SPDBFLAGS) $(SETARGV) $(OBJS) $(SOBJS) $(PREOUT)$@ $(PRELIBS)$(LIBS) + @if exist $@.manifest echo ^ ^ ^ Embedding manifest using $(MT) && \ + $(MT) -nologo -manifest $@.manifest -outputresource:$@;#1 && del /q $@.manifest + +$(SUB): $(OBJS) $(SUB_OBJS) + $(LINK) $(LD_EXEFLAGS) $(SUB_PDBFLAGS) $(SETARGV) $(OBJS) $(SUB_OBJS) $(PREOUT)$@ $(PRELIBS)$(LIBS) + @if exist $@.manifest echo ^ ^ ^ Embedding manifest using $(MT) && \ + $(MT) -nologo -manifest $@.manifest -outputresource:$@;#1 && del /q $@.manifest + +!if "$(OPTIMIZE)" == "yes" + +all:: + @echo release > build.txt + +!else + +all:: + @echo debug > build.txt + +!endif + +clean:: + del /q build.txt + del /q Single.cpp Single.h + for %f in (0.db\*) do if not %f == 0.db\.gitignore del /q %f + for %f in (1.db\*) do if not %f == 1.db\.gitignore del /q %f + for %f in (2.db\*) do if not %f == 2.db\.gitignore del /q %f + +!include .depend diff --git a/cpp/test/IceStorm/rep1/Publisher.cpp b/cpp/test/IceStorm/rep1/Publisher.cpp new file mode 100644 index 00000000000..a8be7cd7874 --- /dev/null +++ b/cpp/test/IceStorm/rep1/Publisher.cpp @@ -0,0 +1,149 @@ +// ********************************************************************** +// +// Copyright (c) 2003-2007 ZeroC, Inc. All rights reserved. +// +// This copy of Ice is licensed to you under the terms described in the +// ICE_LICENSE file included in this distribution. +// +// ********************************************************************** + +#include <Ice/Ice.h> +#include <IceUtil/Options.h> +#include <IceUtil/IceUtil.h> +#include <IceStorm/IceStorm.h> +#include <Single.h> + +using namespace std; +using namespace Ice; +using namespace IceStorm; +using namespace Test; + +int +run(int argc, char* argv[], const CommunicatorPtr& communicator) +{ + IceUtilInternal::Options opts; + opts.addOpt("", "cycle"); + + try + { + opts.parse(argc, (const char**)argv); + } + catch(const IceUtilInternal::BadOptException& e) + { + cerr << argv[0] << ": " << e.reason << endl; + return EXIT_FAILURE; + } + + PropertiesPtr properties = communicator->getProperties(); + const char* managerProxyProperty = "IceStormAdmin.TopicManager.Default"; + string managerProxy = properties->getProperty(managerProxyProperty); + if(managerProxy.empty()) + { + cerr << argv[0] << ": property `" << managerProxyProperty << "' is not set" << endl; + return EXIT_FAILURE; + } + + IceStorm::TopicManagerPrx manager = IceStorm::TopicManagerPrx::checkedCast( + communicator->stringToProxy(managerProxy)); + if(!manager) + { + cerr << argv[0] << ": `" << managerProxy << "' is not running" << endl; + return EXIT_FAILURE; + } + + TopicPrx topic; + while(true) + { + try + { + topic = manager->retrieve("single"); + break; + } + // This can happen if the replica group loses the majority + // during retrieve. In this case we retry. + catch(const Ice::UnknownException&) + { + continue; + } + catch(const IceStorm::NoSuchTopic& e) + { + cerr << argv[0] << ": NoSuchTopic: " << e.name << endl; + return EXIT_FAILURE; + } + } + assert(topic); + + // + // Get a publisher object, create a twoway proxy and then cast to + // a Single object. + // + if(opts.isSet("cycle")) + { + Ice::ObjectPrx prx = topic->getPublisher()->ice_twoway(); + vector<SinglePrx> single; + Ice::EndpointSeq endpoints = prx->ice_getEndpoints(); + for(Ice::EndpointSeq::const_iterator p = endpoints.begin(); p != endpoints.end(); ++p) + { + if((*p)->toString().substr(0, 3) != "udp") + { + Ice::EndpointSeq e; + e.push_back(*p); + single.push_back(SinglePrx::uncheckedCast(prx->ice_endpoints(e))); + } + } + if(single.size() <= 1) + { + cerr << argv[0] << ": Not enough endpoints in publisher proxy" << endl; + return EXIT_FAILURE; + } + int which = 0; + for(int i = 0; i < 1000; ++i) + { + single[which]->event(i); + which = (which + 1) % single.size(); + } + } + else + { + SinglePrx single = SinglePrx::uncheckedCast(topic->getPublisher()->ice_twoway()); + for(int i = 0; i < 1000; ++i) + { + single->event(i); + } + } + + return EXIT_SUCCESS; +} + +int +main(int argc, char* argv[]) +{ + int status; + CommunicatorPtr communicator; + + try + { + communicator = initialize(argc, argv); + status = run(argc, argv, communicator); + } + catch(const Exception& ex) + { + cerr << ex << endl; + status = EXIT_FAILURE; + } + + if(communicator) + { + try + { + communicator->destroy(); + } + catch(const Exception& ex) + { + cerr << ex << endl; + status = EXIT_FAILURE; + } + } + + return status; +} diff --git a/cpp/test/IceStorm/rep1/Single.ice b/cpp/test/IceStorm/rep1/Single.ice new file mode 100644 index 00000000000..ad3d711bb2b --- /dev/null +++ b/cpp/test/IceStorm/rep1/Single.ice @@ -0,0 +1,23 @@ +// ********************************************************************** +// +// Copyright (c) 2003-2007 ZeroC, Inc. All rights reserved. +// +// This copy of Ice is licensed to you under the terms described in the +// ICE_LICENSE file included in this distribution. +// +// ********************************************************************** + +#ifndef SINGLE_ICE +#define SINGLE_ICE + +module Test +{ + +interface Single +{ + void event(int i); +}; + +}; + +#endif diff --git a/cpp/test/IceStorm/rep1/Sub.cpp b/cpp/test/IceStorm/rep1/Sub.cpp new file mode 100644 index 00000000000..e668b0fa50e --- /dev/null +++ b/cpp/test/IceStorm/rep1/Sub.cpp @@ -0,0 +1,124 @@ +// ********************************************************************** +// +// Copyright (c) 2003-2007 ZeroC, Inc. All rights reserved. +// +// This copy of Ice is licensed to you under the terms described in the +// ICE_LICENSE file included in this distribution. +// +// ********************************************************************** + +#include <IceUtil/DisableWarnings.h> +#include <IceUtil/IceUtil.h> +#include <IceUtil/Options.h> +#include <Ice/Ice.h> +#include <IceStorm/IceStorm.h> +#include <Single.h> +#include <TestCommon.h> + +using namespace std; +using namespace Ice; +using namespace IceStorm; +using namespace Test; + +class SingleI : public Single +{ +public: + + SingleI() {} + virtual void event(int, const Current&) {} +}; + +int +run(int argc, char* argv[], const CommunicatorPtr& communicator) +{ + IceUtilInternal::Options opts; + opts.addOpt("", "id", IceUtilInternal::Options::NeedArg); + opts.addOpt("", "unsub"); + + try + { + opts.parse(argc, (const char**)argv); + } + catch(const IceUtilInternal::BadOptException& e) + { + cerr << argv[0] << ": " << e.reason << endl; + return EXIT_FAILURE; + } + + PropertiesPtr properties = communicator->getProperties(); + const char* managerProxyProperty = "IceStormAdmin.TopicManager.Default"; + string managerProxy = properties->getProperty(managerProxyProperty); + if(managerProxy.empty()) + { + cerr << argv[0] << ": property `" << managerProxyProperty << "' is not set" << endl; + return EXIT_FAILURE; + } + + ObjectPrx base = communicator->stringToProxy(managerProxy); + IceStorm::TopicManagerPrx manager = IceStorm::TopicManagerPrx::checkedCast(base); + if(!manager) + { + cerr << argv[0] << ": `" << managerProxy << "' is not running" << endl; + return EXIT_FAILURE; + } + + ObjectAdapterPtr adapter = communicator->createObjectAdapterWithEndpoints("SingleAdapter", "default"); + + TopicPrx topic; + try + { + topic = manager->retrieve("single"); + } + catch(const IceStorm::NoSuchTopic& e) + { + cerr << argv[0] << ": NoSuchTopic: " << e.name << endl; + return EXIT_FAILURE; + } + + Ice::ObjectPrx prx = adapter->add(new SingleI(), communicator->stringToIdentity(opts.optArg("id"))); + if(opts.isSet("unsub")) + { + topic->unsubscribe(prx); + } + else + { + IceStorm::QoS qos; + qos["persistent"] = "true"; + topic->subscribeAndGetPublisher(qos, prx); + } + + return EXIT_SUCCESS; +} + +int +main(int argc, char* argv[]) +{ + int status; + CommunicatorPtr communicator; + + try + { + communicator = initialize(argc, argv); + status = run(argc, argv, communicator); + } + catch(const Exception& ex) + { + cerr << ex << endl; + status = EXIT_FAILURE; + } + + if(communicator) + { + try + { + communicator->destroy(); + } + catch(const Exception& ex) + { + cerr << ex << endl; + status = EXIT_FAILURE; + } + } + + return status; +} diff --git a/cpp/test/IceStorm/rep1/Subscriber.cpp b/cpp/test/IceStorm/rep1/Subscriber.cpp new file mode 100644 index 00000000000..f3d869c8ac4 --- /dev/null +++ b/cpp/test/IceStorm/rep1/Subscriber.cpp @@ -0,0 +1,217 @@ +// ********************************************************************** +// +// Copyright (c) 2003-2007 ZeroC, Inc. All rights reserved. +// +// This copy of Ice is licensed to you under the terms described in the +// ICE_LICENSE file included in this distribution. +// +// ********************************************************************** + +#include <IceUtil/DisableWarnings.h> +#include <IceUtil/IceUtil.h> +#include <IceUtil/Options.h> +#include <Ice/Ice.h> +#include <IceStorm/IceStorm.h> +#include <Single.h> +#include <TestCommon.h> + +using namespace std; +using namespace Ice; +using namespace IceStorm; +using namespace Test; + +class SingleI : public Single, public IceUtil::Monitor<IceUtil::Mutex> +{ +public: + + SingleI(const CommunicatorPtr& communicator, const string& name, int max) : + _communicator(communicator), + _name(name), + _max(max), + _count(0), + _last(0) + { + } + + virtual void + event(int i, const Current& current) + { + if(_name == "twoway ordered" && i != _last) + { + cerr << endl << "received unordered event for `" << _name << "': " << i << " " << _last; + test(false); + } + Lock sync(*this); + ++_last; + if(++_count == _max) + { + notify(); + } + } + + virtual void + waitForEvents() + { + Lock sync(*this); + IceUtil::Time timeout = IceUtil::Time::seconds(20); + while(_count < _max) + { + if(!timedWait(timeout)) + { + test(false); + } + } + } + +private: + + CommunicatorPtr _communicator; + const string _name; + const int _max; + int _count; + bool _ordered; + int _last; +}; +typedef IceUtil::Handle<SingleI> SingleIPtr; + +int +run(int argc, char* argv[], const CommunicatorPtr& communicator) +{ + IceUtilInternal::Options opts; + opts.addOpt("", "ordered"); + opts.addOpt("", "twoway"); + opts.addOpt("", "events", IceUtilInternal::Options::NeedArg); + + try + { + opts.parse(argc, (const char**)argv); + } + catch(const IceUtilInternal::BadOptException& e) + { + cerr << argv[0] << ": " << e.reason << endl; + return EXIT_FAILURE; + } + + PropertiesPtr properties = communicator->getProperties(); + const char* managerProxyProperty = "IceStormAdmin.TopicManager.Default"; + string managerProxy = properties->getProperty(managerProxyProperty); + if(managerProxy.empty()) + { + cerr << argv[0] << ": property `" << managerProxyProperty << "' is not set" << endl; + return EXIT_FAILURE; + } + + ObjectPrx base = communicator->stringToProxy(managerProxy); + IceStorm::TopicManagerPrx manager = IceStorm::TopicManagerPrx::checkedCast(base); + if(!manager) + { + cerr << argv[0] << ": `" << managerProxy << "' is not running" << endl; + return EXIT_FAILURE; + } + + ObjectAdapterPtr adapter = communicator->createObjectAdapterWithEndpoints("SingleAdapter", "default"); + + TopicPrx topic; + while(true) + { + try + { + topic = manager->retrieve("single"); + break; + } + // This can happen if the replica group loses the majority + // during retrieve. In this case we retry. + catch(const Ice::UnknownException&) + { + continue; + } + catch(const IceStorm::NoSuchTopic& e) + { + cerr << argv[0] << ": NoSuchTopic: " << e.name << endl; + return EXIT_FAILURE; + } + } + + int events = 1000; + if(opts.isSet("events")) + { + events = atoi(opts.optArg("events").c_str()); + } + // + // Create subscribers with different QoS. + // + SingleIPtr sub; + IceStorm::QoS qos; + if(opts.isSet("ordered")) + { + sub = new SingleI(communicator, "twoway ordered", events); + qos["reliability"] = "ordered"; + } + else + { + sub = new SingleI(communicator, "twoway", events); + } + + Ice::ObjectPrx prx = adapter->addWithUUID(sub); + + while(true) + { + try + { + topic->subscribeAndGetPublisher(qos, prx); + break; + } + // If we're already subscribed then we're done (previously we + // got an UnknownException which succeeded). + catch(const IceStorm::AlreadySubscribed&) + { + break; + } + // This can happen if the replica group loses the majority + // during subscription. In this case we retry. + catch(const Ice::UnknownException&) + { + } + } + + adapter->activate(); + + sub->waitForEvents(); + + topic->unsubscribe(prx); + + return EXIT_SUCCESS; +} + +int +main(int argc, char* argv[]) +{ + int status; + CommunicatorPtr communicator; + + try + { + communicator = initialize(argc, argv); + status = run(argc, argv, communicator); + } + catch(const Exception& ex) + { + cerr << ex << endl; + status = EXIT_FAILURE; + } + + if(communicator) + { + try + { + communicator->destroy(); + } + catch(const Exception& ex) + { + cerr << ex << endl; + status = EXIT_FAILURE; + } + } + + return status; +} diff --git a/cpp/test/IceStorm/rep1/run.py b/cpp/test/IceStorm/rep1/run.py new file mode 100755 index 00000000000..281c00580f0 --- /dev/null +++ b/cpp/test/IceStorm/rep1/run.py @@ -0,0 +1,398 @@ +#!/usr/bin/env python +# ********************************************************************** +# +# Copyright (c) 2003-2007 ZeroC, Inc. All rights reserved. +# +# This copy of Ice is licensed to you under the terms described in the +# ICE_LICENSE file included in this distribution. +# +# ********************************************************************** + +import os, sys, time, re + +for toplevel in [".", "..", "../..", "../../..", "../../../.."]: + toplevel = os.path.normpath(toplevel) + if os.path.exists(os.path.join(toplevel, "config", "TestUtil.py")): + break +else: + raise "can't find toplevel directory!" + +sys.path.append(os.path.join(toplevel, "config")) +import TestUtil +TestUtil.processCmdLine() + +name = os.path.join("IceStorm", "rep1") +testdir = os.path.dirname(os.path.abspath(__file__)) +publisher = os.path.join(testdir, "publisher") +subscriber = os.path.join(testdir, "subscriber") +subscriber2 = os.path.join(testdir, "sub") + +def printOutput(pipe): + try: + while True: + line = pipe.readline() + if not line: + break + print line, + sys.stdout.flush() + except IOError: + pass + +def captureOutput(pipe): + out = "" + try: + while True: + line = pipe.readline() + if not line: + break + out = out + line + except IOError: + pass + return out + +def runsub(opt, ref, arg = "", echo=False): + qos = "" + if opt == "twoway": + qos = " --twoway" + if opt == "ordered": + qos = " --ordered" + pipe = TestUtil.startServer(subscriber, ref + arg + qos) + TestUtil.getServerPid(pipe) + TestUtil.getAdapterReady(pipe, True) + return pipe + +def runpub(ref, arg = "", echo=False): + return TestUtil.startClient(publisher, ref + arg) + +def runtest(opt, ref, subopt="", pubopt=""): + subscriberPipe = runsub(opt, ref, subopt) + publisherPipe = runpub(ref, pubopt) + printOutput(publisherPipe) + publisherStatus = TestUtil.closePipe(publisherPipe) + subscriberStatus = TestUtil.specificServerStatus(subscriberPipe, 30) + if subscriberStatus or publisherStatus: + print "FAILED!" + while True: + import time + time.sleep(1000) + TestUtil.killServers() + sys.exit(1) + +def runsub2(replica = -1, cmd = "", terminateOnError=True): + pipe = TestUtil.startServer(subscriber2, icestorm.reference(replica) + ' --id foo' + cmd) + TestUtil.getServerPid(pipe) + #TestUtil.getAdapterReady(pipe, True) + out = captureOutput(pipe) + status = TestUtil.closePipe(pipe) + if terminateOnError and status: + print "status: %d out: '%s'" % (status, out) + TestUtil.killServers() + sys.exit(1) + return status, out.strip() + +def rununsub2(replica = -1, terminateOnError=True): + if replica == -1: + runsub2(replica, " --unsub", terminateOnError) + # Else we first subscribe to this replica, then unsub. We + # shouldn't get an AlreadySubscribedException. + status, out = runsub2(replica, terminateOnError=terminateOnError) + if status: + return status, out + return runsub2(replica, " --unsub", terminateOnError=terminateOnError) + +import IceStormUtil + +icestorm = IceStormUtil.init(toplevel, testdir, "replicated", replicatedPublisher=True, additional = + ' --Ice.ServerIdleTime=0 ' + + ' --IceStorm.Election.MasterTimeout=2' + + ' --IceStorm.Election.ElectionTimeout=2' + + ' --IceStorm.Election.ResponseTimeout=2') +icestorm.start() + +print "testing topic creation across replicas...", +sys.stdout.flush() +icestorm.admin("create single") + +for replica in range(0, 3): + status, out = icestorm.adminForReplica(replica, "create single", terminateOnError=False) + if out != "error: topic `single' exists": + TestUtil.killServers() + sys.exit(1) +print "ok" + +print "testing topic destruction across replicas...", +sys.stdout.flush() +icestorm.admin("destroy single") + +for replica in range(0, 3): + status, out = icestorm.adminForReplica(replica, "destroy single", terminateOnError=False) + if out != "error: couldn't find topic `single'": + TestUtil.killServers() + sys.exit(1) +print "ok" + +print "testing topic creation without replica...", +sys.stdout.flush() + +icestorm.stopReplica(0) +icestorm.admin("create single") + +for replica in range(1, 3): + status, out = icestorm.adminForReplica(replica, "create single", terminateOnError=False) + if out != "error: topic `single' exists": + TestUtil.killServers() + sys.exit(1) + +status, out = icestorm.adminForReplica(0, "create single", terminateOnError=False) +if not re.search("ConnectionRefused", out): + TestUtil.killServers() + sys.exit(1) + +icestorm.startReplica(0, echo=False) + +status, out = icestorm.adminForReplica(0, "create single", terminateOnError=False) +if out != "error: topic `single' exists": + TestUtil.killServers() + sys.exit(1) +print "ok" + +icestorm.admin("destroy single") + +print "testing topic creation without master...", +sys.stdout.flush() +icestorm.stopReplica(2) + +icestorm.admin("create single") + +for replica in range(0, 2): + status, out = icestorm.adminForReplica(replica, "create single", terminateOnError=False) + if out != "error: topic `single' exists": + TestUtil.killServers() + sys.exit(1) + +status, out = icestorm.adminForReplica(2, "create single", terminateOnError=False) +if not re.search("ConnectionRefused", out): + TestUtil.killServers() + sys.exit(1) + +icestorm.startReplica(2, echo=False) + +status, out = icestorm.adminForReplica(2, "create single", terminateOnError=False) +if out != "error: topic `single' exists": + TestUtil.killServers() + sys.exit(1) +print "ok" + +# All replicas are running + +print "testing topic destruction without replica...", +sys.stdout.flush() +icestorm.stopReplica(0) + +icestorm.admin("destroy single") + +for replica in range(1, 3): + status, out = icestorm.adminForReplica(replica, "destroy single", terminateOnError=False) + if out != "error: couldn't find topic `single'": + TestUtil.killServers() + sys.exit(1) + +status, out = icestorm.adminForReplica(0, "destroy single", terminateOnError=False) +if not re.search("ConnectionRefused", out): + TestUtil.killServers() + sys.exit(1) + +icestorm.startReplica(0, echo=False) + +status, out = icestorm.adminForReplica(0, "destroy single", terminateOnError=False) +if out != "error: couldn't find topic `single'": + print out + TestUtil.killServers() + sys.exit(1) +print "ok" + +print "testing topic destruction without master...", +sys.stdout.flush() + +icestorm.admin("create single") +icestorm.stopReplica(2) + +icestorm.admin("destroy single") + +for replica in range(0, 2): + status, out = icestorm.adminForReplica(replica, "destroy single", terminateOnError=False) + if out != "error: couldn't find topic `single'": + TestUtil.killServers() + sys.exit(1) + +status, out = icestorm.adminForReplica(2, "destroy single", terminateOnError=False) +if not re.search("ConnectionRefused", out): + TestUtil.killServers() + sys.exit(1) + +icestorm.startReplica(2, echo=False) + +status, out = icestorm.adminForReplica(2, "destroy single", terminateOnError=False) +if out != "error: couldn't find topic `single'": + TestUtil.killServers() + sys.exit(1) +print "ok" + +# Now test subscription/unsubscription on all replicas. + +icestorm.admin("create single") + +print "testing subscription across replicas...", +sys.stdout.flush() +runsub2() + +for replica in range(0, 3): + status, out = runsub2(replica, terminateOnError=False) + if out != "IceStorm::AlreadySubscribed": + print out + TestUtil.killServers() + sys.exit(1) +print "ok" + +print "testing unsubscription across replicas...", +sys.stdout.flush() +rununsub2() + +for replica in range(0, 3): + rununsub2(replica, terminateOnError=False) +print "ok" + +print "testing subscription without master...", +sys.stdout.flush() +icestorm.stopReplica(2) + +runsub2() + +for replica in range(0, 2): + status, out = runsub2(replica, terminateOnError=False) + if out != "IceStorm::AlreadySubscribed": + TestUtil.killServers() + sys.exit(1) + +status, out = runsub2(2, terminateOnError=False) +if not re.search("ConnectionRefused", out): + TestUtil.killServers() + sys.exit(1) + +icestorm.startReplica(2, echo=False) + +status, out = runsub2(2, terminateOnError=False) +if out != "IceStorm::AlreadySubscribed": + TestUtil.killServers() + sys.exit(1) +print "ok" + +print "testing unsubscription without master...", +sys.stdout.flush() +icestorm.stopReplica(2) + +rununsub2() + +for replica in range(0, 2): + rununsub2(replica, terminateOnError=False) + +status, out = rununsub2(2, terminateOnError=False) +if not re.search("ConnectionRefused", out): + TestUtil.killServers() + sys.exit(1) + +icestorm.startReplica(2, echo=False) + +rununsub2(2) +print "ok" + +print "testing subscription without replica...", +sys.stdout.flush() +icestorm.stopReplica(0) + +runsub2() + +for replica in range(1, 3): + status, out = runsub2(replica, terminateOnError=False) + if out != "IceStorm::AlreadySubscribed": + TestUtil.killServers() + sys.exit(1) + +status, out = runsub2(0, terminateOnError=False) +if not re.search("ConnectionRefused", out): + TestUtil.killServers() + sys.exit(1) + +icestorm.startReplica(0, echo=False) + +status, out = runsub2(0, terminateOnError=False) +if out != "IceStorm::AlreadySubscribed": + TestUtil.killServers() + sys.exit(1) +print "ok" + +print "testing unsubscription without replica...", +sys.stdout.flush() +icestorm.stopReplica(0) + +rununsub2() + +for replica in range(1, 3): + rununsub2(replica, terminateOnError=False) + +status, out = rununsub2(0, terminateOnError=False) +if not re.search("ConnectionRefused", out): + TestUtil.killServers() + sys.exit(1) + +icestorm.startReplica(0, echo=False) + +rununsub2(0) +print "ok" + +# All replicas are running + +print "running twoway subscription test...", +sys.stdout.flush() +runtest("twoway", icestorm.reference()) +print "ok" + +print "running ordered subscription test...", +sys.stdout.flush() +runtest("ordered", icestorm.reference()) +print "ok" + +icestorm.stopReplica(2) + +print "running twoway, ordered subscription test without master...", +sys.stdout.flush() +runtest("twoway", icestorm.reference()) +runtest("ordered", icestorm.reference()) +print "ok" + +icestorm.startReplica(2, echo = False) +icestorm.stopReplica(0) + +print "running twoway, ordered subscription test without replica...", +sys.stdout.flush() +runtest("twoway", icestorm.reference()) +runtest("ordered", icestorm.reference()) +print "ok" + +icestorm.startReplica(0, echo = False) + +print "running cycle publishing test...", +sys.stdout.flush() +runtest("twoway", icestorm.reference(), pubopt=" --cycle") +print "ok" + +print "stopping replicas...", +sys.stdout.flush() +icestorm.stop() +print "ok" + +if TestUtil.serverStatus(): + TestUtil.killServers() + sys.exit(1) + +sys.exit(0) diff --git a/cpp/test/IceStorm/repgrid/.depend b/cpp/test/IceStorm/repgrid/.depend new file mode 100644 index 00000000000..2cc42aa7fed --- /dev/null +++ b/cpp/test/IceStorm/repgrid/.depend @@ -0,0 +1,4 @@ +Single$(OBJEXT): Single.cpp Single.h $(includedir)/Ice/LocalObjectF.h $(includedir)/IceUtil/Shared.h $(includedir)/IceUtil/Config.h $(includedir)/IceUtil/Mutex.h $(includedir)/IceUtil/Lock.h $(includedir)/IceUtil/ThreadException.h $(includedir)/IceUtil/Exception.h $(includedir)/IceUtil/Time.h $(includedir)/Ice/Handle.h $(includedir)/IceUtil/Handle.h $(includedir)/Ice/Config.h $(includedir)/Ice/ProxyHandle.h $(includedir)/Ice/ProxyF.h $(includedir)/Ice/ObjectF.h $(includedir)/Ice/GCCountMap.h $(includedir)/Ice/GCShared.h $(includedir)/Ice/Exception.h $(includedir)/Ice/LocalObject.h $(includedir)/Ice/Proxy.h $(includedir)/Ice/ProxyFactoryF.h $(includedir)/Ice/ConnectionIF.h $(includedir)/Ice/RequestHandlerF.h $(includedir)/Ice/EndpointIF.h $(includedir)/Ice/Endpoint.h $(includedir)/Ice/UndefSysMacros.h $(includedir)/Ice/ObjectAdapterF.h $(includedir)/Ice/ReferenceF.h $(includedir)/Ice/OutgoingAsyncF.h $(includedir)/Ice/Current.h $(includedir)/Ice/ConnectionF.h $(includedir)/Ice/Identity.h $(includedir)/Ice/StreamF.h $(includedir)/Ice/CommunicatorF.h $(includedir)/Ice/Object.h $(includedir)/Ice/IncomingAsyncF.h $(includedir)/Ice/Outgoing.h $(includedir)/IceUtil/Monitor.h $(includedir)/IceUtil/Cond.h $(includedir)/Ice/InstanceF.h $(includedir)/Ice/BasicStream.h $(includedir)/Ice/ObjectFactoryF.h $(includedir)/Ice/Buffer.h $(includedir)/Ice/Protocol.h $(includedir)/Ice/StringConverter.h $(includedir)/IceUtil/Unicode.h $(includedir)/Ice/Incoming.h $(includedir)/Ice/ServantLocatorF.h $(includedir)/Ice/ServantManagerF.h $(includedir)/Ice/Direct.h $(includedir)/Ice/LocalException.h $(includedir)/Ice/BuiltinSequences.h $(includedir)/Ice/ObjectFactory.h $(includedir)/IceUtil/Iterator.h $(includedir)/IceUtil/ScopedArray.h +Client$(OBJEXT): Client.cpp $(includedir)/IceUtil/DisableWarnings.h $(includedir)/Ice/Ice.h $(includedir)/Ice/Initialize.h $(includedir)/Ice/CommunicatorF.h $(includedir)/Ice/LocalObjectF.h $(includedir)/IceUtil/Shared.h $(includedir)/IceUtil/Config.h $(includedir)/IceUtil/Mutex.h $(includedir)/IceUtil/Lock.h $(includedir)/IceUtil/ThreadException.h $(includedir)/IceUtil/Exception.h $(includedir)/IceUtil/Time.h $(includedir)/Ice/Handle.h $(includedir)/IceUtil/Handle.h $(includedir)/Ice/Config.h $(includedir)/Ice/ProxyHandle.h $(includedir)/Ice/ProxyF.h $(includedir)/Ice/ObjectF.h $(includedir)/Ice/GCCountMap.h $(includedir)/Ice/GCShared.h $(includedir)/Ice/Exception.h $(includedir)/Ice/LocalObject.h $(includedir)/Ice/UndefSysMacros.h $(includedir)/Ice/PropertiesF.h $(includedir)/Ice/Proxy.h $(includedir)/Ice/ProxyFactoryF.h $(includedir)/Ice/ConnectionIF.h $(includedir)/Ice/RequestHandlerF.h $(includedir)/Ice/EndpointIF.h $(includedir)/Ice/Endpoint.h $(includedir)/Ice/ObjectAdapterF.h $(includedir)/Ice/ReferenceF.h $(includedir)/Ice/OutgoingAsyncF.h $(includedir)/Ice/Current.h $(includedir)/Ice/ConnectionF.h $(includedir)/Ice/Identity.h $(includedir)/Ice/StreamF.h $(includedir)/Ice/Object.h $(includedir)/Ice/IncomingAsyncF.h $(includedir)/Ice/InstanceF.h $(includedir)/Ice/LoggerF.h $(includedir)/Ice/StatsF.h $(includedir)/Ice/StringConverter.h $(includedir)/Ice/BuiltinSequences.h $(includedir)/Ice/LocalException.h $(includedir)/Ice/Properties.h $(includedir)/Ice/Outgoing.h $(includedir)/IceUtil/Monitor.h $(includedir)/IceUtil/Cond.h $(includedir)/Ice/BasicStream.h $(includedir)/Ice/ObjectFactoryF.h $(includedir)/Ice/Buffer.h $(includedir)/Ice/Protocol.h $(includedir)/IceUtil/Unicode.h $(includedir)/Ice/OutgoingAsync.h $(includedir)/IceUtil/Timer.h $(includedir)/IceUtil/Thread.h $(includedir)/Ice/Incoming.h $(includedir)/Ice/ServantLocatorF.h $(includedir)/Ice/ServantManagerF.h $(includedir)/Ice/Direct.h $(includedir)/Ice/Logger.h $(includedir)/Ice/LoggerUtil.h $(includedir)/Ice/Stats.h $(includedir)/Ice/Communicator.h $(includedir)/Ice/RouterF.h $(includedir)/Ice/LocatorF.h $(includedir)/Ice/PluginF.h $(includedir)/Ice/ImplicitContextF.h $(includedir)/Ice/ObjectFactory.h $(includedir)/Ice/ObjectAdapter.h $(includedir)/Ice/FacetMap.h $(includedir)/Ice/ServantLocator.h $(includedir)/Ice/IncomingAsync.h $(includedir)/Ice/Process.h $(includedir)/Ice/Application.h $(includedir)/Ice/Connection.h $(includedir)/Ice/Functional.h $(includedir)/IceUtil/Functional.h $(includedir)/Ice/Stream.h $(includedir)/Ice/ImplicitContext.h $(includedir)/Ice/Locator.h $(includedir)/Ice/UserExceptionFactory.h $(includedir)/Ice/FactoryTable.h $(includedir)/Ice/FactoryTableDef.h $(includedir)/IceUtil/StaticMutex.h $(includedir)/Ice/UserExceptionFactoryF.h $(includedir)/Ice/ProcessF.h $(includedir)/Ice/Router.h $(includedir)/Ice/DispatchInterceptor.h $(includedir)/Ice/IconvStringConverter.h $(includedir)/IceStorm/IceStorm.h $(includedir)/Ice/SliceChecksumDict.h Single.h ../../include/TestCommon.h +Single.cpp: Single.ice +Single.ice: $(SLICE2CPP) $(SLICEPARSERLIB) diff --git a/cpp/test/IceStorm/repgrid/.gitignore b/cpp/test/IceStorm/repgrid/.gitignore new file mode 100644 index 00000000000..34ee77907e3 --- /dev/null +++ b/cpp/test/IceStorm/repgrid/.gitignore @@ -0,0 +1,10 @@ +// Generated by makegitignore.py + +// IMPORTANT: Do not edit this file -- any edits made here will be lost! +client +Single.cpp +Single.h +build.txt +db/node/* +db/registry/* +db/replica-1/* diff --git a/cpp/test/IceStorm/repgrid/Client.cpp b/cpp/test/IceStorm/repgrid/Client.cpp new file mode 100644 index 00000000000..1eadd23ea07 --- /dev/null +++ b/cpp/test/IceStorm/repgrid/Client.cpp @@ -0,0 +1,147 @@ +// ********************************************************************** +// +// Copyright (c) 2003-2007 ZeroC, Inc. All rights reserved. +// +// This copy of Ice is licensed to you under the terms described in the +// ICE_LICENSE file included in this distribution. +// +// ********************************************************************** + +#include <IceUtil/DisableWarnings.h> +#include <Ice/Ice.h> +#include <IceStorm/IceStorm.h> +#include <Single.h> +#include <TestCommon.h> + +using namespace std; +using namespace Ice; +using namespace IceStorm; +using namespace Test; + +class SingleI : public Single, public IceUtil::Monitor<IceUtil::Mutex> +{ +public: + + SingleI() : + _count(0) + { + } + + virtual void + event(int, const Current&) + { + Lock sync(*this); + if(++_count == 1000) + { + notify(); + } + } + + virtual void + waitForEvents() + { + Lock sync(*this); + IceUtil::Time timeout = IceUtil::Time::seconds(20); + while(_count < 1000) + { + if(!timedWait(timeout)) + { + test(false); + } + } + } + +private: + + int _count; +}; +typedef IceUtil::Handle<SingleI> SingleIPtr; + +int +run(int argc, char* argv[], const CommunicatorPtr& communicator) +{ + ObjectPrx base = communicator->stringToProxy("DemoIceStorm/TopicManager"); + IceStorm::TopicManagerPrx manager = IceStorm::TopicManagerPrx::checkedCast(base); + if(!manager) + { + cerr << argv[0] << ": `DemoIceStorm/TopicManager' is not running" << endl; + return EXIT_FAILURE; + } + + ObjectAdapterPtr adapter = communicator->createObjectAdapterWithEndpoints("SingleAdapter", "default:udp"); + + TopicPrx topic; + try + { + topic = manager->create("single"); + } + catch(const IceStorm::TopicExists& e) + { + cerr << argv[0] << ": TopicExists: " << e.name << endl; + return EXIT_FAILURE; + } + + // + // Create subscribers with different QoS. + // + SingleIPtr sub = new SingleI; + topic->subscribeAndGetPublisher(IceStorm::QoS(), adapter->addWithUUID(sub)); + + adapter->activate(); + + // Ensure that getPublisher & getNonReplicatedPublisher work + // correctly. + Ice::ObjectPrx p1 = topic->getPublisher(); + Ice::ObjectPrx p2 = topic->getNonReplicatedPublisher(); + test(p1->ice_getAdapterId() == "DemoIceStorm-PublishReplicaGroup"); + test(p2->ice_getAdapterId() == "DemoIceStorm-1.IceStormServiceName.IceStormServiceName.Publish" || + p2->ice_getAdapterId() == "DemoIceStorm-2.IceStormServiceName.IceStormServiceName.Publish" || + p2->ice_getAdapterId() == "DemoIceStorm-3.IceStormServiceName.IceStormServiceName.Publish"); + + // + // Get a publisher object, create a twoway proxy and then cast to + // a Single object. + // + SinglePrx single = SinglePrx::uncheckedCast(topic->getPublisher()->ice_twoway()); + for(int i = 0; i < 1000; ++i) + { + single->event(i); + } + + sub->waitForEvents(); + + return EXIT_SUCCESS; +} + +int +main(int argc, char* argv[]) +{ + int status; + CommunicatorPtr communicator; + + try + { + communicator = initialize(argc, argv); + status = run(argc, argv, communicator); + } + catch(const Exception& ex) + { + cerr << ex << endl; + status = EXIT_FAILURE; + } + + if(communicator) + { + try + { + communicator->destroy(); + } + catch(const Exception& ex) + { + cerr << ex << endl; + status = EXIT_FAILURE; + } + } + + return status; +} diff --git a/cpp/test/IceStorm/repgrid/Makefile b/cpp/test/IceStorm/repgrid/Makefile new file mode 100644 index 00000000000..ad363a9be57 --- /dev/null +++ b/cpp/test/IceStorm/repgrid/Makefile @@ -0,0 +1,38 @@ +# ********************************************************************** +# +# Copyright (c) 2003-2007 ZeroC, Inc. All rights reserved. +# +# This copy of Ice is licensed to you under the terms described in the +# ICE_LICENSE file included in this distribution. +# +# ********************************************************************** + +top_srcdir = ../../.. + +CLIENT = client + +TARGETS = $(CLIENT) + +OBJS = Single.o + +COBJS = Client.o + +SRCS = $(OBJS:.o=.cpp) \ + $(COBJS:.o=.cpp) + +SLICE_SRCS = Single.ice + +include $(top_srcdir)/config/Make.rules + +CPPFLAGS := -I. -I../../include $(CPPFLAGS) +LIBS := -lIceStorm $(LIBS) + +$(CLIENT): $(OBJS) $(COBJS) + rm -f $@ + $(CXX) $(LDFLAGS) -o $@ $(OBJS) $(COBJS) $(LIBS) + +clean:: + -rm -f build.txt + -rm -rf db/node/* db/registry/* db/replica-1/* + +include .depend diff --git a/cpp/test/IceStorm/repgrid/Makefile.mak b/cpp/test/IceStorm/repgrid/Makefile.mak new file mode 100644 index 00000000000..efc9e82ea1e --- /dev/null +++ b/cpp/test/IceStorm/repgrid/Makefile.mak @@ -0,0 +1,56 @@ +# ********************************************************************** +# +# Copyright (c) 2003-2007 ZeroC, Inc. All rights reserved. +# +# This copy of Ice is licensed to you under the terms described in the +# ICE_LICENSE file included in this distribution. +# +# ********************************************************************** + +top_srcdir = ..\..\.. + +CLIENT = client.exe + +TARGETS = $(CLIENT) + +OBJS = Single.obj + +COBJS = Client.obj + +SRCS = $(OBJS:.obj=.cpp) \ + $(COBJS:.obj=.cpp) + +!include $(top_srcdir)/config/Make.rules.mak + +CPPFLAGS = -I. -I../../include $(CPPFLAGS) -DWIN32_LEAN_AND_MEAN +LIBS = icestorm$(LIBSUFFIX).lib $(LIBS) + +!if "$(CPP_COMPILER)" != "BCC2006" && "$(OPTIMIZE)" != "yes" +CPDBFLAGS = /pdb:$(CLIENT:.exe=.pdb) +!endif + +$(CLIENT): $(OBJS) $(COBJS) + $(LINK) $(LD_EXEFLAGS) $(CPDBFLAGS) $(SETARGV) $(OBJS) $(COBJS) $(PREOUT)$@ $(PRELIBS)$(LIBS) + @if exist $@.manifest echo ^ ^ ^ Embedding manifest using $(MT) && \ + $(MT) -nologo -manifest $@.manifest -outputresource:$@;#1 && del /q $@.manifest + +!if "$(OPTIMIZE)" == "yes" + +all:: + @echo release > build.txt + +!else + +all:: + @echo debug > build.txt + +!endif + +clean:: + del /q build.txt + del /q Single.cpp Single.h + if exist db\node rmdir /s /q db\node + if exist db\registry rmdir /s /q db\registry + if exist db\replica-1 rmdir /s /q db\replica-1 + +!include .depend diff --git a/cpp/test/IceStorm/repgrid/Single.ice b/cpp/test/IceStorm/repgrid/Single.ice new file mode 100644 index 00000000000..ad3d711bb2b --- /dev/null +++ b/cpp/test/IceStorm/repgrid/Single.ice @@ -0,0 +1,23 @@ +// ********************************************************************** +// +// Copyright (c) 2003-2007 ZeroC, Inc. All rights reserved. +// +// This copy of Ice is licensed to you under the terms described in the +// ICE_LICENSE file included in this distribution. +// +// ********************************************************************** + +#ifndef SINGLE_ICE +#define SINGLE_ICE + +module Test +{ + +interface Single +{ + void event(int i); +}; + +}; + +#endif diff --git a/cpp/test/IceStorm/repgrid/application.xml b/cpp/test/IceStorm/repgrid/application.xml new file mode 100644 index 00000000000..a820d40f836 --- /dev/null +++ b/cpp/test/IceStorm/repgrid/application.xml @@ -0,0 +1,54 @@ +<icegrid> + + <application name="Test"> + + <server-template id="IceStormTemplate"> + <parameter name="index"/> + <parameter name="topic-manager-endpoints" default="default"/> + <parameter name="publish-endpoints" default="default"/> + <parameter name="node-endpoints" default="default"/> + <parameter name="instance-name"/> + + <icebox id="${instance-name}-${index}" exe="${icebox.exe}" activation="on-demand"> + + <service name="IceStormServiceName" entry="IceStormService,33:createIceStorm"> + + <dbenv name="${service}"/> + + <adapter name="${service}.TopicManager" + endpoints="${topic-manager-endpoints}" + replica-group="${instance-name}-TopicManagerReplicaGroup"/> + + <adapter name="${service}.Publish" + endpoints="${publish-endpoints}" + replica-group="${instance-name}-PublishReplicaGroup"/> + + <adapter name="${service}.Node" + endpoints="${node-endpoints}"/> + + <properties> + <property name="${service}.InstanceName" value="${instance-name}"/> + <property name="${service}.NodeId" value="${index}"/> + </properties> + + </service> + + </icebox> + </server-template> + + <replica-group id="DemoIceStorm-PublishReplicaGroup"> + </replica-group> + + <replica-group id="DemoIceStorm-TopicManagerReplicaGroup"> + <object identity="DemoIceStorm/TopicManager" type="::IceStorm::TopicManager"/> + </replica-group> + + <node name="localnode"> + <server-instance template="IceStormTemplate" index="1" instance-name="DemoIceStorm"/> + <server-instance template="IceStormTemplate" index="2" instance-name="DemoIceStorm"/> + <server-instance template="IceStormTemplate" index="3" instance-name="DemoIceStorm"/> + </node> + + </application> + +</icegrid> diff --git a/cpp/test/IceStorm/repgrid/db/.gitignore b/cpp/test/IceStorm/repgrid/db/.gitignore new file mode 100644 index 00000000000..72e8ffc0db8 --- /dev/null +++ b/cpp/test/IceStorm/repgrid/db/.gitignore @@ -0,0 +1 @@ +* diff --git a/cpp/test/IceStorm/repgrid/run.py b/cpp/test/IceStorm/repgrid/run.py new file mode 100755 index 00000000000..df218ca6791 --- /dev/null +++ b/cpp/test/IceStorm/repgrid/run.py @@ -0,0 +1,32 @@ +#!/usr/bin/env python +# ********************************************************************** +# +# Copyright (c) 2003-2007 ZeroC, Inc. All rights reserved. +# +# This copy of Ice is licensed to you under the terms described in the +# ICE_LICENSE file included in this distribution. +# +# ********************************************************************** + +import os, sys + +for toplevel in [".", "..", "../..", "../../..", "../../../.."]: + toplevel = os.path.normpath(toplevel) + if os.path.exists(os.path.join(toplevel, "config", "TestUtil.py")): + break +else: + raise "can't find toplevel directory!" + +sys.path.append(os.path.join(toplevel, "config")) +import TestUtil +TestUtil.processCmdLine() +import IceGridAdmin + +name = os.path.join("IceStorm", "repgrid") +testdir = os.path.dirname(os.path.abspath(__file__)) + +# +# Test client/server without on demand activation. +# +IceGridAdmin.iceGridTest(testdir, name, "application.xml", "", '"icebox.exe=' + TestUtil.getIceBox(testdir) + '"') +sys.exit(0) diff --git a/cpp/test/IceStorm/repstress/.depend b/cpp/test/IceStorm/repstress/.depend new file mode 100644 index 00000000000..860f765dadf --- /dev/null +++ b/cpp/test/IceStorm/repstress/.depend @@ -0,0 +1,10 @@ +Single$(OBJEXT): Single.cpp Single.h $(includedir)/Ice/LocalObjectF.h $(includedir)/IceUtil/Shared.h $(includedir)/IceUtil/Config.h $(includedir)/IceUtil/Mutex.h $(includedir)/IceUtil/Lock.h $(includedir)/IceUtil/ThreadException.h $(includedir)/IceUtil/Exception.h $(includedir)/IceUtil/Time.h $(includedir)/Ice/Handle.h $(includedir)/IceUtil/Handle.h $(includedir)/Ice/Config.h $(includedir)/Ice/ProxyHandle.h $(includedir)/Ice/ProxyF.h $(includedir)/Ice/ObjectF.h $(includedir)/Ice/GCCountMap.h $(includedir)/Ice/GCShared.h $(includedir)/Ice/Exception.h $(includedir)/Ice/LocalObject.h $(includedir)/Ice/Proxy.h $(includedir)/Ice/ProxyFactoryF.h $(includedir)/Ice/ConnectionIF.h $(includedir)/Ice/RequestHandlerF.h $(includedir)/Ice/EndpointIF.h $(includedir)/Ice/Endpoint.h $(includedir)/Ice/UndefSysMacros.h $(includedir)/Ice/ObjectAdapterF.h $(includedir)/Ice/ReferenceF.h $(includedir)/Ice/OutgoingAsyncF.h $(includedir)/Ice/Current.h $(includedir)/Ice/ConnectionF.h $(includedir)/Ice/Identity.h $(includedir)/Ice/StreamF.h $(includedir)/Ice/CommunicatorF.h $(includedir)/Ice/Object.h $(includedir)/Ice/IncomingAsyncF.h $(includedir)/Ice/Outgoing.h $(includedir)/IceUtil/Monitor.h $(includedir)/IceUtil/Cond.h $(includedir)/Ice/InstanceF.h $(includedir)/Ice/BasicStream.h $(includedir)/Ice/ObjectFactoryF.h $(includedir)/Ice/Buffer.h $(includedir)/Ice/Protocol.h $(includedir)/Ice/StringConverter.h $(includedir)/IceUtil/Unicode.h $(includedir)/Ice/Incoming.h $(includedir)/Ice/ServantLocatorF.h $(includedir)/Ice/ServantManagerF.h $(includedir)/Ice/Direct.h $(includedir)/Ice/LocalException.h $(includedir)/Ice/BuiltinSequences.h $(includedir)/Ice/ObjectFactory.h $(includedir)/IceUtil/Iterator.h $(includedir)/IceUtil/ScopedArray.h +Controller$(OBJEXT): Controller.cpp Controller.h $(includedir)/Ice/LocalObjectF.h $(includedir)/IceUtil/Shared.h $(includedir)/IceUtil/Config.h $(includedir)/IceUtil/Mutex.h $(includedir)/IceUtil/Lock.h $(includedir)/IceUtil/ThreadException.h $(includedir)/IceUtil/Exception.h $(includedir)/IceUtil/Time.h $(includedir)/Ice/Handle.h $(includedir)/IceUtil/Handle.h $(includedir)/Ice/Config.h $(includedir)/Ice/ProxyHandle.h $(includedir)/Ice/ProxyF.h $(includedir)/Ice/ObjectF.h $(includedir)/Ice/GCCountMap.h $(includedir)/Ice/GCShared.h $(includedir)/Ice/Exception.h $(includedir)/Ice/LocalObject.h $(includedir)/Ice/Proxy.h $(includedir)/Ice/ProxyFactoryF.h $(includedir)/Ice/ConnectionIF.h $(includedir)/Ice/RequestHandlerF.h $(includedir)/Ice/EndpointIF.h $(includedir)/Ice/Endpoint.h $(includedir)/Ice/UndefSysMacros.h $(includedir)/Ice/ObjectAdapterF.h $(includedir)/Ice/ReferenceF.h $(includedir)/Ice/OutgoingAsyncF.h $(includedir)/Ice/Current.h $(includedir)/Ice/ConnectionF.h $(includedir)/Ice/Identity.h $(includedir)/Ice/StreamF.h $(includedir)/Ice/CommunicatorF.h $(includedir)/Ice/Object.h $(includedir)/Ice/IncomingAsyncF.h $(includedir)/Ice/Outgoing.h $(includedir)/IceUtil/Monitor.h $(includedir)/IceUtil/Cond.h $(includedir)/Ice/InstanceF.h $(includedir)/Ice/BasicStream.h $(includedir)/Ice/ObjectFactoryF.h $(includedir)/Ice/Buffer.h $(includedir)/Ice/Protocol.h $(includedir)/Ice/StringConverter.h $(includedir)/IceUtil/Unicode.h $(includedir)/Ice/Incoming.h $(includedir)/Ice/ServantLocatorF.h $(includedir)/Ice/ServantManagerF.h $(includedir)/Ice/Direct.h $(includedir)/Ice/LocalException.h $(includedir)/Ice/BuiltinSequences.h $(includedir)/Ice/ObjectFactory.h $(includedir)/IceUtil/Iterator.h $(includedir)/IceUtil/ScopedArray.h +Control$(OBJEXT): Control.cpp $(includedir)/Ice/Ice.h $(includedir)/Ice/Initialize.h $(includedir)/Ice/CommunicatorF.h $(includedir)/Ice/LocalObjectF.h $(includedir)/IceUtil/Shared.h $(includedir)/IceUtil/Config.h $(includedir)/IceUtil/Mutex.h $(includedir)/IceUtil/Lock.h $(includedir)/IceUtil/ThreadException.h $(includedir)/IceUtil/Exception.h $(includedir)/IceUtil/Time.h $(includedir)/Ice/Handle.h $(includedir)/IceUtil/Handle.h $(includedir)/Ice/Config.h $(includedir)/Ice/ProxyHandle.h $(includedir)/Ice/ProxyF.h $(includedir)/Ice/ObjectF.h $(includedir)/Ice/GCCountMap.h $(includedir)/Ice/GCShared.h $(includedir)/Ice/Exception.h $(includedir)/Ice/LocalObject.h $(includedir)/Ice/UndefSysMacros.h $(includedir)/Ice/PropertiesF.h $(includedir)/Ice/Proxy.h $(includedir)/Ice/ProxyFactoryF.h $(includedir)/Ice/ConnectionIF.h $(includedir)/Ice/RequestHandlerF.h $(includedir)/Ice/EndpointIF.h $(includedir)/Ice/Endpoint.h $(includedir)/Ice/ObjectAdapterF.h $(includedir)/Ice/ReferenceF.h $(includedir)/Ice/OutgoingAsyncF.h $(includedir)/Ice/Current.h $(includedir)/Ice/ConnectionF.h $(includedir)/Ice/Identity.h $(includedir)/Ice/StreamF.h $(includedir)/Ice/Object.h $(includedir)/Ice/IncomingAsyncF.h $(includedir)/Ice/InstanceF.h $(includedir)/Ice/LoggerF.h $(includedir)/Ice/StatsF.h $(includedir)/Ice/StringConverter.h $(includedir)/Ice/BuiltinSequences.h $(includedir)/Ice/LocalException.h $(includedir)/Ice/Properties.h $(includedir)/Ice/Outgoing.h $(includedir)/IceUtil/Monitor.h $(includedir)/IceUtil/Cond.h $(includedir)/Ice/BasicStream.h $(includedir)/Ice/ObjectFactoryF.h $(includedir)/Ice/Buffer.h $(includedir)/Ice/Protocol.h $(includedir)/IceUtil/Unicode.h $(includedir)/Ice/OutgoingAsync.h $(includedir)/IceUtil/Timer.h $(includedir)/IceUtil/Thread.h $(includedir)/Ice/Incoming.h $(includedir)/Ice/ServantLocatorF.h $(includedir)/Ice/ServantManagerF.h $(includedir)/Ice/Direct.h $(includedir)/Ice/Logger.h $(includedir)/Ice/LoggerUtil.h $(includedir)/Ice/Stats.h $(includedir)/Ice/Communicator.h $(includedir)/Ice/RouterF.h $(includedir)/Ice/LocatorF.h $(includedir)/Ice/PluginF.h $(includedir)/Ice/ImplicitContextF.h $(includedir)/Ice/ObjectFactory.h $(includedir)/Ice/ObjectAdapter.h $(includedir)/Ice/FacetMap.h $(includedir)/Ice/ServantLocator.h $(includedir)/Ice/IncomingAsync.h $(includedir)/Ice/Process.h $(includedir)/Ice/Application.h $(includedir)/Ice/Connection.h $(includedir)/Ice/Functional.h $(includedir)/IceUtil/Functional.h $(includedir)/Ice/Stream.h $(includedir)/Ice/ImplicitContext.h $(includedir)/Ice/Locator.h $(includedir)/Ice/UserExceptionFactory.h $(includedir)/Ice/FactoryTable.h $(includedir)/Ice/FactoryTableDef.h $(includedir)/IceUtil/StaticMutex.h $(includedir)/Ice/UserExceptionFactoryF.h $(includedir)/Ice/ProcessF.h $(includedir)/Ice/Router.h $(includedir)/Ice/DispatchInterceptor.h $(includedir)/Ice/IconvStringConverter.h Controller.h +Controller$(OBJEXT): Controller.cpp Controller.h $(includedir)/Ice/LocalObjectF.h $(includedir)/IceUtil/Shared.h $(includedir)/IceUtil/Config.h $(includedir)/IceUtil/Mutex.h $(includedir)/IceUtil/Lock.h $(includedir)/IceUtil/ThreadException.h $(includedir)/IceUtil/Exception.h $(includedir)/IceUtil/Time.h $(includedir)/Ice/Handle.h $(includedir)/IceUtil/Handle.h $(includedir)/Ice/Config.h $(includedir)/Ice/ProxyHandle.h $(includedir)/Ice/ProxyF.h $(includedir)/Ice/ObjectF.h $(includedir)/Ice/GCCountMap.h $(includedir)/Ice/GCShared.h $(includedir)/Ice/Exception.h $(includedir)/Ice/LocalObject.h $(includedir)/Ice/Proxy.h $(includedir)/Ice/ProxyFactoryF.h $(includedir)/Ice/ConnectionIF.h $(includedir)/Ice/RequestHandlerF.h $(includedir)/Ice/EndpointIF.h $(includedir)/Ice/Endpoint.h $(includedir)/Ice/UndefSysMacros.h $(includedir)/Ice/ObjectAdapterF.h $(includedir)/Ice/ReferenceF.h $(includedir)/Ice/OutgoingAsyncF.h $(includedir)/Ice/Current.h $(includedir)/Ice/ConnectionF.h $(includedir)/Ice/Identity.h $(includedir)/Ice/StreamF.h $(includedir)/Ice/CommunicatorF.h $(includedir)/Ice/Object.h $(includedir)/Ice/IncomingAsyncF.h $(includedir)/Ice/Outgoing.h $(includedir)/IceUtil/Monitor.h $(includedir)/IceUtil/Cond.h $(includedir)/Ice/InstanceF.h $(includedir)/Ice/BasicStream.h $(includedir)/Ice/ObjectFactoryF.h $(includedir)/Ice/Buffer.h $(includedir)/Ice/Protocol.h $(includedir)/Ice/StringConverter.h $(includedir)/IceUtil/Unicode.h $(includedir)/Ice/Incoming.h $(includedir)/Ice/ServantLocatorF.h $(includedir)/Ice/ServantManagerF.h $(includedir)/Ice/Direct.h $(includedir)/Ice/LocalException.h $(includedir)/Ice/BuiltinSequences.h $(includedir)/Ice/ObjectFactory.h $(includedir)/IceUtil/Iterator.h $(includedir)/IceUtil/ScopedArray.h +Publisher$(OBJEXT): Publisher.cpp $(includedir)/Ice/Ice.h $(includedir)/Ice/Initialize.h $(includedir)/Ice/CommunicatorF.h $(includedir)/Ice/LocalObjectF.h $(includedir)/IceUtil/Shared.h $(includedir)/IceUtil/Config.h $(includedir)/IceUtil/Mutex.h $(includedir)/IceUtil/Lock.h $(includedir)/IceUtil/ThreadException.h $(includedir)/IceUtil/Exception.h $(includedir)/IceUtil/Time.h $(includedir)/Ice/Handle.h $(includedir)/IceUtil/Handle.h $(includedir)/Ice/Config.h $(includedir)/Ice/ProxyHandle.h $(includedir)/Ice/ProxyF.h $(includedir)/Ice/ObjectF.h $(includedir)/Ice/GCCountMap.h $(includedir)/Ice/GCShared.h $(includedir)/Ice/Exception.h $(includedir)/Ice/LocalObject.h $(includedir)/Ice/UndefSysMacros.h $(includedir)/Ice/PropertiesF.h $(includedir)/Ice/Proxy.h $(includedir)/Ice/ProxyFactoryF.h $(includedir)/Ice/ConnectionIF.h $(includedir)/Ice/RequestHandlerF.h $(includedir)/Ice/EndpointIF.h $(includedir)/Ice/Endpoint.h $(includedir)/Ice/ObjectAdapterF.h $(includedir)/Ice/ReferenceF.h $(includedir)/Ice/OutgoingAsyncF.h $(includedir)/Ice/Current.h $(includedir)/Ice/ConnectionF.h $(includedir)/Ice/Identity.h $(includedir)/Ice/StreamF.h $(includedir)/Ice/Object.h $(includedir)/Ice/IncomingAsyncF.h $(includedir)/Ice/InstanceF.h $(includedir)/Ice/LoggerF.h $(includedir)/Ice/StatsF.h $(includedir)/Ice/StringConverter.h $(includedir)/Ice/BuiltinSequences.h $(includedir)/Ice/LocalException.h $(includedir)/Ice/Properties.h $(includedir)/Ice/Outgoing.h $(includedir)/IceUtil/Monitor.h $(includedir)/IceUtil/Cond.h $(includedir)/Ice/BasicStream.h $(includedir)/Ice/ObjectFactoryF.h $(includedir)/Ice/Buffer.h $(includedir)/Ice/Protocol.h $(includedir)/IceUtil/Unicode.h $(includedir)/Ice/OutgoingAsync.h $(includedir)/IceUtil/Timer.h $(includedir)/IceUtil/Thread.h $(includedir)/Ice/Incoming.h $(includedir)/Ice/ServantLocatorF.h $(includedir)/Ice/ServantManagerF.h $(includedir)/Ice/Direct.h $(includedir)/Ice/Logger.h $(includedir)/Ice/LoggerUtil.h $(includedir)/Ice/Stats.h $(includedir)/Ice/Communicator.h $(includedir)/Ice/RouterF.h $(includedir)/Ice/LocatorF.h $(includedir)/Ice/PluginF.h $(includedir)/Ice/ImplicitContextF.h $(includedir)/Ice/ObjectFactory.h $(includedir)/Ice/ObjectAdapter.h $(includedir)/Ice/FacetMap.h $(includedir)/Ice/ServantLocator.h $(includedir)/Ice/IncomingAsync.h $(includedir)/Ice/Process.h $(includedir)/Ice/Application.h $(includedir)/Ice/Connection.h $(includedir)/Ice/Functional.h $(includedir)/IceUtil/Functional.h $(includedir)/Ice/Stream.h $(includedir)/Ice/ImplicitContext.h $(includedir)/Ice/Locator.h $(includedir)/Ice/UserExceptionFactory.h $(includedir)/Ice/FactoryTable.h $(includedir)/Ice/FactoryTableDef.h $(includedir)/IceUtil/StaticMutex.h $(includedir)/Ice/UserExceptionFactoryF.h $(includedir)/Ice/ProcessF.h $(includedir)/Ice/Router.h $(includedir)/Ice/DispatchInterceptor.h $(includedir)/Ice/IconvStringConverter.h $(includedir)/IceUtil/IceUtil.h $(includedir)/IceUtil/AbstractMutex.h $(includedir)/IceUtil/Cache.h $(includedir)/IceUtil/CountDownLatch.h $(includedir)/IceUtil/CtrlCHandler.h $(includedir)/IceUtil/RWRecMutex.h $(includedir)/IceUtil/RecMutex.h $(includedir)/IceUtil/UUID.h $(includedir)/IceStorm/IceStorm.h $(includedir)/Ice/SliceChecksumDict.h Single.h Controller.h +Subscriber$(OBJEXT): Subscriber.cpp $(includedir)/IceUtil/DisableWarnings.h $(includedir)/IceUtil/IceUtil.h $(includedir)/IceUtil/Config.h $(includedir)/IceUtil/AbstractMutex.h $(includedir)/IceUtil/Lock.h $(includedir)/IceUtil/ThreadException.h $(includedir)/IceUtil/Exception.h $(includedir)/IceUtil/Time.h $(includedir)/IceUtil/Cache.h $(includedir)/IceUtil/Handle.h $(includedir)/IceUtil/Mutex.h $(includedir)/IceUtil/CountDownLatch.h $(includedir)/IceUtil/Cond.h $(includedir)/IceUtil/CtrlCHandler.h $(includedir)/IceUtil/Functional.h $(includedir)/IceUtil/Monitor.h $(includedir)/IceUtil/RWRecMutex.h $(includedir)/IceUtil/Thread.h $(includedir)/IceUtil/Shared.h $(includedir)/IceUtil/RecMutex.h $(includedir)/IceUtil/StaticMutex.h $(includedir)/IceUtil/Timer.h $(includedir)/IceUtil/UUID.h $(includedir)/IceUtil/Unicode.h $(includedir)/Ice/Ice.h $(includedir)/Ice/Initialize.h $(includedir)/Ice/CommunicatorF.h $(includedir)/Ice/LocalObjectF.h $(includedir)/Ice/Handle.h $(includedir)/Ice/Config.h $(includedir)/Ice/ProxyHandle.h $(includedir)/Ice/ProxyF.h $(includedir)/Ice/ObjectF.h $(includedir)/Ice/GCCountMap.h $(includedir)/Ice/GCShared.h $(includedir)/Ice/Exception.h $(includedir)/Ice/LocalObject.h $(includedir)/Ice/UndefSysMacros.h $(includedir)/Ice/PropertiesF.h $(includedir)/Ice/Proxy.h $(includedir)/Ice/ProxyFactoryF.h $(includedir)/Ice/ConnectionIF.h $(includedir)/Ice/RequestHandlerF.h $(includedir)/Ice/EndpointIF.h $(includedir)/Ice/Endpoint.h $(includedir)/Ice/ObjectAdapterF.h $(includedir)/Ice/ReferenceF.h $(includedir)/Ice/OutgoingAsyncF.h $(includedir)/Ice/Current.h $(includedir)/Ice/ConnectionF.h $(includedir)/Ice/Identity.h $(includedir)/Ice/StreamF.h $(includedir)/Ice/Object.h $(includedir)/Ice/IncomingAsyncF.h $(includedir)/Ice/InstanceF.h $(includedir)/Ice/LoggerF.h $(includedir)/Ice/StatsF.h $(includedir)/Ice/StringConverter.h $(includedir)/Ice/BuiltinSequences.h $(includedir)/Ice/LocalException.h $(includedir)/Ice/Properties.h $(includedir)/Ice/Outgoing.h $(includedir)/Ice/BasicStream.h $(includedir)/Ice/ObjectFactoryF.h $(includedir)/Ice/Buffer.h $(includedir)/Ice/Protocol.h $(includedir)/Ice/OutgoingAsync.h $(includedir)/Ice/Incoming.h $(includedir)/Ice/ServantLocatorF.h $(includedir)/Ice/ServantManagerF.h $(includedir)/Ice/Direct.h $(includedir)/Ice/Logger.h $(includedir)/Ice/LoggerUtil.h $(includedir)/Ice/Stats.h $(includedir)/Ice/Communicator.h $(includedir)/Ice/RouterF.h $(includedir)/Ice/LocatorF.h $(includedir)/Ice/PluginF.h $(includedir)/Ice/ImplicitContextF.h $(includedir)/Ice/ObjectFactory.h $(includedir)/Ice/ObjectAdapter.h $(includedir)/Ice/FacetMap.h $(includedir)/Ice/ServantLocator.h $(includedir)/Ice/IncomingAsync.h $(includedir)/Ice/Process.h $(includedir)/Ice/Application.h $(includedir)/Ice/Connection.h $(includedir)/Ice/Functional.h $(includedir)/Ice/Stream.h $(includedir)/Ice/ImplicitContext.h $(includedir)/Ice/Locator.h $(includedir)/Ice/UserExceptionFactory.h $(includedir)/Ice/FactoryTable.h $(includedir)/Ice/FactoryTableDef.h $(includedir)/Ice/UserExceptionFactoryF.h $(includedir)/Ice/ProcessF.h $(includedir)/Ice/Router.h $(includedir)/Ice/DispatchInterceptor.h $(includedir)/Ice/IconvStringConverter.h $(includedir)/IceStorm/IceStorm.h $(includedir)/Ice/SliceChecksumDict.h Single.h Controller.h ../../include/TestCommon.h +Single.cpp: Single.ice +Controller.cpp: Controller.ice +Single.ice: $(SLICE2CPP) $(SLICEPARSERLIB) +Controller.ice: $(SLICE2CPP) $(SLICEPARSERLIB) diff --git a/cpp/test/IceStorm/repstress/.gitignore b/cpp/test/IceStorm/repstress/.gitignore new file mode 100644 index 00000000000..3326cff4756 --- /dev/null +++ b/cpp/test/IceStorm/repstress/.gitignore @@ -0,0 +1,14 @@ +// Generated by makegitignore.py + +// IMPORTANT: Do not edit this file -- any edits made here will be lost! +publisher +subscriber +control +Single.cpp +Controller.cpp +Single.h +Controller.h +build.txt +0.db/* +1.db/* +2.db/* diff --git a/cpp/test/IceStorm/repstress/0.db/.gitignore b/cpp/test/IceStorm/repstress/0.db/.gitignore new file mode 100644 index 00000000000..72e8ffc0db8 --- /dev/null +++ b/cpp/test/IceStorm/repstress/0.db/.gitignore @@ -0,0 +1 @@ +* diff --git a/cpp/test/IceStorm/repstress/1.db/.gitignore b/cpp/test/IceStorm/repstress/1.db/.gitignore new file mode 100644 index 00000000000..72e8ffc0db8 --- /dev/null +++ b/cpp/test/IceStorm/repstress/1.db/.gitignore @@ -0,0 +1 @@ +* diff --git a/cpp/test/IceStorm/repstress/2.db/.gitignore b/cpp/test/IceStorm/repstress/2.db/.gitignore new file mode 100644 index 00000000000..72e8ffc0db8 --- /dev/null +++ b/cpp/test/IceStorm/repstress/2.db/.gitignore @@ -0,0 +1 @@ +* diff --git a/cpp/test/IceStorm/repstress/Control.cpp b/cpp/test/IceStorm/repstress/Control.cpp new file mode 100644 index 00000000000..8234b826f1b --- /dev/null +++ b/cpp/test/IceStorm/repstress/Control.cpp @@ -0,0 +1,63 @@ +// ********************************************************************** +// +// Copyright (c) 2003-2007 ZeroC, Inc. All rights reserved. +// +// This copy of Ice is licensed to you under the terms described in the +// ICE_LICENSE file included in this distribution. +// +// ********************************************************************** + +#include <Ice/Ice.h> +#include <Controller.h> + +using namespace std; +using namespace Ice; +using namespace Test; + +int +run(int argc, char* argv[], const CommunicatorPtr& communicator) +{ + if(argc < 2) + { + cerr << "Usage: " << argv[0] << " proxy" << endl; + return EXIT_FAILURE; + } + + ControllerPrx control = ControllerPrx::uncheckedCast(communicator->stringToProxy(argv[1])); + control->stop(); + + return EXIT_SUCCESS; +} + +int +main(int argc, char* argv[]) +{ + int status; + CommunicatorPtr communicator; + + try + { + communicator = initialize(argc, argv); + status = run(argc, argv, communicator); + } + catch(const Exception& ex) + { + cerr << ex << endl; + status = EXIT_FAILURE; + } + + if(communicator) + { + try + { + communicator->destroy(); + } + catch(const Exception& ex) + { + cerr << ex << endl; + status = EXIT_FAILURE; + } + } + + return status; +} diff --git a/cpp/test/IceStorm/repstress/Controller.ice b/cpp/test/IceStorm/repstress/Controller.ice new file mode 100644 index 00000000000..7af48747597 --- /dev/null +++ b/cpp/test/IceStorm/repstress/Controller.ice @@ -0,0 +1,24 @@ +// ********************************************************************** +// +// Copyright (c) 2003-2007 ZeroC, Inc. All rights reserved. +// +// This copy of Ice is licensed to you under the terms described in the +// ICE_LICENSE file included in this distribution. +// +// ********************************************************************** + +#ifndef CONTROLLER_ICE +#define CONTROLLER_ICE + +module Test +{ + +interface Controller +{ + void stop(); +}; + +}; + +#endif + diff --git a/cpp/test/IceStorm/repstress/Makefile b/cpp/test/IceStorm/repstress/Makefile new file mode 100644 index 00000000000..ef545c59e6e --- /dev/null +++ b/cpp/test/IceStorm/repstress/Makefile @@ -0,0 +1,59 @@ +# ********************************************************************** +# +# Copyright (c) 2003-2007 ZeroC, Inc. All rights reserved. +# +# This copy of Ice is licensed to you under the terms described in the +# ICE_LICENSE file included in this distribution. +# +# ********************************************************************** + +top_srcdir = ../../.. + +PUBLISHER = publisher +SUBSCRIBER = subscriber +CONTROL = control + +TARGETS = $(PUBLISHER) $(SUBSCRIBER) $(CONTROL) + +OBJS = Single.o \ + Controller.o + +POBJS = Publisher.o + +SOBJS = Subscriber.o + +COBJS = Control.o \ + Controller.o + +SRCS = $(OBJS:.o=.cpp) \ + $(COBJS:.o=.cpp) \ + $(POBJS:.o=.cpp) \ + $(SOBJS:.o=.cpp) + +SLICE_SRCS = Single.ice \ + Controller.ice + +include $(top_srcdir)/config/Make.rules + +CPPFLAGS := -I. -I../../include $(CPPFLAGS) +LIBS := -lIceStorm $(LIBS) + +$(PUBLISHER): $(OBJS) $(POBJS) + rm -f $@ + $(CXX) $(LDFLAGS) -o $@ $(OBJS) $(POBJS) $(LIBS) + +$(SUBSCRIBER): $(OBJS) $(SOBJS) + rm -f $@ + $(CXX) $(LDFLAGS) -o $@ $(OBJS) $(SOBJS) $(LIBS) + +$(CONTROL): $(COBJS) + rm -f $@ + $(CXX) $(LDFLAGS) -o $@ $(COBJS) $(LIBS) + +clean:: + -rm -f build.txt + -rm -f 0.db/* + -rm -f 1.db/* + -rm -f 2.db/* + +include .depend diff --git a/cpp/test/IceStorm/repstress/Makefile.mak b/cpp/test/IceStorm/repstress/Makefile.mak new file mode 100644 index 00000000000..57024e2910b --- /dev/null +++ b/cpp/test/IceStorm/repstress/Makefile.mak @@ -0,0 +1,78 @@ +# ********************************************************************** +# +# Copyright (c) 2003-2007 ZeroC, Inc. All rights reserved. +# +# This copy of Ice is licensed to you under the terms described in the +# ICE_LICENSE file included in this distribution. +# +# ********************************************************************** + +top_srcdir = ..\..\.. + +PUBLISHER = publisher.exe +SUBSCRIBER = subscriber.exe +CONTROL = control.exe + +TARGETS = $(PUBLISHER) $(SUBSCRIBER) $(CONTROL) + +OBJS = Single.obj \ + Controller.obj + +POBJS = Publisher.obj + +SOBJS = Subscriber.obj + +COBJS = Control.obj + +SRCS = $(OBJS:.obj=.cpp) \ + $(POBJS:.obj=.cpp) \ + $(SOBJS:.obj=.cpp) \ + $(COBJS:.obj=.cpp) + +!include $(top_srcdir)/config/Make.rules.mak + +CPPFLAGS = -I. -I../../include $(CPPFLAGS) -DWIN32_LEAN_AND_MEAN +LIBS = icestorm$(LIBSUFFIX).lib $(LIBS) + +!if "$(CPP_COMPILER)" != "BCC2006" && "$(OPTIMIZE)" != "yes" +PPDBFLAGS = /pdb:$(PUBLISHER:.exe=.pdb) +SPDBFLAGS = /pdb:$(SUBSCRIBER:.exe=.pdb) +CPDBFLAGS = /pdb:$(CONTROL:.exe=.pdb) +!endif + +$(PUBLISHER): $(OBJS) $(POBJS) + $(LINK) $(LD_EXEFLAGS) $(PPDBFLAGS) $(SETARGV) $(OBJS) $(POBJS) $(PREOUT)$@ $(PRELIBS)$(LIBS) + @if exist $@.manifest echo ^ ^ ^ Embedding manifest using $(MT) && \ + $(MT) -nologo -manifest $@.manifest -outputresource:$@;#1 && del /q $@.manifest + +$(SUBSCRIBER): $(OBJS) $(SOBJS) + $(LINK) $(LD_EXEFLAGS) $(SPDBFLAGS) $(SETARGV) $(OBJS) $(SOBJS) $(PREOUT)$@ $(PRELIBS)$(LIBS) + @if exist $@.manifest echo ^ ^ ^ Embedding manifest using $(MT) && \ + $(MT) -nologo -manifest $@.manifest -outputresource:$@;#1 && del /q $@.manifest + +$(CONTROL): $(OBJS) $(COBJS) + $(LINK) $(LD_EXEFLAGS) $(CPDBFLAGS) $(SETARGV) $(OBJS) $(COBJS) $(PREOUT)$@ $(PRELIBS)$(LIBS) + @if exist $@.manifest echo ^ ^ ^ Embedding manifest using $(MT) && \ + $(MT) -nologo -manifest $@.manifest -outputresource:$@;#1 && del /q $@.manifest + +!if "$(OPTIMIZE)" == "yes" + +all:: + @echo release > build.txt + +!else + +all:: + @echo debug > build.txt + +!endif + +clean:: + del /q build.txt + del /q Single.cpp Single.h + del /q Controller.cpp Controller.h + for %f in (0.db\*) do if not %f == 0.db\.gitignore del /q %f + for %f in (1.db\*) do if not %f == 1.db\.gitignore del /q %f + for %f in (2.db\*) do if not %f == 2.db\.gitignore del /q %f + +!include .depend diff --git a/cpp/test/IceStorm/repstress/Publisher.cpp b/cpp/test/IceStorm/repstress/Publisher.cpp new file mode 100644 index 00000000000..36f33b04a18 --- /dev/null +++ b/cpp/test/IceStorm/repstress/Publisher.cpp @@ -0,0 +1,169 @@ +// ********************************************************************** +// +// Copyright (c) 2003-2007 ZeroC, Inc. All rights reserved. +// +// This copy of Ice is licensed to you under the terms described in the +// ICE_LICENSE file included in this distribution. +// +// ********************************************************************** + +#include <Ice/Ice.h> +#include <IceUtil/IceUtil.h> +#include <IceStorm/IceStorm.h> +#include <Single.h> +#include <Controller.h> + +using namespace std; +using namespace Ice; +using namespace IceStorm; +using namespace Test; + +class ControllerI : public Controller +{ +public: + + virtual void stop(const Ice::Current& c) + { + c.adapter->getCommunicator()->shutdown(); + } +}; + +class PublishThread : public IceUtil::Thread, public IceUtil::Mutex +{ +public: + + PublishThread(const SinglePrx& single) : + _single(single), + _published(0), + _destroy(false) + { + } + + virtual void run() + { + while(true) + { + { + Lock sync(*this); + if(_destroy) + { + cout << _published << endl; + break; + } + } + try + { + _single->event(_published); + IceUtil::ThreadControl::sleep(IceUtil::Time::milliSeconds(1)); + } + catch(const Ice::UnknownException&) + { + // This is expected if we publish to a replica that is + // going down. + continue; + } + ++_published; + } + } + + void destroy() + { + Lock sync(*this); + _destroy = true; + } + +private: + + const SinglePrx _single; + int _published; + bool _destroy; +}; +typedef IceUtil::Handle<PublishThread> PublishThreadPtr; + +int +run(int argc, char* argv[], const CommunicatorPtr& communicator) +{ + PropertiesPtr properties = communicator->getProperties(); + const char* managerProxyProperty = "IceStormAdmin.TopicManager.Default"; + string managerProxy = properties->getProperty(managerProxyProperty); + if(managerProxy.empty()) + { + cerr << argv[0] << ": property `" << managerProxyProperty << "' is not set" << endl; + return EXIT_FAILURE; + } + + IceStorm::TopicManagerPrx manager = IceStorm::TopicManagerPrx::checkedCast( + communicator->stringToProxy(managerProxy)); + if(!manager) + { + cerr << argv[0] << ": `" << managerProxy << "' is not running" << endl; + return EXIT_FAILURE; + } + + TopicPrx topic; + try + { + topic = manager->retrieve("single"); + } + catch(const NoSuchTopic& e) + { + cerr << argv[0] << ": NoSuchTopic: " << e.name << endl; + return EXIT_FAILURE; + + } + assert(topic); + + // + // Get a publisher object, create a twoway proxy, disable + // connection caching and then cast to a Single object. + // + SinglePrx single = SinglePrx::uncheckedCast(topic->getPublisher()->ice_twoway()->ice_connectionCached(false)); + + ObjectAdapterPtr adapter = communicator->createObjectAdapterWithEndpoints("ControllerAdapter", "default"); + Ice::ObjectPrx controller = adapter->addWithUUID(new ControllerI); + adapter->activate(); + cout << communicator->proxyToString(controller) << endl; + + PublishThreadPtr t = new PublishThread(single); + t->start(); + + communicator->waitForShutdown(); + + t->destroy(); + t->getThreadControl().join(); + + return EXIT_SUCCESS; +} + +int +main(int argc, char* argv[]) +{ + int status; + CommunicatorPtr communicator; + + try + { + communicator = initialize(argc, argv); + status = run(argc, argv, communicator); + } + catch(const Exception& ex) + { + cerr << ex << endl; + status = EXIT_FAILURE; + } + + if(communicator) + { + try + { + communicator->destroy(); + } + catch(const Exception& ex) + { + cerr << ex << endl; + status = EXIT_FAILURE; + } + } + + return status; +} diff --git a/cpp/test/IceStorm/repstress/Single.ice b/cpp/test/IceStorm/repstress/Single.ice new file mode 100644 index 00000000000..ad3d711bb2b --- /dev/null +++ b/cpp/test/IceStorm/repstress/Single.ice @@ -0,0 +1,23 @@ +// ********************************************************************** +// +// Copyright (c) 2003-2007 ZeroC, Inc. All rights reserved. +// +// This copy of Ice is licensed to you under the terms described in the +// ICE_LICENSE file included in this distribution. +// +// ********************************************************************** + +#ifndef SINGLE_ICE +#define SINGLE_ICE + +module Test +{ + +interface Single +{ + void event(int i); +}; + +}; + +#endif diff --git a/cpp/test/IceStorm/repstress/Subscriber.cpp b/cpp/test/IceStorm/repstress/Subscriber.cpp new file mode 100644 index 00000000000..1c1d8527ff9 --- /dev/null +++ b/cpp/test/IceStorm/repstress/Subscriber.cpp @@ -0,0 +1,162 @@ +// ********************************************************************** +// +// Copyright (c) 2003-2007 ZeroC, Inc. All rights reserved. +// +// This copy of Ice is licensed to you under the terms described in the +// ICE_LICENSE file included in this distribution. +// +// ********************************************************************** + +#include <IceUtil/DisableWarnings.h> +#include <IceUtil/IceUtil.h> +#include <Ice/Ice.h> +#include <IceStorm/IceStorm.h> +#include <Single.h> +#include <Controller.h> +#include <TestCommon.h> + +using namespace std; +using namespace Ice; +using namespace IceStorm; +using namespace Test; + +class ControllerI : public Controller +{ +public: + + virtual void stop(const Ice::Current& c) + { + c.adapter->getCommunicator()->shutdown(); + } +}; + +class SingleI : public Single, public IceUtil::Monitor<IceUtil::Mutex> +{ +public: + + SingleI() : + _nevents(0) + { + } + + virtual void + event(int, const Current& current) + { + Lock sync(*this); + ++_nevents; + } + + int + nevents() const + { + Lock sync(*this); + return _nevents; + } + +private: + + int _nevents; +}; +typedef IceUtil::Handle<SingleI> SingleIPtr; + +int +run(int argc, char* argv[], const CommunicatorPtr& communicator) +{ + PropertiesPtr properties = communicator->getProperties(); + const char* managerProxyProperty = "IceStormAdmin.TopicManager.Default"; + string managerProxy = properties->getProperty(managerProxyProperty); + if(managerProxy.empty()) + { + cerr << argv[0] << ": property `" << managerProxyProperty << "' is not set" << endl; + return EXIT_FAILURE; + } + + ObjectPrx base = communicator->stringToProxy(managerProxy); + IceStorm::TopicManagerPrx manager = IceStorm::TopicManagerPrx::checkedCast(base); + if(!manager) + { + cerr << argv[0] << ": `" << managerProxy << "' is not running" << endl; + return EXIT_FAILURE; + } + + ObjectAdapterPtr adapter = communicator->createObjectAdapterWithEndpoints("SingleAdapter", "default"); + + TopicPrx topic; + try + { + topic = manager->retrieve("single"); + } + catch(const IceStorm::NoSuchTopic& e) + { + cerr << argv[0] << ": NoSuchTopic: " << e.name << endl; + return EXIT_FAILURE; + } + + SingleIPtr sub = new SingleI(); + Ice::ObjectPrx prx = adapter->addWithUUID(sub); + Ice::ObjectPrx control = adapter->addWithUUID(new ControllerI); + + IceStorm::QoS qos; + + while(true) + { + try + { + topic->subscribeAndGetPublisher(qos, prx); + break; + } + // If we're already subscribed then we're done (previously we + // got an UnknownException which succeeded). + catch(const IceStorm::AlreadySubscribed&) + { + break; + } + // This can happen if the replica group loses the majority + // during subscription. In this case we retry. + catch(const Ice::UnknownException&) + { + } + } + + adapter->activate(); + cout << communicator->proxyToString(control) << endl; + + communicator->waitForShutdown(); + + cout << sub->nevents() << endl; + + return EXIT_SUCCESS; +} + +int +main(int argc, char* argv[]) +{ + int status; + CommunicatorPtr communicator; + + try + { + communicator = initialize(argc, argv); + status = run(argc, argv, communicator); + } + catch(const Exception& ex) + { + cerr << ex << endl; + status = EXIT_FAILURE; + } + + if(communicator) + { + try + { + communicator->destroy(); + } + catch(const Exception& ex) + { + cerr << ex << endl; + status = EXIT_FAILURE; + } + } + + return status; +} diff --git a/cpp/test/IceStorm/repstress/run.py b/cpp/test/IceStorm/repstress/run.py new file mode 100755 index 00000000000..27fe7acc1b6 --- /dev/null +++ b/cpp/test/IceStorm/repstress/run.py @@ -0,0 +1,169 @@ +#!/usr/bin/env python +# ********************************************************************** +# +# Copyright (c) 2003-2007 ZeroC, Inc. All rights reserved. +# +# This copy of Ice is licensed to you under the terms described in the +# ICE_LICENSE file included in this distribution. +# +# ********************************************************************** + +import os, sys, time, re + +for toplevel in [".", "..", "../..", "../../..", "../../../.."]: + toplevel = os.path.normpath(toplevel) + if os.path.exists(os.path.join(toplevel, "config", "TestUtil.py")): + break +else: + raise "can't find toplevel directory!" + +sys.path.append(os.path.join(toplevel, "config")) +import TestUtil +TestUtil.processCmdLine() +from threading import Thread + +name = os.path.join("IceStorm", "repstress") +testdir = os.path.dirname(os.path.abspath(__file__)) +publisher = os.path.join(testdir, "publisher") +subscriber = os.path.join(testdir, "subscriber") +control = os.path.join(testdir, "control") + +def printOutput(pipe): + try: + while True: + line = pipe.readline() + if not line: + break + print line, + sys.stdout.flush() + except IOError: + pass + +def captureOutput(pipe): + out = "" + try: + while True: + line = pipe.readline() + if not line: + break + out = out + line + except IOError: + pass + return out + +def runcontrol(proxy): + pipe = TestUtil.startClient(control, ' "' + proxy + '"') + printOutput(pipe) + return TestUtil.closePipe(pipe) + +import IceStormUtil + +icestorm = IceStormUtil.init(toplevel, testdir, "replicated", replicatedPublisher=True, additional = + ' --Ice.ServerIdleTime=0 ' + + ' --IceStorm.Election.MasterTimeout=2' + + ' --IceStorm.Election.ElectionTimeout=2' + + ' --IceStorm.Election.ResponseTimeout=2') +icestorm.start() + +print "creating topic...", +sys.stdout.flush() +icestorm.admin("create single") +print "ok" + +print "running subscriber...", +sys.stdout.flush() +subscriberPipe = TestUtil.startServer(subscriber, ' --Ice.ServerIdleTime=0 ' + icestorm.reference()) +TestUtil.getServerPid(subscriberPipe) +TestUtil.getAdapterReady(subscriberPipe, False) +subControl = subscriberPipe.readline().strip() +print "ok" + +print "running publisher...", +sys.stdout.flush() +publisherPipe = TestUtil.startServer(publisher, ' --Ice.ServerIdleTime=0 ' + icestorm.reference()) +TestUtil.getServerPid(publisherPipe) +TestUtil.getAdapterReady(publisherPipe, False) +pubControl = publisherPipe.readline().strip() +print "ok" + +time.sleep(2) + +for i in range(0, 3): + # 0, 1 + print "stopping replica 2 (0, 1 running)...", + sys.stdout.flush() + icestorm.stopReplica(2) + print "ok" + time.sleep(2) + + # 1, 2 + print "starting 2, stopping 0 (1, 2 running)...", + sys.stdout.flush() + icestorm.startReplica(2, echo=False) + icestorm.stopReplica(0) + print "ok" + # This waits for the replication to startup + #icestorm.admin("list") + time.sleep(2) + + # 0, 2 + print "starting 0, stopping 1 (0, 2 running)...", + sys.stdout.flush() + icestorm.startReplica(0, echo=False) + icestorm.stopReplica(1) + print "ok" + # This waits for the replication to startup + #icestorm.admin("list") + time.sleep(2) + + print "starting 1 (all running)...", + sys.stdout.flush() + icestorm.startReplica(1, echo=False) + print "ok" + # This waits for the replication to startup + #icestorm.admin("list") + + time.sleep(2) + +print "stopping publisher...", +sys.stdout.flush() +if runcontrol(pubControl): + printOutput(publisherPipe) + TestUtil.killServers() + sys.exit(1) +publisherCount = publisherPipe.readline().strip() +if TestUtil.closePipe(publisherPipe): + TestUtil.killServers() + sys.exit(1) +print "ok" + +print "stopping replicas...", +sys.stdout.flush() +icestorm.stop() +print "ok" + +print "stopping subscriber...", +sys.stdout.flush() +if runcontrol(subControl): + printOutput(subscriberPipe) + TestUtil.killServers() + sys.exit(1) +subscriberCount = subscriberPipe.readline().strip() +if TestUtil.closePipe(subscriberPipe): + TestUtil.killServers() + sys.exit(1) +print "ok" + +print "publisher published %s events, subscriber received %s events" % (publisherCount, subscriberCount) +#print "comparing counts...", +#sys.stdout.flush() +#if publisherCount != subscriberCount: + #TestUtil.killServers() + #sys.exit(1) +#print "ok" + +if TestUtil.serverStatus(): + TestUtil.killServers() + sys.exit(1) + +sys.exit(0) diff --git a/cpp/test/IceStorm/single/.depend b/cpp/test/IceStorm/single/.depend index e3debe71f99..f224334e1a5 100644 --- a/cpp/test/IceStorm/single/.depend +++ b/cpp/test/IceStorm/single/.depend @@ -1,5 +1,5 @@ -Single$(OBJEXT): Single.cpp Single.h $(includedir)/Ice/LocalObjectF.h $(includedir)/IceUtil/Shared.h $(includedir)/IceUtil/Config.h $(includedir)/Ice/Handle.h $(includedir)/IceUtil/Handle.h $(includedir)/IceUtil/Exception.h $(includedir)/Ice/Config.h $(includedir)/Ice/ProxyHandle.h $(includedir)/Ice/ProxyF.h $(includedir)/Ice/ObjectF.h $(includedir)/Ice/GCCountMap.h $(includedir)/Ice/GCShared.h $(includedir)/Ice/Exception.h $(includedir)/Ice/LocalObject.h $(includedir)/Ice/Proxy.h $(includedir)/IceUtil/Mutex.h $(includedir)/IceUtil/Lock.h $(includedir)/IceUtil/ThreadException.h $(includedir)/IceUtil/Time.h $(includedir)/Ice/ProxyFactoryF.h $(includedir)/Ice/ConnectionIF.h $(includedir)/Ice/RequestHandlerF.h $(includedir)/Ice/EndpointIF.h $(includedir)/Ice/Endpoint.h $(includedir)/Ice/UndefSysMacros.h $(includedir)/Ice/ObjectAdapterF.h $(includedir)/Ice/ReferenceF.h $(includedir)/Ice/OutgoingAsyncF.h $(includedir)/Ice/Current.h $(includedir)/Ice/ConnectionF.h $(includedir)/Ice/Identity.h $(includedir)/Ice/StreamF.h $(includedir)/Ice/CommunicatorF.h $(includedir)/Ice/Object.h $(includedir)/Ice/IncomingAsyncF.h $(includedir)/Ice/Outgoing.h $(includedir)/IceUtil/Monitor.h $(includedir)/IceUtil/Cond.h $(includedir)/Ice/InstanceF.h $(includedir)/Ice/BasicStream.h $(includedir)/Ice/ObjectFactoryF.h $(includedir)/Ice/Buffer.h $(includedir)/Ice/Protocol.h $(includedir)/Ice/StringConverter.h $(includedir)/IceUtil/Unicode.h $(includedir)/Ice/Incoming.h $(includedir)/Ice/ServantLocatorF.h $(includedir)/Ice/ServantManagerF.h $(includedir)/Ice/Direct.h $(includedir)/Ice/LocalException.h $(includedir)/Ice/BuiltinSequences.h $(includedir)/Ice/ObjectFactory.h $(includedir)/IceUtil/Iterator.h $(includedir)/IceUtil/ScopedArray.h -Publisher$(OBJEXT): Publisher.cpp $(includedir)/Ice/Ice.h $(includedir)/Ice/Initialize.h $(includedir)/Ice/CommunicatorF.h $(includedir)/Ice/LocalObjectF.h $(includedir)/IceUtil/Shared.h $(includedir)/IceUtil/Config.h $(includedir)/Ice/Handle.h $(includedir)/IceUtil/Handle.h $(includedir)/IceUtil/Exception.h $(includedir)/Ice/Config.h $(includedir)/Ice/ProxyHandle.h $(includedir)/Ice/ProxyF.h $(includedir)/Ice/ObjectF.h $(includedir)/Ice/GCCountMap.h $(includedir)/Ice/GCShared.h $(includedir)/Ice/Exception.h $(includedir)/Ice/LocalObject.h $(includedir)/Ice/UndefSysMacros.h $(includedir)/Ice/PropertiesF.h $(includedir)/Ice/Proxy.h $(includedir)/IceUtil/Mutex.h $(includedir)/IceUtil/Lock.h $(includedir)/IceUtil/ThreadException.h $(includedir)/IceUtil/Time.h $(includedir)/Ice/ProxyFactoryF.h $(includedir)/Ice/ConnectionIF.h $(includedir)/Ice/RequestHandlerF.h $(includedir)/Ice/EndpointIF.h $(includedir)/Ice/Endpoint.h $(includedir)/Ice/ObjectAdapterF.h $(includedir)/Ice/ReferenceF.h $(includedir)/Ice/OutgoingAsyncF.h $(includedir)/Ice/Current.h $(includedir)/Ice/ConnectionF.h $(includedir)/Ice/Identity.h $(includedir)/Ice/StreamF.h $(includedir)/Ice/Object.h $(includedir)/Ice/IncomingAsyncF.h $(includedir)/Ice/InstanceF.h $(includedir)/Ice/LoggerF.h $(includedir)/Ice/StatsF.h $(includedir)/Ice/StringConverter.h $(includedir)/Ice/BuiltinSequences.h $(includedir)/Ice/LocalException.h $(includedir)/Ice/Properties.h $(includedir)/Ice/Outgoing.h $(includedir)/IceUtil/Monitor.h $(includedir)/IceUtil/Cond.h $(includedir)/Ice/BasicStream.h $(includedir)/Ice/ObjectFactoryF.h $(includedir)/Ice/Buffer.h $(includedir)/Ice/Protocol.h $(includedir)/IceUtil/Unicode.h $(includedir)/Ice/OutgoingAsync.h $(includedir)/IceUtil/Timer.h $(includedir)/IceUtil/Thread.h $(includedir)/Ice/Incoming.h $(includedir)/Ice/ServantLocatorF.h $(includedir)/Ice/ServantManagerF.h $(includedir)/Ice/Direct.h $(includedir)/Ice/Logger.h $(includedir)/Ice/LoggerUtil.h $(includedir)/Ice/Stats.h $(includedir)/Ice/Communicator.h $(includedir)/Ice/RouterF.h $(includedir)/Ice/LocatorF.h $(includedir)/Ice/PluginF.h $(includedir)/Ice/ImplicitContextF.h $(includedir)/Ice/ObjectFactory.h $(includedir)/Ice/ObjectAdapter.h $(includedir)/Ice/FacetMap.h $(includedir)/Ice/ServantLocator.h $(includedir)/Ice/IncomingAsync.h $(includedir)/Ice/Process.h $(includedir)/Ice/Application.h $(includedir)/Ice/Connection.h $(includedir)/Ice/Functional.h $(includedir)/IceUtil/Functional.h $(includedir)/Ice/Stream.h $(includedir)/Ice/ImplicitContext.h $(includedir)/Ice/Locator.h $(includedir)/Ice/UserExceptionFactory.h $(includedir)/Ice/FactoryTable.h $(includedir)/Ice/FactoryTableDef.h $(includedir)/IceUtil/StaticMutex.h $(includedir)/Ice/UserExceptionFactoryF.h $(includedir)/Ice/ProcessF.h $(includedir)/Ice/Router.h $(includedir)/Ice/DispatchInterceptor.h $(includedir)/Ice/IconvStringConverter.h $(includedir)/IceStorm/IceStorm.h $(includedir)/Ice/SliceChecksumDict.h Single.h -Subscriber$(OBJEXT): Subscriber.cpp $(includedir)/IceUtil/DisableWarnings.h $(includedir)/Ice/Ice.h $(includedir)/Ice/Initialize.h $(includedir)/Ice/CommunicatorF.h $(includedir)/Ice/LocalObjectF.h $(includedir)/IceUtil/Shared.h $(includedir)/IceUtil/Config.h $(includedir)/Ice/Handle.h $(includedir)/IceUtil/Handle.h $(includedir)/IceUtil/Exception.h $(includedir)/Ice/Config.h $(includedir)/Ice/ProxyHandle.h $(includedir)/Ice/ProxyF.h $(includedir)/Ice/ObjectF.h $(includedir)/Ice/GCCountMap.h $(includedir)/Ice/GCShared.h $(includedir)/Ice/Exception.h $(includedir)/Ice/LocalObject.h $(includedir)/Ice/UndefSysMacros.h $(includedir)/Ice/PropertiesF.h $(includedir)/Ice/Proxy.h $(includedir)/IceUtil/Mutex.h $(includedir)/IceUtil/Lock.h $(includedir)/IceUtil/ThreadException.h $(includedir)/IceUtil/Time.h $(includedir)/Ice/ProxyFactoryF.h $(includedir)/Ice/ConnectionIF.h $(includedir)/Ice/RequestHandlerF.h $(includedir)/Ice/EndpointIF.h $(includedir)/Ice/Endpoint.h $(includedir)/Ice/ObjectAdapterF.h $(includedir)/Ice/ReferenceF.h $(includedir)/Ice/OutgoingAsyncF.h $(includedir)/Ice/Current.h $(includedir)/Ice/ConnectionF.h $(includedir)/Ice/Identity.h $(includedir)/Ice/StreamF.h $(includedir)/Ice/Object.h $(includedir)/Ice/IncomingAsyncF.h $(includedir)/Ice/InstanceF.h $(includedir)/Ice/LoggerF.h $(includedir)/Ice/StatsF.h $(includedir)/Ice/StringConverter.h $(includedir)/Ice/BuiltinSequences.h $(includedir)/Ice/LocalException.h $(includedir)/Ice/Properties.h $(includedir)/Ice/Outgoing.h $(includedir)/IceUtil/Monitor.h $(includedir)/IceUtil/Cond.h $(includedir)/Ice/BasicStream.h $(includedir)/Ice/ObjectFactoryF.h $(includedir)/Ice/Buffer.h $(includedir)/Ice/Protocol.h $(includedir)/IceUtil/Unicode.h $(includedir)/Ice/OutgoingAsync.h $(includedir)/IceUtil/Timer.h $(includedir)/IceUtil/Thread.h $(includedir)/Ice/Incoming.h $(includedir)/Ice/ServantLocatorF.h $(includedir)/Ice/ServantManagerF.h $(includedir)/Ice/Direct.h $(includedir)/Ice/Logger.h $(includedir)/Ice/LoggerUtil.h $(includedir)/Ice/Stats.h $(includedir)/Ice/Communicator.h $(includedir)/Ice/RouterF.h $(includedir)/Ice/LocatorF.h $(includedir)/Ice/PluginF.h $(includedir)/Ice/ImplicitContextF.h $(includedir)/Ice/ObjectFactory.h $(includedir)/Ice/ObjectAdapter.h $(includedir)/Ice/FacetMap.h $(includedir)/Ice/ServantLocator.h $(includedir)/Ice/IncomingAsync.h $(includedir)/Ice/Process.h $(includedir)/Ice/Application.h $(includedir)/Ice/Connection.h $(includedir)/Ice/Functional.h $(includedir)/IceUtil/Functional.h $(includedir)/Ice/Stream.h $(includedir)/Ice/ImplicitContext.h $(includedir)/Ice/Locator.h $(includedir)/Ice/UserExceptionFactory.h $(includedir)/Ice/FactoryTable.h $(includedir)/Ice/FactoryTableDef.h $(includedir)/IceUtil/StaticMutex.h $(includedir)/Ice/UserExceptionFactoryF.h $(includedir)/Ice/ProcessF.h $(includedir)/Ice/Router.h $(includedir)/Ice/DispatchInterceptor.h $(includedir)/Ice/IconvStringConverter.h $(includedir)/IceStorm/IceStorm.h $(includedir)/Ice/SliceChecksumDict.h Single.h ../../include/TestCommon.h +Single$(OBJEXT): Single.cpp Single.h $(includedir)/Ice/LocalObjectF.h $(includedir)/IceUtil/Shared.h $(includedir)/IceUtil/Config.h $(includedir)/IceUtil/Mutex.h $(includedir)/IceUtil/Lock.h $(includedir)/IceUtil/ThreadException.h $(includedir)/IceUtil/Exception.h $(includedir)/IceUtil/Time.h $(includedir)/Ice/Handle.h $(includedir)/IceUtil/Handle.h $(includedir)/Ice/Config.h $(includedir)/Ice/ProxyHandle.h $(includedir)/Ice/ProxyF.h $(includedir)/Ice/ObjectF.h $(includedir)/Ice/GCCountMap.h $(includedir)/Ice/GCShared.h $(includedir)/Ice/Exception.h $(includedir)/Ice/LocalObject.h $(includedir)/Ice/Proxy.h $(includedir)/Ice/ProxyFactoryF.h $(includedir)/Ice/ConnectionIF.h $(includedir)/Ice/RequestHandlerF.h $(includedir)/Ice/EndpointIF.h $(includedir)/Ice/Endpoint.h $(includedir)/Ice/UndefSysMacros.h $(includedir)/Ice/ObjectAdapterF.h $(includedir)/Ice/ReferenceF.h $(includedir)/Ice/OutgoingAsyncF.h $(includedir)/Ice/Current.h $(includedir)/Ice/ConnectionF.h $(includedir)/Ice/Identity.h $(includedir)/Ice/StreamF.h $(includedir)/Ice/CommunicatorF.h $(includedir)/Ice/Object.h $(includedir)/Ice/IncomingAsyncF.h $(includedir)/Ice/Outgoing.h $(includedir)/IceUtil/Monitor.h $(includedir)/IceUtil/Cond.h $(includedir)/Ice/InstanceF.h $(includedir)/Ice/BasicStream.h $(includedir)/Ice/ObjectFactoryF.h $(includedir)/Ice/Buffer.h $(includedir)/Ice/Protocol.h $(includedir)/Ice/StringConverter.h $(includedir)/IceUtil/Unicode.h $(includedir)/Ice/Incoming.h $(includedir)/Ice/ServantLocatorF.h $(includedir)/Ice/ServantManagerF.h $(includedir)/Ice/Direct.h $(includedir)/Ice/LocalException.h $(includedir)/Ice/BuiltinSequences.h $(includedir)/Ice/ObjectFactory.h $(includedir)/IceUtil/Iterator.h $(includedir)/IceUtil/ScopedArray.h +Publisher$(OBJEXT): Publisher.cpp $(includedir)/Ice/Ice.h $(includedir)/Ice/Initialize.h $(includedir)/Ice/CommunicatorF.h $(includedir)/Ice/LocalObjectF.h $(includedir)/IceUtil/Shared.h $(includedir)/IceUtil/Config.h $(includedir)/IceUtil/Mutex.h $(includedir)/IceUtil/Lock.h $(includedir)/IceUtil/ThreadException.h $(includedir)/IceUtil/Exception.h $(includedir)/IceUtil/Time.h $(includedir)/Ice/Handle.h $(includedir)/IceUtil/Handle.h $(includedir)/Ice/Config.h $(includedir)/Ice/ProxyHandle.h $(includedir)/Ice/ProxyF.h $(includedir)/Ice/ObjectF.h $(includedir)/Ice/GCCountMap.h $(includedir)/Ice/GCShared.h $(includedir)/Ice/Exception.h $(includedir)/Ice/LocalObject.h $(includedir)/Ice/UndefSysMacros.h $(includedir)/Ice/PropertiesF.h $(includedir)/Ice/Proxy.h $(includedir)/Ice/ProxyFactoryF.h $(includedir)/Ice/ConnectionIF.h $(includedir)/Ice/RequestHandlerF.h $(includedir)/Ice/EndpointIF.h $(includedir)/Ice/Endpoint.h $(includedir)/Ice/ObjectAdapterF.h $(includedir)/Ice/ReferenceF.h $(includedir)/Ice/OutgoingAsyncF.h $(includedir)/Ice/Current.h $(includedir)/Ice/ConnectionF.h $(includedir)/Ice/Identity.h $(includedir)/Ice/StreamF.h $(includedir)/Ice/Object.h $(includedir)/Ice/IncomingAsyncF.h $(includedir)/Ice/InstanceF.h $(includedir)/Ice/LoggerF.h $(includedir)/Ice/StatsF.h $(includedir)/Ice/StringConverter.h $(includedir)/Ice/BuiltinSequences.h $(includedir)/Ice/LocalException.h $(includedir)/Ice/Properties.h $(includedir)/Ice/Outgoing.h $(includedir)/IceUtil/Monitor.h $(includedir)/IceUtil/Cond.h $(includedir)/Ice/BasicStream.h $(includedir)/Ice/ObjectFactoryF.h $(includedir)/Ice/Buffer.h $(includedir)/Ice/Protocol.h $(includedir)/IceUtil/Unicode.h $(includedir)/Ice/OutgoingAsync.h $(includedir)/IceUtil/Timer.h $(includedir)/IceUtil/Thread.h $(includedir)/Ice/Incoming.h $(includedir)/Ice/ServantLocatorF.h $(includedir)/Ice/ServantManagerF.h $(includedir)/Ice/Direct.h $(includedir)/Ice/Logger.h $(includedir)/Ice/LoggerUtil.h $(includedir)/Ice/Stats.h $(includedir)/Ice/Communicator.h $(includedir)/Ice/RouterF.h $(includedir)/Ice/LocatorF.h $(includedir)/Ice/PluginF.h $(includedir)/Ice/ImplicitContextF.h $(includedir)/Ice/ObjectFactory.h $(includedir)/Ice/ObjectAdapter.h $(includedir)/Ice/FacetMap.h $(includedir)/Ice/ServantLocator.h $(includedir)/Ice/IncomingAsync.h $(includedir)/Ice/Process.h $(includedir)/Ice/Application.h $(includedir)/Ice/Connection.h $(includedir)/Ice/Functional.h $(includedir)/IceUtil/Functional.h $(includedir)/Ice/Stream.h $(includedir)/Ice/ImplicitContext.h $(includedir)/Ice/Locator.h $(includedir)/Ice/UserExceptionFactory.h $(includedir)/Ice/FactoryTable.h $(includedir)/Ice/FactoryTableDef.h $(includedir)/IceUtil/StaticMutex.h $(includedir)/Ice/UserExceptionFactoryF.h $(includedir)/Ice/ProcessF.h $(includedir)/Ice/Router.h $(includedir)/Ice/DispatchInterceptor.h $(includedir)/Ice/IconvStringConverter.h $(includedir)/IceStorm/IceStorm.h $(includedir)/Ice/SliceChecksumDict.h Single.h +Subscriber$(OBJEXT): Subscriber.cpp $(includedir)/IceUtil/DisableWarnings.h $(includedir)/Ice/Ice.h $(includedir)/Ice/Initialize.h $(includedir)/Ice/CommunicatorF.h $(includedir)/Ice/LocalObjectF.h $(includedir)/IceUtil/Shared.h $(includedir)/IceUtil/Config.h $(includedir)/IceUtil/Mutex.h $(includedir)/IceUtil/Lock.h $(includedir)/IceUtil/ThreadException.h $(includedir)/IceUtil/Exception.h $(includedir)/IceUtil/Time.h $(includedir)/Ice/Handle.h $(includedir)/IceUtil/Handle.h $(includedir)/Ice/Config.h $(includedir)/Ice/ProxyHandle.h $(includedir)/Ice/ProxyF.h $(includedir)/Ice/ObjectF.h $(includedir)/Ice/GCCountMap.h $(includedir)/Ice/GCShared.h $(includedir)/Ice/Exception.h $(includedir)/Ice/LocalObject.h $(includedir)/Ice/UndefSysMacros.h $(includedir)/Ice/PropertiesF.h $(includedir)/Ice/Proxy.h $(includedir)/Ice/ProxyFactoryF.h $(includedir)/Ice/ConnectionIF.h $(includedir)/Ice/RequestHandlerF.h $(includedir)/Ice/EndpointIF.h $(includedir)/Ice/Endpoint.h $(includedir)/Ice/ObjectAdapterF.h $(includedir)/Ice/ReferenceF.h $(includedir)/Ice/OutgoingAsyncF.h $(includedir)/Ice/Current.h $(includedir)/Ice/ConnectionF.h $(includedir)/Ice/Identity.h $(includedir)/Ice/StreamF.h $(includedir)/Ice/Object.h $(includedir)/Ice/IncomingAsyncF.h $(includedir)/Ice/InstanceF.h $(includedir)/Ice/LoggerF.h $(includedir)/Ice/StatsF.h $(includedir)/Ice/StringConverter.h $(includedir)/Ice/BuiltinSequences.h $(includedir)/Ice/LocalException.h $(includedir)/Ice/Properties.h $(includedir)/Ice/Outgoing.h $(includedir)/IceUtil/Monitor.h $(includedir)/IceUtil/Cond.h $(includedir)/Ice/BasicStream.h $(includedir)/Ice/ObjectFactoryF.h $(includedir)/Ice/Buffer.h $(includedir)/Ice/Protocol.h $(includedir)/IceUtil/Unicode.h $(includedir)/Ice/OutgoingAsync.h $(includedir)/IceUtil/Timer.h $(includedir)/IceUtil/Thread.h $(includedir)/Ice/Incoming.h $(includedir)/Ice/ServantLocatorF.h $(includedir)/Ice/ServantManagerF.h $(includedir)/Ice/Direct.h $(includedir)/Ice/Logger.h $(includedir)/Ice/LoggerUtil.h $(includedir)/Ice/Stats.h $(includedir)/Ice/Communicator.h $(includedir)/Ice/RouterF.h $(includedir)/Ice/LocatorF.h $(includedir)/Ice/PluginF.h $(includedir)/Ice/ImplicitContextF.h $(includedir)/Ice/ObjectFactory.h $(includedir)/Ice/ObjectAdapter.h $(includedir)/Ice/FacetMap.h $(includedir)/Ice/ServantLocator.h $(includedir)/Ice/IncomingAsync.h $(includedir)/Ice/Process.h $(includedir)/Ice/Application.h $(includedir)/Ice/Connection.h $(includedir)/Ice/Functional.h $(includedir)/IceUtil/Functional.h $(includedir)/Ice/Stream.h $(includedir)/Ice/ImplicitContext.h $(includedir)/Ice/Locator.h $(includedir)/Ice/UserExceptionFactory.h $(includedir)/Ice/FactoryTable.h $(includedir)/Ice/FactoryTableDef.h $(includedir)/IceUtil/StaticMutex.h $(includedir)/Ice/UserExceptionFactoryF.h $(includedir)/Ice/ProcessF.h $(includedir)/Ice/Router.h $(includedir)/Ice/DispatchInterceptor.h $(includedir)/Ice/IconvStringConverter.h $(includedir)/IceStorm/IceStorm.h $(includedir)/Ice/SliceChecksumDict.h Single.h ../../include/TestCommon.h Single.cpp: Single.ice Single.ice: $(SLICE2CPP) $(SLICEPARSERLIB) diff --git a/cpp/test/IceStorm/single/.gitignore b/cpp/test/IceStorm/single/.gitignore index e613056da1b..9d7c0709185 100644 --- a/cpp/test/IceStorm/single/.gitignore +++ b/cpp/test/IceStorm/single/.gitignore @@ -7,3 +7,6 @@ Single.cpp Single.h build.txt db/* +0.db/* +1.db/* +2.db/* diff --git a/cpp/test/IceStorm/single/0.db/.gitignore b/cpp/test/IceStorm/single/0.db/.gitignore new file mode 100644 index 00000000000..72e8ffc0db8 --- /dev/null +++ b/cpp/test/IceStorm/single/0.db/.gitignore @@ -0,0 +1 @@ +* diff --git a/cpp/test/IceStorm/single/1.db/.gitignore b/cpp/test/IceStorm/single/1.db/.gitignore new file mode 100644 index 00000000000..72e8ffc0db8 --- /dev/null +++ b/cpp/test/IceStorm/single/1.db/.gitignore @@ -0,0 +1 @@ +* diff --git a/cpp/test/IceStorm/single/2.db/.gitignore b/cpp/test/IceStorm/single/2.db/.gitignore new file mode 100644 index 00000000000..72e8ffc0db8 --- /dev/null +++ b/cpp/test/IceStorm/single/2.db/.gitignore @@ -0,0 +1 @@ +* diff --git a/cpp/test/IceStorm/single/Makefile b/cpp/test/IceStorm/single/Makefile index 05d3555ad1a..5c8ac4a17fb 100644 --- a/cpp/test/IceStorm/single/Makefile +++ b/cpp/test/IceStorm/single/Makefile @@ -42,5 +42,8 @@ $(SUBSCRIBER): $(OBJS) $(SOBJS) clean:: -rm -f build.txt -rm -f db/* + -rm -f 0.db/* + -rm -f 1.db/* + -rm -f 2.db/* include .depend diff --git a/cpp/test/IceStorm/single/Makefile.mak b/cpp/test/IceStorm/single/Makefile.mak index 77ef90090b1..86dad95ee73 100644 --- a/cpp/test/IceStorm/single/Makefile.mak +++ b/cpp/test/IceStorm/single/Makefile.mak @@ -61,5 +61,8 @@ clean:: del /q build.txt del /q Single.cpp Single.h for %f in (db\*) do if not %f == db\.gitignore del /q %f + for %f in (0.db\*) do if not %f == 0.db\.gitignore del /q %f + for %f in (1.db\*) do if not %f == 1.db\.gitignore del /q %f + for %f in (2.db\*) do if not %f == 2.db\.gitignore del /q %f !include .depend diff --git a/cpp/test/IceStorm/single/Publisher.cpp b/cpp/test/IceStorm/single/Publisher.cpp index d02ba062fd3..d42aed7ebcc 100644 --- a/cpp/test/IceStorm/single/Publisher.cpp +++ b/cpp/test/IceStorm/single/Publisher.cpp @@ -20,7 +20,7 @@ int run(int argc, char* argv[], const CommunicatorPtr& communicator) { PropertiesPtr properties = communicator->getProperties(); - const char* managerProxyProperty = "IceStorm.TopicManager.Proxy"; + const char* managerProxyProperty = "IceStormAdmin.TopicManager.Default"; string managerProxy = properties->getProperty(managerProxyProperty); if(managerProxy.empty()) { diff --git a/cpp/test/IceStorm/single/Subscriber.cpp b/cpp/test/IceStorm/single/Subscriber.cpp index 0c488976433..0fc922b887a 100644 --- a/cpp/test/IceStorm/single/Subscriber.cpp +++ b/cpp/test/IceStorm/single/Subscriber.cpp @@ -33,7 +33,6 @@ public: virtual void event(int i, const Current& current) { - if((_name == "default" || _name == "oneway" || _name == "batch" || _name == "datagram" || _name == "batch datagram") && current.requestId != 0) { @@ -108,7 +107,7 @@ int run(int argc, char* argv[], const CommunicatorPtr& communicator) { PropertiesPtr properties = communicator->getProperties(); - const char* managerProxyProperty = "IceStorm.TopicManager.Proxy"; + const char* managerProxyProperty = "IceStormAdmin.TopicManager.Default"; string managerProxy = properties->getProperty(managerProxyProperty); if(managerProxy.empty()) { @@ -176,7 +175,7 @@ run(int argc, char* argv[], const CommunicatorPtr& communicator) // Use a separate adapter to ensure a separate connection is used for the subscriber // (otherwise, if multiple UDP subscribers use the same connection we might get high // packet loss, see bug 1784). - ObjectAdapterPtr adpt = communicator->createObjectAdapterWithEndpoints("UdpAdater1", "udp"); + ObjectAdapterPtr adpt = communicator->createObjectAdapterWithEndpoints("UdpAdapter1", "udp"); subscribers.push_back(new SingleI(communicator, "datagram")); IceStorm::QoS qos; qos["reliability"] = "oneway"; @@ -187,7 +186,7 @@ run(int argc, char* argv[], const CommunicatorPtr& communicator) // Use a separate adapter to ensure a separate connection is used for the subscriber // (otherwise, if multiple UDP subscribers use the same connection we might get high // packet loss, see bug 1784). - ObjectAdapterPtr adpt = communicator->createObjectAdapterWithEndpoints("UdpAdater2", "udp"); + ObjectAdapterPtr adpt = communicator->createObjectAdapterWithEndpoints("UdpAdapter2", "udp"); subscribers.push_back(new SingleI(communicator, "batch datagram")); IceStorm::QoS qos; qos["reliability"] = "batch"; @@ -223,7 +222,7 @@ run(int argc, char* argv[], const CommunicatorPtr& communicator) // Use a separate adapter to ensure a separate connection is used for the subscriber // (otherwise, if multiple UDP subscribers use the same connection we might get high // packet loss, see bug 1784). - ObjectAdapterPtr adpt = communicator->createObjectAdapterWithEndpoints("UdpAdater3", "udp"); + ObjectAdapterPtr adpt = communicator->createObjectAdapterWithEndpoints("UdpAdapter3", "udp"); subscribers.push_back(new SingleI(communicator, "datagram")); topic->subscribeAndGetPublisher(IceStorm::QoS(), adpt->addWithUUID(subscribers.back())->ice_datagram()); adpt->activate(); @@ -232,7 +231,7 @@ run(int argc, char* argv[], const CommunicatorPtr& communicator) // Use a separate adapter to ensure a separate connection is used for the subscriber // (otherwise, if multiple UDP subscribers use the same connection we might get high // packet loss, see bug 1784). - ObjectAdapterPtr adpt = communicator->createObjectAdapterWithEndpoints("UdpAdater4", "udp"); + ObjectAdapterPtr adpt = communicator->createObjectAdapterWithEndpoints("UdpAdapter4", "udp"); subscribers.push_back(new SingleI(communicator, "batch datagram")); topic->subscribeAndGetPublisher(IceStorm::QoS(), adpt->addWithUUID(subscribers.back())->ice_batchDatagram()); adpt->activate(); diff --git a/cpp/test/IceStorm/single/run.py b/cpp/test/IceStorm/single/run.py index 01f378c25cf..1370ffe3f18 100755 --- a/cpp/test/IceStorm/single/run.py +++ b/cpp/test/IceStorm/single/run.py @@ -1,7 +1,7 @@ #!/usr/bin/env python # ********************************************************************** # -# Copyright (c) 2003-2008 ZeroC, Inc. All rights reserved. +# Copyright (c) 2003-2007 ZeroC, Inc. All rights reserved. # # This copy of Ice is licensed to you under the terms described in the # ICE_LICENSE file included in this distribution. @@ -25,83 +25,59 @@ TestUtil.processCmdLine() name = os.path.join("IceStorm", "single") testdir = os.path.dirname(os.path.abspath(__file__)) - -iceBox = TestUtil.getIceBox(testdir) -iceBoxAdmin = os.path.join(TestUtil.getBinDir(__file__), "iceboxadmin") -iceStormAdmin = os.path.join(TestUtil.getBinDir(__file__), "icestormadmin") - -iceBoxEndpoints = ' --IceBox.ServiceManager.Endpoints="default -p 12010"' - -iceStormService = " --IceBox.Service.IceStorm=IceStormService," + TestUtil.getIceSoVersion() + ":createIceStorm" + \ - ' --IceStorm.TopicManager.Endpoints="default -p 12011"' + \ - ' --IceStorm.Publish.Endpoints="default:udp"' + \ - " --IceBox.PrintServicesReady=IceStorm" + \ - " --IceBox.InheritProperties=1" -iceStormReference = ' --IceStorm.TopicManager.Proxy="IceStorm/TopicManager:default -p 12011"' - -dbHome = os.path.join(testdir, "db") -TestUtil.cleanDbDir(dbHome) -iceStormDBEnv=" --Freeze.DbEnv.IceStorm.DbHome=" + dbHome - -print "starting icestorm service...", -iceBoxPipe = TestUtil.startServer(iceBox, iceBoxEndpoints + iceStormService + iceStormDBEnv) -TestUtil.getServerPid(iceBoxPipe) -TestUtil.waitServiceReady(iceBoxPipe, "IceStorm") -print "ok" - -print "creating topic...", -iceStormAdminPipe = TestUtil.startClient(iceStormAdmin, iceStormReference + r' -e "create single" 2>&1') -iceStormAdminStatus = TestUtil.closePipe(iceStormAdminPipe) -if iceStormAdminStatus: - TestUtil.killServers() - sys.exit(1) -print "ok" - -publisher = os.path.join(testdir, "publisher") -subscriber = os.path.join(testdir, "subscriber") - -print "starting subscriber...", -subscriberPipe = TestUtil.startServer(subscriber, iceStormReference + " 2>&1") -TestUtil.getServerPid(subscriberPipe) -TestUtil.getAdapterReady(subscriberPipe, True, 5) -print "ok" - -# -# Start the publisher. This should publish 10 events which eventually -# causes subscriber to terminate. -# -print "starting publisher...", -publisherPipe = TestUtil.startClient(publisher, iceStormReference + " 2>&1") -print "ok" - -subscriberStatus = TestUtil.specificServerStatus(subscriberPipe, 30) -publisherStatus = TestUtil.closePipe(publisherPipe) - -# -# Destroy the topic. -# -print "destroying topic...", -iceStormAdminPipe = TestUtil.startClient(iceStormAdmin, iceStormReference + r' -e "destroy single" 2>&1') -iceStormAdminStatus = TestUtil.closePipe(iceStormAdminPipe) -if iceStormAdminStatus: - TestUtil.killServers() - sys.exit(1) -print "ok" - -# -# Shutdown icestorm. -# -print "shutting down icestorm service...", -iceBoxAdminPipe = TestUtil.startClient(iceBoxAdmin, ' --IceBoxAdmin.ServiceManager.Proxy="IceBox/ServiceManager:default -p 12010"' + \ - r' shutdown 2>&1') -iceBoxAdminStatus = TestUtil.closePipe(iceBoxAdminPipe) -if iceBoxAdminStatus: - TestUtil.killServers() - sys.exit(1) -print "ok" - -if TestUtil.serverStatus() or subscriberStatus or publisherStatus: - TestUtil.killServers() - sys.exit(1) +import IceStormUtil + +def dotest(type): + icestorm = IceStormUtil.init(toplevel, testdir, type) + + icestorm.start() + + print "creating topic...", + sys.stdout.flush() + icestorm.admin("create single") + print "ok" + + publisher = os.path.join(testdir, "publisher") + subscriber = os.path.join(testdir, "subscriber") + + print "starting subscriber...", + sys.stdout.flush() + subscriberPipe = TestUtil.startServer(subscriber, icestorm.reference()) + TestUtil.getServerPid(subscriberPipe) + TestUtil.getAdapterReady(subscriberPipe, True, 5) + print "ok" + + # + # Start the publisher. This should publish 10 events which eventually + # causes subscriber to terminate. + # + print "starting publisher...", + sys.stdout.flush() + publisherPipe = TestUtil.startClient(publisher, icestorm.reference()) + print "ok" + + subscriberStatus = TestUtil.specificServerStatus(subscriberPipe, 30) + publisherStatus = TestUtil.closePipe(publisherPipe) + + # + # Destroy the topic. + # + print "destroy topic...", + sys.stdout.flush() + icestorm.admin("destroy single") + print "ok" + + # + # Shutdown icestorm. + # + icestorm.stop() + + if TestUtil.serverStatus() or subscriberStatus or publisherStatus: + TestUtil.killServers() + sys.exit(1) + +dotest("persistent") +dotest("transient") +dotest("replicated") sys.exit(0) diff --git a/cpp/test/IceStorm/stress/.depend b/cpp/test/IceStorm/stress/.depend index 6c657c8fa0b..ab6268fb315 100644 --- a/cpp/test/IceStorm/stress/.depend +++ b/cpp/test/IceStorm/stress/.depend @@ -1,5 +1,5 @@ -Event$(OBJEXT): Event.cpp Event.h $(includedir)/Ice/LocalObjectF.h $(includedir)/IceUtil/Shared.h $(includedir)/IceUtil/Config.h $(includedir)/Ice/Handle.h $(includedir)/IceUtil/Handle.h $(includedir)/IceUtil/Exception.h $(includedir)/Ice/Config.h $(includedir)/Ice/ProxyHandle.h $(includedir)/Ice/ProxyF.h $(includedir)/Ice/ObjectF.h $(includedir)/Ice/GCCountMap.h $(includedir)/Ice/GCShared.h $(includedir)/Ice/Exception.h $(includedir)/Ice/LocalObject.h $(includedir)/Ice/Proxy.h $(includedir)/IceUtil/Mutex.h $(includedir)/IceUtil/Lock.h $(includedir)/IceUtil/ThreadException.h $(includedir)/IceUtil/Time.h $(includedir)/Ice/ProxyFactoryF.h $(includedir)/Ice/ConnectionIF.h $(includedir)/Ice/RequestHandlerF.h $(includedir)/Ice/EndpointIF.h $(includedir)/Ice/Endpoint.h $(includedir)/Ice/UndefSysMacros.h $(includedir)/Ice/ObjectAdapterF.h $(includedir)/Ice/ReferenceF.h $(includedir)/Ice/OutgoingAsyncF.h $(includedir)/Ice/Current.h $(includedir)/Ice/ConnectionF.h $(includedir)/Ice/Identity.h $(includedir)/Ice/StreamF.h $(includedir)/Ice/CommunicatorF.h $(includedir)/Ice/Object.h $(includedir)/Ice/IncomingAsyncF.h $(includedir)/Ice/Outgoing.h $(includedir)/IceUtil/Monitor.h $(includedir)/IceUtil/Cond.h $(includedir)/Ice/InstanceF.h $(includedir)/Ice/BasicStream.h $(includedir)/Ice/ObjectFactoryF.h $(includedir)/Ice/Buffer.h $(includedir)/Ice/Protocol.h $(includedir)/Ice/StringConverter.h $(includedir)/IceUtil/Unicode.h $(includedir)/Ice/Incoming.h $(includedir)/Ice/ServantLocatorF.h $(includedir)/Ice/ServantManagerF.h $(includedir)/Ice/Direct.h $(includedir)/Ice/LocalException.h $(includedir)/Ice/BuiltinSequences.h $(includedir)/Ice/ObjectFactory.h $(includedir)/IceUtil/Iterator.h $(includedir)/IceUtil/ScopedArray.h -Publisher$(OBJEXT): Publisher.cpp $(includedir)/Ice/Ice.h $(includedir)/Ice/Initialize.h $(includedir)/Ice/CommunicatorF.h $(includedir)/Ice/LocalObjectF.h $(includedir)/IceUtil/Shared.h $(includedir)/IceUtil/Config.h $(includedir)/Ice/Handle.h $(includedir)/IceUtil/Handle.h $(includedir)/IceUtil/Exception.h $(includedir)/Ice/Config.h $(includedir)/Ice/ProxyHandle.h $(includedir)/Ice/ProxyF.h $(includedir)/Ice/ObjectF.h $(includedir)/Ice/GCCountMap.h $(includedir)/Ice/GCShared.h $(includedir)/Ice/Exception.h $(includedir)/Ice/LocalObject.h $(includedir)/Ice/UndefSysMacros.h $(includedir)/Ice/PropertiesF.h $(includedir)/Ice/Proxy.h $(includedir)/IceUtil/Mutex.h $(includedir)/IceUtil/Lock.h $(includedir)/IceUtil/ThreadException.h $(includedir)/IceUtil/Time.h $(includedir)/Ice/ProxyFactoryF.h $(includedir)/Ice/ConnectionIF.h $(includedir)/Ice/RequestHandlerF.h $(includedir)/Ice/EndpointIF.h $(includedir)/Ice/Endpoint.h $(includedir)/Ice/ObjectAdapterF.h $(includedir)/Ice/ReferenceF.h $(includedir)/Ice/OutgoingAsyncF.h $(includedir)/Ice/Current.h $(includedir)/Ice/ConnectionF.h $(includedir)/Ice/Identity.h $(includedir)/Ice/StreamF.h $(includedir)/Ice/Object.h $(includedir)/Ice/IncomingAsyncF.h $(includedir)/Ice/InstanceF.h $(includedir)/Ice/LoggerF.h $(includedir)/Ice/StatsF.h $(includedir)/Ice/StringConverter.h $(includedir)/Ice/BuiltinSequences.h $(includedir)/Ice/LocalException.h $(includedir)/Ice/Properties.h $(includedir)/Ice/Outgoing.h $(includedir)/IceUtil/Monitor.h $(includedir)/IceUtil/Cond.h $(includedir)/Ice/BasicStream.h $(includedir)/Ice/ObjectFactoryF.h $(includedir)/Ice/Buffer.h $(includedir)/Ice/Protocol.h $(includedir)/IceUtil/Unicode.h $(includedir)/Ice/OutgoingAsync.h $(includedir)/IceUtil/Timer.h $(includedir)/IceUtil/Thread.h $(includedir)/Ice/Incoming.h $(includedir)/Ice/ServantLocatorF.h $(includedir)/Ice/ServantManagerF.h $(includedir)/Ice/Direct.h $(includedir)/Ice/Logger.h $(includedir)/Ice/LoggerUtil.h $(includedir)/Ice/Stats.h $(includedir)/Ice/Communicator.h $(includedir)/Ice/RouterF.h $(includedir)/Ice/LocatorF.h $(includedir)/Ice/PluginF.h $(includedir)/Ice/ImplicitContextF.h $(includedir)/Ice/ObjectFactory.h $(includedir)/Ice/ObjectAdapter.h $(includedir)/Ice/FacetMap.h $(includedir)/Ice/ServantLocator.h $(includedir)/Ice/IncomingAsync.h $(includedir)/Ice/Process.h $(includedir)/Ice/Application.h $(includedir)/Ice/Connection.h $(includedir)/Ice/Functional.h $(includedir)/IceUtil/Functional.h $(includedir)/Ice/Stream.h $(includedir)/Ice/ImplicitContext.h $(includedir)/Ice/Locator.h $(includedir)/Ice/UserExceptionFactory.h $(includedir)/Ice/FactoryTable.h $(includedir)/Ice/FactoryTableDef.h $(includedir)/IceUtil/StaticMutex.h $(includedir)/Ice/UserExceptionFactoryF.h $(includedir)/Ice/ProcessF.h $(includedir)/Ice/Router.h $(includedir)/Ice/DispatchInterceptor.h $(includedir)/Ice/IconvStringConverter.h $(includedir)/IceUtil/Options.h $(includedir)/IceUtil/RecMutex.h $(includedir)/IceStorm/IceStorm.h $(includedir)/Ice/SliceChecksumDict.h Event.h -Subscriber$(OBJEXT): Subscriber.cpp $(includedir)/IceUtil/DisableWarnings.h $(includedir)/Ice/Ice.h $(includedir)/Ice/Initialize.h $(includedir)/Ice/CommunicatorF.h $(includedir)/Ice/LocalObjectF.h $(includedir)/IceUtil/Shared.h $(includedir)/IceUtil/Config.h $(includedir)/Ice/Handle.h $(includedir)/IceUtil/Handle.h $(includedir)/IceUtil/Exception.h $(includedir)/Ice/Config.h $(includedir)/Ice/ProxyHandle.h $(includedir)/Ice/ProxyF.h $(includedir)/Ice/ObjectF.h $(includedir)/Ice/GCCountMap.h $(includedir)/Ice/GCShared.h $(includedir)/Ice/Exception.h $(includedir)/Ice/LocalObject.h $(includedir)/Ice/UndefSysMacros.h $(includedir)/Ice/PropertiesF.h $(includedir)/Ice/Proxy.h $(includedir)/IceUtil/Mutex.h $(includedir)/IceUtil/Lock.h $(includedir)/IceUtil/ThreadException.h $(includedir)/IceUtil/Time.h $(includedir)/Ice/ProxyFactoryF.h $(includedir)/Ice/ConnectionIF.h $(includedir)/Ice/RequestHandlerF.h $(includedir)/Ice/EndpointIF.h $(includedir)/Ice/Endpoint.h $(includedir)/Ice/ObjectAdapterF.h $(includedir)/Ice/ReferenceF.h $(includedir)/Ice/OutgoingAsyncF.h $(includedir)/Ice/Current.h $(includedir)/Ice/ConnectionF.h $(includedir)/Ice/Identity.h $(includedir)/Ice/StreamF.h $(includedir)/Ice/Object.h $(includedir)/Ice/IncomingAsyncF.h $(includedir)/Ice/InstanceF.h $(includedir)/Ice/LoggerF.h $(includedir)/Ice/StatsF.h $(includedir)/Ice/StringConverter.h $(includedir)/Ice/BuiltinSequences.h $(includedir)/Ice/LocalException.h $(includedir)/Ice/Properties.h $(includedir)/Ice/Outgoing.h $(includedir)/IceUtil/Monitor.h $(includedir)/IceUtil/Cond.h $(includedir)/Ice/BasicStream.h $(includedir)/Ice/ObjectFactoryF.h $(includedir)/Ice/Buffer.h $(includedir)/Ice/Protocol.h $(includedir)/IceUtil/Unicode.h $(includedir)/Ice/OutgoingAsync.h $(includedir)/IceUtil/Timer.h $(includedir)/IceUtil/Thread.h $(includedir)/Ice/Incoming.h $(includedir)/Ice/ServantLocatorF.h $(includedir)/Ice/ServantManagerF.h $(includedir)/Ice/Direct.h $(includedir)/Ice/Logger.h $(includedir)/Ice/LoggerUtil.h $(includedir)/Ice/Stats.h $(includedir)/Ice/Communicator.h $(includedir)/Ice/RouterF.h $(includedir)/Ice/LocatorF.h $(includedir)/Ice/PluginF.h $(includedir)/Ice/ImplicitContextF.h $(includedir)/Ice/ObjectFactory.h $(includedir)/Ice/ObjectAdapter.h $(includedir)/Ice/FacetMap.h $(includedir)/Ice/ServantLocator.h $(includedir)/Ice/IncomingAsync.h $(includedir)/Ice/Process.h $(includedir)/Ice/Application.h $(includedir)/Ice/Connection.h $(includedir)/Ice/Functional.h $(includedir)/IceUtil/Functional.h $(includedir)/Ice/Stream.h $(includedir)/Ice/ImplicitContext.h $(includedir)/Ice/Locator.h $(includedir)/Ice/UserExceptionFactory.h $(includedir)/Ice/FactoryTable.h $(includedir)/Ice/FactoryTableDef.h $(includedir)/IceUtil/StaticMutex.h $(includedir)/Ice/UserExceptionFactoryF.h $(includedir)/Ice/ProcessF.h $(includedir)/Ice/Router.h $(includedir)/Ice/DispatchInterceptor.h $(includedir)/Ice/IconvStringConverter.h $(includedir)/IceStorm/IceStorm.h $(includedir)/Ice/SliceChecksumDict.h $(includedir)/IceUtil/Options.h $(includedir)/IceUtil/RecMutex.h $(includedir)/IceUtil/Random.h Event.h ../../include/TestCommon.h +Event$(OBJEXT): Event.cpp Event.h $(includedir)/Ice/LocalObjectF.h $(includedir)/IceUtil/Shared.h $(includedir)/IceUtil/Config.h $(includedir)/IceUtil/Mutex.h $(includedir)/IceUtil/Lock.h $(includedir)/IceUtil/ThreadException.h $(includedir)/IceUtil/Exception.h $(includedir)/IceUtil/Time.h $(includedir)/Ice/Handle.h $(includedir)/IceUtil/Handle.h $(includedir)/Ice/Config.h $(includedir)/Ice/ProxyHandle.h $(includedir)/Ice/ProxyF.h $(includedir)/Ice/ObjectF.h $(includedir)/Ice/GCCountMap.h $(includedir)/Ice/GCShared.h $(includedir)/Ice/Exception.h $(includedir)/Ice/LocalObject.h $(includedir)/Ice/Proxy.h $(includedir)/Ice/ProxyFactoryF.h $(includedir)/Ice/ConnectionIF.h $(includedir)/Ice/RequestHandlerF.h $(includedir)/Ice/EndpointIF.h $(includedir)/Ice/Endpoint.h $(includedir)/Ice/UndefSysMacros.h $(includedir)/Ice/ObjectAdapterF.h $(includedir)/Ice/ReferenceF.h $(includedir)/Ice/OutgoingAsyncF.h $(includedir)/Ice/Current.h $(includedir)/Ice/ConnectionF.h $(includedir)/Ice/Identity.h $(includedir)/Ice/StreamF.h $(includedir)/Ice/CommunicatorF.h $(includedir)/Ice/Object.h $(includedir)/Ice/IncomingAsyncF.h $(includedir)/Ice/Outgoing.h $(includedir)/IceUtil/Monitor.h $(includedir)/IceUtil/Cond.h $(includedir)/Ice/InstanceF.h $(includedir)/Ice/BasicStream.h $(includedir)/Ice/ObjectFactoryF.h $(includedir)/Ice/Buffer.h $(includedir)/Ice/Protocol.h $(includedir)/Ice/StringConverter.h $(includedir)/IceUtil/Unicode.h $(includedir)/Ice/Incoming.h $(includedir)/Ice/ServantLocatorF.h $(includedir)/Ice/ServantManagerF.h $(includedir)/Ice/Direct.h $(includedir)/Ice/LocalException.h $(includedir)/Ice/BuiltinSequences.h $(includedir)/Ice/ObjectFactory.h $(includedir)/IceUtil/Iterator.h $(includedir)/IceUtil/ScopedArray.h +Publisher$(OBJEXT): Publisher.cpp $(includedir)/Ice/Ice.h $(includedir)/Ice/Initialize.h $(includedir)/Ice/CommunicatorF.h $(includedir)/Ice/LocalObjectF.h $(includedir)/IceUtil/Shared.h $(includedir)/IceUtil/Config.h $(includedir)/IceUtil/Mutex.h $(includedir)/IceUtil/Lock.h $(includedir)/IceUtil/ThreadException.h $(includedir)/IceUtil/Exception.h $(includedir)/IceUtil/Time.h $(includedir)/Ice/Handle.h $(includedir)/IceUtil/Handle.h $(includedir)/Ice/Config.h $(includedir)/Ice/ProxyHandle.h $(includedir)/Ice/ProxyF.h $(includedir)/Ice/ObjectF.h $(includedir)/Ice/GCCountMap.h $(includedir)/Ice/GCShared.h $(includedir)/Ice/Exception.h $(includedir)/Ice/LocalObject.h $(includedir)/Ice/UndefSysMacros.h $(includedir)/Ice/PropertiesF.h $(includedir)/Ice/Proxy.h $(includedir)/Ice/ProxyFactoryF.h $(includedir)/Ice/ConnectionIF.h $(includedir)/Ice/RequestHandlerF.h $(includedir)/Ice/EndpointIF.h $(includedir)/Ice/Endpoint.h $(includedir)/Ice/ObjectAdapterF.h $(includedir)/Ice/ReferenceF.h $(includedir)/Ice/OutgoingAsyncF.h $(includedir)/Ice/Current.h $(includedir)/Ice/ConnectionF.h $(includedir)/Ice/Identity.h $(includedir)/Ice/StreamF.h $(includedir)/Ice/Object.h $(includedir)/Ice/IncomingAsyncF.h $(includedir)/Ice/InstanceF.h $(includedir)/Ice/LoggerF.h $(includedir)/Ice/StatsF.h $(includedir)/Ice/StringConverter.h $(includedir)/Ice/BuiltinSequences.h $(includedir)/Ice/LocalException.h $(includedir)/Ice/Properties.h $(includedir)/Ice/Outgoing.h $(includedir)/IceUtil/Monitor.h $(includedir)/IceUtil/Cond.h $(includedir)/Ice/BasicStream.h $(includedir)/Ice/ObjectFactoryF.h $(includedir)/Ice/Buffer.h $(includedir)/Ice/Protocol.h $(includedir)/IceUtil/Unicode.h $(includedir)/Ice/OutgoingAsync.h $(includedir)/IceUtil/Timer.h $(includedir)/IceUtil/Thread.h $(includedir)/Ice/Incoming.h $(includedir)/Ice/ServantLocatorF.h $(includedir)/Ice/ServantManagerF.h $(includedir)/Ice/Direct.h $(includedir)/Ice/Logger.h $(includedir)/Ice/LoggerUtil.h $(includedir)/Ice/Stats.h $(includedir)/Ice/Communicator.h $(includedir)/Ice/RouterF.h $(includedir)/Ice/LocatorF.h $(includedir)/Ice/PluginF.h $(includedir)/Ice/ImplicitContextF.h $(includedir)/Ice/ObjectFactory.h $(includedir)/Ice/ObjectAdapter.h $(includedir)/Ice/FacetMap.h $(includedir)/Ice/ServantLocator.h $(includedir)/Ice/IncomingAsync.h $(includedir)/Ice/Process.h $(includedir)/Ice/Application.h $(includedir)/Ice/Connection.h $(includedir)/Ice/Functional.h $(includedir)/IceUtil/Functional.h $(includedir)/Ice/Stream.h $(includedir)/Ice/ImplicitContext.h $(includedir)/Ice/Locator.h $(includedir)/Ice/UserExceptionFactory.h $(includedir)/Ice/FactoryTable.h $(includedir)/Ice/FactoryTableDef.h $(includedir)/IceUtil/StaticMutex.h $(includedir)/Ice/UserExceptionFactoryF.h $(includedir)/Ice/ProcessF.h $(includedir)/Ice/Router.h $(includedir)/Ice/DispatchInterceptor.h $(includedir)/Ice/IconvStringConverter.h $(includedir)/IceUtil/Options.h $(includedir)/IceUtil/RecMutex.h $(includedir)/IceStorm/IceStorm.h $(includedir)/Ice/SliceChecksumDict.h Event.h +Subscriber$(OBJEXT): Subscriber.cpp $(includedir)/IceUtil/DisableWarnings.h $(includedir)/Ice/Ice.h $(includedir)/Ice/Initialize.h $(includedir)/Ice/CommunicatorF.h $(includedir)/Ice/LocalObjectF.h $(includedir)/IceUtil/Shared.h $(includedir)/IceUtil/Config.h $(includedir)/IceUtil/Mutex.h $(includedir)/IceUtil/Lock.h $(includedir)/IceUtil/ThreadException.h $(includedir)/IceUtil/Exception.h $(includedir)/IceUtil/Time.h $(includedir)/Ice/Handle.h $(includedir)/IceUtil/Handle.h $(includedir)/Ice/Config.h $(includedir)/Ice/ProxyHandle.h $(includedir)/Ice/ProxyF.h $(includedir)/Ice/ObjectF.h $(includedir)/Ice/GCCountMap.h $(includedir)/Ice/GCShared.h $(includedir)/Ice/Exception.h $(includedir)/Ice/LocalObject.h $(includedir)/Ice/UndefSysMacros.h $(includedir)/Ice/PropertiesF.h $(includedir)/Ice/Proxy.h $(includedir)/Ice/ProxyFactoryF.h $(includedir)/Ice/ConnectionIF.h $(includedir)/Ice/RequestHandlerF.h $(includedir)/Ice/EndpointIF.h $(includedir)/Ice/Endpoint.h $(includedir)/Ice/ObjectAdapterF.h $(includedir)/Ice/ReferenceF.h $(includedir)/Ice/OutgoingAsyncF.h $(includedir)/Ice/Current.h $(includedir)/Ice/ConnectionF.h $(includedir)/Ice/Identity.h $(includedir)/Ice/StreamF.h $(includedir)/Ice/Object.h $(includedir)/Ice/IncomingAsyncF.h $(includedir)/Ice/InstanceF.h $(includedir)/Ice/LoggerF.h $(includedir)/Ice/StatsF.h $(includedir)/Ice/StringConverter.h $(includedir)/Ice/BuiltinSequences.h $(includedir)/Ice/LocalException.h $(includedir)/Ice/Properties.h $(includedir)/Ice/Outgoing.h $(includedir)/IceUtil/Monitor.h $(includedir)/IceUtil/Cond.h $(includedir)/Ice/BasicStream.h $(includedir)/Ice/ObjectFactoryF.h $(includedir)/Ice/Buffer.h $(includedir)/Ice/Protocol.h $(includedir)/IceUtil/Unicode.h $(includedir)/Ice/OutgoingAsync.h $(includedir)/IceUtil/Timer.h $(includedir)/IceUtil/Thread.h $(includedir)/Ice/Incoming.h $(includedir)/Ice/ServantLocatorF.h $(includedir)/Ice/ServantManagerF.h $(includedir)/Ice/Direct.h $(includedir)/Ice/Logger.h $(includedir)/Ice/LoggerUtil.h $(includedir)/Ice/Stats.h $(includedir)/Ice/Communicator.h $(includedir)/Ice/RouterF.h $(includedir)/Ice/LocatorF.h $(includedir)/Ice/PluginF.h $(includedir)/Ice/ImplicitContextF.h $(includedir)/Ice/ObjectFactory.h $(includedir)/Ice/ObjectAdapter.h $(includedir)/Ice/FacetMap.h $(includedir)/Ice/ServantLocator.h $(includedir)/Ice/IncomingAsync.h $(includedir)/Ice/Process.h $(includedir)/Ice/Application.h $(includedir)/Ice/Connection.h $(includedir)/Ice/Functional.h $(includedir)/IceUtil/Functional.h $(includedir)/Ice/Stream.h $(includedir)/Ice/ImplicitContext.h $(includedir)/Ice/Locator.h $(includedir)/Ice/UserExceptionFactory.h $(includedir)/Ice/FactoryTable.h $(includedir)/Ice/FactoryTableDef.h $(includedir)/IceUtil/StaticMutex.h $(includedir)/Ice/UserExceptionFactoryF.h $(includedir)/Ice/ProcessF.h $(includedir)/Ice/Router.h $(includedir)/Ice/DispatchInterceptor.h $(includedir)/Ice/IconvStringConverter.h $(includedir)/IceStorm/IceStorm.h $(includedir)/Ice/SliceChecksumDict.h $(includedir)/IceUtil/Options.h $(includedir)/IceUtil/RecMutex.h $(includedir)/IceUtil/Random.h Event.h ../../include/TestCommon.h Event.cpp: Event.ice Event.ice: $(SLICE2CPP) $(SLICEPARSERLIB) diff --git a/cpp/test/IceStorm/stress/.gitignore b/cpp/test/IceStorm/stress/.gitignore index f01afc6f930..1e15a552882 100644 --- a/cpp/test/IceStorm/stress/.gitignore +++ b/cpp/test/IceStorm/stress/.gitignore @@ -8,3 +8,9 @@ Event.h build.txt db/* db2/* +0.db/* +0.db2/* +1.db/* +1.db2/* +2.db/* +2.db2/* diff --git a/cpp/test/IceStorm/stress/0.db/.gitignore b/cpp/test/IceStorm/stress/0.db/.gitignore new file mode 100644 index 00000000000..72e8ffc0db8 --- /dev/null +++ b/cpp/test/IceStorm/stress/0.db/.gitignore @@ -0,0 +1 @@ +* diff --git a/cpp/test/IceStorm/stress/0.db2/.gitignore b/cpp/test/IceStorm/stress/0.db2/.gitignore new file mode 100644 index 00000000000..72e8ffc0db8 --- /dev/null +++ b/cpp/test/IceStorm/stress/0.db2/.gitignore @@ -0,0 +1 @@ +* diff --git a/cpp/test/IceStorm/stress/1.db/.gitignore b/cpp/test/IceStorm/stress/1.db/.gitignore new file mode 100644 index 00000000000..72e8ffc0db8 --- /dev/null +++ b/cpp/test/IceStorm/stress/1.db/.gitignore @@ -0,0 +1 @@ +* diff --git a/cpp/test/IceStorm/stress/1.db2/.gitignore b/cpp/test/IceStorm/stress/1.db2/.gitignore new file mode 100644 index 00000000000..72e8ffc0db8 --- /dev/null +++ b/cpp/test/IceStorm/stress/1.db2/.gitignore @@ -0,0 +1 @@ +* diff --git a/cpp/test/IceStorm/stress/2.db/.gitignore b/cpp/test/IceStorm/stress/2.db/.gitignore new file mode 100644 index 00000000000..72e8ffc0db8 --- /dev/null +++ b/cpp/test/IceStorm/stress/2.db/.gitignore @@ -0,0 +1 @@ +* diff --git a/cpp/test/IceStorm/stress/2.db2/.gitignore b/cpp/test/IceStorm/stress/2.db2/.gitignore new file mode 100644 index 00000000000..72e8ffc0db8 --- /dev/null +++ b/cpp/test/IceStorm/stress/2.db2/.gitignore @@ -0,0 +1 @@ +* diff --git a/cpp/test/IceStorm/stress/Makefile b/cpp/test/IceStorm/stress/Makefile index 3c3daff5e3e..decde782e42 100644 --- a/cpp/test/IceStorm/stress/Makefile +++ b/cpp/test/IceStorm/stress/Makefile @@ -42,5 +42,8 @@ $(SUBSCRIBER): $(OBJS) $(SOBJS) clean:: -rm -f build.txt -rm -f db/* db2/* + -rm -f 0.db/* 0.db2/* + -rm -f 1.db/* 1.db2/* + -rm -f 2.db/* 2.db2/* include .depend diff --git a/cpp/test/IceStorm/stress/Makefile.mak b/cpp/test/IceStorm/stress/Makefile.mak index 84101991865..ddc23c4ef4d 100644 --- a/cpp/test/IceStorm/stress/Makefile.mak +++ b/cpp/test/IceStorm/stress/Makefile.mak @@ -60,6 +60,12 @@ clean:: del /q build.txt del /q Event.cpp Event.h for %f in (db\*) do if not %f == db\.gitignore del /q %f + for %f in (0.db\*) do if not %f == 0.db\.gitignore del /q %f + for %f in (1.db\*) do if not %f == 1.db\.gitignore del /q %f + for %f in (2.db\*) do if not %f == 2.db\.gitignore del /q %f for %f in (db2\*) do if not %f == db2\.gitignore del /q %f + for %f in (0.db2\*) do if not %f == 0.db2\.gitignore del /q %f + for %f in (1.db2\*) do if not %f == 1.db2\.gitignore del /q %f + for %f in (2.db2\*) do if not %f == 2.db2\.gitignore del /q %f !include .depend diff --git a/cpp/test/IceStorm/stress/Publisher.cpp b/cpp/test/IceStorm/stress/Publisher.cpp index 716213474cf..371016b4465 100644 --- a/cpp/test/IceStorm/stress/Publisher.cpp +++ b/cpp/test/IceStorm/stress/Publisher.cpp @@ -49,7 +49,7 @@ run(int argc, char* argv[], const CommunicatorPtr& communicator) bool oneway = opts.isSet("oneway"); PropertiesPtr properties = communicator->getProperties(); - const char* managerProxyProperty = "IceStorm.TopicManager.Proxy"; + const char* managerProxyProperty = "IceStormAdmin.TopicManager.Default"; string managerProxy = properties->getProperty(managerProxyProperty); if(managerProxy.empty()) { diff --git a/cpp/test/IceStorm/stress/Subscriber.cpp b/cpp/test/IceStorm/stress/Subscriber.cpp index 89e6febabcf..bab1e53b079 100644 --- a/cpp/test/IceStorm/stress/Subscriber.cpp +++ b/cpp/test/IceStorm/stress/Subscriber.cpp @@ -238,7 +238,7 @@ run(int argc, char* argv[], const CommunicatorPtr& communicator) } PropertiesPtr properties = communicator->getProperties(); - const char* managerProxyProperty = "IceStorm.TopicManager.Proxy"; + const char* managerProxyProperty = "IceStormAdmin.TopicManager.Default"; string managerProxy = properties->getProperty(managerProxyProperty); if(managerProxy.empty()) { diff --git a/cpp/test/IceStorm/stress/run.py b/cpp/test/IceStorm/stress/run.py index dacf98b7a2b..4e4a405e053 100755 --- a/cpp/test/IceStorm/stress/run.py +++ b/cpp/test/IceStorm/stress/run.py @@ -1,7 +1,7 @@ #!/usr/bin/env python # ********************************************************************** # -# Copyright (c) 2003-2008 ZeroC, Inc. All rights reserved. +# Copyright (c) 2003-2007 ZeroC, Inc. All rights reserved. # # This copy of Ice is licensed to you under the terms described in the # ICE_LICENSE file included in this distribution. @@ -23,41 +23,15 @@ TestUtil.processCmdLine() name = os.path.join("IceStorm", "stress") testdir = os.path.dirname(os.path.abspath(__file__)) -exedir = testdir - -iceBox = TestUtil.getIceBox(exedir) -iceBoxAdmin = os.path.join(TestUtil.getBinDir(__file__), "iceboxadmin") -iceStormAdmin = os.path.join(TestUtil.getBinDir(__file__), "icestormadmin") - -iceBoxEndpoints = ' --IceBox.ServiceManager.Endpoints="default -p 12010" --Ice.Default.Locator=' - -iceStormService = " --IceBox.Service.IceStorm=IceStormService," + TestUtil.getIceSoVersion() + ":createIceStorm" + \ - ' --IceStorm.TopicManager.Endpoints="default -p 12011"' + \ - ' --IceStorm.Publish.Endpoints="default -p 12012"' + \ - ' --IceStorm.InstanceName=TestIceStorm1 ' + \ - ' --IceStorm.Discard.Interval=2' + \ - ' --IceBox.PrintServicesReady=IceStorm' + \ - " --IceBox.InheritProperties=1" -iceStormReference = ' --IceStorm.TopicManager.Proxy="TestIceStorm1/TopicManager: default -p 12011"' - -iceBoxEndpoints2 = ' --IceBox.ServiceManager.Endpoints="default -p 12020" --Ice.Default.Locator=' - -iceStormService2 = " --IceBox.Service.IceStorm=IceStormService," + TestUtil.getIceSoVersion() + ":createIceStorm" + \ - ' --IceStorm.TopicManager.Endpoints="default -p 12021"' + \ - ' --IceStorm.Publish.Endpoints="default -p 12022"' + \ - ' --IceStorm.InstanceName=TestIceStorm2 ' + \ - ' --IceStorm.Discard.Interval=2' + \ - ' --IceBox.PrintServicesReady=IceStorm' + \ - " --IceBox.InheritProperties=1" -iceStormReference2 = ' --IceStorm.TopicManager.Proxy="TestIceStorm2/TopicManager: default -p 12021"' - -adminIceStormReference = ' --IceStormAdmin.TopicManager.Proxy="TestIceStorm1/TopicManager: default -p 12011" ' + \ - '--IceStormAdmin.TopicManager.Proxy2="TestIceStorm2/TopicManager: default -p 12021"' - -def doTest(subOpts, pubOpts): + +iceBox = TestUtil.getIceBox(testdir) +iceBoxAdmin = os.path.join(TestUtil.getBinDir(testdir), "iceboxadmin") +iceStormAdmin = os.path.join(TestUtil.getBinDir(testdir), "icestormadmin") + +import IceStormUtil + +def doTest(server1, server2, subOpts, pubOpts): global testdir - global iceStormReference - global iceStormReference2 publisher = os.path.join(testdir, "publisher") subscriber = os.path.join(testdir, "subscriber") @@ -67,12 +41,12 @@ def doTest(subOpts, pubOpts): subOpts = [ subOpts ] for opts in subOpts: # We don't want the subscribers to time out. - pipe = TestUtil.startServer(subscriber, r' --Ice.ServerIdleTime=0 ' + opts + " 2>&1") + pipe = TestUtil.startServer(subscriber, r' --Ice.ServerIdleTime=0 ' + opts) TestUtil.getServerPid(pipe) TestUtil.getAdapterReady(pipe) subscriberPipes.append(pipe) - publisherPipe = TestUtil.startClient(publisher, iceStormReference + ' ' + pubOpts + " 2>&1") + publisherPipe = TestUtil.startClient(publisher, server1.reference() + r' ' + pubOpts) TestUtil.printOutputFromPipe(publisherPipe) @@ -93,197 +67,176 @@ def doTest(subOpts, pubOpts): return 0 -def startServers(additionalArgs=""): - global iceBox - global iceBoxEndpoints - global iceBoxEndpoints2 - global iceStormService - global iceStormService2 - global iceStormDBEnv - global iceStormDBEnv2 +def runAdmin(cmd, desc = None): + global iceStormAdmin + global iceStormAdminReference + if desc: + print desc, + sys.stdout.flush() + pipe = TestUtil.startClient(iceStormAdmin, adminIceStormReference + r' -e "' + cmd + '"') + status = TestUtil.closePipe(pipe) + if status: + TestUtil.killServers() + sys.exit(1) + if desc: + print "ok" + +def runtest(type): + # Clear the idle timeout otherwise the IceBox ThreadPool will timeout. + server1 = IceStormUtil.init(toplevel, testdir, type, additional = '--Ice.ServerIdleTime=0', + dbDir = "db", instanceName = "TestIceStorm1", port = 12000) + server2 = IceStormUtil.init(toplevel, testdir, type, additional = '--Ice.ServerIdleTime=0', + dbDir = "db2", instanceName = "TestIceStorm2", port = 12500) + global adminIceStormReference + adminIceStormReference = ' --IceStormAdmin.TopicManager.Proxy="%s" --IceStormAdmin.TopicManager.Proxy2="%s"' % ( + server1.proxy(), server2.proxy()) + print "starting icestorm services...", sys.stdout.flush() - # Clear the idle timeout otherwise the IceBox ThreadPool will timeout.wA - command = iceBoxEndpoints + iceStormService + iceStormDBEnv + ' --Ice.ServerIdleTime=0' + additionalArgs - iceBoxPipe = TestUtil.startServer(iceBox, command + " 2>&1") - TestUtil.getServerPid(iceBoxPipe) - TestUtil.waitServiceReady(iceBoxPipe, "IceStorm") - command = iceBoxEndpoints2 + iceStormService2 + iceStormDBEnv2 + ' --Ice.ServerIdleTime=0' + additionalArgs - iceBoxPipe2 = TestUtil.startServer(iceBox, command + " 2>&1") - TestUtil.getServerPid(iceBoxPipe2) - TestUtil.waitServiceReady(iceBoxPipe2, "IceStorm") + server1.start(echo=False) + server2.start(echo=False) + print "ok" + + runAdmin("create TestIceStorm1/fed1 TestIceStorm2/fed1", "setting up the topics...") + + print "Sending 5000 ordered events... ", + sys.stdout.flush() + status = doTest(server1, server2, '--events 5000 --qos "reliability,ordered" ' + server1.reference(), '--events 5000') + if status: + print "failed!" + TestUtil.killServers() + sys.exit(1) + print "ok" + + runAdmin("link TestIceStorm1/fed1 TestIceStorm2/fed1") + print "Sending 5000 ordered events across a link... ", + sys.stdout.flush() + status = doTest(server1, server2, '--events 5000 --qos "reliability,ordered" ' + server2.reference(), '--events 5000') + if status: + TestUtil.killServers() + sys.exit(1) + print "ok" + + runAdmin("unlink TestIceStorm1/fed1 TestIceStorm2/fed1") + print "Sending 20000 unordered events... ", + sys.stdout.flush() + status = doTest(server1, server2, '--events 20000 ' + server1.reference(), '--events 20000 --oneway') + if status: + print "failed!" + TestUtil.killServers() + sys.exit(1) + print "ok" + + runAdmin("link TestIceStorm1/fed1 TestIceStorm2/fed1") + print "Sending 20000 unordered events across a link... ", + sys.stdout.flush() + status = doTest(server1, server2, '--events 20000 ' + server2.reference(), '--events 20000 --oneway') + if status: + TestUtil.killServers() + sys.exit(1) + print "ok" + + runAdmin("unlink TestIceStorm1/fed1 TestIceStorm2/fed1") + print "Sending 20000 unordered batch events... ", + sys.stdout.flush() + status = doTest(server1, server2, '--events 20000 --qos "reliability,batch" ' + server1.reference(), '--events 20000 --oneway') + if status: + print "failed!" + TestUtil.killServers() + sys.exit(1) + print "ok" + + runAdmin("link TestIceStorm1/fed1 TestIceStorm2/fed1") + print "Sending 20000 unordered batch events across a link... ", + sys.stdout.flush() + status = doTest(server1, server2, '--events 20000 --qos "reliability,batch" ' + server2.reference(), '--events 20000 --oneway') + if status: + TestUtil.killServers() + sys.exit(1) + print "ok" + + runAdmin("unlink TestIceStorm1/fed1 TestIceStorm2/fed1") + print "Sending 20000 unordered events with slow subscriber... ", + status = doTest(server1, server2, ['--events 2 --slow ' + server1.reference(), '--events 20000 ' + server1.reference()], '--events 20000 --oneway') + if status: + print "failed!" + TestUtil.killServers() + sys.exit(1) + print "ok" + + runAdmin("link TestIceStorm1/fed1 TestIceStorm2/fed1") + print "Sending 20000 unordered events with slow subscriber & link... ", + status = doTest(server1, server2, ['--events 2 --slow' + server1.reference(), '--events 20000' + server1.reference(), '--events 2 --slow' + server2.reference(), '--events 20000' + server2.reference()], '--events 20000 --oneway') + if status: + print "failed!" + TestUtil.killServers() + sys.exit(1) print "ok" - return iceBoxPipe, iceBoxPipe2 -def stopServers(p1, p2 = None): - global iceBox - global iceBoxAdmin - global iceBoxEndpoints - global iceBoxEndpoints2 print "shutting down icestorm services...", sys.stdout.flush() - command = iceBoxEndpoints + r' shutdown' - pipe = TestUtil.startClient(iceBoxAdmin, command + " 2>&1") - status = TestUtil.closePipe(pipe) - if status or TestUtil.specificServerStatus(p1): + server1.stop() + server2.stop() + print "ok" + + print "starting icestorm services...", + sys.stdout.flush() + # + # The erratic tests emit lots of connection warnings so they are + # disabled here. The IceStorm servers are stopped and restarted so the + # settings will take effect. + # + server1.start(echo=False, additionalOptions = ' --Ice.Warn.Connections=0') + server2.start(echo=False, additionalOptions = ' --Ice.Warn.Connections=0') + print "ok" + + runAdmin("unlink TestIceStorm1/fed1 TestIceStorm2/fed1") + + print "Sending 20000 unordered events with erratic subscriber... ", + sys.stdout.flush() + status = doTest(server1, server2, \ + [ '--erratic 5 --qos "reliability,ordered" --events 20000' + server1.reference(), \ + '--erratic 5 --events 20000' + server1.reference(), \ + '--events 20000' + server1.reference()], \ + '--events 20000 --oneway') + if status: + print "failed!" TestUtil.killServers() sys.exit(1) - if p2: - command = iceBoxEndpoints2 + r' shutdown' - pipe = TestUtil.startClient(iceBoxAdmin, command + " 2>&1") - status = TestUtil.closePipe(pipe) - if status or TestUtil.specificServerStatus(p2): - TestUtil.killServers() - sys.exit(1) print "ok" -def runAdmin(cmd, desc = None): - global iceStormAdmin - global iceStormAdminReference - if desc: - print desc, - sys.stdout.flush() - command = adminIceStormReference + r' -e "' + cmd + '"' - pipe = TestUtil.startClient(iceStormAdmin, command + " 2>&1") - status = TestUtil.closePipe(pipe) + runAdmin("link TestIceStorm1/fed1 TestIceStorm2/fed1") + print "Sending 20000 unordered events with erratic subscriber across a link... ", + sys.stdout.flush() + status = doTest(server1, server2, \ + [ '--events 20000' + server1.reference(), \ + '--erratic 5 --qos "reliability,ordered" --events 20000 ' + server1.reference(), \ + '--erratic 5 --events 20000 ' + server1.reference(), \ + '--events 20000' + server2.reference(), \ + '--erratic 5 --qos "reliability,ordered" --events 20000 ' + server2.reference(), \ + '--erratic 5 --events 20000 ' + server2.reference()], \ + '--events 20000 --oneway ') if status: + print "failed!" TestUtil.killServers() sys.exit(1) - if desc: - print "ok" + print "ok" -dbHome = os.path.join(testdir, "db") -TestUtil.cleanDbDir(dbHome) -iceStormDBEnv=" --Freeze.DbEnv.IceStorm.DbHome=" + dbHome - -dbHome2 = os.path.join(testdir, "db2") -TestUtil.cleanDbDir(dbHome2) -iceStormDBEnv2=" --Freeze.DbEnv.IceStorm.DbHome=" + dbHome2 - -server1, server2 = startServers() - -runAdmin("create TestIceStorm1/fed1 TestIceStorm2/fed1", "setting up the topics...") - -print "Sending 5000 ordered events... ", -sys.stdout.flush() -status = doTest('--events 5000 --qos "reliability,ordered" ' + iceStormReference, '--events 5000') -if status: - print "failed!" - TestUtil.killServers() - sys.exit(1) -print "ok" - -runAdmin("link TestIceStorm1/fed1 TestIceStorm2/fed1") -print "Sending 5000 ordered events across a link... ", -sys.stdout.flush() -status = doTest('--events 5000 --qos "reliability,ordered" ' + iceStormReference2, '--events 5000') -if status: - TestUtil.killServers() - sys.exit(1) -print "ok" - -runAdmin("unlink TestIceStorm1/fed1 TestIceStorm2/fed1") -print "Sending 20000 unordered events... ", -sys.stdout.flush() -status = doTest('--events 20000 ' + iceStormReference, '--events 20000 --oneway') -if status: - print "failed!" - TestUtil.killServers() - sys.exit(1) -print "ok" - -runAdmin("link TestIceStorm1/fed1 TestIceStorm2/fed1") -print "Sending 20000 unordered events across a link... ", -sys.stdout.flush() -status = doTest('--events 20000 ' + iceStormReference2, '--events 20000 --oneway') -if status: - TestUtil.killServers() - sys.exit(1) -print "ok" - -runAdmin("unlink TestIceStorm1/fed1 TestIceStorm2/fed1") -print "Sending 20000 unordered batch events... ", -sys.stdout.flush() -status = doTest('--events 20000 --qos "reliability,batch" ' + iceStormReference, '--events 20000 --oneway') -if status: - print "failed!" - TestUtil.killServers() - sys.exit(1) -print "ok" - -runAdmin("link TestIceStorm1/fed1 TestIceStorm2/fed1") -print "Sending 20000 unordered batch events across a link... ", -sys.stdout.flush() -status = doTest('--events 20000 --qos "reliability,batch" ' + iceStormReference2, '--events 20000 --oneway') -if status: - TestUtil.killServers() - sys.exit(1) -print "ok" - -runAdmin("unlink TestIceStorm1/fed1 TestIceStorm2/fed1") -print "Sending 20000 unordered events with slow subscriber... ", -status = doTest(['--events 2 --slow ' + iceStormReference, '--events 20000 ' + iceStormReference], '--events 20000 --oneway') -if status: - print "failed!" - TestUtil.killServers() - sys.exit(1) -print "ok" - -runAdmin("link TestIceStorm1/fed1 TestIceStorm2/fed1") -print "Sending 20000 unordered events with slow subscriber & link... ", -status = doTest(['--events 2 --slow' + iceStormReference, '--events 20000' + iceStormReference, '--events 2 --slow' + iceStormReference2, '--events 20000' + iceStormReference2], '--events 20000 --oneway') -if status: - print "failed!" - TestUtil.killServers() - sys.exit(1) -print "ok" + # + # Shutdown icestorm. + # + print "shutting down icestorm services...", + sys.stdout.flush() + server1.stop() + server2.stop() + print "ok" -# -# The erratic tests emit lots of connection warnings so they are -# disabled here. The IceStorm servers are stopped and restarted so the -# settings will take effect. -# -stopServers(server1, server2) -server1, server2 = startServers(" --Ice.Warn.Connections=0") - -runAdmin("unlink TestIceStorm1/fed1 TestIceStorm2/fed1") -print "Sending 20000 unordered events with erratic subscriber... ", -sys.stdout.flush() -status = doTest(\ - [ '--erratic 5 --qos "reliability,ordered" --events 20000' + iceStormReference, \ - '--erratic 5 --events 20000' + iceStormReference, \ - '--events 20000' + iceStormReference], \ - '--events 20000 --oneway') -if status: - print "failed!" - TestUtil.killServers() - sys.exit(1) -print "ok" - -runAdmin("link TestIceStorm1/fed1 TestIceStorm2/fed1") -print "Sending 20000 unordered events with erratic subscriber across a link... ", -sys.stdout.flush() -status = doTest( \ - [ '--events 20000' + iceStormReference, \ - '--erratic 5 --qos "reliability,ordered" --events 20000 ' + iceStormReference, \ - '--erratic 5 --events 20000 ' + iceStormReference, \ - '--events 20000' + iceStormReference2, \ - '--erratic 5 --qos "reliability,ordered" --events 20000 ' + iceStormReference2, \ - '--erratic 5 --events 20000 ' + iceStormReference2], \ - '--events 20000 --oneway ') -if status: - print "failed!" - TestUtil.killServers() - sys.exit(1) -print "ok" + if TestUtil.serverStatus(): + TestUtil.killServers() + sys.exit(1) -# -# Shutdown icestorm. -# -stopServers(server1, server2) -if TestUtil.serverStatus(): - TestUtil.killServers() - sys.exit(1) +runtest("persistent") +runtest("replicated") sys.exit(0) |