Added update_client and made misc. fixes.
 The update_client will update weekly chromeos snapshots. test_client now
 has more command-line options. command_executer now sets the nice value
 of the command.

PRESUBMIT=passed
R=raymes,bjanakiraman
DELTA=98  (79 added, 0 deleted, 19 changed)
OCL=45833-p2
RCL=45854-p2
RDATE=2010/12/14 14:31:43


P4 change: 42607258
diff --git a/v14/automation/clients/test_client.py b/v14/automation/clients/test_client.py
index cb5695d..e8447f5 100755
--- a/v14/automation/clients/test_client.py
+++ b/v14/automation/clients/test_client.py
@@ -22,10 +22,17 @@
                     "--toolchain",
                     dest="toolchain",
                     default="trunk",
-                    help="Toolchain to use {trunk|branch|custom}"
+                    help="Toolchain to use {trunk|branch}"
+                    )
+  parser.add_option("-b",
+                    "--board",
+                    dest="board",
+                    default="x86-generic",
+                    help="Toolchain to use {trunk|branch}"
                     )
   parser.add_option("-p",
                     "--p4-snapshot",
+                    dest="p4_snapshot",
                     default="",
                     help="An existing perforce checkout for debugging."
                     )
@@ -34,7 +41,8 @@
   server = xmlrpclib.Server("http://localhost:8000")
 
   all_jobs = []
-  tc_job = jobs_helper.CreateBuildTCJob(p4_snapshot=options.p4_snapshot)
+  tc_job = jobs_helper.CreateBuildTCJob(p4_snapshot=options.p4_snapshot,
+                                        toolchain=options.toolchain)
   all_jobs.append(tc_job)
 
   versions = options.chromeos_versions
diff --git a/v14/automation/clients/update_client.py b/v14/automation/clients/update_client.py
new file mode 100644
index 0000000..90e2b85
--- /dev/null
+++ b/v14/automation/clients/update_client.py
@@ -0,0 +1,40 @@
+import sys
+from utils import utils
+import xmlrpclib
+from automation.common import job
+from automation.common import job_group
+from automation.common import jobs_helper
+import optparse
+import os
+
+
+def Main(argv):
+  """The main function."""
+  parser = optparse.OptionParser()
+  parser.add_option("-c",
+                    "--chromeos-version",
+                    dest="chromeos_version",
+                    default="weekly",
+                    help=("Update what version of chromeos.")
+                    )
+  parser.add_option("-l",
+                    "--location",
+                    dest="location",
+                    default="/home/asharif/chromeos_checkouts/",
+                    help="Location of the checkouts directory."
+                    )
+  options = parser.parse_args(argv)[0]
+
+  server = xmlrpclib.Server("http://localhost:8000")
+
+  all_jobs = []
+  update_job = jobs_helper.CreateUpdateJob(options.chromeos_version,
+                                           options.location)
+  all_jobs.append(update_job)
+
+  group = job_group.JobGroup(os.uname()[1], "/tmp/", all_jobs, False, False)
+  server.ExecuteJobGroup(utils.Serialize(group))
+
+if __name__ == "__main__":
+  Main(sys.argv)
+
diff --git a/v14/automation/common/jobs_helper.py b/v14/automation/common/jobs_helper.py
index 45b5325..9c6d92f 100755
--- a/v14/automation/common/jobs_helper.py
+++ b/v14/automation/common/jobs_helper.py
@@ -3,6 +3,7 @@
 import os
 import re
 import sys
+import time
 
 p4_checkout_dir = "perforce2"
 version_dir = "/gcctools/chromeos/v14/"
@@ -90,16 +91,27 @@
 
 def CreateBuildTCJob(chromeos_version="top",
                      board="x86-generic",
-                     p4_snapshot=""):
+                     p4_snapshot="",
+                     toolchain="trunk"):
   p4_port = "perforce2:2666"
   p4_paths = []
   p4_paths.append(("//depot2/gcctools/chromeos/v14/...", "gcctools/chromeos/v14/..."))
-  p4_paths.append(("//depot2/gcctools/google_vendor_src_branch/gcc/gcc-4.4.3/...",
-                   "gcctools/google_vendor_src_branch/gcc/gcc-4.4.3/..."))
-  p4_paths.append(("//depot2/gcctools/google_vendor_src_branch/binutils/binutils-2.20.1-mobile/...",
-                   "gcctools/google_vendor_src_branch/binutils/binutils-2.20.1-mobile/..."))
-  p4_paths.append(("//depot2/gcctools/google_vendor_src_branch/binutils/binutils-20100303/...",
-                   "gcctools/google_vendor_src_branch/binutils/binutils-20100303/..."))
+  if toolchain == "trunk":
+    toolchain_root = p4_checkout_dir + "/gcctools"
+    p4_paths.append(("//depot2/gcctools/google_vendor_src_branch/gcc/gcc-4.4.3/...",
+                     "gcctools/google_vendor_src_branch/gcc/gcc-4.4.3/..."))
+    p4_paths.append(("//depot2/gcctools/google_vendor_src_branch/binutils/binutils-2.20.1-mobile/...",
+                     "gcctools/google_vendor_src_branch/binutils/binutils-2.20.1-mobile/..."))
+    p4_paths.append(("//depot2/gcctools/google_vendor_src_branch/binutils/binutils-20100303/...",
+                     "gcctools/google_vendor_src_branch/binutils/binutils-20100303/..."))
+  elif toolchain == "branch":
+    toolchain_root = p4_checkout_dir + "/branches/chromeos_toolchain_v1_release_branch/gcctools"
+    p4_paths.append(("//depot2/branches/chromeos_toolchain_v1_release_branch/gcctools/google_vendor_src_branch/gcc/gcc-4.4.3/...",
+                     "branches/chromeos_toolchain_v1_release_branch/gcctools/google_vendor_src_branch/gcc/gcc-4.4.3/..."))
+    p4_paths.append(("//depot2/branches/chromeos_toolchain_v1_release_branch/gcctools/google_vendor_src_branch/binutils/binutils-2.20.1-mobile/...",
+                     "branches/chromeos_toolchain_v1_release_branch/gcctools/google_vendor_src_branch/binutils/binutils-2.20.1-mobile/..."))
+    p4_paths.append(("//depot2/branches/chromeos_toolchain_v1_release_branch/gcctools/google_vendor_src_branch/binutils/binutils-20100303/...",
+                     "branches/chromeos_toolchain_v1_release_branch/gcctools/google_vendor_src_branch/binutils/binutils-20100303/..."))
   p4_revision = 1
 
   command = GetInitialCommand()
