[asterisk-commits] dlee: branch dlee/ari-tests r3830 - in /asterisk/team/dlee/ari-tests: lib/pyt...

SVN commits to the Asterisk project asterisk-commits at lists.digium.com
Thu Jun 6 16:54:32 CDT 2013


Author: dlee
Date: Thu Jun  6 16:54:31 2013
New Revision: 3830

URL: http://svnview.digium.com/svn/testsuite?view=rev&rev=3830
Log:
Initial work

Added:
    asterisk/team/dlee/ari-tests/lib/python/asterisk/ari.py   (with props)
    asterisk/team/dlee/ari-tests/tests/rest_api/
    asterisk/team/dlee/ari-tests/tests/rest_api/continue/
    asterisk/team/dlee/ari-tests/tests/rest_api/continue/configs/
    asterisk/team/dlee/ari-tests/tests/rest_api/continue/configs/ast1/
    asterisk/team/dlee/ari-tests/tests/rest_api/continue/configs/ast1/extensions.conf   (with props)
    asterisk/team/dlee/ari-tests/tests/rest_api/continue/configs/ast1/http.conf   (with props)
    asterisk/team/dlee/ari-tests/tests/rest_api/continue/configs/ast1/stasis_http.conf   (with props)
    asterisk/team/dlee/ari-tests/tests/rest_api/continue/rest_continue.py   (with props)
    asterisk/team/dlee/ari-tests/tests/rest_api/continue/test-config.yaml   (with props)
    asterisk/team/dlee/ari-tests/tests/rest_api/tests.yaml   (with props)
Modified:
    asterisk/team/dlee/ari-tests/tests/tests.yaml

Added: asterisk/team/dlee/ari-tests/lib/python/asterisk/ari.py
URL: http://svnview.digium.com/svn/testsuite/asterisk/team/dlee/ari-tests/lib/python/asterisk/ari.py?view=auto&rev=3830
==============================================================================
--- asterisk/team/dlee/ari-tests/lib/python/asterisk/ari.py (added)
+++ asterisk/team/dlee/ari-tests/lib/python/asterisk/ari.py Thu Jun  6 16:54:31 2013
@@ -1,0 +1,72 @@
+'''
+Copyright (C) 2013, Digium, Inc.
+David M. Lee, II <dlee at digium.com>
+
+This program is free software, distributed under the terms of
+the GNU General Public License Version 2.
+'''
+
+import logging
+import time
+import urllib
+import websocket
+
+logger = logging.getLogger(__name__)
+
+class Range(object):
+    def __init__(self, min = 0, max = float("inf")):
+        self.min = min
+        self.max = max
+
+    def contains(self, v):
+        return self.min <= v <= self.max
+
+def decode_range(v):
+    if isinstance(v, int):
+        return Range(v, v)
+    elif count[0] == '<':
+        # Need at most this many events
+        self.count_min = 0
+        self.count_max = int(count[1:])
+    elif count[0] == '>':
+        # Need at least this many events
+        self.count_min = int(count[1:])
+        self.count_max = float("inf")
+    else:
+        # Need exactly this many events
+        self.count_min = int(count)
+        self.count_max = int(count)
+
+class EventMatcher(object):
+    def __init__(self, instance_config, test_object):
+        self.instance_config = instance_config
+        self.test_object = test_object
+
+class WebSocketEventModule(object):
+    def __init__(self, module_config, test_object):
+        self.test_object = test_object
+
+        self.events = [
+            EventMatcher(e, test_object) for e in module_config['events']]
+
+        apps = module_config['apps']
+        if isinstance(apps, list):
+            apps = ','.join(apps)
+        path = "ws://127.0.0.1:8088/ws"
+        params = urllib.urlencode({'app': apps})
+        url = "%s?%s" % (path, params)
+
+        tries = 1
+        while True:
+            try:
+                self.ws = websocket.create_connection(
+                    url, header=["Sec-WebSocket-Protocol: stasis"])
+            except:
+                if tries > 10:
+                    logger.error("WebSocket connection failed.")
+                    break
+                # Wait a bit and try again
+                logger.info("WebSocket connection failed. Retrying...")
+                tries += 1
+                time.sleep(1)
+

Propchange: asterisk/team/dlee/ari-tests/lib/python/asterisk/ari.py
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: asterisk/team/dlee/ari-tests/lib/python/asterisk/ari.py
------------------------------------------------------------------------------
    svn:keywords = Author Date Id Revision

