New issue
Advanced search Search tips
Note: Color blocks (like or ) mean that a user may not be available. Tooltip shows the reason.

Issue 688166 link

Starred by 1 user

Issue metadata

Status: Archived
Owner:
Last visit > 30 days ago
Closed: Feb 2017
Components:
EstimatedDays: ----
NextAction: ----
OS: Chrome
Pri: 3
Type: Bug



Sign in to add a comment

Create a generic mock class for handling import error from chromite.lib

Project Member Reported by dshi@chromium.org, Feb 2 2017

Issue description

Autotest uses metrics through chromite.lib. If site-packages are not setup (e.g., in test_droid run), the import will fail.
In autotest code, there are various places we do something like:

try:
    from chromite.lib import metrics
except ImportError:
    metrics = None

When metrics is used, we do:
if metrics:
    metrics.call(...)

The if check is tedious and easy to forget. We need a better way to handle such issue. One way to do this is through a mock object which can do noops when metrics module is referenced.
 
Project Member

Comment 1 by bugdroid1@chromium.org, Feb 5 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/chromiumos/third_party/autotest/+/6cd838f23983c501ed9b109931771f944cdf2bdc

commit 6cd838f23983c501ed9b109931771f944cdf2bdc
Author: Dan Shi <dshi@google.com>
Date: Sun Feb 05 20:33:36 2017

[autotest] Create a generic mock class for handling import error from chromite

This change allows one to do following:
try:
    from chromite.lib import metrics
except ImportError:
    metrics = utils.metrics_mock

Then the code to call metrics can stay the same, and don't need to handle the
case where chromite is not installed through build_externals.

BUG= chromium:688166 
TEST=unittest

Change-Id: I1ca58c8223b1a0d81bc8bddce567b863b5743e73
Reviewed-on: https://chromium-review.googlesource.com/436409
Commit-Ready: Dan Shi <dshi@google.com>
Tested-by: Dan Shi <dshi@google.com>
Reviewed-by: Dan Shi <dshi@google.com>

[modify] https://crrev.com/6cd838f23983c501ed9b109931771f944cdf2bdc/client/common_lib/cros/graphite/statsd_mock_unittest.py
[modify] https://crrev.com/6cd838f23983c501ed9b109931771f944cdf2bdc/client/common_lib/cros/graphite/stats_es_mock.py
[modify] https://crrev.com/6cd838f23983c501ed9b109931771f944cdf2bdc/frontend/afe/rpc_interface.py
[modify] https://crrev.com/6cd838f23983c501ed9b109931771f944cdf2bdc/client/common_lib/site_utils_unittest.py
[modify] https://crrev.com/6cd838f23983c501ed9b109931771f944cdf2bdc/client/common_lib/site_utils.py

Comment 2 by dshi@chromium.org, Feb 6 2017

Labels: cros-infra-fixedit-q117
Project Member

Comment 3 by bugdroid1@chromium.org, Feb 15 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/chromiumos/third_party/autotest/+/5e2efb71ffebead22aa4f0744ad843ee79814b43

commit 5e2efb71ffebead22aa4f0744ad843ee79814b43
Author: Dan Shi <dshi@google.com>
Date: Wed Feb 15 18:47:34 2017

[autotest] Use the metrics_mock object in case chromite is not set up.

BUG= chromium:688166 
TEST=unittest

Change-Id: Ic0077cb2dba75a8d820f229060f3f70f507850a1
Reviewed-on: https://chromium-review.googlesource.com/438754
Commit-Ready: Dan Shi <dshi@google.com>
Tested-by: Dan Shi <dshi@google.com>
Reviewed-by: Dan Shi <dshi@google.com>

