• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 package autotest.moblab.rpc;
2 
3 import com.google.gwt.json.client.JSONNull;
4 import com.google.gwt.json.client.JSONNumber;
5 import com.google.gwt.json.client.JSONObject;
6 import com.google.gwt.json.client.JSONString;
7 import com.google.gwt.json.client.JSONValue;
8 
9 import autotest.common.JsonRpcCallback;
10 import autotest.common.JsonRpcProxy;
11 import autotest.common.SimpleCallback;
12 
13 import com.google.gwt.user.client.Window;
14 import java.util.LinkedList;
15 import java.util.List;
16 import java.util.Map;
17 
18 /**
19  * A helper class for moblab RPC call.
20  */
21 public class MoblabRpcHelper {
22   public static final String RPC_PARAM_CLOUD_STORAGE_INFO = "cloud_storage_info";
23   public static final String RPC_PARAM_WIFI_INFO = "wifi_info";
24 
MoblabRpcHelper()25   private MoblabRpcHelper() {}
26 
27   /**
28    * Fetches config data.
29    */
fetchConfigData(final SimpleCallback callback)30   public static void fetchConfigData(final SimpleCallback callback) {
31     fetchConfigData(new JsonRpcCallback() {
32       @Override
33       public void onSuccess(JSONValue result) {
34         if (callback != null)
35           callback.doCallback(result);
36       }
37     });
38   }
39 
40   /**
41    * Fetch config data.
42    */
fetchConfigData(final JsonRpcCallback callback)43   public static void fetchConfigData(final JsonRpcCallback callback) {
44     JsonRpcProxy rpcProxy = JsonRpcProxy.getProxy();
45     rpcProxy.rpcCall("get_config_values", null, callback);
46   }
47 
48   /**
49    * Submits config data.
50    */
submitConfigData(JSONObject configValues, JsonRpcCallback callback)51   public static void submitConfigData(JSONObject configValues, JsonRpcCallback callback) {
52     JSONObject params = new JSONObject();
53     params.put("config_values", configValues);
54     JsonRpcProxy rpcProxy = JsonRpcProxy.getProxy();
55     rpcProxy.rpcCall("update_config_handler", params, callback);
56   }
57 
58   /**
59    * Resets config data on Moblab.
60    */
resetConfigData(final JsonRpcCallback callback)61   public static void resetConfigData(final JsonRpcCallback callback) {
62     JsonRpcProxy rpcProxy = JsonRpcProxy.getProxy();
63     rpcProxy.rpcCall("reset_config_settings", null, callback);
64   }
65 
66   /**
67    * Reboot Moblab device.
68    */
rebootMoblab(final JsonRpcCallback callback)69   public static void rebootMoblab(final JsonRpcCallback callback) {
70     JsonRpcProxy rpcProxy = JsonRpcProxy.getProxy();
71     rpcProxy.rpcCall("reboot_moblab", null, callback);
72   }
73 
74   /**
75    * Fetches the server network information.
76    */
fetchNetworkInfo( final MoblabRpcCallbacks.FetchNetworkInfoRpcCallback callback)77   public static void fetchNetworkInfo(
78       final MoblabRpcCallbacks.FetchNetworkInfoRpcCallback callback) {
79     JsonRpcProxy rpcProxy = JsonRpcProxy.getProxy();
80     rpcProxy.rpcCall("get_network_info", null, new JsonRpcCallback() {
81       @Override
82       public void onSuccess(JSONValue result) {
83         NetworkInfo networkInfo = new NetworkInfo();
84         networkInfo.fromJson(result.isObject());
85         callback.onNetworkInfoFetched(networkInfo);
86       }
87     });
88   }
89 
90   /**
91    * Fetches the cloud storage configuration information.
92    */
fetchCloudStorageInfo( final MoblabRpcCallbacks.FetchCloudStorageInfoCallback callback)93   public static void fetchCloudStorageInfo(
94       final MoblabRpcCallbacks.FetchCloudStorageInfoCallback callback) {
95     JsonRpcProxy rpcProxy = JsonRpcProxy.getProxy();
96     rpcProxy.rpcCall("get_cloud_storage_info", null, new JsonRpcCallback() {
97       @Override
98       public void onSuccess(JSONValue result) {
99         CloudStorageInfo info = new CloudStorageInfo();
100         info.fromJson(result.isObject());
101         callback.onCloudStorageInfoFetched(info);
102       }
103     });
104   }
105 
106   /**
107    * Validates the cloud storage configuration information.
108    */
validateCloudStorageInfo(CloudStorageInfo cloudStorageInfo, final MoblabRpcCallbacks.ValidateCloudStorageInfoCallback callback)109   public static void validateCloudStorageInfo(CloudStorageInfo cloudStorageInfo,
110       final MoblabRpcCallbacks.ValidateCloudStorageInfoCallback callback) {
111     JSONObject params = new JSONObject();
112     params.put(RPC_PARAM_CLOUD_STORAGE_INFO, cloudStorageInfo.toJson());
113     JsonRpcProxy rpcProxy = JsonRpcProxy.getProxy();
114     rpcProxy.rpcCall("validate_cloud_storage_info", params, new JsonRpcCallback() {
115       @Override
116       public void onSuccess(JSONValue result) {
117         OperationStatus status = new OperationStatus();
118         status.fromJson(result.isObject());
119         callback.onCloudStorageInfoValidated(status);
120       }
121     });
122   }
123 
124   /**
125    * Submits the wizard configuration data.
126    */
submitWizardConfigData(Map<String, JSONObject> configDataMap, final MoblabRpcCallbacks.SubmitWizardConfigInfoCallback callback)127   public static void submitWizardConfigData(Map<String, JSONObject> configDataMap,
128       final MoblabRpcCallbacks.SubmitWizardConfigInfoCallback callback) {
129     JSONObject params = new JSONObject();
130     if (configDataMap.containsKey(RPC_PARAM_CLOUD_STORAGE_INFO)) {
131       params.put(RPC_PARAM_CLOUD_STORAGE_INFO, configDataMap.get(RPC_PARAM_CLOUD_STORAGE_INFO));
132     } else {
133       params.put(RPC_PARAM_CLOUD_STORAGE_INFO, new JSONObject());
134     }
135     if (configDataMap.containsKey(RPC_PARAM_WIFI_INFO)) {
136       params.put(RPC_PARAM_WIFI_INFO, configDataMap.get(RPC_PARAM_WIFI_INFO));
137     } else {
138       params.put(RPC_PARAM_WIFI_INFO, new JSONObject());
139     }
140     JsonRpcProxy rpcProxy = JsonRpcProxy.getProxy();
141     rpcProxy.rpcCall("submit_wizard_config_info", params, new JsonRpcCallback() {
142       @Override
143       public void onSuccess(JSONValue result) {
144         OperationStatus status = new OperationStatus();
145         status.fromJson(result.isObject());
146         callback.onWizardConfigInfoSubmitted(status);
147       }
148     });
149   }
150 
151   /**
152    * Fetches the version information.
153    */
fetchMoblabBuildVersionInfo( final MoblabRpcCallbacks.FetchVersionInfoCallback callback)154   public static void fetchMoblabBuildVersionInfo(
155       final MoblabRpcCallbacks.FetchVersionInfoCallback callback) {
156     JsonRpcProxy rpcProxy = JsonRpcProxy.getProxy();
157     rpcProxy.rpcCall("get_version_info", null, new JsonRpcCallback() {
158           @Override
159           public void onSuccess(JSONValue result) {
160             VersionInfo info = new VersionInfo();
161             info.fromJson(result.isObject());
162             callback.onVersionInfoFetched(info);
163           }
164         });
165   }
166 
167   /**
168    * Apply update and reboot Moblab device
169    */
updateMoblab(final JsonRpcCallback callback)170   public static void updateMoblab(final JsonRpcCallback callback) {
171     JsonRpcProxy rpcProxy = JsonRpcProxy.getProxy();
172     rpcProxy.rpcCall("update_moblab", null, callback);
173   }
174 
175    /**
176    * Get information about the DUT's connected to the moblab.
177    */
fetchDutInformation( final MoblabRpcCallbacks.FetchConnectedDutInfoCallback callback)178   public static void fetchDutInformation(
179       final MoblabRpcCallbacks.FetchConnectedDutInfoCallback callback) {
180     JsonRpcProxy rpcProxy = JsonRpcProxy.getProxy();
181     rpcProxy.rpcCall("get_connected_dut_info", null, new JsonRpcCallback() {
182       @Override
183       public void onSuccess(JSONValue result) {
184         ConnectedDutInfo info = new ConnectedDutInfo();
185         info.fromJson(result.isObject());
186         callback.onFetchConnectedDutInfoSubmitted(info);
187       }
188     });
189   }
190 
191   /**
192    * Enroll a device into the autotest syste.
193    * @param dutIpAddress ipAddress of the new DUT.
194    * @param callback Callback execute when the RPC is complete.
195    */
addMoblabDut(String dutIpAddress, final MoblabRpcCallbacks.LogActionCompleteCallback callback)196   public static void addMoblabDut(String dutIpAddress,
197       final MoblabRpcCallbacks.LogActionCompleteCallback callback) {
198     JsonRpcProxy rpcProxy = JsonRpcProxy.getProxy();
199     JSONObject params = new JSONObject();
200     params.put("ipaddress", new JSONString(dutIpAddress));
201     rpcProxy.rpcCall("add_moblab_dut", params, new JsonRpcCallback() {
202       @Override
203       public void onSuccess(JSONValue result) {
204         boolean didSucceed = result.isArray().get(0).isBoolean().booleanValue();
205         String information = result.isArray().get(1).isString().stringValue();
206         callback.onLogActionComplete(didSucceed, information);
207       }
208     });
209   }
210 
211   /**
212    * Remove a device from the autotest system.
213    * @param dutIpAddress ipAddress of the DUT to remove.
214    * @param callback Callback to execute when the RPC is complete.
215    */
removeMoblabDut(String dutIpAddress, final MoblabRpcCallbacks.LogActionCompleteCallback callback)216   public static void removeMoblabDut(String dutIpAddress,
217       final MoblabRpcCallbacks.LogActionCompleteCallback callback) {
218     JsonRpcProxy rpcProxy = JsonRpcProxy.getProxy();
219     JSONObject params = new JSONObject();
220     params.put("ipaddress", new JSONString(dutIpAddress));
221     rpcProxy.rpcCall("remove_moblab_dut", params, new JsonRpcCallback() {
222       @Override
223       public void onSuccess(JSONValue result) {
224         boolean didSucceed = result.isArray().get(0).isBoolean().booleanValue();
225         String information = result.isArray().get(1).isString().stringValue();
226         callback.onLogActionComplete(didSucceed, information);
227       }
228     });
229   }
230 
231   /**
232    * Add a label to a specific DUT.
233    * @param dutIpAddress  ipAddress of the device to have the new label applied.
234    * @param labelName the label to apply
235    * @param callback callback to execute when the RPC is complete.
236    */
addMoblabLabel(String dutIpAddress, String labelName, final MoblabRpcCallbacks.LogActionCompleteCallback callback)237   public static void addMoblabLabel(String dutIpAddress, String labelName,
238       final MoblabRpcCallbacks.LogActionCompleteCallback callback) {
239     JsonRpcProxy rpcProxy = JsonRpcProxy.getProxy();
240     JSONObject params = new JSONObject();
241     params.put("ipaddress", new JSONString(dutIpAddress));
242     params.put("label_name", new JSONString(labelName));
243     rpcProxy.rpcCall("add_moblab_label", params, new JsonRpcCallback() {
244       @Override
245       public void onSuccess(JSONValue result) {
246         boolean didSucceed = result.isArray().get(0).isBoolean().booleanValue();
247         String information = result.isArray().get(1).isString().stringValue();
248         callback.onLogActionComplete(didSucceed, information);
249       }
250     });
251   }
252 
253   /**
254    * Remove a label from a specific DUT.
255    * @param dutIpAddress ipAddress of the device to have the label removed.
256    * @param labelName the label to remove
257    * @param callback callback to execute when the RPC is complete.
258    */
removeMoblabLabel(String dutIpAddress, String labelName, final MoblabRpcCallbacks.LogActionCompleteCallback callback)259   public static void removeMoblabLabel(String dutIpAddress, String labelName,
260       final MoblabRpcCallbacks.LogActionCompleteCallback callback) {
261     JsonRpcProxy rpcProxy = JsonRpcProxy.getProxy();
262     JSONObject params = new JSONObject();
263     params.put("ipaddress", new JSONString(dutIpAddress));
264     params.put("label_name", new JSONString(labelName));
265     rpcProxy.rpcCall("remove_moblab_label", params, new JsonRpcCallback() {
266       @Override
267       public void onSuccess(JSONValue result) {
268         boolean didSucceed = result.isArray().get(0).isBoolean().booleanValue();
269         String information = result.isArray().get(1).isString().stringValue();
270         callback.onLogActionComplete(didSucceed, information);
271       }
272     });
273   }
274 
275   /**
276    * add an attribute to a specific dut.
277    * @param dutIpAddress  ipaddress of the device to have the new attribute applied.
278    * @param attributeName the attribute name
279    * @param attributeValue the attribute value to be associated with the name
280    * @param callback callback to execute when the rpc is complete.
281    */
setMoblabAttribute(String dutIpAddress, String attributeName, String attributeValue, final MoblabRpcCallbacks.LogActionCompleteCallback callback)282   public static void setMoblabAttribute(String dutIpAddress, String attributeName,
283       String attributeValue, final MoblabRpcCallbacks.LogActionCompleteCallback callback) {
284     JsonRpcProxy rpcProxy = JsonRpcProxy.getProxy();
285     JSONObject params = new JSONObject();
286     params.put("ipaddress", new JSONString(dutIpAddress));
287     params.put("attribute", new JSONString(attributeName));
288     params.put("value", new JSONString(attributeValue));
289     rpcProxy.rpcCall("set_host_attrib", params, new JsonRpcCallback() {
290       @Override
291       public void onSuccess(JSONValue result) {
292         boolean didSucceed = result.isArray().get(0).isBoolean().booleanValue();
293         String information = result.isArray().get(1).isString().stringValue();
294         callback.onLogActionComplete(didSucceed, information);
295       }
296     });
297   }
298 
299   /**
300    * remove an attribute from a specific dut.
301    * @param dutIpAddress  ipaddress of the device to have the new attribute applied.
302    * @param attributeName the attribute name
303    * @param callback callback to execute when the rpc is complete.
304    */
removeMoblabAttribute(String dutIpAddress, String attributeName, final MoblabRpcCallbacks.LogActionCompleteCallback callback)305   public static void removeMoblabAttribute(String dutIpAddress, String attributeName,
306       final  MoblabRpcCallbacks.LogActionCompleteCallback callback) {
307     JsonRpcProxy rpcProxy = JsonRpcProxy.getProxy();
308     JSONObject params = new JSONObject();
309     params.put("ipaddress", new JSONString(dutIpAddress));
310     params.put("attribute", new JSONString(attributeName));
311     rpcProxy.rpcCall("delete_host_attrib", params, new JsonRpcCallback() {
312       @Override
313       public void onSuccess(JSONValue result) {
314         boolean didSucceed = result.isArray().get(0).isBoolean().booleanValue();
315         String information = result.isArray().get(1).isString().stringValue();
316         callback.onLogActionComplete(didSucceed, information);
317       }
318     });
319   }
320 
321 
fetchConnectedBoards( final MoblabRpcCallbacks.FetchConnectedBoardsCallback callback)322   public static void fetchConnectedBoards(
323       final MoblabRpcCallbacks.FetchConnectedBoardsCallback callback) {
324     JsonRpcProxy rpcProxy = JsonRpcProxy.getProxy();
325     rpcProxy.rpcCall("get_connected_boards", null, new JsonRpcCallback() {
326       @Override
327       public void onSuccess(JSONValue result) {
328         List<ConnectedBoard> boards = new LinkedList<ConnectedBoard>();
329         int boardListSize = result.isArray().size();
330         for (int i = 0; i < boardListSize; i++) {
331           ConnectedBoard board = new ConnectedBoard();
332           board.fromJson(result.isArray().get(i).isObject());
333           boards.add(board);
334         }
335         callback.onFetchConnectedBoardsSubmitted(boards);
336       }
337     });
338   }
339 
fetchConnectedPools( final MoblabRpcCallbacks.FetchConnectedPoolsCallback callback)340   public static void fetchConnectedPools(
341       final MoblabRpcCallbacks.FetchConnectedPoolsCallback callback) {
342     JsonRpcProxy rpcProxy = JsonRpcProxy.getProxy();
343     rpcProxy.rpcCall("get_connected_pools", null, new JsonRpcCallback() {
344       @Override
345       public void onSuccess(JSONValue result) {
346         List<String> pools = new LinkedList<String>();
347         int poolListSize = result.isArray().size();
348         for (int i = 0; i < poolListSize; i++) {
349           pools.add(result.isArray().get(i).isString().stringValue());
350         }
351         callback.onFetchConnectedPoolsSubmitted(pools);
352       }
353     });
354   }
355 
fetchBuildsForBoard(String board_name, final MoblabRpcCallbacks.FetchBuildsForBoardCallback callback)356   public static void fetchBuildsForBoard(String board_name,
357       final MoblabRpcCallbacks.FetchBuildsForBoardCallback callback) {
358     JsonRpcProxy rpcProxy = JsonRpcProxy.getProxy();
359     JSONObject params = new JSONObject();
360     params.put("board_name", new JSONString(board_name));
361     rpcProxy.rpcCall("get_builds_for_board", params, new JsonRpcCallback() {
362       @Override
363       public void onSuccess(JSONValue result) {
364         List<String> builds = new LinkedList<String>();
365         for (int i = 0; i < result.isArray().size(); i++) {
366           builds.add(result.isArray().get(i).isString().stringValue());
367         }
368         callback.onFetchBuildsForBoardCallbackSubmitted(builds);
369       }
370     });
371   }
372 
fetchFirmwareForBoard(String board_name, final MoblabRpcCallbacks.FetchFirmwareForBoardCallback callback)373   public static void fetchFirmwareForBoard(String board_name,
374       final MoblabRpcCallbacks.FetchFirmwareForBoardCallback callback) {
375     JsonRpcProxy rpcProxy = JsonRpcProxy.getProxy();
376     JSONObject params = new JSONObject();
377     params.put("board_name", new JSONString(board_name));
378     rpcProxy.rpcCall("get_firmware_for_board", params, new JsonRpcCallback() {
379       @Override
380       public void onSuccess(JSONValue result) {
381         List<String> firmwareBuilds = new LinkedList<String>();
382         for (int i = 0; i < result.isArray().size(); i++) {
383           firmwareBuilds.add(result.isArray().get(i).isString().stringValue());
384         }
385         callback.onFetchFirmwareForBoardCallbackSubmitted(firmwareBuilds);
386       }
387     });
388   }
389 
runSuite(String board, String model, String build, String suite, String pool, String rwFirmware, String roFirmware, String suiteArgs, String testArgs, String bugId, String partId, final MoblabRpcCallbacks.RunSuiteCallback callback)390   public static void runSuite(String board, String model,
391       String build, String suite, String pool, String rwFirmware,
392       String roFirmware, String suiteArgs, String testArgs,
393       String bugId, String partId,
394       final MoblabRpcCallbacks.RunSuiteCallback callback) {
395     JsonRpcProxy rpcProxy = JsonRpcProxy.getProxy();
396     JSONObject params = new JSONObject();
397     params.put("board", new JSONString(board));
398     params.put("model", new JSONString(model));
399     params.put("build", new JSONString(build));
400     params.put("suite", new JSONString(suite));
401     params.put("pool", new JSONString(pool));
402     params.put("rw_firmware", new JSONString(rwFirmware));
403     params.put("ro_firmware", new JSONString(roFirmware));
404     params.put("suite_args", new JSONString(suiteArgs));
405     params.put("test_args", new JSONString(testArgs));
406     params.put("bug_id", new JSONString(bugId));
407     params.put("part_id", new JSONString(partId));
408     rpcProxy.rpcCall("run_suite", params, new JsonRpcCallback() {
409       @Override
410       public void onSuccess(JSONValue result) {
411         callback.onRunSuiteComplete();
412       }
413     });
414   }
415 
416   /**
417    * Fetches the DUT wifi configuration information to use in tests.
418    */
fetchWifiInfo( final MoblabRpcCallbacks.FetchWifiInfoCallback callback)419   public static void fetchWifiInfo(
420       final MoblabRpcCallbacks.FetchWifiInfoCallback callback) {
421     JsonRpcProxy rpcProxy = JsonRpcProxy.getProxy();
422     rpcProxy.rpcCall("get_dut_wifi_info", null, new JsonRpcCallback() {
423       @Override
424       public void onSuccess(JSONValue result) {
425         WifiInfo info = new WifiInfo();
426         info.fromJson(result.isObject());
427         callback.onWifiInfoFetched(info);
428       }
429     });
430   }
431 
432 
433 }
434