Propchange: asterisk/team/dlee/ari-tests/lib/python/asterisk/ari.py
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: asterisk/team/dlee/ari-tests/tests/rest_api/continue/configs/ast1/extensions.conf
URL: http://svnview.digium.com/svn/testsuite/asterisk/team/dlee/ari-tests/tests/rest_api/continue/configs/ast1/extensions.conf?view=auto&rev=3830
==============================================================================
--- asterisk/team/dlee/ari-tests/tests/rest_api/continue/configs/ast1/extensions.conf (added)
+++ asterisk/team/dlee/ari-tests/tests/rest_api/continue/configs/ast1/extensions.conf Thu Jun  6 16:54:31 2013
@@ -1,0 +1,7 @@
+[default]
+
+exten => s,1,NoOp()
+	same => n,Answer()
+#	same => n,Stasis(continue-test)
+	same => n,UserEvent(TestResult,Result: pass,Status: successfully broke out of Stasis)
+	same => n,Hangup()

Propchange: asterisk/team/dlee/ari-tests/tests/rest_api/continue/configs/ast1/extensions.conf
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: asterisk/team/dlee/ari-tests/tests/rest_api/continue/configs/ast1/extensions.conf
------------------------------------------------------------------------------
    svn:keywords = Author Date Id Revision

Propchange: asterisk/team/dlee/ari-tests/tests/rest_api/continue/configs/ast1/extensions.conf
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: asterisk/team/dlee/ari-tests/tests/rest_api/continue/configs/ast1/http.conf
URL: http://svnview.digium.com/svn/testsuite/asterisk/team/dlee/ari-tests/tests/rest_api/continue/configs/ast1/http.conf?view=auto&rev=3830
==============================================================================
--- asterisk/team/dlee/ari-tests/tests/rest_api/continue/configs/ast1/http.conf (added)
+++ asterisk/team/dlee/ari-tests/tests/rest_api/continue/configs/ast1/http.conf Thu Jun  6 16:54:31 2013
@@ -1,0 +1,3 @@
+[general]
+enabled=yes
+bindaddr=127.0.0.1

Propchange: asterisk/team/dlee/ari-tests/tests/rest_api/continue/configs/ast1/http.conf
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: asterisk/team/dlee/ari-tests/tests/rest_api/continue/configs/ast1/http.conf
------------------------------------------------------------------------------
    svn:keywords = Author Date Id Revision

Propchange: asterisk/team/dlee/ari-tests/tests/rest_api/continue/configs/ast1/http.conf
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: asterisk/team/dlee/ari-tests/tests/rest_api/continue/configs/ast1/stasis_http.conf
URL: http://svnview.digium.com/svn/testsuite/asterisk/team/dlee/ari-tests/tests/rest_api/continue/configs/ast1/stasis_http.conf?view=auto&rev=3830
==============================================================================
--- asterisk/team/dlee/ari-tests/tests/rest_api/continue/configs/ast1/stasis_http.conf (added)
+++ asterisk/team/dlee/ari-tests/tests/rest_api/continue/configs/ast1/stasis_http.conf Thu Jun  6 16:54:31 2013
@@ -1,0 +1,2 @@
+[general]
+enabled = yes

Propchange: asterisk/team/dlee/ari-tests/tests/rest_api/continue/configs/ast1/stasis_http.conf
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: asterisk/team/dlee/ari-tests/tests/rest_api/continue/configs/ast1/stasis_http.conf
------------------------------------------------------------------------------
    svn:keywords = Author Date Id Revision

Propchange: asterisk/team/dlee/ari-tests/tests/rest_api/continue/configs/ast1/stasis_http.conf
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: asterisk/team/dlee/ari-tests/tests/rest_api/continue/rest_continue.py
URL: http://svnview.digium.com/svn/testsuite/asterisk/team/dlee/ari-tests/tests/rest_api/continue/rest_continue.py?view=auto&rev=3830
==============================================================================
--- asterisk/team/dlee/ari-tests/tests/rest_api/continue/rest_continue.py (added)
+++ asterisk/team/dlee/ari-tests/tests/rest_api/continue/rest_continue.py Thu Jun  6 16:54:31 2013
@@ -1,0 +1,23 @@
+'''
+Copyright (C) 2013, Digium, Inc.
+David M. Lee, II <dlee at digium.com>
+
+This program is free software, distributed under the terms of
+the GNU General Public License Version 2.
+'''
+
+import logging
+
+LOGGER = logging.getLogger(__name__)
+
+id = None
+
+def on_start(ari, event):
+    global id
+    id = event['channel']['uniqueid']
+    ari.resource('channels', id, 'continue').post
+    return True
+
+def on_end(ari, event):
+    global id
+    return id == event['channel']['uniqueid']

