CTS result readers: refactor common code into utils.py

Bug:
Change-Id: Ifbb6dda89a9250207d385f079e87cfe2b2da4ac9
diff --git a/tools/test_android_cts.py b/tools/test_android_cts.py
index 384ce70..7a796b9 100755
--- a/tools/test_android_cts.py
+++ b/tools/test_android_cts.py
@@ -30,6 +30,7 @@
 import os
 import re
 import sys
+import time
 
 import gradle
 import utils
@@ -103,34 +104,19 @@
 #     tree[module_name][testcase_name][test_name] = True|False
 #
 def read_test_result_into_tree(filename):
-  re_module = re.compile('<Module name="([^"]*)"')
-  re_testcase = re.compile('<TestCase name="([^"]*)"')
-  re_test = re.compile('<Test result="(pass|fail)" name="([^"]*)"')
   tree = {}
   module = None
   testcase = None
-  with open(filename) as f:
-    for line in f:
-      m = re_module.search(line)
-      if m:
-        module_name = m.groups()[0]
-        tree[module_name] = {}
-        module = tree[module_name]
-        continue
+  for x in utils.read_cts_test_result(filename):
+    if type(x) is utils.CtsModule:
+      tree[x.name] = {}
+      module = tree[x.name]
+    elif type(x) is utils.CtsTestCase:
+      module[x.name] = {}
+      testcase = module[x.name]
+    else:
+      testcase[x.name] = x.outcome
 
-      m = re_testcase.search(line)
-      if m:
-        testcase_name = m.groups()[0]
-        module[testcase_name] = {}
-        testcase = module[testcase_name]
-        continue
-
-      m = re_test.search(line)
-      if m:
-        outcome = m.groups()[0]
-        test_name = m.groups()[1]
-        assert outcome in ["fail", "pass"]
-        testcase[test_name] = outcome == "pass"
   return tree
 
 # Report the items with the title