[asterisk-scf-commits] asterisk-scf/release/testsuite.git branch "master" updated.
Commits to the Asterisk SCF project code repositories
asterisk-scf-commits at lists.digium.com
Wed May 2 09:30:15 CDT 2012
branch "master" has been updated
via 73453c2c882229d46607502637b9c2cd9cceb119 (commit)
from baf57af2d52bbeb10b8bc58469e6f4b2131f4db0 (commit)
Summary of changes:
3rdparty/PROTOS/c07-sip-r2.jar | Bin 0 -> 2247421 bytes
Makefile | 51 +
RemoteAgent.py | 133 +
Server.py | 392 ++
configs/GlobalVars.py | 68 +
configs/icebox/failover/BridgeManager.conf | 29 +
configs/icebox/failover/BridgeManagerActive.conf | 28 +
configs/icebox/failover/BridgeManagerStandby.conf | 28 +
configs/icebox/failover/BridgeStateReplicator.conf | 21 +
configs/icebox/failover/Logger.conf | 11 +
configs/icebox/failover/MediaFormatGeneric.conf | 26 +
.../MediaOperationCoreStateReplicator.conf | 18 +
configs/icebox/failover/MediaOperationsCore.conf | 26 +
.../icebox/failover/MediaOperationsCoreActive.conf | 26 +
.../failover/MediaOperationsCoreStandby.conf | 26 +
configs/icebox/failover/MediaServiceRTP.conf | 26 +
configs/icebox/failover/MediaServiceRTPActive.conf | 26 +
.../icebox/failover/MediaServiceRTPStandby.conf | 26 +
.../failover/MediaServiceRTPStateReplicator.conf | 30 +
configs/icebox/failover/RoutingService.conf | 34 +
configs/icebox/failover/RoutingServiceActive.conf | 35 +
configs/icebox/failover/RoutingServiceStandby.conf | 35 +
.../icebox/failover/RoutingStateReplicator.conf | 18 +
configs/icebox/failover/SIPService.conf | 34 +
configs/icebox/failover/SIPServiceActive.conf | 34 +
configs/icebox/failover/SIPServiceStandby.conf | 33 +
configs/icebox/failover/ServiceDiscovery.conf | 18 +
.../icebox/failover/ServiceDiscoveryActive.conf | 18 +
.../icebox/failover/ServiceDiscoveryStandby.conf | 18 +
.../failover/ServiceDiscoveryStateReplicator.conf | 20 +
configs/icebox/failover/SipStateReplicator.conf | 30 +
configs/icebox/standalone/BridgeManager.conf | 29 +
.../icebox/standalone/BridgeStateReplicator.conf | 18 +
configs/icebox/standalone/Logger.conf | 11 +
configs/icebox/standalone/MediaFormatGeneric.conf | 26 +
.../MediaOperationCoreStateReplicator.conf | 18 +
configs/icebox/standalone/MediaOperationsCore.conf | 26 +
configs/icebox/standalone/MediaServiceRTP.conf | 26 +
.../standalone/MediaServiceRTPStateReplicator.conf | 27 +
configs/icebox/standalone/RoutingService.conf | 34 +
.../icebox/standalone/RoutingStateReplicator.conf | 18 +
configs/icebox/standalone/ServiceDiscovery.conf | 18 +
.../ServiceDiscoveryStateReplicator.conf | 19 +
configs/icebox/standalone/SipService.conf | 31 +
configs/icebox/standalone/SipStateReplicator.conf | 27 +
configs/plugins/failover_conf.yaml | 48 +
configs/remote/remoteAgent.yaml.sample | 1 +
configs/server/remoteAgents.yaml | 8 +
contrib/ubuntu/init.d/testsuite-remote | 103 +
events/shutdown.yaml | 9 +
events/startup.yaml | 9 +
lib/python/DB.py | 100 +
lib/python/FileSystem.py | 193 +
lib/python/Info.py | 90 +
lib/python/JUnitXML.py | 50 +
lib/python/Logging.py | 58 +
lib/python/Misc.py | 145 +
lib/python/Plugin.py | 101 +
lib/python/RPC.py | 142 +
lib/python/SubProcess.py | 147 +
lib/python/Yaml.py | 101 +
lib/python/confluence.py | 108 +
lib/python/interactive.py | 185 +
plugins/asteriskscf_activator.py | 158 +
plugins/asteriskscf_configurator.py | 508 +++
plugins/asteriskscf_icebox.py | 95 +
plugins/build.py | 179 +
plugins/failover.py | 212 ++
plugins/protos.py | 214 ++
plugins/sipp.py | 165 +
plugins/siprtp.py | 100 +
plugins/testsuite_remotes.py | 78 +
plugins/wireshark.py | 125 +
tests/asteriskscf/failover/bridge/testcase.yaml | 154 +
.../failover/media_ops_core/testcase.yaml | 154 +
tests/asteriskscf/failover/media_rtp/testcase.yaml | 155 +
tests/asteriskscf/failover/routing/testcase.yaml | 154 +
.../failover/service_discovery/testcase.yaml | 155 +
tests/asteriskscf/failover/sip/testcase.yaml | 148 +
tests/asteriskscf/failover/tests.yaml | 13 +
.../scenarios/call_then_attended_transfer.xml | 180 +
.../scenarios/wait_for_call.xml | 76 +
.../scenarios/wait_for_call_do_hangup.xml | 83 +
.../sip/Functional_Attended_Transfer/testcase.yaml | 924 +++++
.../scenarios/call_then_blind_transfer.xml | 113 +
.../scenarios/wait_for_call.xml | 76 +
.../scenarios/wait_for_call_do_hangup.xml | 83 +
.../sip/Functional_Blind_Transfer/testcase.yaml | 924 +++++
.../Functional_Busy_Endpoint/scenarios/call.xml | 58 +
.../scenarios/wait_for_call_busy.xml | 22 +
.../sip/Functional_Busy_Endpoint/testcase.yaml | 384 ++
.../scenarios/call.xml | 58 +
.../scenarios/wait_for_call_congestion.xml | 22 +
.../Functional_Congestion_Endpoint/testcase.yaml | 384 ++
.../sip/Functional_RTCP_Simple/.testcase.yaml.swp | Bin 0 -> 16384 bytes
.../sip/Functional_RTCP_Simple/testcase.yaml | 98 +
.../scenarios/register.xml | 24 +
.../sip/Functional_Registrar_Simple/testcase.yaml | 208 ++
.../scenarios/register.xml | 24 +
.../scenarios/register_invalid.xml | 24 +
.../testcase.yaml | 208 ++
.../testcase.yaml | 220 ++
.../sip/Functional_Simple_Endpoint/testcase.yaml | 82 +
.../testcase.yaml | 135 +
.../testcase.yaml | 167 +
.../Functional_Timeout_Endpoint/scenarios/call.xml | 83 +
.../scenarios/wait_for_call_timeout.xml | 53 +
.../sip/Functional_Timeout_Endpoint/testcase.yaml | 384 ++
.../scenarios/options.xml | 21 +
.../scenarios/options2.xml | 21 +
.../Functional_Verify_Options_Method/testcase.yaml | 170 +
.../testcase.yaml | 3818 ++++++++++++++++++++
tests/asteriskscf/sip/configurator/testcase.yaml | 51 +
tests/asteriskscf/sip/testing/testcase.yaml | 61 +
tests/asteriskscf/sip/tests.yaml | 29 +
tests/asteriskscf/tests.yaml | 7 +
tests/build/asterisk_scf/testcase.yaml | 76 +
tests/build/pjproject/patches/siprtp.patch | 92 +
tests/build/pjproject/patches/siprtp_report.patch | 148 +
tests/build/pjproject/testcase.yaml | 27 +
tests/build/testing/old_testcase.yaml | 76 +
tests/build/testing/testcase.yaml | 66 +
tests/build/tests.yaml | 2 +
tests/tests.yaml | 4 +
testsuite_results.xml | 14 +
125 files changed, 15791 insertions(+), 0 deletions(-)
create mode 100644 3rdparty/PROTOS/c07-sip-r2.jar
create mode 100644 Makefile
create mode 100755 RemoteAgent.py
create mode 100755 Server.py
create mode 100644 configs/GlobalVars.py
create mode 100644 configs/icebox/failover/BridgeManager.conf
create mode 100644 configs/icebox/failover/BridgeManagerActive.conf
create mode 100644 configs/icebox/failover/BridgeManagerStandby.conf
create mode 100644 configs/icebox/failover/BridgeStateReplicator.conf
create mode 100644 configs/icebox/failover/Logger.conf
create mode 100644 configs/icebox/failover/MediaFormatGeneric.conf
create mode 100644 configs/icebox/failover/MediaOperationCoreStateReplicator.conf
create mode 100644 configs/icebox/failover/MediaOperationsCore.conf
create mode 100644 configs/icebox/failover/MediaOperationsCoreActive.conf
create mode 100644 configs/icebox/failover/MediaOperationsCoreStandby.conf
create mode 100644 configs/icebox/failover/MediaServiceRTP.conf
create mode 100644 configs/icebox/failover/MediaServiceRTPActive.conf
create mode 100644 configs/icebox/failover/MediaServiceRTPStandby.conf
create mode 100644 configs/icebox/failover/MediaServiceRTPStateReplicator.conf
create mode 100644 configs/icebox/failover/RoutingService.conf
create mode 100644 configs/icebox/failover/RoutingServiceActive.conf
create mode 100644 configs/icebox/failover/RoutingServiceStandby.conf
create mode 100644 configs/icebox/failover/RoutingStateReplicator.conf
create mode 100644 configs/icebox/failover/SIPService.conf
create mode 100644 configs/icebox/failover/SIPServiceActive.conf
create mode 100644 configs/icebox/failover/SIPServiceStandby.conf
create mode 100644 configs/icebox/failover/ServiceDiscovery.conf
create mode 100644 configs/icebox/failover/ServiceDiscoveryActive.conf
create mode 100644 configs/icebox/failover/ServiceDiscoveryStandby.conf
create mode 100644 configs/icebox/failover/ServiceDiscoveryStateReplicator.conf
create mode 100644 configs/icebox/failover/SipStateReplicator.conf
create mode 100644 configs/icebox/standalone/BridgeManager.conf
create mode 100644 configs/icebox/standalone/BridgeStateReplicator.conf
create mode 100644 configs/icebox/standalone/Logger.conf
create mode 100644 configs/icebox/standalone/MediaFormatGeneric.conf
create mode 100644 configs/icebox/standalone/MediaOperationCoreStateReplicator.conf
create mode 100644 configs/icebox/standalone/MediaOperationsCore.conf
create mode 100644 configs/icebox/standalone/MediaServiceRTP.conf
create mode 100644 configs/icebox/standalone/MediaServiceRTPStateReplicator.conf
create mode 100644 configs/icebox/standalone/RoutingService.conf
create mode 100644 configs/icebox/standalone/RoutingStateReplicator.conf
create mode 100644 configs/icebox/standalone/ServiceDiscovery.conf
create mode 100644 configs/icebox/standalone/ServiceDiscoveryStateReplicator.conf
create mode 100644 configs/icebox/standalone/SipService.conf
create mode 100644 configs/icebox/standalone/SipStateReplicator.conf
create mode 100644 configs/plugins/failover_conf.yaml
create mode 100644 configs/remote/remoteAgent.yaml.sample
create mode 100644 configs/server/remoteAgents.yaml
create mode 100755 contrib/ubuntu/init.d/testsuite-remote
create mode 100644 events/shutdown.yaml
create mode 100644 events/startup.yaml
create mode 100644 lib/python/DB.py
create mode 100644 lib/python/FileSystem.py
create mode 100644 lib/python/Info.py
create mode 100644 lib/python/JUnitXML.py
create mode 100644 lib/python/Logging.py
create mode 100644 lib/python/Misc.py
create mode 100644 lib/python/Plugin.py
create mode 100644 lib/python/RPC.py
create mode 100644 lib/python/SubProcess.py
create mode 100755 lib/python/Yaml.py
create mode 100644 lib/python/confluence.py
create mode 100644 lib/python/interactive.py
create mode 100644 plugins/asteriskscf_activator.py
create mode 100644 plugins/asteriskscf_configurator.py
create mode 100644 plugins/asteriskscf_icebox.py
create mode 100644 plugins/build.py
create mode 100644 plugins/failover.py
create mode 100644 plugins/protos.py
create mode 100644 plugins/sipp.py
create mode 100644 plugins/siprtp.py
create mode 100644 plugins/testsuite_remotes.py
create mode 100644 plugins/wireshark.py
create mode 100644 tests/asteriskscf/failover/bridge/testcase.yaml
create mode 100644 tests/asteriskscf/failover/media_ops_core/testcase.yaml
create mode 100644 tests/asteriskscf/failover/media_rtp/testcase.yaml
create mode 100644 tests/asteriskscf/failover/routing/testcase.yaml
create mode 100644 tests/asteriskscf/failover/service_discovery/testcase.yaml
create mode 100644 tests/asteriskscf/failover/sip/testcase.yaml
create mode 100644 tests/asteriskscf/failover/tests.yaml
create mode 100644 tests/asteriskscf/sip/Functional_Attended_Transfer/scenarios/call_then_attended_transfer.xml
create mode 100644 tests/asteriskscf/sip/Functional_Attended_Transfer/scenarios/wait_for_call.xml
create mode 100644 tests/asteriskscf/sip/Functional_Attended_Transfer/scenarios/wait_for_call_do_hangup.xml
create mode 100644 tests/asteriskscf/sip/Functional_Attended_Transfer/testcase.yaml
create mode 100644 tests/asteriskscf/sip/Functional_Blind_Transfer/scenarios/call_then_blind_transfer.xml
create mode 100644 tests/asteriskscf/sip/Functional_Blind_Transfer/scenarios/wait_for_call.xml
create mode 100644 tests/asteriskscf/sip/Functional_Blind_Transfer/scenarios/wait_for_call_do_hangup.xml
create mode 100644 tests/asteriskscf/sip/Functional_Blind_Transfer/testcase.yaml
create mode 100644 tests/asteriskscf/sip/Functional_Busy_Endpoint/scenarios/call.xml
create mode 100644 tests/asteriskscf/sip/Functional_Busy_Endpoint/scenarios/wait_for_call_busy.xml
create mode 100644 tests/asteriskscf/sip/Functional_Busy_Endpoint/testcase.yaml
create mode 100644 tests/asteriskscf/sip/Functional_Congestion_Endpoint/scenarios/call.xml
create mode 100644 tests/asteriskscf/sip/Functional_Congestion_Endpoint/scenarios/wait_for_call_congestion.xml
create mode 100644 tests/asteriskscf/sip/Functional_Congestion_Endpoint/testcase.yaml
create mode 100644 tests/asteriskscf/sip/Functional_RTCP_Simple/.testcase.yaml.swp
create mode 100644 tests/asteriskscf/sip/Functional_RTCP_Simple/testcase.yaml
create mode 100644 tests/asteriskscf/sip/Functional_Registrar_Simple/scenarios/register.xml
create mode 100644 tests/asteriskscf/sip/Functional_Registrar_Simple/testcase.yaml
create mode 100644 tests/asteriskscf/sip/Functional_Registrar_Verify_Username_Enumeration/scenarios/register.xml
create mode 100644 tests/asteriskscf/sip/Functional_Registrar_Verify_Username_Enumeration/scenarios/register_invalid.xml
create mode 100644 tests/asteriskscf/sip/Functional_Registrar_Verify_Username_Enumeration/testcase.yaml
create mode 100644 tests/asteriskscf/sip/Functional_Simple_Call_Plus_Failover/testcase.yaml
create mode 100644 tests/asteriskscf/sip/Functional_Simple_Endpoint/testcase.yaml
create mode 100644 tests/asteriskscf/sip/Functional_Simple_Endpoint_Distributed/testcase.yaml
create mode 100644 tests/asteriskscf/sip/Functional_Simple_Endpoint_Failover/testcase.yaml
create mode 100644 tests/asteriskscf/sip/Functional_Timeout_Endpoint/scenarios/call.xml
create mode 100644 tests/asteriskscf/sip/Functional_Timeout_Endpoint/scenarios/wait_for_call_timeout.xml
create mode 100644 tests/asteriskscf/sip/Functional_Timeout_Endpoint/testcase.yaml
create mode 100644 tests/asteriskscf/sip/Functional_Verify_Options_Method/scenarios/options.xml
create mode 100644 tests/asteriskscf/sip/Functional_Verify_Options_Method/scenarios/options2.xml
create mode 100644 tests/asteriskscf/sip/Functional_Verify_Options_Method/testcase.yaml
create mode 100644 tests/asteriskscf/sip/Functional_Verify_Refer_Replaces_To_Self/testcase.yaml
create mode 100644 tests/asteriskscf/sip/Performance_Maximum_CPS_Endpoint/testcase.yaml
create mode 100644 tests/asteriskscf/sip/Performance_Maximum_Simultaneous_Endpoint/testcase.yaml
create mode 100644 tests/asteriskscf/sip/Stress_PROTOS_TestSuite_c07_sip_r2/testcase.yaml
create mode 100644 tests/asteriskscf/sip/configurator/testcase.yaml
create mode 100644 tests/asteriskscf/sip/testing/testcase.yaml
create mode 100644 tests/asteriskscf/sip/tests.yaml
create mode 100644 tests/asteriskscf/tests.yaml
create mode 100644 tests/build/asterisk_scf/testcase.yaml
create mode 100644 tests/build/pjproject/patches/siprtp.patch
create mode 100644 tests/build/pjproject/patches/siprtp_report.patch
create mode 100644 tests/build/pjproject/testcase.yaml
create mode 100644 tests/build/testing/old_testcase.yaml
create mode 100644 tests/build/testing/testcase.yaml
create mode 100644 tests/build/tests.yaml
create mode 100644 tests/tests.yaml
create mode 100644 testsuite_results.xml
- Log -----------------------------------------------------------------
commit 73453c2c882229d46607502637b9c2cd9cceb119
Author: Darren Sessions <dsessions at digium.com>
Date: Wed May 2 09:25:09 2012 -0500
Housekeeping; now that the bamboo scripts have their own repo they no longer need to be stored in the testsuite release repo. Additionally, I'm committing the latest testsuite code into this repo for test tracking with bamboo.
diff --git a/3rdparty/PROTOS/c07-sip-r2.jar b/3rdparty/PROTOS/c07-sip-r2.jar
new file mode 100644
index 0000000..664a6b5
Binary files /dev/null and b/3rdparty/PROTOS/c07-sip-r2.jar differ
diff --git a/Makefile b/Makefile
new file mode 100644
index 0000000..4ba9b86
--- /dev/null
+++ b/Makefile
@@ -0,0 +1,51 @@
+USER=`whoami`
+INSTALLDIR=/usr/local/testsuite
+
+all: _banner
+ @echo " +-----------------------------------+ "
+ @echo " + Please run, 'sudo make install' + "
+ @echo " +-----------------------------------+ "
+ @echo ""
+
+_banner:
+ @echo ""
+ @echo " _ _ _ _ "
+ @echo " | |_ ___ ___| |_ ___ _ _(_) |_ ___ "
+ @echo " | __/ _ \/ __| __|_____/ __| | | | | __/ _ \ "
+ @echo " | || __/\__ \ ||______\__ \ |_| | | || __/ "
+ @echo " \__\___||___/\__| |___/\__,_|_|\__\___| "
+ @echo ""
+
+install: _banner _install
+ @echo " +----- Test-Suite Installation Complete -----+ "
+ @echo " + + "
+ @echo " + The test-suite is now installed. An init + "
+ @echo " + script to fully automate the startup and + "
+ @echo " + and shutdown of the test-suite remote + "
+ @echo " + agent is highly recommended. Sample init + "
+ @echo " + scripts are provided in the 'contrib' + "
+ @echo " + directory. + "
+ @echo " + + "
+ @echo " +--------------------------------------------+ "
+ @echo ""
+
+_install: usercheck copy
+
+usercheck:
+ @if [ "$(USER)" != "root" ]; then \
+ echo ""; \
+ echo " ---------------------------------------------------"; \
+ echo " The test-suite must be installed, and ran, as root."; \
+ echo " ---------------------------------------------------"; \
+ echo ""; \
+ exit 1; \
+ fi
+
+copy:
+ @if [ ! -d $(INSTALLDIR) ]; then \
+ mkdir -p $(INSTALLDIR); \
+ fi
+
+ @for f in *; do \
+ cp -R -p $$f $(INSTALLDIR); \
+ done
diff --git a/RemoteAgent.py b/RemoteAgent.py
new file mode 100755
index 0000000..0462388
--- /dev/null
+++ b/RemoteAgent.py
@@ -0,0 +1,133 @@
+#!/usr/bin/env python
+'''
+
+ Remote Agent
+
+ Test-Suite - Copyright (C) 2011, Digium, Inc.
+
+ Written by Darren Sessions
+
+ See http://wiki.asterisk.org for more information.
+
+ This program is free software, distributed under the
+ terms of the GNU General Public License Version 2.
+
+'''
+
+import os
+import sys
+import time
+import xmlrpclib
+import SimpleXMLRPCServer
+
+cdir = os.path.dirname(os.path.realpath(__file__))
+sys.path.append("%s/lib/python" % cdir)
+sys.path.append("%s/configs" % cdir)
+
+from GlobalVars import globalVars
+
+globalVars.cwd = cdir
+
+globalVars.env = os.environ
+globalVars.env["PATH"] = "/usr/lib/ccache:" + globalVars.env["PATH"]
+
+import RPC
+import Info
+import Misc
+import FileSystem
+import SubProcess
+import Interactive
+
+class TestSuiteRemoteAgent(FileSystem.Handler, Misc.Utils, SubProcess.Exec, RPC.BaseClass):
+ def __init__(self):
+ try:
+ self.server = SimpleXMLRPCServer.SimpleXMLRPCServer((globalVars.ifaceInfo['rpc']['ipv4'], 8000), logRequests=False, allow_none=True)
+ except:
+ print ' Unable to start RPC Server!\n %s!\n' % sys.exc_info()[1]
+ return
+
+ self.server.register_instance(self)
+ globalVars.startTime = time.time()
+
+ print '** Remote Agent Started!\n'
+ while globalVars.exitMainLoop == False:
+ self.server.handle_request()
+
+ def setTestInfo(self, testInfo):
+ globalVars.testInfo = testInfo
+ return self.resSuccess()
+
+ def ping(self):
+ return 'pong'
+
+ def hostInfo(self):
+ return (globalVars.ifaceInfo, globalVars.hostInfo)
+
+ def restart(self):
+ globalVars.exitMainLoop = True
+ return self.resSuccess()
+
+ def uptime(self):
+ return time.time() - globalVars.startTime
+
+class Startup(FileSystem.Handler):
+ def __init__(self, argv=None):
+
+ if len(argv) < 2:
+ print >> sys.stderr, ' A run mode (\'console\' or \'rpc\') must be specified as an argument.'
+ sys.exit(1)
+
+ if not argv[1] == 'console' and not argv[1] == 'rpc':
+ print >> sys.stderr, ' Valid run modes are \'console\' or \'rpc\'.'
+ sys.exit(1)
+ else:
+ globalVars.mode = argv[1]
+
+ Info.Host().Get()
+
+ if globalVars.hostInfo['plat'] == 'Windows':
+ # Do fun stuff here like executing the Windows VS env var wrapper code
+ pass
+
+ while globalVars.childRestart == True:
+ pid = os.fork()
+ if pid:
+ os.waitpid(pid, 0)
+ else:
+ break
+ if pid:
+ sys.exit(0)
+
+ print '\n' + '\n'.join(Misc.Utils().banner()) + '\n ' + '-'*43 + '\n'
+
+ while not globalVars.configuredProperly:
+ readRemoteConfig = self.readFile(globalVars.configFile, yamlBool=True)
+ if not readRemoteConfig:
+ res = Interactive.Menu('notConfigured')
+ if res == None:
+ ipc.write('stop')
+ return
+ writeRemoteConfig = self.writeFile(globalVars.configFile, globalVars.interactive['qData'], yamlBool=True)
+ globalVars.configuredProperly = True
+ else:
+ for var in readRemoteConfig['data']['ifaces']:
+ globalVars.ifaces[var] = readRemoteConfig['data']['ifaces'][var]
+ globalVars.configuredProperly = True
+
+ Info.Host().getConfiguredIfaceDetails()
+
+ if globalVars.startupErrors == True:
+ print ' ' + '-'*43 + '\n Fatal errors were detected during startup!!\n ' + '-'*43
+ ipc.write('stop')
+ sys.exit(1)
+
+ if globalVars.mode == 'console':
+ pass
+ #Interactive.Menu('main')
+ else:
+ TestSuiteRemoteAgent()
+
+ sys.exit(0)
+
+if __name__=='__main__':
+ sys.exit(Startup(sys.argv))
diff --git a/Server.py b/Server.py
new file mode 100755
index 0000000..3f95608
--- /dev/null
+++ b/Server.py
@@ -0,0 +1,392 @@
+#!/usr/bin/env python
+'''
+
+ Server
+
+ Test-Suite - Copyright (C) 2011, Digium, Inc.
+
+ Written by Darren Sessions
+
+ See http://wiki.asterisk.org for more information.
+
+ This program is free software, distributed under the
+ terms of the GNU General Public License Version 2.
+
+'''
+
+import os
+import sys
+import time
+import datetime
+import xmlrpclib
+import SimpleXMLRPCServer
+
+cdir = os.path.dirname(os.path.realpath(__file__))
+sys.path.append("%s/lib/python" % cdir)
+sys.path.append("%s/plugins" % cdir)
+sys.path.append("%s/configs" % cdir)
+
+from GlobalVars import globalVars
+
+globalVars.cwd = cdir
+
+#import DB
+import RPC
+import Info
+import Misc
+import Yaml
+import Plugin
+import JUnitXML
+import FileSystem
+#import Interactive
+
+class TestSuiteServer(Misc.Utils, Plugin.Loader, RPC.BaseClass):
+ def __init__(self, argv=None):
+ print '\n' + '\n'.join(Misc.Utils().banner()) + '\n ' + '-'*43 + '\n'
+ if not os.path.exists('%s/tmp' % globalVars.cwd):
+ os.makedirs('%s/tmp' % globalVars.cwd)
+ if not os.path.exists('%s/tmp/artifacts' % globalVars.cwd):
+ os.makedirs('%s/tmp/artifacts' % globalVars.cwd)
+ try:
+ os.remove('testsuite_results.xml')
+ except:
+ pass
+
+ if len(argv) >= 2:
+ globalVars.mode = argv[1]
+ else:
+ self.fatalError('A run mode (\'testing\' or \'docs\') must be specified as the first argument.')
+
+ if len(argv) == 4:
+ globalVars.bambooBuildKey = argv[2]
+ globalVars.bambooBuildNum = argv[3]
+ globalVars.bambooBuildURL = 'http://bamboo.asterisk.org/artifact/%s/build-%s/Artifacts/' % (re.sub(r'SUITE-', 'SUITE/', globalVars.bambooBuildKey), globalVars.bambooBuildNum)
+ else:
+ if len(argv) != 2:
+ print >> sys.stderr, ' NOTE: The Bamboo build key and build number are both\n required to generate artifact link URLs.\n'
+
+ if not globalVars.mode == 'testing' and not globalVars.mode == 'docs':
+ self.fatalError('%s is an invalid mode.' % globalVars.mode)
+
+ res = self.readFile(globalVars.remoteAgentsListFile, yamlBool=True)
+ if res['success'] == False:
+ self.fatalError('Unable to load remote agent list!')
+
+ globalVars.remoteAgents = res['data']
+
+ #if globalVars.mode == 'testing':
+ # res = DB.Postgres().startup()
+ # if res['success'] == False:
+ # self.fatalError('Unable to initialize the database connection! %s' % res['msg'])
+
+ res = Yaml.Load().testData()
+ if res['success'] == False:
+ self.fatalError('Unable to load tests!\n\n %s' % res['msg'])
+
+ self.main(res['data'])
+
+ #if globalVars.mode == 'testing':
+ # res = DB.Postgres().shutdown()
+ # if res['success'] == False:
+ # self.fatalError('Unable to stop db session properly! %s' % res['msg'])
+
+
+ def main(self, yamlData):
+ errorMsgs = []
+ pluginData = {}
+ shutdownList = []
+ stopTests = False
+
+ Info.Host().Get()
+
+ ''' import plugins '''
+ res = self.loadPlugins()
+ if res['success'] == False:
+ print >> sys.stderr, '\n Unable to load plugins! %s' % res['msg']
+ return
+
+ ''' init the JUnit xml '''
+ if globalVars.mode == 'testing':
+ x = JUnitXML.xml().initTestSuite()
+
+ ''' init the test-suite remote agents '''
+ for host in globalVars.remoteAgents:
+ res = self.rpcConnect([host, 'rpc', 'ipv4'])
+ if res['success'] == False:
+ print >> sys.stderr, '\n Unable to initialize remote agent on %s. %s\n' % (host, res['msg'])
+ return
+
+ res = self.rpcBatchCmd(globalVars.remoteAgents, ('restart',))
+ if res['success'] == False:
+ print >> sys.stderr, '\n Unable to restart remote agents. %s' % res['msg']
+ return
+
+ time.sleep(.5)
+
+ for host in globalVars.remoteAgents:
+ res = self.rpcConnect([host, 'rpc', 'ipv4'])
+ if res['success'] == False:
+ print >> sys.stderr, '\n Unable to initialize remote agent on %s. %s\n' % (host, res['msg'])
+ return
+
+ ''' main test processing loop '''
+ for list in yamlData:
+ if stopTests == True:
+ break
+ for testCategory in list:
+ if stopTests == True:
+ break
+ if globalVars.mode == 'testing':
+ x, categoryElement = JUnitXML.xml().addTestSuite(x, testCategory)
+ print >> sys.stderr, "\n Starting '%s' Tests . . \n " % testCategory + '-'*55
+ else:
+ print >> sys.stderr, "\n Creating the '%s' wiki page . .\n " % testCategory + '-'*55
+
+ docsPluginData = {testCategory:{}}
+
+ for testData in list[testCategory]['tests']:
+ if globalVars.mode == 'testing':
+ categoryElement, testElement = JUnitXML.xml().addTestSuite(categoryElement, testData['name'])
+ print >> sys.stderr, ' |- Testcase: %s ' % testData['name']
+ if not 'options' in testData:
+ testData['options'] = {}
+ if globalVars.mode == 'docs':
+ if not 'docs' in testData:
+ print >> sys.stderr, ' No documentation found for testcase: %s' % testData['name']
+ break
+ else:
+ print >> sys.stderr, ' Loading documentation for testcase: %s' % testData['name']
+
+ docsPluginData[testCategory][testData['name']] = {'testData':testData['docs'],'tests':{}}
+
+ #if globalVars.mode == 'testing':
+ # ''' Insert initial test-case information into the database '''
+ # sql = '''INSERT INTO testcases (session_uuid, testcase_uuid, category_name, testcase_name) VALUES ('%s', DEFAULT, '%s', '%s') RETURNING testcase_uuid''' % \
+ # (globalVars.db.uuid.session, testCategory, testData['name'])
+ # res = globalVars.db.execute(sql, retRecs=True)
+ # if res['success'] == False:
+ # print >> sys.stderr, 'Unable to insert test information into the DB! %s' % res['msg']
+ # break
+ # globalVars.db.uuid.testcase = res['records'][0][0]
+
+ ''' Sub-Test processing loop '''
+ for subTestCase in testData['tests']:
+ timerStart = datetime.datetime.now()
+ if stopTests == True:
+ break
+ for testName in subTestCase:
+ globalVars.testSuccess = True
+ globalVars.testMsg = ''
+ globalVars.testInfo = {
+ 'testCategory':testCategory,
+ 'testCase':testData['name'],
+ 'testName':testName,
+ 'testLogs':'%s/%s/%s' % (testCategory, testData['name'], testName),
+ 'testPath':'%s/%s' % (testCategory, testData['name']),
+ 'testOpts': testData['options']
+ }
+
+ res = self.rpcBatchCmd(globalVars.remoteAgents, ('setTestInfo', globalVars.testInfo))
+ if res['success'] == False:
+ print >> sys.stderr, ' |- FATAL ERROR SETTING TESTINFO ON REMOTES!! %s' % res['msg']
+ return
+ if globalVars.mode == 'testing':
+ testElement, subTestElement = JUnitXML.xml().addTestCase(testElement, testName)
+ elif globalVars.mode == 'docs':
+ docsPluginData[testCategory][testData['name']]['tests'][testName] = {'pluginData':[]}
+
+ if subTestCase[testName]:
+ success = True
+
+ if 'expected_failure' in subTestCase[testName]:
+ if subTestCase[testName]['expected_failure'] == True:
+ subTestElement = JUnitXML.xml().setProperty(subTestElement, 'expected_failure', subTestCase[testName]['expected_failure'])
+
+ #if globalVars.mode == 'testing':
+ # ''' Insert test information into the database '''
+ # sql = '''INSERT INTO tests (testcase_uuid, test_uuid, testcase_name, test_name) VALUES ('%s', DEFAULT, '%s', '%s') RETURNING test_uuid''' % \
+ # (globalVars.db.uuid.testcase, testData['name'], testName)
+ # res = globalVars.db.execute(sql, retRecs=True)
+ # if res['success'] == False:
+ # print >> sys.stderr, 'Unable to insert test information into the DB! %s' % res['msg']
+ # break
+ # globalVars.db.uuid.test = res['records'][0][0]
+
+ ''' execute testcase timeline '''
+ for timeLine in subTestCase[testName]['timeline']:
+ for plugin in timeLine:
+ globalVars.testInfo['testPlugin'] = plugin
+
+ runResults = self.pluginExecute(plugin, timeLine[plugin])
+
+ if globalVars.mode == 'testing':
+ if 'pluginData' in runResults:
+ pluginData[plugin] = runResults['pluginData']
+
+ if not 'shutdownList' in runResults:
+ if not 'shutdownExempt' in runResults:
+ if 'remote_agent' in timeLine[plugin]:
+ shutdownList.append({timeLine[plugin]['remote_agent'][0]:plugin})
+ else:
+ for remote in runResults['shutdownList']:
+ shutdownList.append({remote[0]:plugin})
+
+ if runResults['success'] == False and globalVars.testSuccess == True:
+ globalVars.testSuccess = False
+ if 'remote' in runResults:
+ globalVars.testMsg = runResults['msg'] = "'%s' plugin on '%s': %s" % (plugin, runResults['remote'], runResults['msg'])
+ else:
+ globalVars.testMsg = runResults['msg'] = "'%s' plugin: %s" % (plugin, runResults['msg'])
+
+ break
+
+ if runResults['success'] == 'docs':
+ docsPluginData[testCategory][testData['name']]['tests'][testName]['pluginData'].append({'pluginName':plugin,'results':runResults['docs']})
+
+ if globalVars.mode == 'testing':
+ ''' get timer delta '''
+ timerDelta = datetime.datetime.now() - timerStart
+
+ ''' shutdown if 'restart_persistant_plugins_between_tests' is true or not specified '''
+ for d in shutdownList:
+ for host in d:
+ remote = xmlrpclib.Server('http://%s:8000' % host)
+ try:
+ remote.shutdown(d[host])
+ except:
+ print >> sys.stderr, ' |- FAILED TO SHUTDOWN: %s' % d
+
+ skipFailure = False
+ if 'expected_failure' in subTestCase[testName]:
+ if subTestCase[testName]['expected_failure'] == True:
+ skipFailure = True
+
+ if globalVars.testSuccess == False and skipFailure == False or globalVars.testSuccess == True and skipFailure == True:
+ if skipFailure == True:
+ globalVars.testMsg = 'Test passed but the expected failure flag is set to true!'
+ print >> sys.stderr, ' |- Test "' + testName + '" - FAILED!\n \- ' + globalVars.testMsg
+ xmlFailureMsg = '%s' % globalVars.testMsg
+
+ if getattr(globalVars, 'bambooBuildURL', None):
+ xmlFailureMsg = '%s\nIf artifacts specific to this test were generated,\n' % globalVars.testMsg
+ xmlFailureMsg = '%s they can be found pasting the link below in your browser or by clicking the Artifacts tab above.\n\n' % xmlFailureMsg
+ xmlFailureMsg = '%s%s%s' % (xmlFailureMsg, globalVars.bambooBuildURL, globalVars.testInfo['testPath'])
+ subTestElement, errorMsgs = JUnitXML.xml().addFailure(subTestElement, [xmlFailureMsg])
+
+ if 'stop_tests_on_failure' in globalVars.testInfo['testOpts']:
+ print >> sys.stderr, '\n Stop tests on failure = True\n'
+ if globalVars.testInfo['testOpts']['stop_tests_on_failure'] == True:
+ stopTests = True
+ break
+
+ passedMsg = 'PASSED!'
+ if skipFailure == True:
+ passedMsg = '%s - (Expected Failure)' % passedMsg
+
+ print >> sys.stderr, ' |- ' + testName + ' - %s - %s.%s seconds' % (passedMsg, timerDelta.seconds, timerDelta.microseconds)
+ subTestElement = JUnitXML.xml().setProperty(subTestElement, 'time', '%s.%s' % (timerDelta.seconds, timerDelta.microseconds))
+
+ else:
+ print >> sys.stderr, ' |- ' + testName + ' - FAILED!\n \- No test data defined!'
+ subTestElement, errorMsgs = JUnitXML.xml().addFailure(subTestElement, ['No test data defined!'])
+ break
+
+ #if globalVars.mode == 'testing':
+ # sql = '''UPDATE tests SET runtime = '%s.%s', success = '%s', msg = '%s' WHERE test_uuid = '%s' ''' % \
+ # (timerDelta.seconds, timerDelta.microseconds, globalVars.testSuccess, globalVars.testMsg, globalVars.db.uuid.test)
+ # res = globalVars.db.execute(sql)
+ # if res['success'] == False:
+ # print >> sys.stderr, 'Unable to insert test information into the DB! %s' % res['msg']
+ # break
+
+ if stopTests == True:
+ break
+
+ if globalVars.mode == 'docs':
+ results = file.file().read('%s/docs/%s_page_template.confluence' % (cwd, list[testCategory]['docs']['template']))
+ if results['success'] == False:
+ print >> sys.stderr, "Fatal! Unable to open the '%s' page template." % list[testCategory]['docs']['template']
+ return
+
+ pageTemplate = results['fd']
+ pageTemplate = pageTemplate.replace('!!OVERVIEW!!', list[testCategory]['docs']['overview'])
+
+ checkEnvVar = {}
+ for docCategory in docsPluginData:
+
+ testType = {'functional':[], 'performance':[], 'stress':[]}
+
+ for docTestCase in docsPluginData[docCategory]:
+ results = file.file().read('%s/docs/%s_test_template.confluence' % (cwd, docsPluginData[docCategory][docTestCase]['testData']['template']))
+ if results['success'] == False:
+ print >> sys.stderr, "Fatal! Unable to open the '%s' test template." % list[testCategory]['docs']['template']
+ return
+
+ testTemplate = results['fd']
+ testTemplate = testTemplate.replace('!!TITLE!!', docTestCase)
+ testTemplate = testTemplate.replace('!!SUMMARY!!', docsPluginData[docCategory][docTestCase]['testData']['summary'])
+ testTemplate = testTemplate.replace('!!DESCRIPTION!!', docsPluginData[docCategory][docTestCase]['testData']['description'])
+ testTemplate = testTemplate.replace('!!COMPONENTS!!', docsPluginData[docCategory][docTestCase]['testData']['components'])
+ testTemplate = testTemplate.replace('!!REQUIREMENTS!!', docsPluginData[docCategory][docTestCase]['testData']['requirements'])
+
+ docTests = []
+ for docTestName in docsPluginData[docCategory][docTestCase]['tests']:
+ tests = []
+ tests.append('{info:title=%s sub-test}{info}' % docTestName)
+ for data in docsPluginData[docCategory][docTestCase]['tests'][docTestName]['pluginData']:
+ data['pluginName'] = data['pluginName'].capitalize()
+ data['pluginName'] = data['pluginName'].replace('_', ' ')
+ data['pluginName'] = data['pluginName'].replace('Asteriskscf', 'Asterisk SCF -')
+ data['pluginName'] = data['pluginName'].replace('icebox', 'IceBox')
+ data['pluginName'] = data['pluginName'].replace('Sipp', 'SIPp')
+ tests.append('{code:title=%s|borderStyle=solid}' % data['pluginName'])
+ for rpc in data['results']:
+ if rpc['cmd'] == 'run' or rpc['cmd'] == 'setEnvVar':
+ if rpc['cmd'] == 'run':
+ tests.append('\n'.join(textwrap.wrap(' '.join(rpc['args'][4]), 90)))
+ elif rpc['cmd'] == 'setEnvVar':
+ if rpc['args'][0] in checkEnvVar:
+ if checkEnvVar[rpc['args'][0]] == rpc['args'][1]:
+ continue
+ checkEnvVar[rpc['args'][0]] = rpc['args'][1]
+ if rpc['args'][0] == 'libpath':
+ tests.append('export LD_LIBRARY_PATH=%s' % rpc['args'][1])
+ tests.append('{code}')
+ tests.append('{br}')
+ docTests.append('\n'.join(tests))
+
+ testTemplate = testTemplate.replace('!!TESTPROCEDURES!!', '\n'.join(docTests))
+
+ testType[docsPluginData[docCategory][docTestCase]['testData']['category']].append(testTemplate)
+
+ pageTemplate = pageTemplate.replace('!!FUNCTIONALTESTS!!', '\n'.join(testType['functional']))
+ pageTemplate = pageTemplate.replace('!!PERFORMANCETESTS!!', '\n'.join(testType['performance']))
+ pageTemplate = pageTemplate.replace('!!STRESSTESTS!!', '\n'.join(testType['stress']))
+
+ confluence.process(list[testCategory]['docs']['title'], list[testCategory]['docs']['space'], list[testCategory]['docs']['parentPage'], pageTemplate, list[testCategory]['lastModDates'])
+
+ if globalVars.mode == 'testing':
+ res = self.writeFile('!!CWD!!/testsuite_results.xml', JUnitXML.xml().prettyXml(x))
+ if res['success'] == False:
+ print >> sys.stderr, '\n\n Unable to generate XML test results file. %s' % res['msg']
+
+ return
+
+ def _dataMerge(self, FROM, TO):
+ for val in FROM:
+ TO[val] = FROM[val]
+ return TO
+
+ #if wth['cmd'] == 'run' or wth['cmd'] == 'setEnv':
+ # pass
+ #print wth['args'][1]['testInfo']['testPlugin']
+ #args = ' '.join(wth['args'][4])
+ #args = args.replace('!!TMP!!/sipp/sipp/trunk/sipp', 'sipp')
+ #args = args.replace('!!CWD!!/tests/sip/Functional_Basic_Call_Forward_Blind_Transfer/scenarios/', './')
+ #args = args.replace('!!TMP!!/', './')
+ #args = args.replace('/tmp/', './')
+ #print args
+
+if __name__=='__main__':
+ TestSuiteServer(sys.argv)
+ print >> sys.stderr, '\n'
diff --git a/configs/GlobalVars.py b/configs/GlobalVars.py
new file mode 100644
index 0000000..567d695
--- /dev/null
+++ b/configs/GlobalVars.py
@@ -0,0 +1,68 @@
+'''
+
+ Server and Remote Agent Global Variables
+
+ Test-Suite - Copyright (C) 2011, Digium, Inc.
+
+ Written by Darren Sessions
+
+ See http://wiki.asterisk.org for more information.
+
+ This program is free software, distributed under the
+ terms of the GNU General Public License Version 2.
+
+'''
+
+import os
+import sys
+
+class globalVars:
+
+ class db:
+ class uuid:
+ pass
+
+ dsn = "host='testsuite-db-1.digium.internal' dbname=testsuite user=testsuite-server password=changeme1234"
+
+ class rpc:
+ cmd = {}
+ proxy = {}
+ count = 0
+
+ debug = False
+ pname = os.path.split(sys.argv[0])[1]
+ mode = ''
+
+ testInfo = {}
+ remoteInfo = {}
+ hostInfo = {'interfaceList':[], 'plat':'', 'arch':'', 'hostname':'', 'fqdn':''}
+
+ if pname == 'RemoteAgent.py':
+ childRestart = True
+ exitMainLoop = False
+ startupErrors = False
+ configuredProperly = False
+ processList = {}
+
+ ifaces = {'rpc':'', 'public1':'', 'public2':'', 'private':''}
+ ifaceInfo = {'rpc':{'ipv4':'', 'ipv6':'', 'mac':''}, 'public1':{'ipv4':'', 'ipv6':'', 'mac':''}, 'public2':{'ipv4':'', 'ipv6':'', 'mac':''}, 'private':{'ipv4':'', 'ipv6':'', 'mac':''}}
+
+ interactive = {'qData':{}, 'menuData':{}}
+ configFile = '!!CWD!!/configs/remote/remoteAgent.yaml'
+
+ elif pname == 'Server.py':
+ docs = []
+ overrides = {}
+
+ cleanup = {'process':[], 'tempFile':[]}
+
+ plugins = {}
+ pluginConfigs = '!!CWD!!/configs/plugins'
+
+ testSuccess = True
+ testMainDir = 'tests'
+ testCategoryYaml = 'tests.yaml'
+ testCaseYaml = 'testcase.yaml'
+
+ remoteAgents = []
+ remoteAgentsListFile = '!!CWD!!/configs/server/remoteAgents.yaml'
diff --git a/configs/icebox/failover/BridgeManager.conf b/configs/icebox/failover/BridgeManager.conf
new file mode 100644
index 0000000..a5fa508
--- /dev/null
+++ b/configs/icebox/failover/BridgeManager.conf
@@ -0,0 +1,29 @@
+IceBox.InheritProperties=1
+# this value was empirically determined... it may need to be different on different systems
+Ice.Default.CollocationOptimized=0
+Ice.ThreadPool.Client.Size=10
+IceBox.Service.BridgeManager=BridgeService:create
+
+BridgeManager.ServiceAdapter.Endpoints=tcp -p 4441
+BridgeManager.BackplaneAdapter.Endpoints=tcp -p 4442
+BridgeManager.Standalone=yes
+BridgeManager.ManagerInterface.ObjectId=BridgeManager
+
+
+# this service name property is used when registering this component's
+# services with the ServiceLocator. services are registered with
+# a Category, Service, and Instance.
+BridgeManager.ServiceName=default
+
+# These properties define the total timeout and delay
+# per try in seconds for initialization of the
+# service locator
+BridgeManager.InitServiceLocatorTimeout=30 # minimum: 1, default: 30 (seconds)
+BridgeManager.InitServiceLocatorRetryDelay=2 # minimum: 1, default: 2 (seconds)
+
+LocatorService.Proxy=LocatorService:tcp -p 4411
+LocatorServiceManagement.Proxy=LocatorServiceManagement:tcp -p 4412
+
+# this is used to connect to the IceStorm instance that lives in the same IceBox
+# container as the ServiceDiscovery service
+TopicManager.Proxy=ServiceDiscovery/TopicManager:tcp -p 4421
diff --git a/configs/icebox/failover/BridgeManagerActive.conf b/configs/icebox/failover/BridgeManagerActive.conf
new file mode 100644
index 0000000..bb11824
--- /dev/null
+++ b/configs/icebox/failover/BridgeManagerActive.conf
@@ -0,0 +1,28 @@
+IceBox.InheritProperties=1
+# this value was empirically determined... it may need to be different on different systems
+Ice.Default.CollocationOptimized=0
+Ice.ThreadPool.Client.Size=10
+IceBox.Service.BridgeManagerActive=BridgeService:create
+
+BridgeManagerActive.ServiceAdapter.Endpoints=tcp -p 4441 !!PUBLIC!!
+BridgeManagerActive.BackplaneAdapter.Endpoints=tcp -p 4442 !!PRIVATE!!
+BridgeManagerActive.ManagerInterface.ObjectId=BridgeManager
+
+
+# this service name property is used when registering this component's
+# services with the ServiceLocator. services are registered with
+# a Category, Service, and Instance.
+BridgeManagerActive.ServiceName=default
+
+# These properties define the total timeout and delay
+# per try in seconds for initialization of the
+# service locator
+BridgeManagerActive.InitServiceLocatorTimeout=30 # minimum: 1, default: 30 (seconds)
+BridgeManagerActive.InitServiceLocatorRetryDelay=2 # minimum: 1, default: 2 (seconds)
+
+LocatorService.Proxy=LocatorService:tcp -p 4411 !!SERVICELOCATOR!!
+LocatorServiceManagement.Proxy=LocatorServiceManagement:tcp -p 4412 !!SERVICELOCATOR!!
+
+# this is used to connect to the IceStorm instance that lives in the same IceBox
+# container as the ServiceDiscovery service
+TopicManager.Proxy=ServiceDiscovery/TopicManager:tcp -p 4421 !!SERVICELOCATOR!!
diff --git a/configs/icebox/failover/BridgeManagerStandby.conf b/configs/icebox/failover/BridgeManagerStandby.conf
new file mode 100644
index 0000000..5c7f648
--- /dev/null
+++ b/configs/icebox/failover/BridgeManagerStandby.conf
@@ -0,0 +1,28 @@
+IceBox.InheritProperties=1
+# this value was empirically determined... it may need to be different on different systems
+Ice.Default.CollocationOptimized=0
+Ice.ThreadPool.Client.Size=10
+IceBox.Service.BridgeManagerStandby=BridgeService:create
+
+BridgeManagerStandby.ServiceAdapter.Endpoints=tcp -p 4441 !!PUBLIC!!
+BridgeManagerStandby.BackplaneAdapter.Endpoints=tcp -p 4442 !!PRIVATE!!
+BridgeManagerStandby.ManagerInterface.ObjectId=BridgeManager
+
+
+# this service name property is used when registering this component's
+# services with the ServiceLocator. services are registered with
+# a Category, Service, and Instance.
+BridgeManagerStandby.ServiceName=default
+
+# These properties define the total timeout and delay
+# per try in seconds for initialization of the
+# service locator
+BridgeManagerStandby.InitServiceLocatorTimeout=30 # minimum: 1, default: 30 (seconds)
+BridgeManagerStandby.InitServiceLocatorRetryDelay=2 # minimum: 1, default: 2 (seconds)
+
+LocatorService.Proxy=LocatorService:tcp -p 4411 !!SERVICELOCATOR!!
+LocatorServiceManagement.Proxy=LocatorServiceManagement:tcp -p 4412 !!SERVICELOCATOR!!
+
+# this is used to connect to the IceStorm instance that lives in the same IceBox
+# container as the ServiceDiscovery service
+TopicManager.Proxy=ServiceDiscovery/TopicManager:tcp -p 4421 !!SERVICELOCATOR!!
diff --git a/configs/icebox/failover/BridgeStateReplicator.conf b/configs/icebox/failover/BridgeStateReplicator.conf
new file mode 100644
index 0000000..9bccdaf
--- /dev/null
+++ b/configs/icebox/failover/BridgeStateReplicator.conf
@@ -0,0 +1,21 @@
+IceBox.InheritProperties=1
+Ice.Default.CollocationOptimized=0
+# this value was empirically determined... it may need to be different on different systems
+Ice.ThreadPool.Client.Size=10
+IceBox.Service.BridgeReplicator=BridgeReplicator:create
+
+BridgeReplicator.Adapter.ThreadPool.Size=4
+
+BridgeReplicator.Adapter.Endpoints=tcp -p 4491
+
+# this service name property is used when registering this component's
+# services with the ServiceLocator. services are registered with
+# a Category, Service, and Instance.
+BridgeReplicator.ServiceName=default
+
+LocatorService.Proxy=LocatorService:tcp -p 4411
+LocatorServiceManagement.Proxy=LocatorServiceManagement:tcp -p 4412
+
+# this is used to connect to the IceStorm instance that lives in the same IceBox
+# container as the ServiceDiscovery service
+TopicManager.Proxy=ServiceDiscovery/TopicManager:tcp -p 4421
diff --git a/configs/icebox/failover/Logger.conf b/configs/icebox/failover/Logger.conf
new file mode 100644
index 0000000..8ef18a4
--- /dev/null
+++ b/configs/icebox/failover/Logger.conf
@@ -0,0 +1,11 @@
+IceBox.InheritProperties=1
+Ice.Default.CollocationOptimized=0
+IceBox.Service.Logger=LoggingService:createLoggingService
+
+Logger.ServiceAdapter.Endpoints=tcp -p 4431
+
+LocatorServiceManagement.Proxy=LocatorServiceManagement:tcp -p 4412
+
+# this is used to connect to the IceStorm instance that lives in the same IceBox
+# container as the ServiceDiscovery service
+TopicManager.Proxy=ServiceDiscovery/TopicManager:tcp -p 4421
diff --git a/configs/icebox/failover/MediaFormatGeneric.conf b/configs/icebox/failover/MediaFormatGeneric.conf
new file mode 100644
index 0000000..9b097a9
--- /dev/null
+++ b/configs/icebox/failover/MediaFormatGeneric.conf
@@ -0,0 +1,26 @@
+IceBox.InheritProperties=1
+Ice.Default.CollocationOptimized=0
+# this value was empirically determined... it may need to be different on different systems
+Ice.ThreadPool.Client.Size=10
+IceBox.Service.MediaFormatGeneric=mediaformatgeneric:create
+
+MediaFormatGeneric.ServiceAdapter.Endpoints=tcp -p 4501
+MediaFormatGeneric.BackplaneAdapter.Endpoints=tcp -p 4502
+MediaFormatGeneric.Standalone=yes
+# this service name property is used when registering this component's
+# services with the ServiceLocator. services are registered with
+# a Category, Service, and Instance.
+MediaFormatGeneric.ServiceName=default
+
+# These properties define the total timeout and delay
+# per try in seconds for initialization of the
+# service locator
+MediaFormatGeneric.InitServiceLocatorTimeout=30 # minimum: 1, default: 30 (seconds)
+MediaFormatGeneric.InitServiceLocatorRetryDelay=2 # minimum: 1, default: 2 (seconds)
+
+LocatorService.Proxy=LocatorService:tcp -p 4411
+LocatorServiceManagement.Proxy=LocatorServiceManagement:tcp -p 4412
+
+# this is used to connect to the IceStorm instance that lives in the same IceBox
+# container as the ServiceDiscovery service
+TopicManager.Proxy=ServiceDiscovery/TopicManager:tcp -p 4421
diff --git a/configs/icebox/failover/MediaOperationCoreStateReplicator.conf b/configs/icebox/failover/MediaOperationCoreStateReplicator.conf
new file mode 100644
index 0000000..4bf5de6
--- /dev/null
+++ b/configs/icebox/failover/MediaOperationCoreStateReplicator.conf
@@ -0,0 +1,18 @@
+IceBox.InheritProperties=1
+Ice.Default.CollocationOptimized=0
+# this value was empirically determined... it may need to be different on different systems
+Ice.ThreadPool.Client.Size=10
+IceBox.Service.MediaOperationsCoreReplicator=MediaOperationsCoreReplicator:create
+
+MediaOperationsCoreReplicator.Adapter.ThreadPool.Size=4
+
+MediaOperationsCoreReplicator.Adapter.Endpoints=tcp -p 4489
+
+# this service name property is used when registering this component's
+# services with the ServiceLocator. services are registered with
+# a Category, Service, and Instance.
+MediaOperationsCoreReplicator.ServiceName=default
+
+LocatorService.Proxy=LocatorService:tcp -p 4411
+LocatorServiceManagement.Proxy=LocatorServiceManagement:tcp -p 4412
+
diff --git a/configs/icebox/failover/MediaOperationsCore.conf b/configs/icebox/failover/MediaOperationsCore.conf
new file mode 100644
index 0000000..6064809
--- /dev/null
+++ b/configs/icebox/failover/MediaOperationsCore.conf
@@ -0,0 +1,26 @@
+IceBox.InheritProperties=1
+Ice.Default.CollocationOptimized=0
+# this value was empirically determined... it may need to be different on different systems
+Ice.ThreadPool.Client.Size=10
+IceBox.Service.MediaOperationsCore=MediaOperationsCore:create
+
+MediaOperationsCore.ServiceAdapter.Endpoints=tcp -p 4481
+MediaOperationsCore.BackplaneAdapter.Endpoints=tcp -p 4482
+MediaOperationsCore.Standalone=yes
+# this service name property is used when registering this component's
+# services with the ServiceLocator. services are registered with
+# a Category, Service, and Instance.
+MediaOperationsCore.ServiceName=default
+
+# These properties define the total timeout and delay
+# per try in seconds for initialization of the
+# service locator
+MediaOperationsCore.InitServiceLocatorTimeout=30 # minimum: 1, default: 30 (seconds)
+MediaOperationsCore.InitServiceLocatorRetryDelay=2 # minimum: 1, default: 2 (seconds)
+
+LocatorService.Proxy=LocatorService:tcp -p 4411
+LocatorServiceManagement.Proxy=LocatorServiceManagement:tcp -p 4412
+
+# this is used to connect to the IceStorm instance that lives in the same IceBox
+# container as the ServiceDiscovery service
+TopicManager.Proxy=ServiceDiscovery/TopicManager:tcp -p 4421
diff --git a/configs/icebox/failover/MediaOperationsCoreActive.conf b/configs/icebox/failover/MediaOperationsCoreActive.conf
new file mode 100644
index 0000000..2819581
--- /dev/null
+++ b/configs/icebox/failover/MediaOperationsCoreActive.conf
@@ -0,0 +1,26 @@
+IceBox.InheritProperties=1
+Ice.Default.CollocationOptimized=0
+# this value was empirically determined... it may need to be different on different systems
+Ice.ThreadPool.Client.Size=10
+IceBox.Service.MediaOperationsCoreActive=MediaOperationsCore:create
+
+MediaOperationsCoreActive.ServiceAdapter.Endpoints=tcp -p 4481 !!PUBLIC!!
+MediaOperationsCoreActive.BackplaneAdapter.Endpoints=tcp -p 4482 !!PRIVATE!!
+
+# this service name property is used when registering this component's
+# services with the ServiceLocator. services are registered with
+# a Category, Service, and Instance.
+MediaOperationsCoreActive.ServiceName=default
+
+# These properties define the total timeout and delay
+# per try in seconds for initialization of the
+# service locator
+MediaOperationsCoreActive.InitServiceLocatorTimeout=30 # minimum: 1, default: 30 (seconds)
+MediaOperationsCoreActive.InitServiceLocatorRetryDelay=2 # minimum: 1, default: 2 (seconds)
+
+LocatorService.Proxy=LocatorService:tcp -p 4411 !!SERVICELOCATOR!!
+LocatorServiceManagement.Proxy=LocatorServiceManagement:tcp -p 4412 !!SERVICELOCATOR!!
+
+# this is used to connect to the IceStorm instance that lives in the same IceBox
+# container as the ServiceDiscovery service
+TopicManager.Proxy=ServiceDiscovery/TopicManager:tcp -p 4421 !!SERVICELOCATOR!!
diff --git a/configs/icebox/failover/MediaOperationsCoreStandby.conf b/configs/icebox/failover/MediaOperationsCoreStandby.conf
new file mode 100644
index 0000000..4486f59
--- /dev/null
+++ b/configs/icebox/failover/MediaOperationsCoreStandby.conf
@@ -0,0 +1,26 @@
+IceBox.InheritProperties=1
+Ice.Default.CollocationOptimized=0
+# this value was empirically determined... it may need to be different on different systems
+Ice.ThreadPool.Client.Size=10
+IceBox.Service.MediaOperationsCoreStandby=MediaOperationsCore:create
+
+MediaOperationsCoreStandby.ServiceAdapter.Endpoints=tcp -p 4481 !!PUBLIC!!
+MediaOperationsCoreStandby.BackplaneAdapter.Endpoints=tcp -p 4482 !!PRIVATE!!
+
+# this service name property is used when registering this component's
+# services with the ServiceLocator. services are registered with
+# a Category, Service, and Instance.
+MediaOperationsCoreStandby.ServiceName=default
+
+# These properties define the total timeout and delay
+# per try in seconds for initialization of the
+# service locator
+MediaOperationsCoreStandby.InitServiceLocatorTimeout=30 # minimum: 1, default: 30 (seconds)
+MediaOperationsCoreStandby.InitServiceLocatorRetryDelay=2 # minimum: 1, default: 2 (seconds)
+
+LocatorService.Proxy=LocatorService:tcp -p 4411 !!SERVICELOCATOR!!
+LocatorServiceManagement.Proxy=LocatorServiceManagement:tcp -p 4412 !!SERVICELOCATOR!!
+
+# this is used to connect to the IceStorm instance that lives in the same IceBox
+# container as the ServiceDiscovery service
+TopicManager.Proxy=ServiceDiscovery/TopicManager:tcp -p 4421 !!SERVICELOCATOR!!
diff --git a/configs/icebox/failover/MediaServiceRTP.conf b/configs/icebox/failover/MediaServiceRTP.conf
new file mode 100644
index 0000000..47a3c12
--- /dev/null
+++ b/configs/icebox/failover/MediaServiceRTP.conf
@@ -0,0 +1,26 @@
+IceBox.InheritProperties=1
+Ice.Default.CollocationOptimized=0
+# this value was empirically determined... it may need to be different on different systems
+Ice.ThreadPool.Client.Size=10
+IceBox.Service.MediaServiceRTP=MediaRTPPJMEDIA:create
+
+MediaServiceRTP.ServiceAdapter.Endpoints=tcp -p 4471
+MediaServiceRTP.BackplaneAdapter.Endpoints=tcp -p 4472
+MediaServiceRTP.Standalone=yes
+# this service name property is used when registering this component's
+# services with the ServiceLocator. services are registered with
+# a Category, Service, and Instance.
+MediaServiceRTP.ServiceName=default
+
+# These properties define the total timeout and delay
+# per try in seconds for initialization of the
+# service locator
+MediaServiceRTP.InitServiceLocatorTimeout=30 # minimum: 1, default: 30 (seconds)
+MediaServiceRTP.InitServiceLocatorRetryDelay=2 # minimum: 1, default: 2 (seconds)
+
+LocatorService.Proxy=LocatorService:tcp -p 4411
+LocatorServiceManagement.Proxy=LocatorServiceManagement:tcp -p 4412
+
+# this is used to connect to the IceStorm instance that lives in the same IceBox
+# container as the ServiceDiscovery service
+TopicManager.Proxy=ServiceDiscovery/TopicManager:tcp -p 4421
diff --git a/configs/icebox/failover/MediaServiceRTPActive.conf b/configs/icebox/failover/MediaServiceRTPActive.conf
new file mode 100644
index 0000000..ff7d530
--- /dev/null
+++ b/configs/icebox/failover/MediaServiceRTPActive.conf
@@ -0,0 +1,26 @@
+IceBox.InheritProperties=1
+Ice.Default.CollocationOptimized=0
+# this value was empirically determined... it may need to be different on different systems
+Ice.ThreadPool.Client.Size=10
+IceBox.Service.MediaServiceRTPActive=MediaRTPPJMEDIA:create
+
+MediaServiceRTPActive.ServiceAdapter.Endpoints=tcp -p 4471 !!PUBLIC!!
+MediaServiceRTPActive.BackplaneAdapter.Endpoints=tcp -p 4472 !!PRIVATE!!
+
+# this service name property is used when registering this component's
+# services with the ServiceLocator. services are registered with
+# a Category, Service, and Instance.
+MediaServiceRTPActive.ServiceName=default
+
+# These properties define the total timeout and delay
+# per try in seconds for initialization of the
+# service locator
+MediaServiceRTPActive.InitServiceLocatorTimeout=30 # minimum: 1, default: 30 (seconds)
+MediaServiceRTPActive.InitServiceLocatorRetryDelay=2 # minimum: 1, default: 2 (seconds)
+
+LocatorService.Proxy=LocatorService:tcp -p 4411 !!SERVICELOCATOR!!
+LocatorServiceManagement.Proxy=LocatorServiceManagement:tcp -p 4412 !!SERVICELOCATOR!!
+
+# this is used to connect to the IceStorm instance that lives in the same IceBox
+# container as the ServiceDiscovery service
+TopicManager.Proxy=ServiceDiscovery/TopicManager:tcp -p 4421 !!SERVICELOCATOR!!
diff --git a/configs/icebox/failover/MediaServiceRTPStandby.conf b/configs/icebox/failover/MediaServiceRTPStandby.conf
new file mode 100644
index 0000000..772c6a7
--- /dev/null
+++ b/configs/icebox/failover/MediaServiceRTPStandby.conf
@@ -0,0 +1,26 @@
+IceBox.InheritProperties=1
+Ice.Default.CollocationOptimized=0
+# this value was empirically determined... it may need to be different on different systems
+Ice.ThreadPool.Client.Size=10
+IceBox.Service.MediaServiceRTPStandby=MediaRTPPJMEDIA:create
+
+MediaServiceRTPStandby.ServiceAdapter.Endpoints=tcp -p 4471 !!PUBLIC!!
+MediaServiceRTPStandby.BackplaneAdapter.Endpoints=tcp -p 4472 !!PRIVATE!!
+
+# this service name property is used when registering this component's
+# services with the ServiceLocator. services are registered with
+# a Category, Service, and Instance.
+MediaServiceRTPStandby.ServiceName=default
+
+# These properties define the total timeout and delay
+# per try in seconds for initialization of the
+# service locator
+MediaServiceRTPStandby.InitServiceLocatorTimeout=30 # minimum: 1, default: 30 (seconds)
+MediaServiceRTPStandby.InitServiceLocatorRetryDelay=2 # minimum: 1, default: 2 (seconds)
+
+LocatorService.Proxy=LocatorService:tcp -p 4411 !!SERVICELOCATOR!!
+LocatorServiceManagement.Proxy=LocatorServiceManagement:tcp -p 4412 !!SERVICELOCATOR!!
+
+# this is used to connect to the IceStorm instance that lives in the same IceBox
+# container as the ServiceDiscovery service
+TopicManager.Proxy=ServiceDiscovery/TopicManager:tcp -p 4421 !!SERVICELOCATOR!!
diff --git a/configs/icebox/failover/MediaServiceRTPStateReplicator.conf b/configs/icebox/failover/MediaServiceRTPStateReplicator.conf
new file mode 100644
index 0000000..986491f
--- /dev/null
+++ b/configs/icebox/failover/MediaServiceRTPStateReplicator.conf
@@ -0,0 +1,30 @@
+IceBox.InheritProperties=1
+Ice.Default.CollocationOptimized=0
+# this value was empirically determined... it may need to be different on different systems
+Ice.ThreadPool.Client.Size=10
+IceBox.Service.RtpStateReplicator=RTPStateReplicator:create
+
+RtpStateReplicator.Adapter.ThreadPool.Size=4
+
+RtpStateReplicator.Adapter.Endpoints=tcp -p 4479
+
+# Replicators have their own collocated IceStorm for replicating configuration
+# data.
+RtpStateReplicator.IceStorm.InstanceName=RtpStateReplicator
+RtpStateReplicator.IceStorm.TopicManager.Endpoints=default -p 4477
+RtpStateReplicator.IceStorm.Publish.Endpoints=default -p 4478
+RtpStateReplicator.IceStorm.Trace.TopicManager=2
+RtpStateReplicator.IceStorm.Transient=1
+RtpStateReplicator.IceStorm.Flush.Timeout=2000
+
+# this service name property is used when registering this component's
+# services with the ServiceLocator. services are registered with
+# a Category, Service, and Instance.
+RtpStateReplicator.ServiceName=default
+
+LocatorService.Proxy=LocatorService:tcp -p 4411
+LocatorServiceManagement.Proxy=LocatorServiceManagement:tcp -p 4412
+
+# this is used to connect to the IceStorm instance that lives in the same IceBox
+# container as the ServiceDiscovery service
+TopicManager.Proxy=ServiceDiscovery/TopicManager:tcp -p 4421 !!SERVICELOCATOR!!
diff --git a/configs/icebox/failover/RoutingService.conf b/configs/icebox/failover/RoutingService.conf
new file mode 100644
index 0000000..3def0e9
--- /dev/null
+++ b/configs/icebox/failover/RoutingService.conf
@@ -0,0 +1,34 @@
+IceBox.InheritProperties=1
+Ice.Default.CollocationOptimized=0
+# this value was empirically determined... it may need to be different on different systems
+Ice.ThreadPool.Client.Size=10
+IceBox.Service.RoutingService=BasicRoutingService:create
+
+RoutingService.ServiceAdapter.Endpoints=tcp -p 4451
+RoutingService.BackplaneAdapter.Endpoints=tcp -p 4452
+RoutingService.Standalone=yes
+# this service name property is used when registering this component's
+# services with the ServiceLocator. services are registered with
+# a Category, Service, and Instance.
+RoutingService.ServiceName=default
+# the RoutingService will use the ServiceLocator to locate the BridgeManager;
+# to do so it needs to specify the category (which is always "BridgeManager", it is not
+# configurable), and the service name. the service name is configurable in the
+# configuration file of the BridgeManager itself, and in the example config it is set to
+# "default", so the configuration item below tells the RoutingService to look up
+# (category: BridgeManager, service: default)
+RoutingService.BridgeServiceName=default
+
+# These properties define the total timeout and delay
+# per try in seconds for initialization of the
+# service locator
+RoutingService.InitServiceLocatorTimeout=30 # minimum: 1, default: 30 (seconds)
+RoutingService.InitServiceLocatorRetryDelay=2 # minimum: 1, default: 2 (seconds)
+
+LocatorService.Proxy=LocatorService:tcp -p 4411
+LocatorServiceManagement.Proxy=LocatorServiceManagement:tcp -p 4412
+
+# this is used to connect to the IceStorm instance that lives in the same IceBox
+# container as the ServiceDiscovery service
+TopicManager.Proxy=ServiceDiscovery/TopicManager:tcp -p 4421
+
diff --git a/configs/icebox/failover/RoutingServiceActive.conf b/configs/icebox/failover/RoutingServiceActive.conf
new file mode 100644
index 0000000..06fe570
--- /dev/null
+++ b/configs/icebox/failover/RoutingServiceActive.conf
@@ -0,0 +1,35 @@
+IceBox.InheritProperties=1
+Ice.Default.CollocationOptimized=0
+# this value was empirically determined... it may need to be different on different systems
+Ice.ThreadPool.Client.Size=10
+IceBox.Service.RoutingServiceActive=BasicRoutingService:create
+
+RoutingServiceActive.ServiceAdapter.Endpoints=tcp -p 4451 !!PUBLIC!!
+RoutingServiceActive.BackplaneAdapter.Endpoints=tcp -p 4452 !!PRIVATE!!
+
+# this service name property is used when registering this component's
+# services with the ServiceLocator. services are registered with
+# a Category, Service, and Instance.
+RoutingServiceActive.ServiceName=default
+
+# the RoutingService will use the ServiceLocator to locate the BridgeManager;
+# to do so it needs to specify the category (which is always "BridgeManager", it is not
+# configurable), and the service name. the service name is configurable in the
+# configuration file of the BridgeManager itself, and in the example config it is set to
+# "default", so the configuration item below tells the RoutingService to look up
+# (category: BridgeManager, service: default)
+RoutingServiceActive.BridgeServiceName=default
+
+# These properties define the total timeout and delay
+# per try in seconds for initialization of the
+# service locator
+RoutingServiceActive.InitServiceLocatorTimeout=30 # minimum: 1, default: 30 (seconds)
+RoutingServiceActive.InitServiceLocatorRetryDelay=2 # minimum: 1, default: 2 (seconds)
+
+LocatorService.Proxy=LocatorService:tcp -p 4411 !!SERVICELOCATOR!!
+LocatorServiceManagement.Proxy=LocatorServiceManagement:tcp -p 4412 !!SERVICELOCATOR!!
+
+# this is used to connect to the IceStorm instance that lives in the same IceBox
+# container as the ServiceDiscovery service
+TopicManager.Proxy=ServiceDiscovery/TopicManager:tcp -p 4421 !!SERVICELOCATOR!!
+
diff --git a/configs/icebox/failover/RoutingServiceStandby.conf b/configs/icebox/failover/RoutingServiceStandby.conf
new file mode 100644
index 0000000..7fd2acd
--- /dev/null
+++ b/configs/icebox/failover/RoutingServiceStandby.conf
@@ -0,0 +1,35 @@
+IceBox.InheritProperties=1
+Ice.Default.CollocationOptimized=0
+# this value was empirically determined... it may need to be different on different systems
+Ice.ThreadPool.Client.Size=10
+IceBox.Service.RoutingServiceStandby=BasicRoutingService:create
+
+RoutingServiceStandby.ServiceAdapter.Endpoints=tcp -p 4451 !!PUBLIC!!
+RoutingServiceStandby.BackplaneAdapter.Endpoints=tcp -p 4452 !!PRIVATE!!
+
+# this service name property is used when registering this component's
+# services with the ServiceLocator. services are registered with
+# a Category, Service, and Instance.
+RoutingServiceStandby.ServiceName=default
+
+# the RoutingService will use the ServiceLocator to locate the BridgeManager;
+# to do so it needs to specify the category (which is always "BridgeManager", it is not
+# configurable), and the service name. the service name is configurable in the
+# configuration file of the BridgeManager itself, and in the example config it is set to
+# "default", so the configuration item below tells the RoutingService to look up
+# (category: BridgeManager, service: default)
+RoutingServiceStandby.BridgeServiceName=default
+
+# These properties define the total timeout and delay
+# per try in seconds for initialization of the
+# service locator
+RoutingServiceStandby.InitServiceLocatorTimeout=30 # minimum: 1, default: 30 (seconds)
+RoutingServiceStandby.InitServiceLocatorRetryDelay=2 # minimum: 1, default: 2 (seconds)
+
+LocatorService.Proxy=LocatorService:tcp -p 4411 !!SERVICELOCATOR!!
+LocatorServiceManagement.Proxy=LocatorServiceManagement:tcp -p 4412 !!SERVICELOCATOR!!
+
+# this is used to connect to the IceStorm instance that lives in the same IceBox
+# container as the ServiceDiscovery service
+TopicManager.Proxy=ServiceDiscovery/TopicManager:tcp -p 4421 !!SERVICELOCATOR!!
+
diff --git a/configs/icebox/failover/RoutingStateReplicator.conf b/configs/icebox/failover/RoutingStateReplicator.conf
new file mode 100644
index 0000000..8084b2f
--- /dev/null
+++ b/configs/icebox/failover/RoutingStateReplicator.conf
@@ -0,0 +1,18 @@
+IceBox.InheritProperties=1
+Ice.Default.CollocationOptimized=0
+# this value was empirically determined... it may need to be different on different systems
+Ice.ThreadPool.Client.Size=10
+IceBox.Service.RoutingStateReplicator=BasicRoutingStateReplicator:create
+
+RoutingStateReplicator.Adapter.ThreadPool.Size=4
+
+RoutingStateReplicator.Adapter.Endpoints=tcp -p 4459
+
+# this service name property is used when registering this component's
+# services with the ServiceLocator. services are registered with
+# a Category, Service, and Instance.
+RoutingStateReplicator.ServiceName=default
+
+LocatorService.Proxy=LocatorService:tcp -p 4411
+LocatorServiceManagement.Proxy=LocatorServiceManagement:tcp -p 4412
+
diff --git a/configs/icebox/failover/SIPService.conf b/configs/icebox/failover/SIPService.conf
new file mode 100644
index 0000000..a0f3790
--- /dev/null
+++ b/configs/icebox/failover/SIPService.conf
@@ -0,0 +1,34 @@
+IceBox.InheritProperties=1
+Ice.Default.CollocationOptimized=0
+# this value was empirically determined... it may need to be different on different systems
+Ice.ThreadPool.Client.Size=10
+IceBox.Service.SIPServiceActive=SIPSessionManager:create
+
+SIPServiceActive.ServiceAdapter.Endpoints=tcp -p 4461
+SIPServiceActive.ServiceAdapter.ThreadPool.Size=4
+
+SIPServiceActive.BackplaneAdapter.Endpoints=tcp -p 4462
+SIPServiceActive.BackplaneAdapter.ThreadPool.Size=4
+SIPServiceActive.Standalone=yes
+
+# this service name property is used when registering this component's
+# services with the ServiceLocator. services are registered with
+# a Category, Service, and Instance.
+SIPServiceActive.ServiceName=default
+
+# this property specifies which of the available service modules should
+# be started in this instance
+SIPServiceActive.SIP.Modules=Session Logging Registrar
+
+# These properties define the total timeout and delay
+# per try in seconds for initialization of the
+# service locator
+SIPServiceActive.InitServiceLocatorTimeout=30 # minimum: 1, default: 30 (seconds)
+SIPServiceActive.InitServiceLocatorRetryDelay=2 # minimum: 1, default: 2 (seconds)
+
+LocatorService.Proxy=LocatorService:tcp -p 4411
+LocatorServiceManagement.Proxy=LocatorServiceManagement:tcp -p 4412
+
+# this is used to connect to the IceStorm instance that lives in the same IceBox
+# container as the ServiceDiscovery service
+TopicManager.Proxy=ServiceDiscovery/TopicManager:tcp -p 4421
diff --git a/configs/icebox/failover/SIPServiceActive.conf b/configs/icebox/failover/SIPServiceActive.conf
new file mode 100644
index 0000000..c1a8e9a
--- /dev/null
+++ b/configs/icebox/failover/SIPServiceActive.conf
@@ -0,0 +1,34 @@
+IceBox.InheritProperties=1
+Ice.Default.CollocationOptimized=0
+# this value was empirically determined... it may need to be different on different systems
+Ice.ThreadPool.Client.Size=10
+IceBox.Service.SIPServiceActive=SIPSessionManager:create
+
+SIPServiceActive.ServiceAdapter.Endpoints=tcp -p 4461 !!PUBLIC!!
+SIPServiceActive.ServiceAdapter.ThreadPool.Size=4
+
+SIPServiceActive.BackplaneAdapter.Endpoints=tcp -p 4462 !!PRIVATE!!
+SIPServiceActive.BackplaneAdapter.ThreadPool.Size=4
+#SIPServiceActive.Standalone=no
+
+# this service name property is used when registering this component's
+# services with the ServiceLocator. services are registered with
+# a Category, Service, and Instance.
+SIPServiceActive.ServiceName=default
+
+# this property specifies which of the available service modules should
+# be started in this instance
+SIPServiceActive.SIP.Modules=Session Logging Registrar
+
+# These properties define the total timeout and delay
+# per try in seconds for initialization of the
+# service locator
+SIPServiceActive.InitServiceLocatorTimeout=30 # minimum: 1, default: 30 (seconds)
+SIPServiceActive.InitServiceLocatorRetryDelay=2 # minimum: 1, default: 2 (seconds)
+
+LocatorService.Proxy=LocatorService:tcp -p 4411 !!SERVICELOCATOR!!
+LocatorServiceManagement.Proxy=LocatorServiceManagement:tcp -p 4412 !!SERVICELOCATOR!!
+
+# this is used to connect to the IceStorm instance that lives in the same IceBox
+# container as the ServiceDiscovery service
+TopicManager.Proxy=ServiceDiscovery/TopicManager:tcp -p 4421 !!SERVICELOCATOR!!
diff --git a/configs/icebox/failover/SIPServiceStandby.conf b/configs/icebox/failover/SIPServiceStandby.conf
new file mode 100644
index 0000000..6a0be19
--- /dev/null
+++ b/configs/icebox/failover/SIPServiceStandby.conf
@@ -0,0 +1,33 @@
+IceBox.InheritProperties=1
+Ice.Default.CollocationOptimized=0
+# this value was empirically determined... it may need to be different on different systems
+Ice.ThreadPool.Client.Size=10
+IceBox.Service.SIPServiceStandby=SIPSessionManager:create
+
+SIPServiceStandby.ServiceAdapter.Endpoints=tcp -p 4461 !!PUBLIC!!
+SIPServiceStandby.ServiceAdapter.ThreadPool.Size=4
+SIPServiceStandby.BackplaneAdapter.Endpoints=tcp -p 4462 !!PRIVATE!!
+SIPServiceStandby.BackplaneAdapter.ThreadPool.Size=4
+#SIPServiceStandby.Standalone=yes
+
+# this service name property is used when registering this component's
+# services with the ServiceLocator. services are registered with
+# a Category, Service, and Instance.
+SIPServiceStandby.ServiceName=default
+
+# this property specifies which of the available service modules should
+# be started in this instance
+SIPServiceStandby.SIP.Modules=Session Logging Registrar
+
+# These properties define the total timeout and delay
+# per try in seconds for initialization of the
+# service locator
+SIPServiceStandby.InitServiceLocatorTimeout=30 # minimum: 1, default: 30 (seconds)
+SIPServiceStandby.InitServiceLocatorRetryDelay=2 # minimum: 1, default: 2 (seconds)
+
+LocatorService.Proxy=LocatorService:tcp -p 4411 !!SERVICELOCATOR!!
+LocatorServiceManagement.Proxy=LocatorServiceManagement:tcp -p 4412 !!SERVICELOCATOR!!
+
+# this is used to connect to the IceStorm instance that lives in the same IceBox
+# container as the ServiceDiscovery service
+TopicManager.Proxy=ServiceDiscovery/TopicManager:tcp -p 4421 !!SERVICELOCATOR!!
diff --git a/configs/icebox/failover/ServiceDiscovery.conf b/configs/icebox/failover/ServiceDiscovery.conf
new file mode 100644
index 0000000..ed59ee2
--- /dev/null
+++ b/configs/icebox/failover/ServiceDiscovery.conf
@@ -0,0 +1,18 @@
+IceBox.InheritProperties=1
+Ice.Default.CollocationOptimized=0
+IceBox.Service.ServiceDiscovery=ServiceLocator:create
+
+ServiceDiscovery.BackplaneAdapter.Endpoints=tcp -p 4410
+ServiceDiscovery.Management.ServiceAdapter.Endpoints=tcp -p 4412
+ServiceDiscovery.Locator.ServiceAdapter.Endpoints=tcp -p 4411
+ServiceDiscovery.IceStorm.InstanceName=ServiceDiscovery
+
+# This is necessary for the logger client library, since it needs to locate
+# the logger service using the service locator.
+LocatorService.Proxy=LocatorService:tcp -p 4411
+
+ServiceDiscovery.IceStorm.TopicManager.Endpoints=tcp -p 4421
+ServiceDiscovery.IceStorm.Publish.Endpoints=tcp -p 4422:udp -p 4422
+ServiceDiscovery.IceStorm.Trace.TopicManager=2
+ServiceDiscovery.IceStorm.Transient=1
+ServiceDiscovery.IceStorm.Flush.Timeout=2000
diff --git a/configs/icebox/failover/ServiceDiscoveryActive.conf b/configs/icebox/failover/ServiceDiscoveryActive.conf
new file mode 100644
index 0000000..3f4fdb1
--- /dev/null
+++ b/configs/icebox/failover/ServiceDiscoveryActive.conf
@@ -0,0 +1,18 @@
+IceBox.InheritProperties=1
+Ice.Default.CollocationOptimized=0
+IceBox.Service.ServiceDiscoveryActive=ServiceLocator:create
+
+ServiceDiscoveryActive.BackplaneAdapter.Endpoints=tcp -p 4410 !!PRIVATE!!
+ServiceDiscoveryActive.Management.ServiceAdapter.Endpoints=tcp -p 4412 !!PUBLIC!!
+ServiceDiscoveryActive.Locator.ServiceAdapter.Endpoints=tcp -p 4411 !!PUBLIC!!
+ServiceDiscoveryActive.IceStorm.InstanceName=ServiceDiscovery
+
+# This is necessary for the logger client library, since it needs to locate
+# the logger service using the service locator.
+LocatorService.Proxy=LocatorService:tcp -p 4411 !!PUBLIC!!
+
+ServiceDiscoveryActive.IceStorm.TopicManager.Endpoints=tcp -p 4421 !!PUBLIC!!
+ServiceDiscoveryActive.IceStorm.Publish.Endpoints=tcp -p 4422:udp -p 4422 !!PUBLIC!!
+ServiceDiscoveryActive.IceStorm.Trace.TopicManager=2
+ServiceDiscoveryActive.IceStorm.Transient=1
+ServiceDiscoveryActive.IceStorm.Flush.Timeout=2000
diff --git a/configs/icebox/failover/ServiceDiscoveryStandby.conf b/configs/icebox/failover/ServiceDiscoveryStandby.conf
new file mode 100644
index 0000000..0949b98
--- /dev/null
+++ b/configs/icebox/failover/ServiceDiscoveryStandby.conf
@@ -0,0 +1,18 @@
+IceBox.InheritProperties=1
+Ice.Default.CollocationOptimized=0
+IceBox.Service.ServiceDiscoveryStandby=ServiceLocator:create
+
+ServiceDiscoveryStandby.BackplaneAdapter.Endpoints=tcp -p 4410 !!PRIVATE!!
+ServiceDiscoveryStandby.Management.ServiceAdapter.Endpoints=tcp -p 4412 !!PUBLIC!!
+ServiceDiscoveryStandby.Locator.ServiceAdapter.Endpoints=tcp -p 4411 !!PUBLIC!!
+ServiceDiscoveryStandby.IceStorm.InstanceName=ServiceDiscovery
+
+# This is necessary for the logger client library, since it needs to locate
+# the logger service using the service locator.
+LocatorService.Proxy=LocatorService:tcp -p 4411 !!PUBLIC!!
+
+ServiceDiscoveryStandby.IceStorm.TopicManager.Endpoints=tcp -p 4421 !!PUBLIC!!
+ServiceDiscoveryStandby.IceStorm.Publish.Endpoints=tcp -p 4422:udp -p 4422 !!PUBLIC!!
+ServiceDiscoveryStandby.IceStorm.Trace.TopicManager=2
+ServiceDiscoveryStandby.IceStorm.Transient=1
+ServiceDiscoveryStandby.IceStorm.Flush.Timeout=2000
diff --git a/configs/icebox/failover/ServiceDiscoveryStateReplicator.conf b/configs/icebox/failover/ServiceDiscoveryStateReplicator.conf
new file mode 100644
index 0000000..dd5f890
--- /dev/null
+++ b/configs/icebox/failover/ServiceDiscoveryStateReplicator.conf
@@ -0,0 +1,20 @@
+IceBox.InheritProperties=1
+Ice.Default.CollocationOptimized=0
+# this value was empirically determined... it may need to be different on different systems
+Ice.ThreadPool.Client.Size=10
+IceBox.Service.ServiceLocatorStateReplicator=ServiceLocatorStateReplicator:create
+
+ServiceLocatorStateReplicator.Adapter.ThreadPool.Size=4
+
+ServiceLocatorStateReplicator.Adapter.Endpoints=tcp -p 4419
+
+# this service name property is used when registering this component's
+# services with the ServiceLocator. services are registered with
+# a Category, Service, and Instance.
+ServiceLocatorStateReplicator.ServiceName=default
+
+
+# For the logger
+LocatorService.Proxy=LocatorService:tcp -p 4411 !!SERVICELOCATOR!!
+
+TopicManager.Proxy=ServiceDiscovery/TopicManager:tcp -p 4421 !!SERVICELOCATOR!!
diff --git a/configs/icebox/failover/SipStateReplicator.conf b/configs/icebox/failover/SipStateReplicator.conf
new file mode 100644
index 0000000..0fb0b4c
--- /dev/null
+++ b/configs/icebox/failover/SipStateReplicator.conf
@@ -0,0 +1,30 @@
+IceBox.InheritProperties=1
+Ice.Default.CollocationOptimized=0
+# this value was empirically determined... it may need to be different on different systems
+Ice.ThreadPool.Client.Size=10
+IceBox.Service.SIPStateReplicator=SIPStateReplicator:create
+
+SIPStateReplicator.Adapter.ThreadPool.Size=4
+
+SIPStateReplicator.Adapter.Endpoints=tcp -p 4469
+
+# Replicators have their own collocated IceStorm for replicating configuration
+# data.
+SIPStateReplicator.IceStorm.InstanceName=SIPStateReplicatorIceStorm
+SIPStateReplicator.IceStorm.TopicManager.Endpoints=default -p 4467
+SIPStateReplicator.IceStorm.Publish.Endpoints=default -p 4468
+SIPStateReplicator.IceStorm.Trace.TopicManager=2
+SIPStateReplicator.IceStorm.Transient=1
+SIPStateReplicator.IceStorm.Flush.Timeout=2000
+
+# this service name property is used when registering this component's
+# services with the ServiceLocator. services are registered with
+# a Category, Service, and Instance.
+SIPStateReplicator.ServiceName=default
+
+LocatorService.Proxy=LocatorService:tcp -p 4411
+LocatorServiceManagement.Proxy=LocatorServiceManagement:tcp -p 4412
+
+# this is used to connect to the IceStorm instance that lives in the same IceBox
+# container as the ServiceDiscovery service
+TopicManager.Proxy=ServiceDiscovery/TopicManager:tcp -p 4421
diff --git a/configs/icebox/standalone/BridgeManager.conf b/configs/icebox/standalone/BridgeManager.conf
new file mode 100644
index 0000000..a5fa508
--- /dev/null
+++ b/configs/icebox/standalone/BridgeManager.conf
@@ -0,0 +1,29 @@
+IceBox.InheritProperties=1
+# this value was empirically determined... it may need to be different on different systems
+Ice.Default.CollocationOptimized=0
+Ice.ThreadPool.Client.Size=10
+IceBox.Service.BridgeManager=BridgeService:create
+
+BridgeManager.ServiceAdapter.Endpoints=tcp -p 4441
+BridgeManager.BackplaneAdapter.Endpoints=tcp -p 4442
+BridgeManager.Standalone=yes
+BridgeManager.ManagerInterface.ObjectId=BridgeManager
+
+
+# this service name property is used when registering this component's
+# services with the ServiceLocator. services are registered with
+# a Category, Service, and Instance.
+BridgeManager.ServiceName=default
+
+# These properties define the total timeout and delay
+# per try in seconds for initialization of the
+# service locator
+BridgeManager.InitServiceLocatorTimeout=30 # minimum: 1, default: 30 (seconds)
+BridgeManager.InitServiceLocatorRetryDelay=2 # minimum: 1, default: 2 (seconds)
+
+LocatorService.Proxy=LocatorService:tcp -p 4411
+LocatorServiceManagement.Proxy=LocatorServiceManagement:tcp -p 4412
+
+# this is used to connect to the IceStorm instance that lives in the same IceBox
+# container as the ServiceDiscovery service
+TopicManager.Proxy=ServiceDiscovery/TopicManager:tcp -p 4421
diff --git a/configs/icebox/standalone/BridgeStateReplicator.conf b/configs/icebox/standalone/BridgeStateReplicator.conf
new file mode 100644
index 0000000..e9ab3e9
--- /dev/null
+++ b/configs/icebox/standalone/BridgeStateReplicator.conf
@@ -0,0 +1,18 @@
+IceBox.InheritProperties=1
+Ice.Default.CollocationOptimized=0
+# this value was empirically determined... it may need to be different on different systems
+Ice.ThreadPool.Client.Size=10
+IceBox.Service.BridgeReplicator=BridgeReplicator:create
+
+BridgeReplicator.Adapter.ThreadPool.Size=4
+
+BridgeReplicator.Adapter.Endpoints=tcp -p 4491
+
+# this service name property is used when registering this component's
+# services with the ServiceLocator. services are registered with
+# a Category, Service, and Instance.
+BridgeReplicator.ServiceName=default
+
+LocatorService.Proxy=LocatorService:tcp -p 4411
+LocatorServiceManagement.Proxy=LocatorServiceManagement:tcp -p 4412
+
diff --git a/configs/icebox/standalone/Logger.conf b/configs/icebox/standalone/Logger.conf
new file mode 100644
index 0000000..8ef18a4
--- /dev/null
+++ b/configs/icebox/standalone/Logger.conf
@@ -0,0 +1,11 @@
+IceBox.InheritProperties=1
+Ice.Default.CollocationOptimized=0
+IceBox.Service.Logger=LoggingService:createLoggingService
+
+Logger.ServiceAdapter.Endpoints=tcp -p 4431
+
+LocatorServiceManagement.Proxy=LocatorServiceManagement:tcp -p 4412
+
+# this is used to connect to the IceStorm instance that lives in the same IceBox
+# container as the ServiceDiscovery service
+TopicManager.Proxy=ServiceDiscovery/TopicManager:tcp -p 4421
diff --git a/configs/icebox/standalone/MediaFormatGeneric.conf b/configs/icebox/standalone/MediaFormatGeneric.conf
new file mode 100644
index 0000000..9b097a9
--- /dev/null
+++ b/configs/icebox/standalone/MediaFormatGeneric.conf
@@ -0,0 +1,26 @@
+IceBox.InheritProperties=1
+Ice.Default.CollocationOptimized=0
+# this value was empirically determined... it may need to be different on different systems
+Ice.ThreadPool.Client.Size=10
+IceBox.Service.MediaFormatGeneric=mediaformatgeneric:create
+
+MediaFormatGeneric.ServiceAdapter.Endpoints=tcp -p 4501
+MediaFormatGeneric.BackplaneAdapter.Endpoints=tcp -p 4502
+MediaFormatGeneric.Standalone=yes
+# this service name property is used when registering this component's
+# services with the ServiceLocator. services are registered with
+# a Category, Service, and Instance.
+MediaFormatGeneric.ServiceName=default
+
+# These properties define the total timeout and delay
+# per try in seconds for initialization of the
+# service locator
+MediaFormatGeneric.InitServiceLocatorTimeout=30 # minimum: 1, default: 30 (seconds)
+MediaFormatGeneric.InitServiceLocatorRetryDelay=2 # minimum: 1, default: 2 (seconds)
+
+LocatorService.Proxy=LocatorService:tcp -p 4411
+LocatorServiceManagement.Proxy=LocatorServiceManagement:tcp -p 4412
+
+# this is used to connect to the IceStorm instance that lives in the same IceBox
+# container as the ServiceDiscovery service
+TopicManager.Proxy=ServiceDiscovery/TopicManager:tcp -p 4421
diff --git a/configs/icebox/standalone/MediaOperationCoreStateReplicator.conf b/configs/icebox/standalone/MediaOperationCoreStateReplicator.conf
new file mode 100644
index 0000000..4bf5de6
--- /dev/null
+++ b/configs/icebox/standalone/MediaOperationCoreStateReplicator.conf
@@ -0,0 +1,18 @@
+IceBox.InheritProperties=1
+Ice.Default.CollocationOptimized=0
+# this value was empirically determined... it may need to be different on different systems
+Ice.ThreadPool.Client.Size=10
+IceBox.Service.MediaOperationsCoreReplicator=MediaOperationsCoreReplicator:create
+
+MediaOperationsCoreReplicator.Adapter.ThreadPool.Size=4
+
+MediaOperationsCoreReplicator.Adapter.Endpoints=tcp -p 4489
+
+# this service name property is used when registering this component's
+# services with the ServiceLocator. services are registered with
+# a Category, Service, and Instance.
+MediaOperationsCoreReplicator.ServiceName=default
+
+LocatorService.Proxy=LocatorService:tcp -p 4411
+LocatorServiceManagement.Proxy=LocatorServiceManagement:tcp -p 4412
+
diff --git a/configs/icebox/standalone/MediaOperationsCore.conf b/configs/icebox/standalone/MediaOperationsCore.conf
new file mode 100644
index 0000000..6064809
--- /dev/null
+++ b/configs/icebox/standalone/MediaOperationsCore.conf
@@ -0,0 +1,26 @@
+IceBox.InheritProperties=1
+Ice.Default.CollocationOptimized=0
+# this value was empirically determined... it may need to be different on different systems
+Ice.ThreadPool.Client.Size=10
+IceBox.Service.MediaOperationsCore=MediaOperationsCore:create
+
+MediaOperationsCore.ServiceAdapter.Endpoints=tcp -p 4481
+MediaOperationsCore.BackplaneAdapter.Endpoints=tcp -p 4482
+MediaOperationsCore.Standalone=yes
+# this service name property is used when registering this component's
+# services with the ServiceLocator. services are registered with
+# a Category, Service, and Instance.
+MediaOperationsCore.ServiceName=default
+
+# These properties define the total timeout and delay
+# per try in seconds for initialization of the
+# service locator
+MediaOperationsCore.InitServiceLocatorTimeout=30 # minimum: 1, default: 30 (seconds)
+MediaOperationsCore.InitServiceLocatorRetryDelay=2 # minimum: 1, default: 2 (seconds)
+
+LocatorService.Proxy=LocatorService:tcp -p 4411
+LocatorServiceManagement.Proxy=LocatorServiceManagement:tcp -p 4412
+
+# this is used to connect to the IceStorm instance that lives in the same IceBox
+# container as the ServiceDiscovery service
+TopicManager.Proxy=ServiceDiscovery/TopicManager:tcp -p 4421
diff --git a/configs/icebox/standalone/MediaServiceRTP.conf b/configs/icebox/standalone/MediaServiceRTP.conf
new file mode 100644
index 0000000..47a3c12
--- /dev/null
+++ b/configs/icebox/standalone/MediaServiceRTP.conf
@@ -0,0 +1,26 @@
+IceBox.InheritProperties=1
+Ice.Default.CollocationOptimized=0
+# this value was empirically determined... it may need to be different on different systems
+Ice.ThreadPool.Client.Size=10
+IceBox.Service.MediaServiceRTP=MediaRTPPJMEDIA:create
+
+MediaServiceRTP.ServiceAdapter.Endpoints=tcp -p 4471
+MediaServiceRTP.BackplaneAdapter.Endpoints=tcp -p 4472
+MediaServiceRTP.Standalone=yes
+# this service name property is used when registering this component's
+# services with the ServiceLocator. services are registered with
+# a Category, Service, and Instance.
+MediaServiceRTP.ServiceName=default
+
+# These properties define the total timeout and delay
+# per try in seconds for initialization of the
+# service locator
+MediaServiceRTP.InitServiceLocatorTimeout=30 # minimum: 1, default: 30 (seconds)
+MediaServiceRTP.InitServiceLocatorRetryDelay=2 # minimum: 1, default: 2 (seconds)
+
+LocatorService.Proxy=LocatorService:tcp -p 4411
+LocatorServiceManagement.Proxy=LocatorServiceManagement:tcp -p 4412
+
+# this is used to connect to the IceStorm instance that lives in the same IceBox
+# container as the ServiceDiscovery service
+TopicManager.Proxy=ServiceDiscovery/TopicManager:tcp -p 4421
diff --git a/configs/icebox/standalone/MediaServiceRTPStateReplicator.conf b/configs/icebox/standalone/MediaServiceRTPStateReplicator.conf
new file mode 100644
index 0000000..a6b5160
--- /dev/null
+++ b/configs/icebox/standalone/MediaServiceRTPStateReplicator.conf
@@ -0,0 +1,27 @@
+IceBox.InheritProperties=1
+Ice.Default.CollocationOptimized=0
+# this value was empirically determined... it may need to be different on different systems
+Ice.ThreadPool.Client.Size=10
+IceBox.Service.RtpStateReplicator=RTPStateReplicator:create
+
+RtpStateReplicator.Adapter.ThreadPool.Size=4
+
+RtpStateReplicator.Adapter.Endpoints=tcp -p 4479
+
+# Replicators have their own collocated IceStorm for replicating configuration
+# data.
+RtpStateReplicator.IceStorm.InstanceName=RtpStateReplicator
+RtpStateReplicator.IceStorm.TopicManager.Endpoints=default -p 4477
+RtpStateReplicator.IceStorm.Publish.Endpoints=default -p 4478
+RtpStateReplicator.IceStorm.Trace.TopicManager=2
+RtpStateReplicator.IceStorm.Transient=1
+RtpStateReplicator.IceStorm.Flush.Timeout=2000
+
+# this service name property is used when registering this component's
+# services with the ServiceLocator. services are registered with
+# a Category, Service, and Instance.
+RtpStateReplicator.ServiceName=default
+
+LocatorService.Proxy=LocatorService:tcp -p 4411
+LocatorServiceManagement.Proxy=LocatorServiceManagement:tcp -p 4412
+
diff --git a/configs/icebox/standalone/RoutingService.conf b/configs/icebox/standalone/RoutingService.conf
new file mode 100644
... 14815 lines suppressed ...
--
asterisk-scf/release/testsuite.git
More information about the asterisk-scf-commits
mailing list