[modify] https://crrev.com/5e2efb71ffebead22aa4f0744ad843ee79814b43/server/control_segments/verify
[modify] https://crrev.com/5e2efb71ffebead22aa4f0744ad843ee79814b43/scheduler/rdb_hosts.py
[modify] https://crrev.com/5e2efb71ffebead22aa4f0744ad843ee79814b43/site_utils/gs_offloader.py
[modify] https://crrev.com/5e2efb71ffebead22aa4f0744ad843ee79814b43/server/autoserv
[modify] https://crrev.com/5e2efb71ffebead22aa4f0744ad843ee79814b43/site_utils/gmail_lib.py
[modify] https://crrev.com/5e2efb71ffebead22aa4f0744ad843ee79814b43/server/cros/dynamic_suite/reporting.py
[modify] https://crrev.com/5e2efb71ffebead22aa4f0744ad843ee79814b43/server/hosts/ssh_host.py
[modify] https://crrev.com/5e2efb71ffebead22aa4f0744ad843ee79814b43/server/site_tests/dummy_PassServer/control
[modify] https://crrev.com/5e2efb71ffebead22aa4f0744ad843ee79814b43/scheduler/monitor_db_cleanup.py
[modify] https://crrev.com/5e2efb71ffebead22aa4f0744ad843ee79814b43/scheduler/drone_manager.py
[modify] https://crrev.com/5e2efb71ffebead22aa4f0744ad843ee79814b43/client/common_lib/cros/dev_server.py
[modify] https://crrev.com/5e2efb71ffebead22aa4f0744ad843ee79814b43/site_utils/suite_scheduler/suite_scheduler.py
[modify] https://crrev.com/5e2efb71ffebead22aa4f0744ad843ee79814b43/site_utils/stats/mysql_stats.py
[modify] https://crrev.com/5e2efb71ffebead22aa4f0744ad843ee79814b43/scheduler/monitor_db.py
[modify] https://crrev.com/5e2efb71ffebead22aa4f0744ad843ee79814b43/server/frontend.py
[modify] https://crrev.com/5e2efb71ffebead22aa4f0744ad843ee79814b43/scheduler/postjob_task.py
[modify] https://crrev.com/5e2efb71ffebead22aa4f0744ad843ee79814b43/scheduler/shard/shard_client.py
[modify] https://crrev.com/5e2efb71ffebead22aa4f0744ad843ee79814b43/scheduler/rdb_cache_manager.py
[modify] https://crrev.com/5e2efb71ffebead22aa4f0744ad843ee79814b43/server/control_segments/reset
[modify] https://crrev.com/5e2efb71ffebead22aa4f0744ad843ee79814b43/server/control_segments/provision
[modify] https://crrev.com/5e2efb71ffebead22aa4f0744ad843ee79814b43/server/hosts/cros_host.py
[modify] https://crrev.com/5e2efb71ffebead22aa4f0744ad843ee79814b43/scheduler/agent_task.py
[modify] https://crrev.com/5e2efb71ffebead22aa4f0744ad843ee79814b43/scheduler/rdb_utils.py
[modify] https://crrev.com/5e2efb71ffebead22aa4f0744ad843ee79814b43/server/autotest.py
[modify] https://crrev.com/5e2efb71ffebead22aa4f0744ad843ee79814b43/server/site_crashcollect.py
[modify] https://crrev.com/5e2efb71ffebead22aa4f0744ad843ee79814b43/site_utils/suite_scheduler/driver.py
[modify] https://crrev.com/5e2efb71ffebead22aa4f0744ad843ee79814b43/scheduler/pidfile_monitor.py
[modify] https://crrev.com/5e2efb71ffebead22aa4f0744ad843ee79814b43/site_utils/collect_host_stats.py
[modify] https://crrev.com/5e2efb71ffebead22aa4f0744ad843ee79814b43/server/hosts/servo_host.py
[modify] https://crrev.com/5e2efb71ffebead22aa4f0744ad843ee79814b43/client/common_lib/cros/autoupdater.py
[modify] https://crrev.com/5e2efb71ffebead22aa4f0744ad843ee79814b43/server/control_segments/cleanup
[modify] https://crrev.com/5e2efb71ffebead22aa4f0744ad843ee79814b43/site_utils/suite_scheduler/deduping_scheduler.py
[modify] https://crrev.com/5e2efb71ffebead22aa4f0744ad843ee79814b43/server/crashcollect.py
[modify] https://crrev.com/5e2efb71ffebead22aa4f0744ad843ee79814b43/scheduler/query_managers.py
[modify] https://crrev.com/5e2efb71ffebead22aa4f0744ad843ee79814b43/scheduler/scheduler_models.py
[modify] https://crrev.com/5e2efb71ffebead22aa4f0744ad843ee79814b43/scheduler/host_scheduler.py
[modify] https://crrev.com/5e2efb71ffebead22aa4f0744ad843ee79814b43/site_utils/lxc.py
[modify] https://crrev.com/5e2efb71ffebead22aa4f0744ad843ee79814b43/site_utils/check_hung_proc.py
[modify] https://crrev.com/5e2efb71ffebead22aa4f0744ad843ee79814b43/scheduler/rdb.py
[modify] https://crrev.com/5e2efb71ffebead22aa4f0744ad843ee79814b43/server/site_tests/cheets_CTS/cheets_CTS.py
[modify] https://crrev.com/5e2efb71ffebead22aa4f0744ad843ee79814b43/site_utils/count_jobs.py