Propchange: asterisk/team/dlee/ari-tests/tests/rest_api/continue/rest_continue.py
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: asterisk/team/dlee/ari-tests/tests/rest_api/continue/rest_continue.py
------------------------------------------------------------------------------
    svn:keywords = Author Date Id Revision

Propchange: asterisk/team/dlee/ari-tests/tests/rest_api/continue/rest_continue.py
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: asterisk/team/dlee/ari-tests/tests/rest_api/continue/test-config.yaml
URL: http://svnview.digium.com/svn/testsuite/asterisk/team/dlee/ari-tests/tests/rest_api/continue/test-config.yaml?view=auto&rev=3830
==============================================================================
--- asterisk/team/dlee/ari-tests/tests/rest_api/continue/test-config.yaml (added)
+++ asterisk/team/dlee/ari-tests/tests/rest_api/continue/test-config.yaml Thu Jun  6 16:54:31 2013
@@ -1,0 +1,66 @@
+testinfo:
+    summary: Test continuing on from the RESTful API back to the dialplan
+    description: |
+        This test simply waits for a call via the WebSocket, then hits the
+        continue controller to send it back to the dialplan.
+
+test-modules:
+    add-test-to-search-path: True
+    test-object:
+        config-section: test-object-config
+        typename: SimpleTestCase.SimpleTestCase
+    modules:
+        -   config-section: ari-config
+            typename: ari.WebSocketEventModule
+        -   config-section: ami-config
+            typename: ami.AMIEventModule
+
+test-object-config:
+    spawn-after-hangup: True
+    test-iterations:
+        -   channel: Local/s at default
+            application: Echo
+
+ari-config:
+    apps: continue-test
+    events:
+        -   match:
+                application: continue-test
+                stasis_start:
+                    args: []
+            count: 1
+            callback:
+                module: rest_continue
+                method: on_start
+        -   match:
+                application: continue-test
+                stasis_end:
+            count: 1
+            callback:
+                module: rest_continue
+                method: on_end
+
+ami-config:
+    -   type: headermatch
+        conditions:
+            match:
+                Event: UserEvent
+        requirements:
+            match:
+                Result: pass
+        count: 1
+
+properties:
+    minversion: '12.0.0'
+    dependencies:
+        - python : websocket
+        - python : requests
+        - python : twisted
+        - python : starpy
+        - asterisk : res_stasis_http_channels
+        - asterisk : app_userevent
+        - asterisk : app_echo
+    tags:
+        - ARI
+
+

Propchange: asterisk/team/dlee/ari-tests/tests/rest_api/continue/test-config.yaml
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: asterisk/team/dlee/ari-tests/tests/rest_api/continue/test-config.yaml
------------------------------------------------------------------------------
    svn:keywords = Author Date Id Revision

Propchange: asterisk/team/dlee/ari-tests/tests/rest_api/continue/test-config.yaml
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: asterisk/team/dlee/ari-tests/tests/rest_api/tests.yaml
URL: http://svnview.digium.com/svn/testsuite/asterisk/team/dlee/ari-tests/tests/rest_api/tests.yaml?view=auto&rev=3830
==============================================================================
--- asterisk/team/dlee/ari-tests/tests/rest_api/tests.yaml (added)
+++ asterisk/team/dlee/ari-tests/tests/rest_api/tests.yaml Thu Jun  6 16:54:31 2013
@@ -1,0 +1,3 @@
+# Enter tests here in the order they should be considered for execution:
+tests:
+    - test: 'continue'

Propchange: asterisk/team/dlee/ari-tests/tests/rest_api/tests.yaml
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: asterisk/team/dlee/ari-tests/tests/rest_api/tests.yaml
------------------------------------------------------------------------------
    svn:keywords = Author Date Id Revision

Propchange: asterisk/team/dlee/ari-tests/tests/rest_api/tests.yaml
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Modified: asterisk/team/dlee/ari-tests/tests/tests.yaml
URL: http://svnview.digium.com/svn/testsuite/asterisk/team/dlee/ari-tests/tests/tests.yaml?view=diff&rev=3830&r1=3829&r2=3830
==============================================================================
--- asterisk/team/dlee/ari-tests/tests/tests.yaml (original)
+++ asterisk/team/dlee/ari-tests/tests/tests.yaml Thu Jun  6 16:54:31 2013
@@ -27,3 +27,4 @@
     - dir: 'redirecting'
     - test: 'cause_answered_elsewhere'
     - dir: 'bridge'
+    - dir: 'rest_api'




More information about the asterisk-commits mailing list