diff --git a/server/cros/tradefed_test.py b/server/cros/tradefed_test.py
index 0258be5..b8a68e6 100644
--- a/server/cros/tradefed_test.py
+++ b/server/cros/tradefed_test.py
@@ -244,8 +244,8 @@
         os.chdir(current)
 
 
-def parse_tradefed_v2_result(result, waivers=None):
-    """Check the result from the tradefed-v2 output.
+def parse_tradefed_result(result, waivers=None):
+    """Check the result from the tradefed output.
 
     @param result: The result stdout string from the tradefed command.
     @param waivers: a set() of tests which are permitted to fail.
@@ -856,41 +856,6 @@
                              Example: '2016.07.14_00.34.50'.
         """
         # This string is show for both 'run' and 'continue' after all tests.
-        match = re.search(r': XML test result file generated at (\S+). Passed',
-                result.stdout)
-        if not (match and match.group(1)):
-            # TODO(ihf): Find out if we ever recover something interesting in
-            # this case. Otherwise delete it.
-            # Try harder to find the remains. This string shows before all
-            # tests but only with 'run', not 'continue'.
-            logging.warning('XML test result file incomplete?')
-            match = re.search(r': Created result dir (\S+)', result.stdout)
-            if not (match and match.group(1)):
-                error_msg = 'Test did not complete due to Chrome or ARC crash.'
-                if summary:
-                    error_msg += (' Test summary from previous runs: %s'
-                            % summary)
-                raise error.TestFail(error_msg)
-        datetime_id = match.group(1)
-        logging.info('Tradefed identified results and logs with %s.',
-                     datetime_id)
-        return datetime_id
-
-    def _parse_tradefed_datetime_v2(self, result, summary=None):
-        """Get the tradefed provided result ID consisting of a datetime stamp.
-
-        Unfortunately we are unable to tell tradefed where to store the results.
-        In the lab we have multiple instances of tradefed running in parallel
-        writing results and logs to the same base directory. This function
-        finds the identifier which tradefed used during the current run and
-        returns it for further processing of result files.
-
-        @param result: The result object from utils.run.
-        @param summary: Test result summary from runs so far.
-        @return datetime_id: The result ID chosen by tradefed.
-                             Example: '2016.07.14_00.34.50'.
-        """
-        # This string is show for both 'run' and 'continue' after all tests.
         match = re.search(r'(\d\d\d\d.\d\d.\d\d_\d\d.\d\d.\d\d)', result.stdout)
         if not (match and match.group(1)):
             error_msg = 'Error: Test did not complete. (Chrome or ARC crash?)'
@@ -912,60 +877,7 @@
         @param result: The result object from utils.run.
         @param waivers: a set() of tests which are permitted to fail.
         """
-        # Parse the stdout to extract test status. In particular step over
-        # similar output for each ABI and just look at the final summary.
-        match = re.search(r'(XML test result file generated at (\S+). '
-                 r'Passed (\d+), Failed (\d+), Not Executed (\d+))',
-                 result.stdout)
-        if not match:
-            raise error.Test('Test log does not contain a summary.')
-
-        passed = int(match.group(3))
-        failed = int(match.group(4))
-        not_executed = int(match.group(5))
-        match = re.search(r'(Start test run of (\d+) packages, containing '
-                          r'(\d+(?:,\d+)?) tests)', result.stdout)
-        if match and match.group(3):
-            tests = int(match.group(3).replace(',', ''))
-        else:
-            # Unfortunately this happens. Assume it made no other mistakes.
-            logging.warning('Tradefed forgot to print number of tests.')
-            tests = passed + failed + not_executed
-        # TODO(rohitbm): make failure parsing more robust by extracting the list
-        # of failing tests instead of searching in the result blob. As well as
-        # only parse for waivers for the running ABI.
-        waived = 0
-        if waivers:
-            for testname in waivers:
-                # TODO(dhaddock): Find a more robust way to apply waivers.
-                fail_count = result.stdout.count(testname + ' FAIL')
-                if fail_count:
-                    if fail_count > 2:
-                        raise error.TestFail('Error: There are too many '
-                                             'failures found in the output to '
-                                             'be valid for applying waivers. '
-                                             'Please check output.')
-                    waived += fail_count
-                    logging.info('Waived failure for %s %d time(s)',
-                                 testname, fail_count)
-        logging.info(
-            'tests=%d, passed=%d, failed=%d, not_executed=%d, waived=%d',
-            tests, passed, failed, not_executed, waived)
-        if failed < waived:
-            raise error.TestFail('Error: Internal waiver book keeping has '
-                                 'become inconsistent.')
-        return (tests, passed, failed, not_executed, waived)
-
-    def _parse_result_v2(self, result, waivers=None):
-        """Check the result from the tradefed-v2 output.
-
-        This extracts the test pass/fail/executed list from the output of
-        tradefed. It is up to the caller to handle inconsistencies.
-
-        @param result: The result object from utils.run.
-        @param waivers: a set() of tests which are permitted to fail.
-        """
-        return parse_tradefed_v2_result(result.stdout, waivers)
+        return parse_tradefed_result(result.stdout, waivers)
 
     def _collect_logs(self, datetime, destination):
         """Collects the tradefed logs.
@@ -1108,12 +1020,12 @@
         self._collect_tradefed_global_log(output, result_destination)
         # Parse stdout to obtain datetime of the session. This is needed to
         # locate result xml files and logs.
-        datetime_id = self._parse_tradefed_datetime_v2(output, self.summary)
+        datetime_id = self._parse_tradefed_datetime(output, self.summary)
         # Collect tradefed logs for autotest.
         self._collect_logs(datetime_id, result_destination)
         # Result parsing must come after all other essential operations as test
         # warnings, errors and failures can be raised here.
-        return self._parse_result_v2(output, waivers=self._waivers)
+        return self._parse_result(output, waivers=self._waivers)
 
     def _clean_repository(self):
         """Ensures all old logs, results and plans are deleted.
