[asterisk-scf-commits] asterisk-scf/integration/testsuite.git branch "review" updated.
Commits to the Asterisk SCF project code repositories
asterisk-scf-commits at lists.digium.com
Tue Jun 7 09:54:28 CDT 2011
branch "review" has been updated
via 7c4246acad7850e013ae80258789981efd5c1d34 (commit)
via 55c1149712a5b4e5787eff45615ee27b0cbf3152 (commit)
via f59ace76c901788c152808c4849b5f611a66c46d (commit)
via 117063c41eceee1b06f8324ecaacd4e352c04220 (commit)
from 7a7962b372b266acbae022a918b0dfd831d45730 (commit)
Summary of changes:
events/startup.yaml | 17 +-
lib/python/TestSuite.py | 46 +++-
lib/python/yaml_parser.py | 17 ++-
plugins/testsuite-shutdown.py | 15 -
plugins/testsuite-startup.py | 15 -
plugins/testsuite_remotes.py | 24 ++
remote.py | 2 +-
.../testcase.yaml | 16 --
.../Functional_Phones_PolycomIP430/testcase.yaml | 60 -----
.../testcase.yaml | 279 --------------------
testsuite.py | 26 ++-
11 files changed, 102 insertions(+), 415 deletions(-)
delete mode 100644 plugins/testsuite-shutdown.py
delete mode 100644 plugins/testsuite-startup.py
create mode 100644 plugins/testsuite_remotes.py
delete mode 100644 tests/failover/SysTest_Functional_Basic_Call_Setup_w_Failover/testcase.yaml
delete mode 100644 tests/sip/Functional_Phones_Cisco79xx/testcase.yaml
delete mode 100644 tests/sip/Functional_Phones_PolycomIP430/testcase.yaml
delete mode 100644 tests/sip/SysTest_Functional_Basic_CallSetup/testcase.yaml
- Log -----------------------------------------------------------------
commit 7c4246acad7850e013ae80258789981efd5c1d34
Author: Darren Sessions <dsessions at digium.com>
Date: Tue Jun 7 09:54:25 2011 -0500
fixed a first grade syntax error where '%s' %s var should have been '%s' % var
diff --git a/remote.py b/remote.py
index 057a04f..fdad674 100755
--- a/remote.py
+++ b/remote.py
@@ -62,7 +62,7 @@ class RemoteManagement(object):
os.makedirs('%s/tmp/artifacts/%s/%s' % (cwd, globalVars['testInfo']['testCategory'], self.globalVars['testInfo']['testCase']))
os.makedirs('%s/tmp/artifacts/%s/%s/%s' % (cwd, globalVars['testInfo']['testCategory'], self.globalVars['testInfo']['testCase'], self.globalVars['testInfo']['testName']))
if not os.path.exists('%s/tmp/artifacts/%s' % (cwd, globalVars['testInfo']['testPath'])):
- return {'success':False,'msg':'Unable to create artifact test path on remotes. %s' %s globalVars['testInfo']['testPath']}
+ return {'success':False,'msg':'Unable to create artifact test path on remotes. %s' % globalVars['testInfo']['testPath']}
time.sleep(1)
commit 55c1149712a5b4e5787eff45615ee27b0cbf3152
Author: Darren Sessions <dsessions at digium.com>
Date: Tue Jun 7 09:53:05 2011 -0500
added startup and shutdown events that are added before and after the tests yaml data respectively. these will be very useful to run events on the remotes such as cleaning up tmp directories, pulling the latest code, etc.
diff --git a/events/startup.yaml b/events/startup.yaml
index cd13bda..708b6d8 100644
--- a/events/startup.yaml
+++ b/events/startup.yaml
@@ -1,10 +1,13 @@
name : Init Remotes
+options :
+ stop_tests_on_failure : True
tests :
- - remoteInit :
+ - startup :
timeline:
- - remoteInit :
- remotes :
- testsuite-remote-1.digium.internal
- testsuite-remote-2.digium.internal
- testsuite-remote-3.digium.internal
- testsuite-builder-1.digium.internal
+ - testsuite_remotes :
+ cmd :
+ startup :
+ - testsuite-remote-1.digium.internal
+ - testsuite-remote-2.digium.internal
+ - testsuite-remote-3.digium.internal
+ - testsuite-builder-1.digium.internal
diff --git a/lib/python/yaml_parser.py b/lib/python/yaml_parser.py
index c15662f..0035e8f 100755
--- a/lib/python/yaml_parser.py
+++ b/lib/python/yaml_parser.py
@@ -31,7 +31,7 @@ class yamlBase:
self.indResults[test].append(results)
def loadFiles(self, path, yaml_file):
- f = open("%s/%s" % (path, yaml_file), "r")
+ f = open("%s/%s" % (path, yaml_file), "r")
try:
f = open("%s/%s" % (path, yaml_file), "r")
except IOError:
@@ -42,9 +42,24 @@ class yamlBase:
f.close()
return data
+ def loadEvents(self, event):
+ if event == 'testsuite_remote_startup':
+ test = self.loadFiles('events', 'startup.yaml')
+ test['name'] = 'startup_init'
+ elif event == 'testsuite_remote_shutdown':
+ test = self.loadFiles('events', 'shutdown.yaml')
+ test['name'] = 'shutdown'
+ else:
+ return
+ test['path'] = 'events'
+ sysEvent = {event: [test]}
+ self.returnData.append(sysEvent)
+
class testcases(yamlBase):
def load(self):
+ self.loadEvents('testsuite_remote_startup')
self.parse(self.testDir, self.testCaseYaml)
+ self.loadEvents('testsuite_remote_shutdown')
class docs(yamlBase):
def load(self):
diff --git a/plugins/testsuite-shutdown.py b/plugins/testsuite-shutdown.py
deleted file mode 100644
index 7fe832d..0000000
--- a/plugins/testsuite-shutdown.py
+++ /dev/null
@@ -1,15 +0,0 @@
-#!/usr/bin/env python
-'''
-
- Test-Suite Remote Shutdown Plugin
-
- Copyright (C) 2011, Digium, Inc.
-
- This program is free software, distributed under the terms of
- the GNU General Public License Version 2.
-
-'''
-
-class plugin(TestSuite.RemoteBaseClass):
- def main(self, testData, testPath, globalVars, rpc):
- print testData
diff --git a/plugins/testsuite-startup.py b/plugins/testsuite-startup.py
deleted file mode 100644
index 91d05ab..0000000
--- a/plugins/testsuite-startup.py
+++ /dev/null
@@ -1,15 +0,0 @@
-#!/usr/bin/env python
-'''
-
- Test-Suite Remote Startup Plugin
-
- Copyright (C) 2011, Digium, Inc.
-
- This program is free software, distributed under the terms of
- the GNU General Public License Version 2.
-
-'''
-
-class plugin(TestSuite.RemoteBaseClass):
- def main(self, testData, testPath, globalVars, rpc):
- print testData
diff --git a/plugins/testsuite_remotes.py b/plugins/testsuite_remotes.py
new file mode 100644
index 0000000..5c25709
--- /dev/null
+++ b/plugins/testsuite_remotes.py
@@ -0,0 +1,24 @@
+#!/usr/bin/env python
+'''
+
+ Test-Suite Remote Agent Startup and Shutdown Plugin
+
+ Copyright (C) 2011, Digium, Inc.
+
+ This program is free software, distributed under the terms of
+ the GNU General Public License Version 2.
+
+'''
+
+import TestSuite
+
+class plugin(TestSuite.BaseClass):
+ def main(self, testData, testPath, globalVars):
+ for cmd in testData['cmd']:
+ rpc = self.RPC().connect(cmd)
+ if rpc['success'] == False:
+ return rpc
+ return {'success':True}
+
+
+
commit f59ace76c901788c152808c4849b5f611a66c46d
Author: Darren Sessions <dsessions at digium.com>
Date: Tue Jun 7 09:49:47 2011 -0500
added the ability to stop the entire test-suite if the stop_tests_on_failure option is set within a test. this is particularly useful for the start script that inits the remotes as we dont want the test-suite to proceed if the remotes arent in the proper state.
diff --git a/testsuite.py b/testsuite.py
index 8ff95e6..dd9be24 100755
--- a/testsuite.py
+++ b/testsuite.py
@@ -19,8 +19,6 @@ import inspect
import datetime
import platform
import xmlrpclib
-import subprocess
-
from xml.dom import minidom
from xml.etree.ElementTree import Element, SubElement, tostring
@@ -36,8 +34,8 @@ class __main__:
def __init__(self):
if not os.path.exists('%s/tmp' % cwd):
os.makedirs('%s/tmp' % cwd)
- if not os.path.exists('%s/artifacts' % cwd):
- os.makedirs('%s/artifacts' % cwd)
+ if not os.path.exists('%s/tmp/artifacts' % cwd):
+ os.makedirs('%s/tmp/artifacts' % cwd)
try:
os.remove('testsuite_results.xml')
except:
@@ -51,22 +49,32 @@ class __main__:
errorMsgs = []
pluginData = {}
shutdownList = []
+ stopTests = False
x = xml().initTestSuite()
for list in self.yamlData:
+ if stopTests == True:
+ break
for testCategory in list:
+ if stopTests == True:
+ break
x, categoryElement = xml().addTestSuite(x, testCategory)
print >> sys.stderr, "\n Starting '%s' tests . . \n ---------------------------------" % testCategory
for testData in list[testCategory]:
categoryElement, testElement = xml().addTestSuite(categoryElement, testData['name'])
print >> sys.stderr, ' |- Testcase "%s" ' % testData['name']
+ if not 'options' in testData:
+ testData['options'] = {}
for subTestCase in testData['tests']:
+ if stopTests == True:
+ break
for testName in subTestCase:
self.globalVars['testInfo']['testCategory'] = testCategory
self.globalVars['testInfo']['testCase'] = testData['name']
self.globalVars['testInfo']['testName'] = testName
self.globalVars['testInfo']['testPath'] = "%s/%s/%s" % (testCategory, testData['name'], testName)
+ self.globalVars['testInfo']['testOpts'] = testData['options']
testElement, subTestElement = xml().addTestCase(testElement, testName)
if subTestCase[testName]:
success = True
@@ -75,8 +83,6 @@ class __main__:
if subTestCase[testName]['expected_failure'] == True:
subTestElement = xml().setProperty(subTestElement, 'expected_failure', subTestCase[testName]['expected_failure'])
- #print subTestCase[testName]['expected_failure']
-
''' import plugins '''
for plugin in [plugin for timeLine in subTestCase[testName]['timeline'] for plugin in timeLine]:
pluginData[plugin] = plugins().init(plugin)
@@ -120,6 +126,9 @@ class __main__:
if runResults['success'] == False:
print >> sys.stderr, ' |- Test "' + testName + '" - FAILED!\n \- ' + runResults['msg']
subTestElement, errorMsgs = xml().addFailure(subTestElement, ['%s' % runResults['msg']])
+ if 'stop_tests_on_failure' in self.globalVars['testInfo']['testOpts']:
+ if self.globalVars['testInfo']['testOpts']['stop_tests_on_failure'] == True:
+ stopTests = True
break
print >> sys.stderr, ' |- Test "' + testName + '" - PASSED! - %s.%s seconds' % (timerDelta.seconds, timerDelta.microseconds)
@@ -129,6 +138,9 @@ class __main__:
subTestElement, errorMsgs = xml().addFailure(subTestElement, ['No test data defined!'])
break
+ if stopTests == True:
+ break
+
print >> sys.stderr, "\n\n" + xml().prettyXml(x)
results = file().write('testsuite_results.xml', xml().prettyXml(x))
if results['success'] == False:
@@ -181,7 +193,7 @@ class plugins:
except:
return {'success':False,'msg':'The "main" method in the "plugin" class in "%s" is not responding properly. %s.' % (name, sys.exc_info())}
argCheck = inspect.getargspec(module.plugin().main)
- if argCheck[0] != ['self','testData', 'testPath', 'globalVars'] and argCheck[0] != ['self','testData', 'testPath', 'globalVars', 'rpc']:
+ if argCheck[0] != ['self','testData', 'testPath', 'globalVars'] and argCheck[0] != ['self','testData', 'testPath', 'globalVars', 'remote']:
return {'success':False,'msg':"The 'main' method in the 'plugin' class within '%s' has improperly labeled args! i.e. def main(self, testData, testPath, globalVars)." % name}
return {'success':True}
commit 117063c41eceee1b06f8324ecaacd4e352c04220
Author: Darren Sessions <dsessions at digium.com>
Date: Tue Jun 7 09:47:03 2011 -0500
Modified the rpc function and moved it into a class and wrapped the rpc commands in a try except block to make sure we could recover and do something should there be an issue.
diff --git a/lib/python/TestSuite.py b/lib/python/TestSuite.py
index 2d328b1..83f5738 100644
--- a/lib/python/TestSuite.py
+++ b/lib/python/TestSuite.py
@@ -48,15 +48,6 @@ class utils():
tar.close()
return {'success':'True'}
- def rpc(self, host):
- rpc = xmlrpclib.Server('http://%s:8000' % host)
- try:
- rpc.reset()
- except:
- return {'success':False,'msg':'Connection to %s was refused.' % host}
- ipv4, ipv6 = rpc.whatAreMyIps()
- return {'success':True, 'rpc':rpc, 'ipv4':ipv4, 'ipv6':ipv6}
-
def which(self, app):
def if_exists(fp):
return os.path.exists(fp) and os.access(fp, os.X_OK)
@@ -71,6 +62,35 @@ class utils():
return prog
return app
+ class RPC:
+ def __init__(self):
+ try:
+ self.rpc
+ except:
+ self.rpc = {}
+
+ def connect(self, host):
+ self.host = host
+ self.rpc[self.host] = xmlrpclib.Server('http://%s:8000' % self.host)
+ try:
+ self.rpc[self.host].reset()
+ except:
+ return {'success':False,'msg':'Connection to %s was refused.' % self.host}
+ ipv4, ipv6 = self.rpc[self.host].whatAreMyIps()
+ return {'success':True, 'rpc':self.cmd, 'ipv4':ipv4, 'ipv6':ipv6}
+
+ def cmd(self, cmd, *args):
+ try:
+ func = getattr(self.rpc[self.host], cmd)
+ except AttributeError:
+ return {'success':False,'msg':"Unable to execute '%s' on %s. %s" % (cmd, self.host, sys.exc_info()[1])}
+ else:
+ try:
+ results = func(*args)
+ except:
+ return {'success':False,'msg':"Unable to execute '%s' on %s. %s" % (cmd, self.host, sys.exc_info()[1])}
+ return results
+
class file:
def write(self, fn, fd):
try:
@@ -117,9 +137,7 @@ class RemoteBaseClass(utils):
return {'success':False,'msg':'No command specified.'}
if not 'testsuite_remote_host' in testData:
return {'success':False,'msg':'No testsuite remote host specified.'}
- rpc = xmlrpclib.Server('http://%s:8000' % testData['testsuite_remote_host'])
- try:
- rpc.reset()
- except:
- return {'success':False,'msg':'Connection to %s was refused.' % testData['testsuite_remote_host']}
+ rpc = self.RPC().connect(testData['testsuite_remote_host'])
+ if rpc['success'] == False:
+ return rpc
return self.main(testData, testPath, globalVars, rpc)
diff --git a/tests/failover/SysTest_Functional_Basic_Call_Setup_w_Failover/testcase.yaml b/tests/failover/SysTest_Functional_Basic_Call_Setup_w_Failover/testcase.yaml
deleted file mode 100644
index a41be9d..0000000
--- a/tests/failover/SysTest_Functional_Basic_Call_Setup_w_Failover/testcase.yaml
+++ /dev/null
@@ -1,16 +0,0 @@
-name : SysTest_Functional_Basic_Call_Setup_w_Failover
-options :
- network_captures: True
- call_flow_diagrams: True
- restart_persistant_plugins_between_tests: False
-tests :
- - ipv4 :
- expected_failure : False
- timeline :
- - failover :
- cmd :
- testsuite_remote_active : testsuite-remote-1.digium.internal
- testsuite_remote_standby : testsuite-remote-2.digium.internal
- ipv4oripv6 : ipv4
- ipv4_network_addr : 10.19.136.0
- shared_ip : 10.19.139.44
diff --git a/tests/sip/Functional_Phones_Cisco79xx/testcase.yaml b/tests/sip/Functional_Phones_Cisco79xx/testcase.yaml
deleted file mode 100644
index e69de29..0000000
diff --git a/tests/sip/Functional_Phones_PolycomIP430/testcase.yaml b/tests/sip/Functional_Phones_PolycomIP430/testcase.yaml
deleted file mode 100644
index 67cd7ba..0000000
--- a/tests/sip/Functional_Phones_PolycomIP430/testcase.yaml
+++ /dev/null
@@ -1,60 +0,0 @@
-name : SysTest_Functional_Basic_CallSetup
-options :
- network_captures: True
- call_flow_diagrams: True
- restart_persistant_plugins_between_tests: False
-tests :
- - ipv4toipv4 :
- expected_failure : False
- timeline:
- - asteriskscf_icebox :
- testsuite_remote : testsuite-server.digium.internal
- cmd :
- start :
- - service_locator_replicator
- - service_locator
- - logger_server
- - bridge_state_replicator
- - bridge
- - routing_state_replicator
- - routing
- - sip_state_replicator
- - sip_session_gateway
- - rtp_state_replicator
- - asteriskscf_configurator :
- testsuite_remote : testsuite-server.digium.internal
- configuration_wipe : True
- cmd :
- sip :
- - localhost_udp :
- type : transport_udp
- host : 10.19.139.80
- port : 5060
- - service :
- type : endpoint
- targethost : 10.19.139.77
- targetport : 5060
- direction : both
- - sipp :
- type : endpoint
- targethost : 10.19.139.79
- targetport : 5060
- direction : both
- - sipp:
- testsuite_remote : testsuite-remote-1.digium.internal
- cmd :
- - uas :
- transport : udp
- - sipp:
- testsuite_remote : testsuite-remote-2.digium.internal
- cmd :
- - uac :
- transport : udp
- calls : 10
- cps : 1
- duration : 10
- targethost : 10.19.139.80
- targetport : 5060
- - ipv6toipv6 :
- - ipv4toipv6 :
- - ipv6toipv4 :
diff --git a/tests/sip/SysTest_Functional_Basic_CallSetup/testcase.yaml b/tests/sip/SysTest_Functional_Basic_CallSetup/testcase.yaml
deleted file mode 100644
index 2e9130b..0000000
--- a/tests/sip/SysTest_Functional_Basic_CallSetup/testcase.yaml
+++ /dev/null
@@ -1,279 +0,0 @@
-name : SysTest_Functional_Basic_CallSetup
-options :
- network_captures: True
- call_flow_diagrams: True
- restart_persistant_plugins_between_tests: True
-tests :
- - ipv4toipv4 :
- expected_failure : False
- timeline:
- - asteriskscf_icebox :
- testsuite_remote_host : testsuite-remote-1.digium.internal
- cmd :
- start :
- - service_locator
- - bridge
- - routing
- - sip_session_gateway
- - media_rtp_pjmedia
- - asteriskscf_configurator :
- service_locator_host : testsuite-remote-1.digium.internal
- configuration_wipe : False
- cmd :
- sip :
- - listen_udp4 :
- type : transport_udp
- host : testsuite-remote-1.digium.internal
- port : 5060
- ipv4oripv6 : ipv4
- - service :
- type : endpoint
- targethost : testsuite-remote-2.digium.internal
- targetport : 5060
- sourcehost : testsuite-remote-1.digium.internal
- sourceport : 5060
- ipv4oripv6 : ipv4
- direction : both
- securetransport : none
- rtpoveripv6 : False
- - sipp :
- type : endpoint
- targethost : testsuite-remote-3.digium.internal
- targetport : 5060
- sourcehost : testsuite-remote-1.digium.internal
- sourceport : 5060
- ipv4oripv6 : ipv4
- direction : both
- securetransport : none
- rtpoveripv6 : False
- rtp :
- - general :
- startport : 10001
- endport : 20000
- workerthreadcount : 4
- - sipp:
- testsuite_remote_host : testsuite-remote-2.digium.internal
- cmd :
- - uas :
- transport : udp
- ipv4oripv6 : ipv4
- timeout : 10
- - sipp:
- testsuite_remote_host : testsuite-remote-3.digium.internal
- cmd :
- - uac :
- calls : 1
- cps : 1
- duration : 10
- targethost : testsuite-remote-1.digium.internal
- ipv4oripv6 : ipv4
- transport : udp
- timeout : 10
- - ipv6toipv6 :
- expected_failure : False
- timeline:
- - asteriskscf_icebox :
- testsuite_remote_host : testsuite-remote-1.digium.internal
- cmd :
- start :
- - service_locator
- - logger_server
- - bridge
- - routing
- - sip_session_gateway
- - media_rtp_pjmedia
- - asteriskscf_configurator :
- service_locator_host : testsuite-remote-1.digium.internal
- configuration_wipe : False
- cmd :
- sip :
- - listen_udp6 :
- type : transport_udp
- host : testsuite-remote-1.digium.internal
- port : 5060
- ipv4oripv6 : ipv6
- - service :
- type : endpoint
- targethost : testsuite-remote-2.digium.internal
- targetport : 5060
- sourcehost : testsuite-remote-1.digium.internal
- sourceport : 5060
- ipv4oripv6 : ipv6
- direction : both
- securetransport : none
- rtpoveripv6 : True
- - sipp :
- type : endpoint
- targethost : testsuite-remote-3.digium.internal
- targetport : 5060
- sourcehost : testsuite-remote-1.digium.internal
- sourceport : 5060
- ipv4oripv6 : ipv6
- direction : both
- securetransport : none
- rtpoveripv6 : True
- rtp :
- - general :
- startport : 10001
- endport : 20000
- workerthreadcount : 4
- - sipp:
- testsuite_remote_host : testsuite-remote-2.digium.internal
- cmd :
- - uas :
- transport : udp
- ipv4oripv6 : ipv6
- timeout : 10
- - sipp:
- testsuite_remote_host : testsuite-remote-3.digium.internal
- cmd :
- - uac :
- calls : 1
- cps : 1
- duration : 10
- targethost : testsuite-remote-1.digium.internal
- ipv4oripv6 : ipv6
- transport : udp
- timeout : 10
- - ipv6toipv4 :
- expected_failure : False
- timeline:
- - asteriskscf_icebox :
- testsuite_remote_host : testsuite-remote-1.digium.internal
- cmd :
- start :
- - service_locator
- - logger_server
- - bridge
- - routing
- - sip_session_gateway
- - media_rtp_pjmedia
- - asteriskscf_configurator :
- service_locator_host : testsuite-remote-1.digium.internal
- configuration_wipe : False
- cmd :
- sip :
- - listen_udp4 :
- type : transport_udp
- host : testsuite-remote-1.digium.internal
- port : 5060
- ipv4oripv6 : ipv4
- - listen_udp6 :
- type : transport_udp
- host : testsuite-remote-1.digium.internal
- port : 5060
- ipv4oripv6 : ipv6
- - service :
- type : endpoint
- targethost : testsuite-remote-2.digium.internal
- targetport : 5060
- sourcehost : testsuite-remote-1.digium.internal
- sourceport : 5060
- ipv4oripv6 : ipv4
- direction : both
- securetransport : none
- rtpoveripv6 : False
- - sipp :
- type : endpoint
- targethost : testsuite-remote-3.digium.internal
- targetport : 5060
- sourcehost : testsuite-remote-1.digium.internal
- sourceport : 5060
- ipv4oripv6 : ipv6
- direction : both
- securetransport : none
- rtpoveripv6 : True
- rtp :
- - general :
- startport : 10001
- endport : 20000
- workerthreadcount : 4
- - sipp:
- testsuite_remote_host : testsuite-remote-2.digium.internal
- cmd :
- - uas :
- transport : udp
- ipv4oripv6 : ipv4
- timeout : 10
- - sipp:
- testsuite_remote_host : testsuite-remote-3.digium.internal
- cmd :
- - uac :
- calls : 1
- cps : 1
- duration : 10
- targethost : testsuite-remote-1.digium.internal
- ipv4oripv6 : ipv6
- transport : udp
- timeout : 10
- - ipv4toipv6 :
- expected_failure : False
- timeline:
- - asteriskscf_icebox :
- testsuite_remote_host : testsuite-remote-1.digium.internal
- cmd :
- start :
- - service_locator
- - logger_server
- - bridge
- - routing
- - sip_session_gateway
- - media_rtp_pjmedia
- - asteriskscf_configurator :
- service_locator_host : testsuite-remote-1.digium.internal
- configuration_wipe : False
- cmd :
- sip :
- - listen_udp4 :
- type : transport_udp
- host : testsuite-remote-1.digium.internal
- port : 5060
- ipv4oripv6 : ipv4
- - listen_udp6 :
- type : transport_udp
- host : testsuite-remote-1.digium.internal
- port : 5060
- ipv4oripv6 : ipv6
- - service :
- type : endpoint
- targethost : testsuite-remote-2.digium.internal
- targetport : 5060
- sourcehost : testsuite-remote-1.digium.internal
- sourceport : 5060
- ipv4oripv6 : ipv6
- direction : both
- securetransport : none
- rtpoveripv6 : True
- - sipp :
- type : endpoint
- targethost : testsuite-remote-3.digium.internal
- targetport : 5060
- sourcehost : testsuite-remote-1.digium.internal
- sourceport : 5060
- ipv4oripv6 : ipv4
- direction : both
- securetransport : none
- rtpoveripv6 : False
- rtp :
- - general :
- startport : 10001
- endport : 20000
- workerthreadcount : 4
- - sipp:
- testsuite_remote_host : testsuite-remote-2.digium.internal
- cmd :
- - uas :
- transport : udp
- ipv4oripv6 : ipv6
- timeout : 10
- - sipp:
- testsuite_remote_host : testsuite-remote-3.digium.internal
- cmd :
- - uac :
- calls : 1
- cps : 1
- duration : 10
- targethost : testsuite-remote-1.digium.internal
- ipv4oripv6 : ipv4
- transport : udp
- timeout : 10
-----------------------------------------------------------------------
--
asterisk-scf/integration/testsuite.git
More information about the asterisk-scf-commits
mailing list