cbuildbot.py: correctly unpack dictionary from --mock-slave-status

This CL fixes cbuildbot's --mock-slave-status command so that the
pickled dictionaries that represent BuilderStatus objects are correctly
turned into BuilderStatus objects.

BUG=None
TEST=local tryjobs

Change-Id: I301258141c2fab1a2f0f404e16c167a4038555c8
Reviewed-on: https://chromium-review.googlesource.com/189374
Tested-by: Aviv Keshet <akeshet@chromium.org>
Reviewed-by: David James <davidjames@chromium.org>
Commit-Queue: Aviv Keshet <akeshet@chromium.org>
diff --git a/scripts/cbuildbot.py b/scripts/cbuildbot.py
index 75292b5..a4238b4 100644
--- a/scripts/cbuildbot.py
+++ b/scripts/cbuildbot.py
@@ -27,6 +27,7 @@
 from chromite.buildbot import cbuildbot_results as results_lib
 from chromite.buildbot import cbuildbot_run
 from chromite.buildbot import constants
+from chromite.buildbot import manifest_version
 from chromite.buildbot import remote_try
 from chromite.buildbot import repository
 from chromite.buildbot import tee
@@ -1693,8 +1694,10 @@
 
     if options.mock_slave_status is not None:
       with open(options.mock_slave_status, 'r') as f:
-        mock_status = pickle.load(f)
+        mock_statuses = pickle.load(f)
+        for key, value in mock_statuses.iteritems():
+          mock_statuses[key] = manifest_version.BuilderStatus(**value)
       stack.Add(mock.patch.object, stages.MasterSlaveSyncCompletionStage,
-                '_FetchSlaveStatuses', return_value=mock_status)
+                '_FetchSlaveStatuses', return_value=mock_statuses)
 
     _RunBuildStagesWrapper(options, build_config)