[autotest] Drone manager stats.

Add some rudimentary stats to track drone manager actions, including
refresh time per drone.

TEST=Ran the scheduler.
BUG=chromium:382954
DEPLOY=scheduler

Change-Id: Ia3df42ff5abade248f0223f668a9fdc8fc5bdba0
Reviewed-on: https://chromium-review.googlesource.com/203312
Tested-by: Prashanth B <beeps@chromium.org>
Commit-Queue: Prashanth B <beeps@chromium.org>
Reviewed-by: Dan Shi <dshi@chromium.org>
diff --git a/scheduler/drone_manager.py b/scheduler/drone_manager.py
index 16c4462..cc9f44e 100644
--- a/scheduler/drone_manager.py
+++ b/scheduler/drone_manager.py
@@ -295,7 +295,9 @@
     def _call_all_drones(self, method, *args, **kwargs):
         all_results = {}
         for drone in self.get_drones():
-            all_results[drone] = drone.call(method, *args, **kwargs)
+            with self._timer.get_client(
+                    '%s.%s' % (drone.hostname.replace('.', '_'), method)):
+                all_results[drone] = drone.call(method, *args, **kwargs)
         return all_results
 
 
diff --git a/scheduler/drones.py b/scheduler/drones.py
index 869d63c..605d250 100644
--- a/scheduler/drones.py
+++ b/scheduler/drones.py
@@ -2,6 +2,7 @@
 import common
 from autotest_lib.scheduler import drone_utility, email_manager
 from autotest_lib.client.common_lib import error, global_config, utils
+from autotest_lib.client.common_lib.cros.graphite import stats
 
 
 AUTOTEST_INSTALL_DIR = global_config.global_config.get_config_value('SCHEDULER',
@@ -59,6 +60,8 @@
 
 
     def _execute_calls(self, calls):
+        stats.Gauge('drone_execute_call_count').send(
+                    self.hostname.replace('.', '_'), len(calls))
         return_message = self._execute_calls_impl(calls)
         for warning in return_message['warnings']:
             subject = 'Warning from drone %s' % self.hostname