diff --git a/server/cros/tradefed_test_unittest.py b/server/cros/tradefed_test_unittest.py
index 7e7e127..ef28287 100644
--- a/server/cros/tradefed_test_unittest.py
+++ b/server/cros/tradefed_test_unittest.py
@@ -17,8 +17,8 @@
 class TradefedTestTest(unittest.TestCase):
     """Unittest for tradefed_test."""
 
-    def test_parse_tradefed_v2_result(self):
-        """Test for parse_tradefed_v2_result."""
+    def test_parse_tradefed_result(self):
+        """Test for parse_tradefed_result."""
 
         waivers = set([
             'android.app.cts.SystemFeaturesTest#testUsbAccessory',
@@ -30,7 +30,7 @@
         # CTS: Tradefed may split a module to multiple chunks.
         # Besides, the module name may not end with "TestCases".
         self.assertEquals((35, 33, 2, 0, 0),
-            tradefed_test.parse_tradefed_v2_result(
+            tradefed_test.parse_tradefed_result(
                 _load_data('CtsHostsideNetworkTests.txt'),
                 waivers=waivers))
 
@@ -38,7 +38,7 @@
         # http://pantheon/storage/browser/chromeos-autotest-results/108291418-chromeos-test/
         # Crashed, but the automatic retry by tradefed executed the rest.
         self.assertEquals((1395, 1386, 9, 0, 0),
-            tradefed_test.parse_tradefed_v2_result(
+            tradefed_test.parse_tradefed_result(
                 _load_data('CtsMediaTestCases.txt'),
                 waivers=waivers))
 
@@ -46,7 +46,7 @@
         # http://pantheon/storage/browser/chromeos-autotest-results/106540705-chromeos-test/
         # Crashed in the middle, and the device didn't came back.
         self.assertEquals((110, 27, 1, 82, 0),
-            tradefed_test.parse_tradefed_v2_result(
+            tradefed_test.parse_tradefed_result(
                 _load_data('CtsSecurityTestCases.txt'),
                 waivers=waivers))
 
@@ -54,7 +54,7 @@
         # http://pantheon/storage/browser/chromeos-autotest-results/108855595-chromeos-test/
         # Crashed in the middle. Tradefed decided not to continue.
         self.assertEquals((739, 573, 3, 163, 0),
-            tradefed_test.parse_tradefed_v2_result(
+            tradefed_test.parse_tradefed_result(
                 _load_data('CtsViewTestCases.txt'),
                 waivers=waivers))
 
@@ -62,12 +62,12 @@
         # http://pantheon/storage/browser/chromeos-autotest-results/109040174-chromeos-test/
         # Mixture of real failures and waivers.
         self.assertEquals((321, 316, 5, 0, 1),
-            tradefed_test.parse_tradefed_v2_result(
+            tradefed_test.parse_tradefed_result(
                 _load_data('CtsAppTestCases.txt'),
                 waivers=waivers))
         # ... and the retry of the above failing iteration.
         self.assertEquals((5, 1, 4, 0, 1),
-            tradefed_test.parse_tradefed_v2_result(
+            tradefed_test.parse_tradefed_result(
                 _load_data('CtsAppTestCases-retry.txt'),
                 waivers=waivers))
 
@@ -75,7 +75,7 @@
         # When a test case crashed during teardown, tradefed prints the "fail"
         # message twice. Tolerate it and still return an (inconsistent) count.
         self.assertEquals((1194, 1185, 10, 0, 2),
-            tradefed_test.parse_tradefed_v2_result(
+            tradefed_test.parse_tradefed_result(
                 _load_data('CtsWidgetTestCases.txt'),
                 waivers=waivers))
 
@@ -83,7 +83,7 @@
         # When a test case unrecoverably crashed during teardown, tradefed
         # prints the "fail" and failure summary message twice. Tolerate it.
         self.assertEquals((71, 70, 1, 0, 0),
-            tradefed_test.parse_tradefed_v2_result(
+            tradefed_test.parse_tradefed_result(
                 _load_data('CtsPrintTestCases.txt'),
                 waivers=waivers))
 
@@ -99,7 +99,7 @@
         # http://pantheon/storage/browser/chromeos-autotest-results/130080763-chromeos-test/
         # 3 ABIS: x86, x86_64, and armeabi-v7a
         self.assertEquals((15, 6, 9, 0, 9),
-            tradefed_test.parse_tradefed_v2_result(
+            tradefed_test.parse_tradefed_result(
                 _load_data('GtsPlacementTestCases.txt'),
                 waivers=gts_waivers))
 
@@ -108,7 +108,7 @@
         # The result of the last chunk not reported by tradefed.
         # The actual dEQP log is too big, hence the test data here is trimmed.
         self.assertEquals((157871, 116916, 0, 40955, 0),
-            tradefed_test.parse_tradefed_v2_result(
+            tradefed_test.parse_tradefed_result(
                 _load_data('CtsDeqpTestCases-trimmed.txt'),
                 waivers=waivers))
 
