Example #1
0
    def run(self, output):
        (product, group, test, config, env) = self._test
        self.result = True
        self.failures = []
        line_num = 0
        last_packet_len = 0

        for i in range(len(output)):
            line_num += 1
            if not re.match("Received \d+",output[i].strip()):
                self.record_failure(("Line %d of output does not match expected\n" % line_num))
                continue

            packet_len = int(output[i].split()[1])
            if packet_len <= last_packet_len:
                self.record_failure(("Line %d of output contains invalid packet size %d\n" % (line_num, packet_len)))
                continue

            last_packet_len = packet_len

        if (line_num == 0):
            self.record_failure("No packets seen")
        output = {'output':''.join(output)}
        if not self.result:
            output['failures'] = ''.join(self.failures)
        xmostest.set_test_result(product, group, test, config, self.result,
                                 output=output, env=env)
    def run(self,
            device_job_output,
            host_job_output):
        self.result = True
        self.failures = []

        # Check for any errors
        for line in (device_job_output
                     + host_job_output
                     ):
            if re.match('.*ERROR|.*error|.*Error|.*Problem|.*failed|.*could not|.*unrecognised',
                        line):
                self.record_failure(line)

        output = {'device_job_output':''.join(device_job_output),
                  'host_job_output':''.join(host_job_output)
                  }

        if not self.result:
            output['failures'] = ''.join(self.failures)

        xmostest.set_test_result(self.product,
                                 self.group,
                                 self.test,
                                 self.config,
                                 self.result,
                                 env={},
                                 output=output)
Example #3
0
    def run(self, output):
        input_files = self._input
        index = 0
        for input_file_name in input_files:
            print("Tester opening input file %s" % input_file_name)
            input_file = open(input_file_name, "r")
            test_result = [x.strip() for x in input_file.readlines()]

            (product, group, test, config, env) = self._test
            regexp = self._regexp

            golden_file_name = self._golden[index]
            print("Tester opening golden file %s" % golden_file_name)
            golden = open(golden_file_name, "r")
            expected = [x.strip() for x in golden.readlines()]

            if expected[0].strip()=='':
                expected = expected[1:]
            if expected[-1].strip()=='':
                expected = expected[:-1]

            self.result = True
            self.failures = []
            line_num = -1
            for i in range(len(test_result)):
                ignore = False
                for p in self._ignore:
                    if re.match(p,test_result[i].strip()):
                        ignore = True
                        break
                if ignore:
                    continue
                line_num += 1

                #print("line_num=%d, result=%s, line=%s" % (line_num, self.result, test_result[i].strip()))
                if line_num >= len(expected):
                    self.record_failure("Length of expected test result less than expected file")
                    break

                if regexp:
                    match = re.match(expected[line_num]+"$", test_result[i].strip())
                else:
                    match = expected[line_num] == test_result[i].strip()

                if not match:
                    self.record_failure(("Line %d of test result does not match expected file\n"+
                                         "  Expected     : %s\n"+
                                         "  Actual input : %s")
                                        % (line_num,
                                           expected[line_num].strip(),
                                           test_result[i].strip()))

            if (len(expected) > line_num + 1):
                self.record_failure("Length of expected file greater than test result")
                test_result = {'test_result':''.join(test_result)}
            if not self.result:
                test_result = ''.join(self.failures)
            index += 1
        xmostest.set_test_result(product, group, test, config, self.result,
                             output = test_result, env = env)
Example #4
0
    def run(self, device_job_output, host_job_output):
        self.result = True
        self.failures = []

        # Check for any errors
        for line in (device_job_output + host_job_output):
            if re.match(
                    '.*ERROR|.*error|.*Error|.*Problem|.*failed|.*could not|.*unrecognised',
                    line):
                self.record_failure(line)

        output = {
            'device_job_output': ''.join(device_job_output),
            'host_job_output': ''.join(host_job_output)
        }

        if not self.result:
            output['failures'] = ''.join(self.failures)

        xmostest.set_test_result(self.product,
                                 self.group,
                                 self.test,
                                 self.config,
                                 self.result,
                                 env={},
                                 output=output)
Example #5
0
 def run(self, output):
     result = True
     for line in output:
         if line.find("FAIL") != -1:
             result = False
     xmostest.set_test_result("lib_uart", "sim_regression", "loopback_test",
                              {}, result, output=''.join(output))
