[Asterisk-code-review] realtime: Improve test compatibility. (testsuite[master])
Anonymous Coward
asteriskteam at digium.com
Thu Jul 28 10:22:22 CDT 2016
Anonymous Coward #1000019 has submitted this change and it was merged.
Change subject: realtime: Improve test compatibility.
......................................................................
realtime: Improve test compatibility.
When configuring SIP URIs in the pjsip.conf file it is
necessary to escape the semicolon so the parser does not
treat it as a comment. This change allows this to work in
the astconfigparser implementation.
A secondary bug where some data was lost if a configuration
option included a "=" in its value was also fixed.
Semi-colons are now also encoded according to how the
res_config_odbc module expects. Without this encoding they
were treated as a separator option values.
A bug where sections would be considered equal despite
being different has also been fixed.
Configuration file tests for PJSIP have also been marked
as being for configuration and a new option to runtests.py
has been added to skip a subset of tests based on tags.
Change-Id: Ibff2af1c0c4bce28b94360aecec5996f363b4ae8
---
M lib/python/asterisk/astconfigparser.py
M lib/python/asterisk/realtime_converter.py
M lib/python/asterisk/test_config.py
M runtests.py
M tests/channels/pjsip/configuration/duplicate_sections/test-config.yaml
M tests/channels/pjsip/configuration/happy_config/test-config.yaml
6 files changed, 30 insertions(+), 12 deletions(-)
Approvals:
Kevin Harwell: Looks good to me, but someone else must approve
George Joseph: Looks good to me, approved
Anonymous Coward #1000019: Verified
diff --git a/lib/python/asterisk/astconfigparser.py b/lib/python/asterisk/astconfigparser.py
index 778b17f..46f4fb4 100644
--- a/lib/python/asterisk/astconfigparser.py
+++ b/lib/python/asterisk/astconfigparser.py
@@ -51,6 +51,12 @@
"""
return cmp(self.id, other.id)
+ def __eq__(self, other):
+ """
+ Use self.id as means of determining equality
+ """
+ return self.id == other.id
+
def get(self, key, from_self=True, from_templates=True,
from_defaults=True):
"""
@@ -191,9 +197,14 @@
# otherwise it was an embedded comment so combine
return ''.join([part[0].strip(), ' ', line]).rstrip(), False
- # check for eol comment
- return line.partition(COMMENT)[0].strip(), False
+ # find the first occurence of a comment that is not escaped
+ match = re.match(r'.*?([^\\];)', line)
+ if match:
+ # the end of where the real string is is where the comment starts
+ line = line[0:(match.end()-1)]
+
+ return line.replace("\\", "").strip(), False
def try_include(line):
"""
@@ -231,7 +242,7 @@
def try_option(line):
"""Parses the line as an option, returning the key/value pair."""
- data = re.split('=>?', line)
+ data = re.split('=>?', line, 1)
# should split in two (key/val), but either way use first two elements
return data[0].rstrip(), data[1].lstrip()
diff --git a/lib/python/asterisk/realtime_converter.py b/lib/python/asterisk/realtime_converter.py
index 8aec232..4688f61 100644
--- a/lib/python/asterisk/realtime_converter.py
+++ b/lib/python/asterisk/realtime_converter.py
@@ -155,7 +155,7 @@
vals = {'id': title}
for key in section.keys():
if key != 'type':
- vals[key] = section.get(key)[0]
+ vals[key] = section.get(key)[0].replace(";", "^3B")
conn.execute(table.insert().values(**vals))
diff --git a/lib/python/asterisk/test_config.py b/lib/python/asterisk/test_config.py
index eb0a03d..b44ffb9 100644
--- a/lib/python/asterisk/test_config.py
+++ b/lib/python/asterisk/test_config.py
@@ -503,7 +503,7 @@
self.can_run = False
return self.can_run
- def check_tags(self, requested_tags):
+ def check_tags(self, requested_tags, skip_tags):
"""Check whether or not a test should execute based on its tags
Keyword arguments:
@@ -516,13 +516,15 @@
if not self.config:
return False
- # If no tags are requested, this test's tags don't matter
- if not requested_tags:
- return self.can_run
+ if requested_tags:
+ intersection = set(requested_tags).intersection(set(self.tags))
+ if len(intersection) == 0:
+ self.can_run = False
- intersection = set(requested_tags).intersection(set(self.tags))
- if len(intersection) == 0:
- self.can_run = False
+ if skip_tags:
+ intersection = set(skip_tags).intersection(set(self.tags))
+ if len(intersection) != 0:
+ self.can_run = False
# all tags matched successfully
return self.can_run
diff --git a/runtests.py b/runtests.py
index 5b0b651..7d324cf 100755
--- a/runtests.py
+++ b/runtests.py
@@ -437,7 +437,7 @@
def __check_can_run(self, ast_version):
"""Check tags and dependencies in the test config."""
if self.test_config.check_deps(ast_version) and \
- self.test_config.check_tags(self.options.tags):
+ self.test_config.check_tags(self.options.tags, self.options.skip_tags):
self.can_run = True
def __parse_run_output(self, output):
@@ -754,6 +754,9 @@
parser.add_option("-g", "--tag", action="append",
dest="tags",
help="Specify one or more tags to select a subset of tests.")
+ parser.add_option("-G", "--skip-tag", action="append",
+ dest="skip_tags",
+ help="Specify one or more tags to ignore a subset of tests.")
parser.add_option("-k", "--keep-core", action="store_true",
dest="keep_core", default=False,
help="Archive the 'core' file if Asterisk crashes.")
diff --git a/tests/channels/pjsip/configuration/duplicate_sections/test-config.yaml b/tests/channels/pjsip/configuration/duplicate_sections/test-config.yaml
index 87dd9ae..cc1cc21 100644
--- a/tests/channels/pjsip/configuration/duplicate_sections/test-config.yaml
+++ b/tests/channels/pjsip/configuration/duplicate_sections/test-config.yaml
@@ -28,6 +28,7 @@
version: 'v3.0'
tags:
- pjsip
+ - realtime-incompatible
issues:
- jira: 'ASTERISK-24996'
diff --git a/tests/channels/pjsip/configuration/happy_config/test-config.yaml b/tests/channels/pjsip/configuration/happy_config/test-config.yaml
index 3da6287..ce504a5 100644
--- a/tests/channels/pjsip/configuration/happy_config/test-config.yaml
+++ b/tests/channels/pjsip/configuration/happy_config/test-config.yaml
@@ -17,6 +17,7 @@
version: 'v3.0'
tags:
- pjsip
+ - realtime-incompatible
issues:
- jira: 'ASTERISK-24996'
--
To view, visit https://gerrit.asterisk.org/3214
To unsubscribe, visit https://gerrit.asterisk.org/settings
Gerrit-MessageType: merged
Gerrit-Change-Id: Ibff2af1c0c4bce28b94360aecec5996f363b4ae8
Gerrit-PatchSet: 4
Gerrit-Project: testsuite
Gerrit-Branch: master
Gerrit-Owner: Joshua Colp <jcolp at digium.com>
Gerrit-Reviewer: Anonymous Coward #1000019
Gerrit-Reviewer: George Joseph <gjoseph at digium.com>
Gerrit-Reviewer: Kevin Harwell <kharwell at digium.com>
Gerrit-Reviewer: Mark Michelson <mmichelson at digium.com>
More information about the asterisk-code-review
mailing list