Project Member

Comment 4 by bugdroid1@chromium.org, Feb 15 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/chromiumos/third_party/autotest/+/5e2efb71ffebead22aa4f0744ad843ee79814b43

commit 5e2efb71ffebead22aa4f0744ad843ee79814b43
Author: Dan Shi <dshi@google.com>
Date: Wed Feb 15 18:47:34 2017

[autotest] Use the metrics_mock object in case chromite is not set up.

BUG= chromium:688166 
TEST=unittest

Change-Id: Ic0077cb2dba75a8d820f229060f3f70f507850a1
Reviewed-on: https://chromium-review.googlesource.com/438754
Commit-Ready: Dan Shi <dshi@google.com>
Tested-by: Dan Shi <dshi@google.com>
Reviewed-by: Dan Shi <dshi@google.com>

[modify] https://crrev.com/5e2efb71ffebead22aa4f0744ad843ee79814b43/server/control_segments/verify
[modify] https://crrev.com/5e2efb71ffebead22aa4f0744ad843ee79814b43/scheduler/rdb_hosts.py
[modify] https://crrev.com/5e2efb71ffebead22aa4f0744ad843ee79814b43/site_utils/gs_offloader.py
[modify] https://crrev.com/5e2efb71ffebead22aa4f0744ad843ee79814b43/server/autoserv
[modify] https://crrev.com/5e2efb71ffebead22aa4f0744ad843ee79814b43/site_utils/gmail_lib.py
[modify] https://crrev.com/5e2efb71ffebead22aa4f0744ad843ee79814b43/server/cros/dynamic_suite/reporting.py
[modify] https://crrev.com/5e2efb71ffebead22aa4f0744ad843ee79814b43/server/hosts/ssh_host.py
[modify] https://crrev.com/5e2efb71ffebead22aa4f0744ad843ee79814b43/server/site_tests/dummy_PassServer/control
[modify] https://crrev.com/5e2efb71ffebead22aa4f0744ad843ee79814b43/scheduler/monitor_db_cleanup.py
[modify] https://crrev.com/5e2efb71ffebead22aa4f0744ad843ee79814b43/scheduler/drone_manager.py
[modify] https://crrev.com/5e2efb71ffebead22aa4f0744ad843ee79814b43/client/common_lib/cros/dev_server.py
[modify] https://crrev.com/5e2efb71ffebead22aa4f0744ad843ee79814b43/site_utils/suite_scheduler/suite_scheduler.py
[modify] https://crrev.com/5e2efb71ffebead22aa4f0744ad843ee79814b43/site_utils/stats/mysql_stats.py
[modify] https://crrev.com/5e2efb71ffebead22aa4f0744ad843ee79814b43/scheduler/monitor_db.py
[modify] https://crrev.com/5e2efb71ffebead22aa4f0744ad843ee79814b43/server/frontend.py
[modify] https://crrev.com/5e2efb71ffebead22aa4f0744ad843ee79814b43/scheduler/postjob_task.py
[modify] https://crrev.com/5e2efb71ffebead22aa4f0744ad843ee79814b43/scheduler/shard/shard_client.py
[modify] https://crrev.com/5e2efb71ffebead22aa4f0744ad843ee79814b43/scheduler/rdb_cache_manager.py
[modify] https://crrev.com/5e2efb71ffebead22aa4f0744ad843ee79814b43/server/control_segments/reset
[modify] https://crrev.com/5e2efb71ffebead22aa4f0744ad843ee79814b43/server/control_segments/provision
[modify] https://crrev.com/5e2efb71ffebead22aa4f0744ad843ee79814b43/server/hosts/cros_host.py
[modify] https://crrev.com/5e2efb71ffebead22aa4f0744ad843ee79814b43/scheduler/agent_task.py
[modify] https://crrev.com/5e2efb71ffebead22aa4f0744ad843ee79814b43/scheduler/rdb_utils.py
[modify] https://crrev.com/5e2efb71ffebead22aa4f0744ad843ee79814b43/server/autotest.py
[modify] https://crrev.com/5e2efb71ffebead22aa4f0744ad843ee79814b43/server/site_crashcollect.py
[modify] https://crrev.com/5e2efb71ffebead22aa4f0744ad843ee79814b43/site_utils/suite_scheduler/driver.py
[modify] https://crrev.com/5e2efb71ffebead22aa4f0744ad843ee79814b43/scheduler/pidfile_monitor.py
[modify] https://crrev.com/5e2efb71ffebead22aa4f0744ad843ee79814b43/site_utils/collect_host_stats.py
[modify] https://crrev.com/5e2efb71ffebead22aa4f0744ad843ee79814b43/server/hosts/servo_host.py
[modify] https://crrev.com/5e2efb71ffebead22aa4f0744ad843ee79814b43/client/common_lib/cros/autoupdater.py
[modify] https://crrev.com/5e2efb71ffebead22aa4f0744ad843ee79814b43/server/control_segments/cleanup
[modify] https://crrev.com/5e2efb71ffebead22aa4f0744ad843ee79814b43/site_utils/suite_scheduler/deduping_scheduler.py
[modify] https://crrev.com/5e2efb71ffebead22aa4f0744ad843ee79814b43/server/crashcollect.py
[modify] https://crrev.com/5e2efb71ffebead22aa4f0744ad843ee79814b43/scheduler/query_managers.py
[modify] https://crrev.com/5e2efb71ffebead22aa4f0744ad843ee79814b43/scheduler/scheduler_models.py
[modify] https://crrev.com/5e2efb71ffebead22aa4f0744ad843ee79814b43/scheduler/host_scheduler.py
[modify] https://crrev.com/5e2efb71ffebead22aa4f0744ad843ee79814b43/site_utils/lxc.py
[modify] https://crrev.com/5e2efb71ffebead22aa4f0744ad843ee79814b43/site_utils/check_hung_proc.py
[modify] https://crrev.com/5e2efb71ffebead22aa4f0744ad843ee79814b43/scheduler/rdb.py
[modify] https://crrev.com/5e2efb71ffebead22aa4f0744ad843ee79814b43/server/site_tests/cheets_CTS/cheets_CTS.py
[modify] https://crrev.com/5e2efb71ffebead22aa4f0744ad843ee79814b43/site_utils/count_jobs.py

Comment 5 by dshi@chromium.org, Feb 15 2017

Status: Fixed (was: Untriaged)

Comment 6 by dchan@google.com, Apr 17 2017

Labels: VerifyIn-59

Comment 7 by dchan@google.com, May 30 2017

Labels: VerifyIn-60

Comment 8 by dchan@chromium.org, Aug 1 2017

Labels: VerifyIn-61

Comment 9 by dchan@chromium.org, Oct 14 2017

Status: Archived (was: Fixed)

Sign in to add a comment