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

Unified Diff: client/site_tests/desktopui_IBusTest/desktopui_IBusTest.py

Issue 3352010: Fix ibus autotest by having it launch ibus-daemon itself. (Closed) Base URL: ssh://gitrw.chromium.org/autotest.git
Patch Set: Code review fixes Created 10 years, 3 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
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: client/site_tests/desktopui_IBusTest/desktopui_IBusTest.py
diff --git a/client/site_tests/desktopui_IBusTest/desktopui_IBusTest.py b/client/site_tests/desktopui_IBusTest/desktopui_IBusTest.py
index 1a92cf2cd83422c7621c56ede210d7afe1624ed4..c825ded3fd3dcd89dd3bae1bff69bcfde3cda9b6 100644
--- a/client/site_tests/desktopui_IBusTest/desktopui_IBusTest.py
+++ b/client/site_tests/desktopui_IBusTest/desktopui_IBusTest.py
@@ -6,23 +6,13 @@ import logging, os, re, string, time
from autotest_lib.client.bin import site_ui_test, test
from autotest_lib.client.common_lib import error, site_ui, utils
-def wait_for_ibus_daemon_or_die(timeout=10):
- # Wait until ibus-daemon starts. ibus-daemon starts after a user
- # logs in (see src/platform/init for details), hence it's not
- # guaranteed that ibus-daemon is running when the test starts.
- start_time = time.time()
- while time.time() - start_time < timeout:
- if os.system('pgrep ^ibus-daemon$') == 0: # Returns 0 on success.
- return
- time.sleep(1)
- raise error.TestFail('ibus-daemon is not running')
-
-
class desktopui_IBusTest(site_ui_test.UITest):
version = 1
preserve_srcdir = True
def setup(self):
+ self._ibus_job = None
+ self._candidate_window_job = None
self.job.setup_dep(['ibusclient'])
@@ -77,7 +67,43 @@ class desktopui_IBusTest(site_ui_test.UITest):
def test_check_unused_ibus_values(self):
engine_list = ['hangul', 'pinyin', 'mozc', 'chewing']
- expected_unread = set([# TODO: Uncomment these when mozc loads config
+ expected_unread = set(['engine/PinyinCorrectPinyin_UEN_UN',
+ 'engine/PinyinFuzzyPinyin_Z_ZH',
+ 'engine/PinyinFuzzyPinyin_CH_C',
+ 'engine/PinyinFuzzyPinyin_S_SH',
+ 'engine/PinyinFuzzyPinyin_EN_ENG',
+ 'engine/PinyinFuzzyPinyin_AN_ANG',
+ 'engine/PinyinFuzzyPinyin_IANG_IAN',
+ 'engine/PinyinSpecialPhrases',
+ 'engine/PinyinFuzzyPinyin_UAN_UANG',
+ 'engine/PinyinFuzzyPinyin_IN_ING',
+ 'engine/PinyinFuzzyPinyin_G_K',
+ 'engine/PinyinCorrectPinyin_UEI_UI',
+ 'engine/PinyinCorrectPinyin_UE_VE',
+ 'engine/PinyinFuzzyPinyin_F_H',
+ 'engine/PinyinFuzzyPinyin_SH_S',
+ 'engine/PinyinIncompletePinyin',
+ 'engine/PinyinFuzzyPinyin_L_R',
+ 'engine/PinyinFuzzyPinyin_K_G',
+ 'engine/PinyinFuzzyPinyin_ANG_AN',
+ 'engine/PinyinFuzzyPinyin_C_CH',
+ 'engine/PinyinCorrectPinyin_MG_NG',
+ 'engine/PinyinLookupTableOrientation',
+ 'engine/PinyinFuzzyPinyin_L_N',
+ 'engine/PinyinFuzzyPinyin_ING_IN',
+ 'engine/PinyinFuzzyPinyin_IAN_IANG',
+ 'engine/PinyinFuzzyPinyin_N_L',
+ 'engine/PinyinCorrectPinyin_IOU_IU',
+ 'engine/PinyinFuzzyPinyin_ENG_EN',
+ 'engine/PinyinCorrectPinyin_VE_UE',
+ 'engine/PinyinCorrectPinyin_V_U',
+ 'engine/PinyinFuzzyPinyin_UANG_UAN',
+ 'engine/PinyinDoublePinyinShowRaw',
+ 'engine/PinyinFuzzyPinyin_H_F',
+ 'engine/PinyinFuzzyPinyin_ZH_Z',
+ 'engine/PinyinFuzzyPinyin_R_L',
+
+ # TODO: Uncomment these when mozc loads config
# values from ibus.
'engine/Mozchistory_learning_level',
'engine/Mozcincognito_mode',
@@ -154,8 +180,6 @@ class desktopui_IBusTest(site_ui_test.UITest):
'generalglobal_engine',
# We don't set these prefernces.
- 'general/hotkeynext_engine',
- 'general/hotkeyprev_engine',
'general/hotkeytrigger',
'generalembed_preedit_text',
'generalenable_by_default',
@@ -165,6 +189,11 @@ class desktopui_IBusTest(site_ui_test.UITest):
self.preload_engines(engine_list)
+ # ibus takes some time to preload the engines, and they can't be
+ # activated until they are done loading. Since we don't get notified
+ # when they are ready, we have to wait here to give them time.
+ time.sleep(2)
+
# Send a ctrl+l to enter a text field.
ax = self.get_autox()
ax.send_hotkey('Ctrl-l')
@@ -220,7 +249,7 @@ class desktopui_IBusTest(site_ui_test.UITest):
def run_once(self):
- wait_for_ibus_daemon_or_die()
+ self.start_ibus_daemon_or_die()
dep = 'ibusclient'
dep_dir = os.path.join(self.autodir, 'deps', dep)
self.job.install_pkg(dep, 'dep', dep_dir)
@@ -234,3 +263,21 @@ class desktopui_IBusTest(site_ui_test.UITest):
self.test_config(type_name)
self.test_check_unused_ibus_values()
+ self._ibus_job = None
+ self._candidate_window_job = None
+ utils.system_output("kill -9 `pgrep ^ibus-daemon$`")
+
+
+ def start_ibus_daemon_or_die(self, timeout=10):
+ self._ibus_job = utils.BgJob(
+ "su chronos -c '%s'" %
+ "/usr/bin/ibus-daemon --panel=disable --cache=none --restart")
+ time.sleep(2)
+ self._candidate_window_job = utils.BgJob(
+ "su chronos -c '/opt/google/chrome/candidate_window'")
+ start_time = time.time()
+ while time.time() - start_time < timeout:
+ if os.system('pgrep ^ibus-daemon$') == 0:
+ return
+ time.sleep(1)
+ raise error.TestFail('ibus-daemon is not running')
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698