Example #6
0
 def run(self, output):
     result = True
     for line in output:
         if line.find("FAIL") != -1:
             result = False
     xmostest.set_test_result("lib_uart", "sim_regression", "loopback_test",
                              {}, result, output=''.join(output))
Example #7
0
def check_file_count(test_files, golden_files):
    len_test_files = len(test_files)
    len_golden_files = len(golden_files)

    if isinstance(test_files, str):
        len_test_files = 1
    if isinstance(golden_files, str):
        len_golden_files = 1
    if len_test_files != len_golden_files:
        print("ERROR: %d test file(s) specified and %d golden file(s)" % (len_test_files, len_golden_files))
        xmostest.set_test_result(product, group, test, config, result=False, output = "Number of inout and output files does not match", env = env)
    print("Found %d audio channels to process" % len(test_files))
Example #8
0
    def run(self, xc_output, python_output):
        self.result = True
        self.failures = []
        expected_response = self._expected_response
        ip = self._ip
        (product, group, test, config, env) = self._test

        if isinstance(python_output, str):
            python_output = python_output.split('\n')

        while (python_output[-1] == ''):
            del python_output[-1]

        # Check for any xC device errors
        for line in (xc_output + python_output):
            if re.match('.*ERROR|.*error|.*Error|.*Problem', line):
                self.record_failure('Error: ' + line)

        if python_output[0] != expected_response:
            self.record_failure(
                'Response from device did not match expected response\n' +
                '  Expected:\n{}'.format(expected_response) +
                '  Actual:\n{}'.format(python_output))

        for line in xc_output:
            if re.match('IP Address: [0-9].[0-9].[0-9].[0-9]', line):
                found_ip = line.strip('IP Address: ').strip('\n')
                if (found_ip != ip):
                    self.record_failure(
                        'Differing IP address used by device than expected\n' +
                        '  Expected: {}\n'.format(ip) +
                        '  Found:    {}'.format(found_ip))

        output = {
            'python_output': ''.join(python_output),
            'device_output': ''.join(xc_output)
        }

        if not self.result:
            output['failures'] = ''.join(self.failures)

        xmostest.set_test_result(product,
                                 group,
                                 test,
                                 config,
                                 self.result,
                                 env={},
                                 output=output)
Example #9
0
    def run(self, xc_output, python_output):
        self.result = True
        self.failures = []
        total_connections = self._total_connections
        packets = self._packets
        protocol = self._protocol
        (product, group, test, config, env) = self._test

        if isinstance(python_output, str):
            python_output = python_output.split('\n')

        while (python_output[-1] == ''):
            del python_output[-1]

        # Check for any xC device errors
        for line in (xc_output + python_output):
            if re.match('.*ERROR|.*error|.*Error|.*Problem', line):
                self.record_failure(line)

        # Check the board is listening on every port
        found_connections = 0
        for i in range(len(xc_output)):
            if (re.match('Listening on port: [0-9]+$', xc_output[i])):
                found_connections += 1

        if found_connections < total_connections:
            self.record_failure(
                "Incorrect amount of listening ports created on device\n" +
                "  Expected ports: {}".format(total_connections) +
                "  Actual ports:   {}".format(found_connections))

        udp_max_error = int(packets * total_connections * 0.01)
        total_errors = -1
        for i in range(len(python_output)):
            if (re.match('Lost_packets: [0-9]+.*$', python_output[i])):
                total_errors = int(python_output[i].split(' ')[1])
                break

        if total_errors == -1:
            self.record_failure(
                "Could not find the python script's error output")

        # Accept a 1% error rate for UDP?
        if protocol == "UDP":
            if total_errors > udp_max_error:
                self.record_failure(
                    "Packet error rate too high \n" +
                    "  Allowable loss rate: {} packets\n".format(
                        udp_max_error) +
                    "  Actual loss rate:    {} packets\n".format(total_errors))

        # Accept no errors for TCP
        else:
            if total_errors > 0:
                self.record_failure(
                    "Packet error rate too high \n" +
                    "  Allowable loss rate: 0 packets\n" +
                    "  Actual loss rate:    {} packets\n".format(total_errors))

        output = {
            'python_output': ''.join(python_output),
            'device_output': ''.join(xc_output)
        }

        if not self.result:
            output['failures'] = ''.join(self.failures)

        xmostest.set_test_result(product,
                                 group,
                                 test,
                                 config,
                                 self.result,
                                 env={},
                                 output=output)