@@ -107,9 +119,9 @@
                                  p4_revision, p4_checkout_dir, p4_snapshot)
 
   if chromeos_version == "weekly":
-    command += "; sudo cp -rp " + GetWeeklyChromeOSLocation() + " chromeos"
+    command += "; cp -rp " + GetWeeklyChromeOSLocation() + " chromeos"
   elif chromeos_version == "quarterly":
-    command += " ; sudo cp -rp " + GetQuarterlyChromeOSLocation() + " chromeos"
+    command += " ; cp -rp " + GetQuarterlyChromeOSLocation() + " chromeos"
   elif (chromeos_version == "top" or chromeos_version == "latest" or
         re.match("^\d\.\d\.\d\.\d$", chromeos_version)):
     command += ("; " + p4_version_dir + "/setup_chromeos.py" +
@@ -117,10 +129,11 @@
                 " --version=" + chromeos_version +
                 " --minilayout")
   else:
-    command += "; sudo cp -rp " + chromeos_version + " chromeos"
+    command += "; cp -rp " + chromeos_version + " chromeos"
+
 
   command += ("; " + p4_version_dir + "/build_tc.py" +
-                      " --toolchain_root=" + p4_checkout_dir + "/gcctools" +
+                      " --toolchain_root=" + toolchain_root +
                       " --chromeos_root=" + chromeos_root +
                       " --board=" + board +
                       " -f")
@@ -136,16 +149,16 @@
   command += "; " + GetP4VersionDirCommand(p4_snapshot)
 
   if chromeos_version == "weekly":
-    command += "; sudo cp -rp " + GetWeeklyChromeOSLocation() + " chromeos"
+    command += "; cp -rp " + GetWeeklyChromeOSLocation() + " chromeos"
   elif chromeos_version == "quarterly":
-    command += " sudo cp -rp " + GetQuarterlyChromeOSLocation() + " chromeos"
+    command += " cp -rp " + GetQuarterlyChromeOSLocation() + " chromeos"
   elif (chromeos_version == "top" or chromeos_version == "latest" or
         re.match("^\d\.\d\.\d\.\d$", chromeos_version)):
     command += ("; " + p4_version_dir + "/setup_chromeos.py" +
                 " --dir=" + chromeos_root +
                 " --version=" + chromeos_version)
   else:
-    command += "; sudo cp -rp " + chromeos_version + " chromeos"
+    command += "; cp -rp " + chromeos_version + " chromeos"
 
   command += ("; " + p4_version_dir + "/build_tc.py" +
                       " --toolchain_root=" + p4_checkout_dir + "/gcctools" +
@@ -163,7 +176,8 @@
   command += ("; " + p4_version_dir + "/run_tests.py" + 
               " --remote=$SECONDARY_MACHINES[0] " +
               " --chromeos_root=" + chromeos_root +
-              " --board=" + board)
+              " --board=" + board +
+              " bvt Page")
 
   to_return = CreateLinuxJob(command)
   to_return.AddRequiredFolder(tc_job, p4_pkgs_dir, p4_pkgs_dir)
@@ -180,3 +194,19 @@
   to_return.AddRequiredFolder(p4_job, p4_version_dir, p4_version_dir)
   return to_return
 
+def CreateUpdateJob(chromeos_version="weekly",
+                    location="/home/asharif/chromeos_checkouts/",
+                    p4_snapshot=""):
+  command = GetInitialCommand()
+  dirname = time.asctime()
+  dirname = dirname.replace(" ", "-")
+  command += "; " + GetP4VersionDirCommand(p4_snapshot)
+  command += "; mkdir -p " + location
+  command += ("; " + p4_version_dir + "/setup_chromeos.py" +
+              " --dir=" + location + "/chromeos." + dirname +
+              " --version=latest")
+  command += (" && ln -s -T chromeos." + dirname + " " +
+              location + "/weekly")
+  to_return = CreateLinuxJob(command)
+  return to_return
+
diff --git a/v14/run_tests.py b/v14/run_tests.py
index 54a144f..2f3f2fd 100755
--- a/v14/run_tests.py
+++ b/v14/run_tests.py
@@ -25,7 +25,7 @@
   parser.add_option("-b", "--board", dest="board",
                     help="The board of the target.")
 
-  tests = "BuildVerify"
+  tests = "bvt"
 
   (options, args) = parser.parse_args()
 
@@ -36,7 +36,8 @@
   if options.chromeos_root is None:
     options.chromeos_root = "../.."
 
-  tests += " " + " ".join(args)
+  if args:
+    tests = " " + " ".join(args)
   return RunRemoteTests(options.chromeos_root, options.remote,
                         options.board, tests)