Ticket #543: Updated PESQ test, sound device used only by one side to avoid contention

git-svn-id: https://svn.pjsip.org/repos/pjproject/trunk@2057 74dad513-b988-da41-8d7b-12977e46ad98
This commit is contained in:
Nanang Izzuddin 2008-06-26 12:26:52 +00:00
parent fd072893fe
commit 6ee166d43f
19 changed files with 153 additions and 26 deletions

View File

@ -67,6 +67,8 @@ class TestParam:
title = ""
# params is list containing InstanceParams objects
inst_params = []
# flag if this tes should be skipped
skip = None
# list of Expect instances, to be filled at run-time by
# the test program
process = []
@ -77,11 +79,13 @@ class TestParam:
def __init__( self,
title, # Test title
inst_params, # InstanceParam's as list
skip=False,
func=None,
post_func=None,
user_data=None):
self.title = title
self.inst_params = inst_params
self.skip = skip
self.test_func = func
self.post_func = post_func
self.user_data = user_data

View File

@ -25,7 +25,7 @@ cfg_file = imp.load_source("cfg_file", sys.argv[2])
# PESQ configs
# PESQ_THRESHOLD specifies the minimum acceptable PESQ MOS value, so test can be declared successful
PESQ = "tools/pesq.exe"
PESQ_THRESHOLD = 1.0
PESQ_THRESHOLD = 3.0
# UserData
class mod_pesq_user_data:
@ -38,6 +38,10 @@ class mod_pesq_user_data:
# Test body function
def test_func(t, user_data):
if len(t.process) == 0:
return
ua1 = t.process[0]
ua2 = t.process[1]
@ -93,16 +97,16 @@ def post_func(t, user_data):
pesq_out = pesq_proc.communicate()
# Parse ouput
mo_pesq_out = re.compile("Prediction\s+:\s+PESQ_MOS\s+=\s+(.+)\s*").search(pesq_out[0])
mo_pesq_out = re.compile("Prediction[^=]+=\s+([\d\.]+)\s*").search(pesq_out[0])
if (mo_pesq_out == None):
raise TestError("Failed to fetch PESQ result")
# Evaluate the similarity value
pesq_res = mo_pesq_out.group(1)
if (float(pesq_res) >= PESQ_THRESHOLD):
endpt.trace("Success, PESQ result=" + pesq_res)
endpt.trace("Success, PESQ result = " + pesq_res)
else:
endpt.trace("Failed, PESQ result=" + pesq_res)
endpt.trace("Failed, PESQ result = " + pesq_res)
raise TestError("WAV seems to be degraded badly")

View File

@ -143,6 +143,10 @@ if script.test == None:
print "Error: no test defined"
sys.exit(1)
if script.test.skip:
print "Test " + script.test.title + " is skipped"
sys.exit(0)
if len(script.test.inst_params) == 0:
print "Error: test doesn't contain pjsua run descriptions"
sys.exit(1)

View File

@ -12,6 +12,6 @@ test_param = TestParam(
"PESQ defaults pjsua settings",
[
InstanceParam("UA1", ADD_PARAM + " --max-calls=1 --play-file wavs/input.16.wav --auto-play-hangup"),
InstanceParam("UA2", ADD_PARAM + " --max-calls=1 --rec-file wavs/tmp.16.wav --clock-rate 16000 --auto-answer 200 --auto-rec")
InstanceParam("UA2", "--null-audio --max-calls=1 --rec-file wavs/tmp.16.wav --clock-rate 16000 --auto-answer 200 --auto-rec")
]
)

View File

@ -0,0 +1,17 @@
# $Id$
#
from inc_cfg import *
# Call with default pjsua settings
test_param = TestParam(
"PESQ defaults pjsua settings (RX side uses snd dev)",
[
InstanceParam("UA1", "--max-calls=1 --play-file wavs/input.16.wav --auto-play-hangup --null-audio"),
InstanceParam("UA2", "--max-calls=1 --rec-file wavs/tmp.16.wav --clock-rate 16000 --auto-answer 200 --auto-rec")
]
)
if (HAS_SND_DEV == 0):
test_param.skip = True

View File

@ -1,18 +1,17 @@
# $Id$
#
from inc_cfg import *
from config_site import *
ADD_PARAM = ""
if (HAS_SND_DEV == 0):
ADD_PARAM += "--null-audio"
# Simple call
# Call with PCMA codec
test_param = TestParam(
"PESQ codec PCMA",
[
InstanceParam("UA1", ADD_PARAM + " --max-calls=1 --add-codec pcma --clock-rate 8000 --play-file wavs/input.8.wav --auto-play-hangup"),
InstanceParam("UA2", ADD_PARAM + " --max-calls=1 --add-codec pcma --clock-rate 8000 --rec-file wavs/tmp.8.wav --auto-answer 200 --auto-rec")
InstanceParam("UA2", "--null-audio --max-calls=1 --add-codec pcma --clock-rate 8000 --rec-file wavs/tmp.8.wav --auto-answer 200 --auto-rec")
]
)

View File

