from test.helpers.syscmd import SysCommand import unittest #class name class Qaudio(unittest.TestCase): # Initialize the variables def __init__(self, testname, testfunc, dtmfFile): # Doing this we will initialize the class and later on perform a particular method inside this class super(Qaudio, self).__init__(testfunc) self._testMethodDoc = testname self._dtmfFile=dtmfFile self.__sum=0 self.__refSum = 25 # 1+3+5+7+9 def execute(self): str_cmd = "amixer -c 0 sset 'PCM' 100 2> /dev/null" # .format(self.__dtmfFile) #Some cases de volume level is not enough to the tes. It needs to be increased volume_up = SysCommand("volume_up", str_cmd) if volume_up.execute() == 0: str_cmd = "aplay test/files/dtmf-13579.wav 2> /dev/null & arecord -r 8000 -d 1 recorded.wav 2> /dev/null" #.format(self.__dtmfFile) audio_loop = SysCommand("audio_loop", str_cmd) if audio_loop.execute() == 0: lines = audio_loop.getOutput().splitlines() str_cmd = "multimon -t wav -a DTMF recorded.wav -q 2> /dev/null" dtmf_decoder = SysCommand("dtmf_decoder", str_cmd) if dtmf_decoder.execute() == 0: self.__raw_out = dtmf_decoder.getOutput() if self.__raw_out == "": return -1 lines = dtmf_decoder.getOutput().splitlines() for i in range(0, 5): aux=[int(s) for s in lines[i].split() if s.isdigit()] self.__sum=self.__sum+aux[0] self.failUnless(self.__sum == self.__refSum), "failed: incorrect dtmf code" + str(self.__sum) else: self.fail("failed: fail reading recorded file") return -1 else: self.fail("failed: fail playing/recording file") return -1 else: self.fail("failed: could not increase loud level") return -1 return 0