give the duration of test in the fallback xml file

A common extension to junitxml is to provide the duration of each test
case in seconds. Here, we add the duration to the xml file that
test-setup.sh provides if the test driver doesn't generate one.

Change-Id: I25f94f10bb99db7078919f3e0bcdf7bd3cbb637d
PiperOrigin-RevId: 160252993
diff --git a/src/test/shell/bazel/bazel_test_test.sh b/src/test/shell/bazel/bazel_test_test.sh
index a175139..9f0c461 100755
--- a/src/test/shell/bazel/bazel_test_test.sh
+++ b/src/test/shell/bazel/bazel_test_test.sh
@@ -357,10 +357,12 @@
   cat bazel-testlogs/dir/success/test.xml >$TEST_log
   expect_log "errors=\"0\""
   expect_log_once "testcase"
+  expect_log_once "duration=\"[0-9]\+\""
   expect_log "name=\"dir/success\""
   cat bazel-testlogs/dir/fail/test.xml >$TEST_log
   expect_log "errors=\"1\""
   expect_log_once "testcase"
+  expect_log_once "duration=\"[0-9]\+\""
   expect_log "name=\"dir/fail\""
 }
 
diff --git a/tools/test/test-setup.sh b/tools/test/test-setup.sh
index 308f658..8ce2ea8 100755
--- a/tools/test/test-setup.sh
+++ b/tools/test/test-setup.sh
@@ -161,11 +161,13 @@
 [[ -n "$RUNTEST_PRESERVE_CWD" ]] && EXE="${TEST_NAME}"
 
 exitCode=0
+start=$(date +%s)
 if [ -z "$COVERAGE_DIR" ]; then
   "${TEST_PATH}" "$@" || exitCode=$?
 else
   "$1" "$TEST_PATH" "${@:3}" || exitCode=$?
 fi
+duration=$(expr $(date +%s) - $start)
 
 
 if [ -n "${XML_OUTPUT_FILE-}" -a ! -f "${XML_OUTPUT_FILE-}" ]; then
@@ -181,7 +183,7 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <testsuites>
   <testsuite name="$TEST_NAME" tests="1" failures="0" errors="$errors">
-    <testcase name="$TEST_NAME" status="run">$error_msg</testcase>
+    <testcase name="$TEST_NAME" status="run" duration="$duration">$error_msg</testcase>
   </testsuite>
 </testsuites>
 EOF