@ -1,18 +1,17 @@
# $Id$
#
from inc_cfg import *
from config_site import *
ADD_PARAM = ""
if (HAS_SND_DEV == 0):
ADD_PARAM += "--null-audio"
# Simple call
# Call with PCMU codec
test_param = TestParam(
"PESQ codec PCMU",
[
InstanceParam("UA1", ADD_PARAM + " --max-calls=1 --add-codec pcmu --clock-rate 8000 --play-file wavs/input.8.wav --auto-play-hangup"),
InstanceParam("UA2", ADD_PARAM + " --max-calls=1 --add-codec pcmu --clock-rate 8000 --rec-file wavs/tmp.8.wav --auto-answer 200 --auto-rec")
InstanceParam("UA2", "--null-sound --max-calls=1 --add-codec pcmu --clock-rate 8000 --rec-file wavs/tmp.8.wav --auto-answer 200 --auto-rec")
]
)

View File

@ -1,18 +1,17 @@
# $Id$
#
from inc_cfg import *
from config_site import *
ADD_PARAM = ""
if (HAS_SND_DEV == 0):
ADD_PARAM += "--null-audio"
# Simple call
# Call with G722 codec
test_param = TestParam(
"PESQ codec G722",
[
InstanceParam("UA1", ADD_PARAM + " --max-calls=1 --add-codec g722 --clock-rate 16000 --play-file wavs/input.16.wav --auto-play-hangup"),
InstanceParam("UA2", ADD_PARAM + " --max-calls=1 --add-codec g722 --clock-rate 16000 --rec-file wavs/tmp.16.wav --auto-answer 200 --auto-rec")
InstanceParam("UA2", "--null-sound --max-calls=1 --add-codec g722 --clock-rate 16000 --rec-file wavs/tmp.16.wav --auto-answer 200 --auto-rec")
]
)

View File

@ -1,18 +1,17 @@
# $Id$
#
from inc_cfg import *
from config_site import *
ADD_PARAM = ""
if (HAS_SND_DEV == 0):
ADD_PARAM += "--null-audio"
# Simple call
# Call with GSM codec
test_param = TestParam(
"PESQ codec GSM",
[
InstanceParam("UA1", ADD_PARAM + " --max-calls=1 --add-codec gsm --clock-rate 8000 --play-file wavs/input.8.wav --auto-play-hangup"),
InstanceParam("UA2", ADD_PARAM + " --max-calls=1 --add-codec gsm --clock-rate 8000 --rec-file wavs/tmp.8.wav --auto-answer 200 --auto-rec")
InstanceParam("UA2", "--null-sound --max-calls=1 --add-codec gsm --clock-rate 8000 --rec-file wavs/tmp.8.wav --auto-answer 200 --auto-rec")
]
)

View File

@ -1,18 +1,17 @@
# $Id$
#
from inc_cfg import *
from config_site import *
ADD_PARAM = ""
if (HAS_SND_DEV == 0):
ADD_PARAM += "--null-audio"
# Simple call
# Call with iLBC codec
test_param = TestParam(
"PESQ codec iLBC",
[
InstanceParam("UA1", ADD_PARAM + " --max-calls=1 --add-codec ilbc --clock-rate 8000 --play-file wavs/input.8.wav --auto-play-hangup"),
InstanceParam("UA2", ADD_PARAM + " --max-calls=1 --add-codec ilbc --clock-rate 8000 --rec-file wavs/tmp.8.wav --auto-answer 200 --auto-rec")
InstanceParam("UA2", "--null-sound --max-calls=1 --add-codec ilbc --clock-rate 8000 --rec-file wavs/tmp.8.wav --auto-answer 200 --auto-rec")
]
)

View File

@ -1,18 +1,17 @@
# $Id$
#
from inc_cfg import *
from config_site import *
ADD_PARAM = ""
if (HAS_SND_DEV == 0):
ADD_PARAM += "--null-audio"
# Simple call
# Call with Speex/16000 codec
test_param = TestParam(
"PESQ codec Speex WB",
[
InstanceParam("UA1", ADD_PARAM + " --max-calls=1 --clock-rate 16000 --add-codec speex/16000 --play-file wavs/input.16.wav --auto-play-hangup"),
InstanceParam("UA2", ADD_PARAM + " --max-calls=1 --clock-rate 16000 --add-codec speex/16000 --rec-file wavs/tmp.16.wav --auto-answer 200 --auto-rec")
InstanceParam("UA2", "--null-sound --max-calls=1 --clock-rate 16000 --add-codec speex/16000 --rec-file wavs/tmp.16.wav --auto-answer 200 --auto-rec")
]
)

View File

