Merge "unify test result check for feature project and apply to parser"
authorvalentin boucher <valentin.boucher@orange.com>
Thu, 4 Aug 2016 08:21:59 +0000 (08:21 +0000)
committerGerrit Code Review <gerrit@172.30.200.206>
Thu, 4 Aug 2016 08:21:59 +0000 (08:21 +0000)
1  2 
utils/functest_utils.py

diff --combined utils/functest_utils.py
@@@ -16,10 -16,10 +16,10 @@@ import o
  import os.path
  import re
  import shutil
 -import socket
  import subprocess
  import sys
  import urllib2
 +import dns.resolver
  
  import functest.ci.tier_builder as tb
  from git import Repo
@@@ -226,17 -226,13 +226,17 @@@ def get_resolvconf_ns()
      nameservers = []
      rconf = open("/etc/resolv.conf", "r")
      line = rconf.readline()
 +    resolver = dns.resolver.Resolver()
      while line:
          ip = re.search(r"\b(?:[0-9]{1,3}\.){3}[0-9]{1,3}\b", line)
 -        sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
          if ip:
 -            result = sock.connect_ex((ip.group(), 53))
 -            if result == 0:
 -                nameservers.append(ip.group())
 +            resolver.nameservers = [str(ip)]
 +            try:
 +                result = resolver.query('opnfv.org')[0]
 +                if result != "":
 +                    nameservers.append(ip.group())
 +            except dns.exception.Timeout:
 +                pass
          line = rconf.readline()
      return nameservers
  
@@@ -357,16 -353,33 +357,33 @@@ def check_success_rate(case_name, succe
      success_rate = float(success_rate)
      criteria = get_criteria_by_test(case_name)
  
-     def get_value(op):
+     def get_criteria_value(op):
          return float(criteria.split(op)[1].rstrip('%'))
  
      status = 'FAIL'
      ops = ['==', '>=']
      for op in ops:
          if op in criteria:
-             c_value = get_value(op)
+             c_value = get_criteria_value(op)
              if eval("%s %s %s" % (success_rate, op, c_value)):
                  status = 'PASS'
              break
  
      return status
+ def check_test_result(test_name, ret, start_time, stop_time):
+     def get_criteria_value():
+         return get_criteria_by_test(test_name).split('==')[1].strip()
+     status = 'FAIL'
+     if str(ret) == get_criteria_value():
+         status = 'PASS'
+     details = {
+         'timestart': start_time,
+         'duration': round(stop_time - start_time, 1),
+         'status': status,
+     }
+     return status, details