Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(900)

Unified Diff: chrome/test/pyautolib/chromoting_helper.py

Issue 10821015: Initial checkin of the me2me pyauto automation: (Closed) Base URL: http://src.chromium.org/svn/trunk/src/
Patch Set: Created 8 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« chrome/test/pyautolib/chromoting.py ('K') | « chrome/test/pyautolib/chromoting.py ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/test/pyautolib/chromoting_helper.py
===================================================================
--- chrome/test/pyautolib/chromoting_helper.py (revision 0)
+++ chrome/test/pyautolib/chromoting_helper.py (revision 0)
@@ -0,0 +1,129 @@
+# Copyright (c) 2012 The Chromium Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+"""Chromoting helper script to install/uninstall/enable/disable host."""
+
+import os
+import sys
+import zipfile
+import subprocess
+
+def replacePrefPane(mock_pref_pane):
+ pref_pane_dir = "/Library/PreferencePanes"
+ chromoting_test_dir = "chrome/test/functional/chromoting"
Nirnimesh 2012/07/31 20:15:10 use os.path.join
yihongg1 2012/08/03 00:40:06 Done.
+ subprocess.call(["rm", "-rf", pref_pane_dir + "/" + mock_pref_pane])
+ subprocess.call(["cp", "-f", chromoting_test_dir + "/" + mock_pref_pane, pref_pane_dir])
+ subprocess.call(["chmod", "a+x", pref_pane_dir + "/" + mock_pref_pane])
+ subprocess.call(["rm", "-rf", pref_pane_dir + "/org.chromium.chromoting.prefPane"])
+ subprocess.call(["ln", "-s", pref_pane_dir + "/" + mock_pref_pane,
+ pref_pane_dir + "/org.chromium.chromoting.prefPane"])
+
+def main():
+ if sys.argv[1] == 'install':
+ if sys.platform.startswith('win'):
+ host_msi = sys.argv[2] + "\\remoting-host.msi"
+ subprocess.Popen(["msiexec", "/i", host_msi, "/passive"]).wait()
+ elif sys.platform.startswith('darwin'):
+ assert os.geteuid() == 0, 'Need superuser privileges'
+
+ # Run most of the steps here with login user
+ login_uid = os.getuid()
+ os.seteuid(login_uid)
+
+ # Change the working dir to the dir that has the host zip file
+ current_dir = os.getcwd()
+ bin_dir = sys.argv[2]
+ os.chdir(bin_dir)
+
+ # Remove remoting-me2me-host-mac dir just in case
+ subprocess.call("rm -f -R remoting-me2me-host-mac", shell=True)
+
+ # Unzip the host archive and prepare the files/dirs
+ subprocess.call("unzip remoting-me2me-host-mac.zip", shell=True)
+ subprocess.call("mkdir remoting-me2me-host-mac/output", shell=True)
+
+ # Prepare security identity for code signing purpose
+ os.seteuid(0)
+ key_chain = "/Library/Keychains/ChromotingTest"
+ password = "1111"
+ chromoting_test_dir = current_dir + "/chrome/test/functional/chromoting"
+ subprocess.call(["security", "delete-keychain", key_chain])
+ subprocess.call(["security", "create-keychain", "-p", password, key_chain])
+ subprocess.call(["security", "import", chromoting_test_dir + "/chromoting_key.p12",
+ "-k", key_chain, "-P", password, "-A"])
+ subprocess.call(["security", "import", chromoting_test_dir + "/chromoting_cert.p12",
+ "-k", key_chain, "-P", password])
+ os.seteuid(login_uid)
+
+ # Sign the host
+ subprocess.call("./remoting-me2me-host-mac/do_signing.sh remoting-me2me-host-mac/output remoting-me2me-host-mac "
+ + key_chain + " \"Chromoting Test\"", shell=True)
+
+ # Remove security identify
+ os.seteuid(0)
+ subprocess.call(["security", "delete-keychain", key_chain])
+ os.seteuid(login_uid)
+
+ # Figure out the dmg name
+ version = ""
+ for file in os.listdir("remoting-me2me-host-mac/output"):
+ if file.endswith(".dmg"):
+ version = os.path.basename(file)[len("ChromotingHost-"):-4]
+
+ # Mount before installation
+ subprocess.call("hdiutil mount remoting-me2me-host-mac/output/ChromotingHost-" + version + ".dmg", shell=True)
+
+ # Install host
+ os.seteuid(0)
+ subprocess.call(["/usr/sbin/installer",
+ "-pkg", "/Volumes/Chromoting Host " + version + "/Chromoting Host.mpkg",
+ "-target", "/"])
+ os.seteuid(login_uid)
+
+ # Unmount after installation
+ subprocess.call("hdiutil unmount \"/Volumes/Chromoting Host " + version + "\"", shell=True)
+
+ # Clean up remoting-me2me-host-mac dir
+ subprocess.call("rm -f -R remoting-me2me-host-mac", shell=True)
+
+ # Resume the original working dir
+ os.chdir(current_dir)
+ else:
+ print("Nothing to be done for install")
+ elif sys.argv[1] == 'uninstall':
+ if sys.platform.startswith('win'):
+ host_msi = sys.argv[2] + "\\remoting-host.msi"
+ subprocess.Popen(["msiexec", "/x", host_msi, "/passive"]).wait()
+ elif sys.platform.startswith('darwin'):
+ assert os.geteuid() == 0, 'Need superuser privileges'
+ subprocess.call(["open", "-a", "/Applications/Chromoting Host Uninstaller.app"])
+ else:
+ print("Nothing to be done for uninstall")
+ elif sys.argv[1] == 'enable':
+ if sys.platform.startswith('darwin'):
+ assert os.geteuid() == 0, 'Need superuser privileges'
+ replacePrefPane("mock_pref_pane_enable")
+ else:
+ print("Nothing to be done for enable")
+ elif sys.argv[1] == 'disable':
+ if sys.platform.startswith('darwin'):
+ assert os.geteuid() == 0, 'Need superuser privileges'
+ replacePrefPane("mock_pref_pane_disable")
+ else:
+ print("Nothing to be done for disable")
+ elif sys.argv[1] == 'changepin':
+ if sys.platform.startswith('darwin'):
+ assert os.geteuid() == 0, 'Need superuser privileges'
+ replacePrefPane("mock_pref_pane_changepin")
+ else:
+ print("Nothing to be done for changepin")
+ else:
+ print >>sys.stderr, (
+ 'Invalid syntax')
+ return 1
+ return 0
+
+
+if __name__ == '__main__':
+ sys.exit(main())
« chrome/test/pyautolib/chromoting.py ('K') | « chrome/test/pyautolib/chromoting.py ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698