@ -1,18 +1,17 @@
# $Id$
#
from inc_cfg import *
from config_site import *
ADD_PARAM = ""
if (HAS_SND_DEV == 0):
ADD_PARAM += "--null-audio"
# Simple call
# Call with Speex/8000 codec
test_param = TestParam(
"PESQ codec Speex NB",
[
InstanceParam("UA1", ADD_PARAM + " --max-calls=1 --add-codec speex/8000 --clock-rate 8000 --play-file wavs/input.8.wav --auto-play-hangup"),
InstanceParam("UA2", ADD_PARAM + " --max-calls=1 --add-codec speex/8000 --clock-rate 8000 --rec-file wavs/tmp.8.wav --auto-answer 200 --auto-rec")
InstanceParam("UA2", "--null-sound --max-calls=1 --add-codec speex/8000 --clock-rate 8000 --rec-file wavs/tmp.8.wav --auto-answer 200 --auto-rec")
]
)

View File

@ -0,0 +1,15 @@
# $Id$
#
from inc_cfg import *
# Call with PCMA codec
test_param = TestParam(
"PESQ codec PCMA (RX side uses snd dev)",
[
InstanceParam("UA1", "--max-calls=1 --add-codec pcma --clock-rate 8000 --play-file wavs/input.8.wav --auto-play-hangup --null-audio"),
InstanceParam("UA2", "--max-calls=1 --add-codec pcma --clock-rate 8000 --rec-file wavs/tmp.8.wav --auto-answer 200 --auto-rec")
]
)
if (HAS_SND_DEV == 0):
test_param.skip = True

View File

@ -0,0 +1,15 @@
# $Id$
#
from inc_cfg import *
# Call with PCMU codec
test_param = TestParam(
"PESQ codec PCMU (RX side uses snd dev)",
[
InstanceParam("UA1", "--max-calls=1 --add-codec pcmu --clock-rate 8000 --play-file wavs/input.8.wav --auto-play-hangup --null-audio"),
InstanceParam("UA2", "--max-calls=1 --add-codec pcmu --clock-rate 8000 --rec-file wavs/tmp.8.wav --auto-answer 200 --auto-rec")
]
)
if (HAS_SND_DEV == 0):
test_param.skip = True

View File

@ -0,0 +1,15 @@
# $Id$
#
from inc_cfg import *
# Call with G722 codec
test_param = TestParam(
"PESQ codec G722 (RX side uses snd dev)",
[
InstanceParam("UA1", "--max-calls=1 --add-codec g722 --clock-rate 16000 --play-file wavs/input.16.wav --auto-play-hangup --null-audio"),
InstanceParam("UA2", "--max-calls=1 --add-codec g722 --clock-rate 16000 --rec-file wavs/tmp.16.wav --auto-answer 200 --auto-rec")
]
)
if (HAS_SND_DEV == 0):
test_param.skip = True

View File

@ -0,0 +1,15 @@
# $Id$
#
from inc_cfg import *
# Call with GSM codec
test_param = TestParam(
"PESQ codec GSM (RX side uses snd dev)",
[
InstanceParam("UA1", "--max-calls=1 --add-codec gsm --clock-rate 8000 --play-file wavs/input.8.wav --auto-play-hangup --null-audio"),
InstanceParam("UA2", "--max-calls=1 --add-codec gsm --clock-rate 8000 --rec-file wavs/tmp.8.wav --auto-answer 200 --auto-rec")
]
)
if (HAS_SND_DEV == 0):
test_param.skip = True

View File

@ -0,0 +1,15 @@
# $Id$
#
from inc_cfg import *
# Call with iLBC codec
test_param = TestParam(
"PESQ codec iLBC (RX side uses snd dev)",
[
InstanceParam("UA1", "--max-calls=1 --add-codec ilbc --clock-rate 8000 --play-file wavs/input.8.wav --auto-play-hangup --null-audio"),
InstanceParam("UA2", "--max-calls=1 --add-codec ilbc --clock-rate 8000 --rec-file wavs/tmp.8.wav --auto-answer 200 --auto-rec")
]
)
if (HAS_SND_DEV == 0):
test_param.skip = True

View File

@ -0,0 +1,15 @@
# $Id$
#
from inc_cfg import *
# Call with Speex/16000 codec
test_param = TestParam(
"PESQ codec Speex WB (RX side uses snd dev)",
[
InstanceParam("UA1", "--max-calls=1 --clock-rate 16000 --add-codec speex/16000 --play-file wavs/input.16.wav --auto-play-hangup --null-audio"),
InstanceParam("UA2", "--max-calls=1 --clock-rate 16000 --add-codec speex/16000 --rec-file wavs/tmp.16.wav --auto-answer 200 --auto-rec")
]
)
if (HAS_SND_DEV == 0):
test_param.skip = True

View File

@ -0,0 +1,15 @@
# $Id$
#
from inc_cfg import *
# Call with Speex/8000 codec
test_param = TestParam(
"PESQ codec Speex NB (RX side uses snd dev)",
[
InstanceParam("UA1", "--max-calls=1 --add-codec speex/8000 --clock-rate 8000 --play-file wavs/input.8.wav --auto-play-hangup --null-audio"),
InstanceParam("UA2", "--max-calls=1 --add-codec speex/8000 --clock-rate 8000 --rec-file wavs/tmp.8.wav --auto-answer 200 --auto-rec")
]
)
if (HAS_SND_DEV == 0):
test_param.skip = True