[Asterisk-code-review] func_evalexten: Add tests for EVAL_EXTEN function (testsuite[16])
N A
asteriskteam at digium.com
Mon Jan 31 06:39:05 CST 2022
N A has uploaded this change for review. ( https://gerrit.asterisk.org/c/testsuite/+/17937 )
Change subject: func_evalexten: Add tests for EVAL_EXTEN function
......................................................................
func_evalexten: Add tests for EVAL_EXTEN function
Adds tests for the new EVAL_EXTEN function to
ensure that it functions correctly.
Additionally, this tests the refactoring of some
code into pbx_parse_location (new public API)
to ensure that parsing is done properly, as this
is required by both EVAL_EXTEN and the PBX core.
pbx_substitute_variables_helper_full_location is
also tested by this test suite.
ASTERISK-29486
Change-Id: Ib12fde79e06c3c02b1303ba09fabb21f75b12f5a
---
A tests/funcs/func_evalexten/configs/ast1/extensions.conf
A tests/funcs/func_evalexten/test-config.yaml
M tests/funcs/tests.yaml
3 files changed, 115 insertions(+), 0 deletions(-)
git pull ssh://gerrit.asterisk.org:29418/testsuite refs/changes/37/17937/1
diff --git a/tests/funcs/func_evalexten/configs/ast1/extensions.conf b/tests/funcs/func_evalexten/configs/ast1/extensions.conf
new file mode 100644
index 0000000..6f64c4e
--- /dev/null
+++ b/tests/funcs/func_evalexten/configs/ast1/extensions.conf
@@ -0,0 +1,55 @@
+
+[default]
+exten => s,1,Answer()
+ same => n,Set(GLOBAL(evalexten)=isreallycool)
+ same => n,Set(i=0)
+ same => n,While($[${INC(i)}<=11])
+ same => n,Originate(Local/${i}@evalexten,app,Wait,5,,,a)
+ same => n,EndWhile()
+ same => n,Hangup()
+
+[nothing]
+exten => 0,1,Answer()
+ same => n,Wait(10)
+ same => n,Hangup()
+
+[evalexten]
+exten => success,1,UserEvent(EvalExtenSuccess,Result: Pass)
+ same => n,Hangup()
+exten => fail,1,UserEvent(EvalExtenFailure,Result: Fail ${RECEIVESFSTATUS} ${digits},Reason: ${digits})
+ same => n,Hangup()
+exten => 1,1,GotoIf($["${EVAL_EXTEN(ee-context-1,${EPOCH},1)}"="4545"]?success,1:fail,1) ; make sure evaluated extension is argument, not current dialplan extension
+exten => 2,1,GotoIf($["${EVAL_EXTEN(ee-context-2,${EPOCH},1)}"=""]?success,1:fail,1) ; non-existent evaluation extension
+exten => 3,1,GotoIf($[${EVAL_EXTEN(ee-context-3,${EXTEN},1)}>${EPOCH}]?success,1:fail,1) ; ensure variable substitution occurs correctly
+exten => 4,1,GotoIf($[${EVAL_EXTEN(ee-context-4,212,1)}=200]?success,1:fail,1) ; ensure pattern matching works correctly
+exten => 5,1,GotoIf($[${EVAL_EXTEN(ee-context-4,312,1)}=300]?success,1:fail,1) ; ensure pattern matching works correctly
+exten => 6,1,GotoIf($[${EVAL_EXTEN(ee-context-4,332,1)}=330]?success,1:fail,1) ; ensure pattern matching works correctly
+exten => 7,1,GotoIf($["${EVAL_EXTEN(ee-context-4,332,2)}"="isreallycool"]?success,1:fail,1) ; ensure non-1 priorities work correctly
+exten => 8,1,GotoIf($[${EVAL_EXTEN(100,1)}=50]?success,1:fail,1) ; implicit context
+exten => 9,1,GotoIf($[${EVAL_EXTEN(2)}=60]?success,1:fail,1) ; implicit context and extension
+ same => n,Return(60)
+exten => 10,1,GotoIf($["${EVAL_EXTEN(ee-context-5,353,1)}"="353"]?success,1:fail,1) ; EXTEN evaluation
+exten => 11,1,GotoIf($["${EVAL_EXTEN(ee-context-5,354,1)}"="1"]?success,1:fail,1) ; EXTEN evaluation
+exten => 100,1,Return(50)
+
+[ee-context-1]
+exten => 1,1,Return(0)
+exten => _X!,1,Return(4545)
+
+[ee-context-2]
+exten => 0,1,Return(4545)
+
+[ee-context-3]
+exten => 1,1,Return(${EPOCH})
+exten => 2,1,Return($[${EPOCH}+1])
+exten => 3,1,Return($[${EPOCH}+2])
+
+[ee-context-4]
+exten => _2XX,1,Return(200)
+exten => _3XX,1,Return(300)
+exten => _33X,1,Return(330)
+ same => n,Return(${evalexten})
+
+[ee-context-5]
+exten => 353,1,Return(${EXTEN})
+exten => 354,1,Return($["${EXTEN}"="354"])
diff --git a/tests/funcs/func_evalexten/test-config.yaml b/tests/funcs/func_evalexten/test-config.yaml
new file mode 100644
index 0000000..db26e2d
--- /dev/null
+++ b/tests/funcs/func_evalexten/test-config.yaml
@@ -0,0 +1,59 @@
+testinfo:
+ summary: 'Ensure that func_evalexten functions correctly.'
+ description: |
+ 'This tests the EVAL_EXTEN function to ensure it properly
+ evaluates in different scenarios.'
+
+test-modules:
+ test-object:
+ config-section: test-object-config
+ typename: 'test_case.TestCaseModule'
+ modules:
+ -
+ config-section: caller-originator
+ typename: 'pluggable_modules.Originator'
+ -
+ config-section: hangup-monitor
+ typename: 'pluggable_modules.HangupMonitor'
+ -
+ config-section: ami-config
+ typename: 'pluggable_modules.EventActionModule'
+
+test-object-config:
+ connect-ami: True
+
+caller-originator:
+ channel: 'Local/s at default'
+ context: 'nothing'
+ exten: '0'
+ priority: '1'
+ trigger: 'ami_connect'
+
+hangup-monitor:
+ ids: '0'
+
+ami-config:
+ -
+ ami-events:
+ conditions:
+ match:
+ Event: 'UserEvent'
+ UserEvent: 'EvalExtenSuccess'
+ requirements:
+ match:
+ Result: 'Pass'
+ count: 11
+ stop_test:
+
+properties:
+ tags:
+ - dial
+ - funcs
+ dependencies:
+ - python: 'twisted'
+ - python: 'starpy'
+ - asterisk: 'app_dial'
+ - asterisk: 'app_userevent'
+ - asterisk: 'app_originate'
+ - asterisk: 'func_evalexten'
+ - asterisk: 'pbx_config'
diff --git a/tests/funcs/tests.yaml b/tests/funcs/tests.yaml
index ff99541..9994168 100644
--- a/tests/funcs/tests.yaml
+++ b/tests/funcs/tests.yaml
@@ -7,3 +7,4 @@
- test: 'func_push'
- test: 'func_srv'
- test: 'func_talkdetect'
+ - test: 'func_evalexten'
--
To view, visit https://gerrit.asterisk.org/c/testsuite/+/17937
To unsubscribe, or for help writing mail filters, visit https://gerrit.asterisk.org/settings
Gerrit-Project: testsuite
Gerrit-Branch: 16
Gerrit-Change-Id: Ib12fde79e06c3c02b1303ba09fabb21f75b12f5a
Gerrit-Change-Number: 17937
Gerrit-PatchSet: 1
Gerrit-Owner: N A <mail at interlinked.x10host.com>
Gerrit-MessageType: newchange
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.digium.com/pipermail/asterisk-code-review/attachments/20220131/6dac462e/attachment.html>
More information about the asterisk-code-review
mailing list