[Asterisk-code-review] tests/apps/mixmonitor: Fix sporadic test failures. (testsuite[master])
Anonymous Coward
asteriskteam at digium.com
Mon Apr 25 15:17:29 CDT 2016
Anonymous Coward #1000019 has submitted this change and it was merged.
Change subject: tests/apps/mixmonitor: Fix sporadic test failures.
......................................................................
tests/apps/mixmonitor: Fix sporadic test failures.
The tests/app/mixmonitor test executes MixMonitor on
some channels and then checks the resulting file size to
ensure they are within tolerance. This fails sometimes.
After looking at the output and the test there is a race
condition where the check occurs before the MixMonitor
thread has ended and finished writing out the file,
causing the file to be incomplete and the test to fail.
The test now waits for the 3 expected AMI events indicating
the MixMonitor thread has ended before checking the size of
the recorded files.
ASTERISK-25958 #close
Change-Id: I0b87c02b5728615755cd15a551f1cb8e40e4ad17
---
M tests/apps/mixmonitor/run-test
1 file changed, 13 insertions(+), 4 deletions(-)
Approvals:
Mark Michelson: Looks good to me, but someone else must approve
Anonymous Coward #1000019: Verified
Joshua Colp: Looks good to me, approved
diff --git a/tests/apps/mixmonitor/run-test b/tests/apps/mixmonitor/run-test
index 784bd9b..27995f7 100755
--- a/tests/apps/mixmonitor/run-test
+++ b/tests/apps/mixmonitor/run-test
@@ -27,7 +27,8 @@
def __init__(self):
super(MixMonitorTest, self).__init__()
- self.passed = False
+ # How many MixMonitor instances have ended, all 3 must end before checking file sizes
+ self.mixmonitor_ended = 0
# playback file is 2559 bytes of ulaw,
# that will come out to be ~41118 of wav
@@ -65,7 +66,16 @@
LOGGER.error(name + " size is not within the size tolerance.")
self.passed = False
- def read_result(self):
+ def state_mixmonitor_end(self, ami, event):
+ if event.get("state") != "MIXMONITOR_END":
+ return
+
+ self.mixmonitor_ended += 1
+
+ if self.mixmonitor_ended != 3:
+ LOGGER.info("All MixMonitor applications have not yet ended.")
+ return
+
self.passed = True
self.stop_reactor()
LOGGER.info("Checking MixMonitor recorded files...")
@@ -120,11 +130,10 @@
self.stop_reactor()
return
- self.read_result()
-
def ami_connect(self, ami):
self.ami = ami
self.ami.registerEvent("UserEvent", self.check_test1)
+ self.ami.registerEvent("TestEvent", self.state_mixmonitor_end)
self.ami.setVar(channel="", variable="TESTAUDIO1", value=self.audiofile1)
self.ami.setVar(channel="", variable="TESTAUDIO2", value=self.audiofile2)
--
To view, visit https://gerrit.asterisk.org/2697
To unsubscribe, visit https://gerrit.asterisk.org/settings
Gerrit-MessageType: merged
Gerrit-Change-Id: I0b87c02b5728615755cd15a551f1cb8e40e4ad17
Gerrit-PatchSet: 1
Gerrit-Project: testsuite
Gerrit-Branch: master
Gerrit-Owner: Joshua Colp <jcolp at digium.com>
Gerrit-Reviewer: Anonymous Coward #1000019
Gerrit-Reviewer: Joshua Colp <jcolp at digium.com>
Gerrit-Reviewer: Mark Michelson <mmichelson at digium.com>
More information about the asterisk-code-review
mailing list