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

Side by Side Diff: frontend/client/src/autotest/afe/CreateJobView.java

Issue 3541002: Revert "Merge remote branch 'cros/upstream' into tempbranch2" (Closed) Base URL: ssh://git@gitrw.chromium.org:9222/autotest.git
Patch Set: Created 10 years, 2 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 package autotest.afe.create; 1 package autotest.afe;
2 2
3 import autotest.afe.AfeUtils;
4 import autotest.afe.CheckBoxPanel;
5 import autotest.afe.ControlTypeSelect;
6 import autotest.afe.HostSelector;
7 import autotest.afe.IButton;
8 import autotest.afe.ICheckBox;
9 import autotest.afe.ITextArea;
10 import autotest.afe.ITextBox;
11 import autotest.afe.TestSelector;
12 import autotest.afe.TestSelector.TestSelectorListener; 3 import autotest.afe.TestSelector.TestSelectorListener;
4 import autotest.afe.UserPreferencesView.UserPreferencesListener;
13 import autotest.common.JSONArrayList; 5 import autotest.common.JSONArrayList;
14 import autotest.common.JsonRpcCallback; 6 import autotest.common.JsonRpcCallback;
15 import autotest.common.JsonRpcProxy; 7 import autotest.common.JsonRpcProxy;
16 import autotest.common.SimpleCallback; 8 import autotest.common.SimpleCallback;
17 import autotest.common.StaticDataRepository; 9 import autotest.common.StaticDataRepository;
18 import autotest.common.Utils; 10 import autotest.common.Utils;
19 import autotest.common.ui.NotifyManager; 11 import autotest.common.ui.NotifyManager;
20 import autotest.common.ui.RadioChooser; 12 import autotest.common.ui.RadioChooser;
21 import autotest.common.ui.SimplifiedList; 13 import autotest.common.ui.TabView;
22 14
23 import com.google.gwt.event.dom.client.BlurEvent; 15 import com.google.gwt.event.dom.client.BlurEvent;
24 import com.google.gwt.event.dom.client.BlurHandler; 16 import com.google.gwt.event.dom.client.BlurHandler;
25 import com.google.gwt.event.dom.client.ChangeEvent; 17 import com.google.gwt.event.dom.client.ChangeEvent;
26 import com.google.gwt.event.dom.client.ChangeHandler; 18 import com.google.gwt.event.dom.client.ChangeHandler;
27 import com.google.gwt.event.dom.client.ClickEvent; 19 import com.google.gwt.event.dom.client.ClickEvent;
28 import com.google.gwt.event.dom.client.ClickHandler; 20 import com.google.gwt.event.dom.client.ClickHandler;
29 import com.google.gwt.event.dom.client.HasClickHandlers;
30 import com.google.gwt.event.dom.client.KeyCodes; 21 import com.google.gwt.event.dom.client.KeyCodes;
31 import com.google.gwt.event.dom.client.KeyPressEvent; 22 import com.google.gwt.event.dom.client.KeyPressEvent;
32 import com.google.gwt.event.dom.client.KeyPressHandler; 23 import com.google.gwt.event.dom.client.KeyPressHandler;
33 import com.google.gwt.event.logical.shared.CloseEvent; 24 import com.google.gwt.event.logical.shared.CloseEvent;
34 import com.google.gwt.event.logical.shared.CloseHandler; 25 import com.google.gwt.event.logical.shared.CloseHandler;
35 import com.google.gwt.event.logical.shared.HasCloseHandlers;
36 import com.google.gwt.event.logical.shared.HasOpenHandlers;
37 import com.google.gwt.event.logical.shared.OpenEvent; 26 import com.google.gwt.event.logical.shared.OpenEvent;
38 import com.google.gwt.event.logical.shared.OpenHandler; 27 import com.google.gwt.event.logical.shared.OpenHandler;
39 import com.google.gwt.json.client.JSONArray; 28 import com.google.gwt.json.client.JSONArray;
40 import com.google.gwt.json.client.JSONBoolean; 29 import com.google.gwt.json.client.JSONBoolean;
41 import com.google.gwt.json.client.JSONNull; 30 import com.google.gwt.json.client.JSONNull;
42 import com.google.gwt.json.client.JSONNumber; 31 import com.google.gwt.json.client.JSONNumber;
43 import com.google.gwt.json.client.JSONObject; 32 import com.google.gwt.json.client.JSONObject;
44 import com.google.gwt.json.client.JSONString; 33 import com.google.gwt.json.client.JSONString;
45 import com.google.gwt.json.client.JSONValue; 34 import com.google.gwt.json.client.JSONValue;
46 import com.google.gwt.user.client.DOM; 35 import com.google.gwt.user.client.DOM;
47 import com.google.gwt.user.client.Window; 36 import com.google.gwt.user.client.Window;
37 import com.google.gwt.user.client.ui.Anchor;
38 import com.google.gwt.user.client.ui.Button;
39 import com.google.gwt.user.client.ui.CheckBox;
40 import com.google.gwt.user.client.ui.Composite;
48 import com.google.gwt.user.client.ui.DisclosurePanel; 41 import com.google.gwt.user.client.ui.DisclosurePanel;
49 import com.google.gwt.user.client.ui.HasText; 42 import com.google.gwt.user.client.ui.FlexTable;
50 import com.google.gwt.user.client.ui.HasValue; 43 import com.google.gwt.user.client.ui.HorizontalPanel;
44 import com.google.gwt.user.client.ui.Label;
45 import com.google.gwt.user.client.ui.ListBox;
46 import com.google.gwt.user.client.ui.Panel;
47 import com.google.gwt.user.client.ui.RadioButton;
48 import com.google.gwt.user.client.ui.TextArea;
49 import com.google.gwt.user.client.ui.TextBox;
50 import com.google.gwt.user.client.ui.VerticalPanel;
51 51
52 import java.util.ArrayList; 52 import java.util.ArrayList;
53 import java.util.HashMap; 53 import java.util.HashMap;
54 import java.util.List; 54 import java.util.List;
55 import java.util.Map; 55 import java.util.Map;
56 56
57 public class CreateJobViewPresenter implements TestSelectorListener { 57 public class CreateJobView extends TabView
58 public static interface Display { 58 implements TestSelectorListener, UserPreferencesListe ner {
59 public CheckBoxPanel.Display getCheckBoxPanelDisplay(); 59 public static final int TEST_COLUMNS = 5;
60 public ControlTypeSelect.Display getControlTypeSelectDisplay();
61 public TestSelector.Display getTestSelectorDisplay();
62 public IButton getEditControlButton();
63 public HasText getJobName();
64 public SimplifiedList getPriorityList();
65 public HasText getTimeout();
66 public HasText getMaxRuntime();
67 public HasText getEmailList();
68 public ICheckBox getSkipVerify();
69 public RadioChooser.Display getRebootBefore();
70 public RadioChooser.Display getRebootAfter();
71 public HasValue<Boolean> getParseFailedRepair();
72 public ICheckBox getHostless();
73 public HostSelector.Display getHostSelectorDisplay();
74 public SimplifiedList getDroneSet();
75 public ITextBox getSynchCountInput();
76 public ITextArea getControlFile();
77 public void setControlFilePanelOpen(boolean isOpen);
78 public ICheckBox getRunNonProfiledIteration();
79 public ITextBox getKernel();
80 public ITextBox getKernelCmdline();
81 public HasText getViewLink();
82 public HasCloseHandlers<DisclosurePanel> getControlFilePanelClose();
83 public HasOpenHandlers<DisclosurePanel> getControlFilePanelOpen();
84 public IButton getSubmitJobButton();
85 public HasClickHandlers getCreateTemplateJobButton();
86 public HasClickHandlers getResetButton();
87 }
88 60
89 private static final String EDIT_CONTROL_STRING = "Edit control file"; 61 protected static final String EDIT_CONTROL_STRING = "Edit control file";
90 private static final String UNEDIT_CONTROL_STRING= "Revert changes"; 62 protected static final String UNEDIT_CONTROL_STRING= "Revert changes";
91 private static final String VIEW_CONTROL_STRING = "View control file"; 63 protected static final String VIEW_CONTROL_STRING = "View control file";
92 private static final String HIDE_CONTROL_STRING = "Hide control file"; 64 protected static final String HIDE_CONTROL_STRING = "Hide control file";
93 65
94 public interface JobCreateListener { 66 public interface JobCreateListener {
95 public void onJobCreated(int jobId); 67 public void onJobCreated(int jobId);
96 } 68 }
97 69
98 private JsonRpcProxy rpcProxy = JsonRpcProxy.getProxy(); 70 protected JsonRpcProxy rpcProxy = JsonRpcProxy.getProxy();
99 private JobCreateListener listener; 71 protected JobCreateListener listener;
100 72
101 private StaticDataRepository staticData = StaticDataRepository.getRepository (); 73 private static class CheckBoxPanel<T extends CheckBox> extends Composite {
74 protected int numColumns;
75 protected FlexTable table = new FlexTable();
76 protected List<T> testBoxes = new ArrayList<T>();
102 77
103 private CheckBoxPanel profilersPanel = new CheckBoxPanel(); 78 public CheckBoxPanel(int columns) {
104 private ControlTypeSelect controlTypeSelect = new ControlTypeSelect(); 79 numColumns = columns;
105 protected TestSelector testSelector = new TestSelector(); 80 initWidget(table);
81 }
82
83 public void add(T checkBox) {
84 int row = testBoxes.size() / numColumns;
85 int col = testBoxes.size() % numColumns;
86 table.setWidget(row, col, checkBox);
87 testBoxes.add(checkBox);
88 }
89
90 public List<T> getChecked() {
91 List<T> result = new ArrayList<T>();
92 for(T checkBox : testBoxes) {
93 if (checkBox.getValue())
94 result.add(checkBox);
95 }
96 return result;
97 }
98
99 public void setEnabled(boolean enabled) {
100 for(T thisBox : testBoxes) {
101 thisBox.setEnabled(enabled);
102 }
103 }
104
105 public void reset() {
106 for (T thisBox : testBoxes) {
107 thisBox.setValue(false);
108 }
109 }
110 }
111
112 private static class ControlTypeSelect extends Composite {
113 public static final String RADIO_GROUP = "controlTypeGroup";
114 protected RadioButton client, server;
115 protected Panel panel = new HorizontalPanel();
116
117 public ControlTypeSelect() {
118 client = new RadioButton(RADIO_GROUP, TestSelector.CLIENT_TYPE);
119 server = new RadioButton(RADIO_GROUP, TestSelector.SERVER_TYPE);
120 panel.add(client);
121 panel.add(server);
122 client.setValue(true); // client is default
123 initWidget(panel);
124
125 client.addClickHandler(new ClickHandler() {
126 public void onClick(ClickEvent event) {
127 onChanged();
128 }
129 });
130 server.addClickHandler(new ClickHandler() {
131 public void onClick(ClickEvent event) {
132 onChanged();
133 }
134 });
135 }
136
137 public String getControlType() {
138 if (client.getValue())
139 return client.getText();
140 return server.getText();
141 }
142
143 public void setControlType(String type) {
144 if (client.getText().equals(type))
145 client.setValue(true);
146 else if (server.getText().equals(type))
147 server.setValue(true);
148 else
149 throw new IllegalArgumentException("Invalid control type");
150 onChanged();
151 }
152
153 public void setEnabled(boolean enabled) {
154 client.setEnabled(enabled);
155 server.setEnabled(enabled);
156 }
157
158 protected void onChanged() {
159 }
160 }
161
162 protected StaticDataRepository staticData = StaticDataRepository.getReposito ry();
163
164 protected TextBox jobName = new TextBox();
165 protected ListBox priorityList = new ListBox();
166 protected TextBox kernel = new TextBox();
167 protected TextBox kernel_cmdline = new TextBox();
168 protected TextBox timeout = new TextBox();
169 private TextBox maxRuntime = new TextBox();
170 protected TextBox emailList = new TextBox();
171 protected CheckBox skipVerify = new CheckBox();
106 private RadioChooser rebootBefore = new RadioChooser(); 172 private RadioChooser rebootBefore = new RadioChooser();
107 private RadioChooser rebootAfter = new RadioChooser(); 173 private RadioChooser rebootAfter = new RadioChooser();
108 private HostSelector hostSelector; 174 private CheckBox parseFailedRepair = new CheckBox();
175 private CheckBox hostless = new CheckBox();
176 protected TestSelector testSelector;
177 protected CheckBoxPanel<CheckBox> profilersPanel =
178 new CheckBoxPanel<CheckBox>(TEST_COLUMNS);
179 private CheckBox runNonProfiledIteration =
180 new CheckBox("Run each test without profilers first");
181 private ListBox droneSet = new ListBox();
182 protected TextArea controlFile = new TextArea();
183 protected DisclosurePanel controlFilePanel = new DisclosurePanel();
184 protected ControlTypeSelect controlTypeSelect;
185 protected TextBox synchCountInput = new TextBox();
186 protected Button editControlButton = new Button(EDIT_CONTROL_STRING);
187 protected HostSelector hostSelector;
188 protected Button submitJobButton = new Button("Submit Job");
189 protected Button createTemplateJobButton = new Button("Create Template Job") ;
190 private Button resetButton = new Button("Reset");
109 191
110 private boolean controlEdited = false; 192 protected boolean controlEdited = false;
111 private boolean controlReadyForSubmit = false; 193 protected boolean controlReadyForSubmit = false;
112 private JSONArray dependencies = new JSONArray(); 194 private JSONArray dependencies = new JSONArray();
113 195
114 private Display display; 196 public CreateJobView(JobCreateListener listener) {
115 197 this.listener = listener;
116 public void bindDisplay(Display display) {
117 this.display = display;
118 } 198 }
119 199
120 public CreateJobViewPresenter(JobCreateListener listener) { 200 @Override
121 this.listener = listener; 201 public String getElementId() {
202 return "create_job";
122 } 203 }
123 204
124 public void cloneJob(JSONValue cloneInfo) { 205 public void cloneJob(JSONValue cloneInfo) {
125 // reset() fires the TestSelectorListener, which will generate a new con trol file. We do 206 // reset() fires the TestSelectorListener, which will generate a new con trol file. We do
126 // no want this, so we'll stop listening to it for a bit. 207 // no want this, so we'll stop listening to it for a bit.
127 testSelector.setListener(null); 208 testSelector.setListener(null);
128 reset(); 209 reset();
129 testSelector.setListener(this); 210 testSelector.setListener(this);
130 211
131 disableInputs(); 212 disableInputs();
132 openControlFileEditor(); 213 openControlFileEditor();
133 JSONObject cloneObject = cloneInfo.isObject(); 214 JSONObject cloneObject = cloneInfo.isObject();
134 JSONObject jobObject = cloneObject.get("job").isObject(); 215 JSONObject jobObject = cloneObject.get("job").isObject();
135 216
136 display.getJobName().setText(jobObject.get("name").isString().stringValu e()); 217 jobName.setText(jobObject.get("name").isString().stringValue());
137 218
138 String priority = jobObject.get("priority").isString().stringValue(); 219 String priority = jobObject.get("priority").isString().stringValue();
139 display.getPriorityList().selectByName(priority); 220 for (int i = 0; i < priorityList.getItemCount(); i++) {
221 if (priorityList.getItemText(i).equals(priority)) {
222 priorityList.setSelectedIndex(i);
223 break;
224 }
225 }
140 226
141 display.getTimeout().setText(Utils.jsonToString(jobObject.get("timeout") )); 227 timeout.setText(Utils.jsonToString(jobObject.get("timeout")));
142 display.getMaxRuntime().setText(Utils.jsonToString(jobObject.get("max_ru ntime_hrs"))); 228 maxRuntime.setText(Utils.jsonToString(jobObject.get("max_runtime_hrs"))) ;
143 display.getEmailList().setText( 229 emailList.setText(
144 jobObject.get("email_list").isString().stringValue()); 230 jobObject.get("email_list").isString().stringValue());
145 231
146 display.getSkipVerify().setValue(!jobObject.get("run_verify").isBoolean( ).booleanValue()); 232 skipVerify.setValue(!jobObject.get("run_verify").isBoolean().booleanValu e());
147 rebootBefore.setSelectedChoice(Utils.jsonToString(jobObject.get("reboot_ before"))); 233 rebootBefore.setSelectedChoice(Utils.jsonToString(jobObject.get("reboot_ before")));
148 rebootAfter.setSelectedChoice(Utils.jsonToString(jobObject.get("reboot_a fter"))); 234 rebootAfter.setSelectedChoice(Utils.jsonToString(jobObject.get("reboot_a fter")));
149 display.getParseFailedRepair().setValue( 235 parseFailedRepair.setValue(
150 jobObject.get("parse_failed_repair").isBoolean().booleanValue()) ; 236 jobObject.get("parse_failed_repair").isBoolean().booleanValue()) ;
151 display.getHostless().setValue(cloneObject.get("hostless").isBoolean().b ooleanValue()); 237 hostless.setValue(cloneObject.get("hostless").isBoolean().booleanValue() );
152 if (display.getHostless().getValue()) { 238 if (hostless.getValue()) {
153 hostSelector.setEnabled(false); 239 hostSelector.setEnabled(false);
154 } 240 }
155 if (cloneObject.get("drone_set").isNull() == null) { 241 if (cloneObject.get("drone_set").isNull() == null) {
156 display.getDroneSet().selectByName(Utils.jsonToString(cloneObject.ge t("drone_set"))); 242 AfeUtils.setSelectedItem(droneSet, Utils.jsonToString(cloneObject.ge t("drone_set")));
157 } 243 }
158 244
159 controlTypeSelect.setControlType( 245 controlTypeSelect.setControlType(
160 jobObject.get("control_type").isString().stringValue()); 246 jobObject.get("control_type").isString().stringValue());
161 display.getSynchCountInput().setText(Utils.jsonToString(jobObject.get("s ynch_count"))); 247 synchCountInput.setText(Utils.jsonToString(jobObject.get("synch_count")) );
162 setSelectedDependencies(jobObject.get("dependencies").isArray()); 248 setSelectedDependencies(jobObject.get("dependencies").isArray());
163 display.getControlFile().setText( 249 controlFile.setText(
164 jobObject.get("control_file").isString().stringValue()); 250 jobObject.get("control_file").isString().stringValue());
165 controlReadyForSubmit = true; 251 controlReadyForSubmit = true;
166 252
167 JSONArray hostInfo = cloneObject.get("hosts").isArray(); 253 JSONArray hostInfo = cloneObject.get("hosts").isArray();
168 List<String> hostnames = new ArrayList<String>(); 254 List<String> hostnames = new ArrayList<String>();
169 for (JSONObject host : new JSONArrayList<JSONObject>(hostInfo)) { 255 for (JSONObject host : new JSONArrayList<JSONObject>(hostInfo)) {
170 hostnames.add(Utils.jsonToString(host.get("hostname"))); 256 hostnames.add(Utils.jsonToString(host.get("hostname")));
171 } 257 }
172 hostSelector.setSelectedHostnames(hostnames, true); 258 hostSelector.setSelectedHostnames(hostnames, true);
173 259
174 JSONObject metaHostCounts = cloneObject.get("meta_host_counts").isObject (); 260 JSONObject metaHostCounts = cloneObject.get("meta_host_counts").isObject ();
175 261
176 for (String label : metaHostCounts.keySet()) { 262 for (String label : metaHostCounts.keySet()) {
177 String number = Integer.toString( 263 String number = Integer.toString(
178 (int) metaHostCounts.get(label).isNumber().doubleValue()); 264 (int) metaHostCounts.get(label).isNumber().doubleValue());
179 hostSelector.addMetaHosts(label, number); 265 hostSelector.addMetaHosts(label, number);
180 } 266 }
181 267
182 hostSelector.refresh(); 268 hostSelector.refresh();
183 } 269 }
184 270
185 private void openControlFileEditor() { 271 protected void openControlFileEditor() {
186 display.getControlFile().setReadOnly(false); 272 controlFile.setReadOnly(false);
187 display.getEditControlButton().setText(UNEDIT_CONTROL_STRING); 273 editControlButton.setText(UNEDIT_CONTROL_STRING);
188 display.setControlFilePanelOpen(true); 274 controlFilePanel.setOpen(true);
189 controlTypeSelect.setEnabled(true); 275 controlTypeSelect.setEnabled(true);
190 display.getSynchCountInput().setEnabled(true); 276 synchCountInput.setEnabled(true);
191 display.getEditControlButton().setEnabled(true); 277 editControlButton.setEnabled(true);
192 } 278 }
193 279
194 private void populatePriorities(JSONArray priorities) { 280 protected void populatePriorities(JSONArray priorities) {
195 for(int i = 0; i < priorities.size(); i++) { 281 for(int i = 0; i < priorities.size(); i++) {
196 JSONArray priorityData = priorities.get(i).isArray(); 282 JSONArray priorityData = priorities.get(i).isArray();
197 String priority = priorityData.get(1).isString().stringValue(); 283 String priority = priorityData.get(1).isString().stringValue();
198 display.getPriorityList().addItem(priority, priority); 284 priorityList.addItem(priority);
199 } 285 }
200 286
201 resetPriorityToDefault(); 287 resetPriorityToDefault();
202 } 288 }
203 289
204 private void resetPriorityToDefault() { 290 protected void resetPriorityToDefault() {
205 JSONValue defaultValue = staticData.getData("default_priority"); 291 JSONValue defaultValue = staticData.getData("default_priority");
206 String defaultPriority = defaultValue.isString().stringValue(); 292 String defaultPriority = defaultValue.isString().stringValue();
207 display.getPriorityList().selectByName(defaultPriority); 293 for(int i = 0; i < priorityList.getItemCount(); i++) {
294 if (priorityList.getItemText(i).equals(defaultPriority))
295 priorityList.setSelectedIndex(i);
296 }
208 } 297 }
209 298
210 private void populateProfilers() { 299 protected void populateProfilers() {
211 JSONArray tests = staticData.getData("profilers").isArray(); 300 JSONArray tests = staticData.getData("profilers").isArray();
212 301
213 for(JSONObject profiler : new JSONArrayList<JSONObject>(tests)) { 302 for(JSONObject profiler : new JSONArrayList<JSONObject>(tests)) {
214 String name = profiler.get("name").isString().stringValue(); 303 String name = profiler.get("name").isString().stringValue();
215 ICheckBox checkbox = profilersPanel.generateCheckBox(); 304 CheckBox checkbox = new CheckBox(name);
216 checkbox.setText(name);
217 checkbox.addClickHandler(new ClickHandler() { 305 checkbox.addClickHandler(new ClickHandler() {
218 public void onClick(ClickEvent event) { 306 public void onClick(ClickEvent event) {
219 updateNonProfiledRunControl(); 307 updateNonProfiledRunControl();
220 generateControlFile(false); 308 generateControlFile(false);
221 setInputsEnabled(); 309 setInputsEnabled();
222 } 310 }
223 }); 311 });
224 profilersPanel.add(checkbox); 312 profilersPanel.add(checkbox);
225 } 313 }
226 314
227 display.getRunNonProfiledIteration().addClickHandler(new ClickHandler() { 315 runNonProfiledIteration.addClickHandler(new ClickHandler() {
228 @Override 316 @Override
229 public void onClick(ClickEvent event) { 317 public void onClick(ClickEvent event) {
230 generateControlFile(false); 318 generateControlFile(false);
231 } 319 }
232 }); 320 });
233 // default to checked -- run a non-profiled iteration by default 321 // default to checked -- run a non-profiled iteration by default
234 display.getRunNonProfiledIteration().setValue(true); 322 runNonProfiledIteration.setValue(true);
235 } 323 }
236 324
237 private void updateNonProfiledRunControl() { 325 private void updateNonProfiledRunControl() {
238 boolean anyProfilersChecked = !profilersPanel.getChecked().isEmpty(); 326 boolean anyProfilersChecked = !profilersPanel.getChecked().isEmpty();
239 display.getRunNonProfiledIteration().setVisible(anyProfilersChecked); 327 runNonProfiledIteration.setVisible(anyProfilersChecked);
240 } 328 }
241 329
242 private void populateRebootChoices() { 330 private void populateRebootChoices() {
243 AfeUtils.populateRadioChooser(rebootBefore, "reboot_before"); 331 AfeUtils.populateRadioChooser(rebootBefore, "reboot_before");
244 AfeUtils.populateRadioChooser(rebootAfter, "reboot_after"); 332 AfeUtils.populateRadioChooser(rebootAfter, "reboot_after");
245 } 333 }
246 334
247 335
248 private JSONArray getKernelParams(String kernel_list, String cmdline) { 336 private JSONArray getKernelParams(String kernel_list, String cmdline) {
249 JSONArray result = new JSONArray(); 337 JSONArray result = new JSONArray();
(...skipping 13 matching lines...) Expand all
263 return result; 351 return result;
264 } 352 }
265 /** 353 /**
266 * Get parameters to submit to the generate_control_file RPC. 354 * Get parameters to submit to the generate_control_file RPC.
267 * @param readyForSubmit are we getting a control file that's ready to submi t for a job, or just 355 * @param readyForSubmit are we getting a control file that's ready to submi t for a job, or just
268 * an intermediate control file to be viewed by the user? 356 * an intermediate control file to be viewed by the user?
269 */ 357 */
270 protected JSONObject getControlFileParams(boolean readyForSubmit) { 358 protected JSONObject getControlFileParams(boolean readyForSubmit) {
271 JSONObject params = new JSONObject(); 359 JSONObject params = new JSONObject();
272 360
273 String kernelString = display.getKernel().getText(); 361 String kernelString = kernel.getText();
274 if (!kernelString.equals("")) { 362 if (!kernelString.equals("")) {
275 params.put( 363 params.put("kernel", getKernelParams(kernelString, kernel_cmdline.ge tText()));
276 "kernel", getKernelParams(kernelString, display.getKernelCmd line().getText()));
277 } 364 }
278 365
279 JSONArray tests = new JSONArray(); 366 JSONArray tests = new JSONArray();
280 for (JSONObject test : testSelector.getSelectedTests()) { 367 for (JSONObject test : testSelector.getSelectedTests()) {
281 tests.set(tests.size(), test.get("id")); 368 tests.set(tests.size(), test.get("id"));
282 } 369 }
283 370
284 JSONArray profilers = new JSONArray(); 371 JSONArray profilers = new JSONArray();
285 for (ICheckBox profiler : profilersPanel.getChecked()) { 372 for (CheckBox profiler : profilersPanel.getChecked()) {
286 profilers.set(profilers.size(), new JSONString(profiler.getText())); 373 profilers.set(profilers.size(), new JSONString(profiler.getText()));
287 } 374 }
288 375
289 params.put("tests", tests); 376 params.put("tests", tests);
290 params.put("profilers", profilers); 377 params.put("profilers", profilers);
291 378
292 if (display.getRunNonProfiledIteration().isVisible()) { 379 if (runNonProfiledIteration.isVisible()) {
293 boolean profileOnly = !display.getRunNonProfiledIteration().getValue (); 380 boolean profileOnly = !runNonProfiledIteration.getValue();
294 params.put("profile_only", JSONBoolean.getInstance(profileOnly)); 381 params.put("profile_only", JSONBoolean.getInstance(profileOnly));
295 } 382 }
296 383
297 return params; 384 return params;
298 } 385 }
299 386
300 private void generateControlFile(final boolean readyForSubmit, 387 protected void generateControlFile(final boolean readyForSubmit,
301 final SimpleCallback finishedCallback, 388 final SimpleCallback finishedCallback,
302 final SimpleCallback errorCallback) { 389 final SimpleCallback errorCallback) {
303 JSONObject params = getControlFileParams(readyForSubmit); 390 JSONObject params = getControlFileParams(readyForSubmit);
304 rpcProxy.rpcCall("generate_control_file", params, new JsonRpcCallback() { 391 rpcProxy.rpcCall("generate_control_file", params, new JsonRpcCallback() {
305 @Override 392 @Override
306 public void onSuccess(JSONValue result) { 393 public void onSuccess(JSONValue result) {
307 JSONObject controlInfo = result.isObject(); 394 JSONObject controlInfo = result.isObject();
308 String controlFileText = controlInfo.get("control_file").isStrin g().stringValue(); 395 String controlFileText = controlInfo.get("control_file").isStrin g().stringValue();
309 boolean isServer = controlInfo.get("is_server").isBoolean().bool eanValue(); 396 boolean isServer = controlInfo.get("is_server").isBoolean().bool eanValue();
310 String synchCount = Utils.jsonToString(controlInfo.get("synch_co unt")); 397 String synchCount = Utils.jsonToString(controlInfo.get("synch_co unt"));
311 setSelectedDependencies(controlInfo.get("dependencies").isArray( )); 398 setSelectedDependencies(controlInfo.get("dependencies").isArray( ));
312 display.getControlFile().setText(controlFileText); 399 controlFile.setText(controlFileText);
313 controlTypeSelect.setControlType(isServer ? TestSelector.SERVER_ TYPE : 400 controlTypeSelect.setControlType(isServer ? TestSelector.SERVER_ TYPE :
314 TestSelector.CLIENT_ TYPE); 401 TestSelector.CLIENT_ TYPE);
315 display.getSynchCountInput().setText(synchCount); 402 synchCountInput.setText(synchCount);
316 controlReadyForSubmit = readyForSubmit; 403 controlReadyForSubmit = readyForSubmit;
317 if (finishedCallback != null) { 404 if (finishedCallback != null)
318 finishedCallback.doCallback(this); 405 finishedCallback.doCallback(this);
319 }
320 } 406 }
321 407
322 @Override 408 @Override
323 public void onError(JSONObject errorObject) { 409 public void onError(JSONObject errorObject) {
324 super.onError(errorObject); 410 super.onError(errorObject);
325 if (errorCallback != null) { 411 if (errorCallback != null)
326 errorCallback.doCallback(this); 412 errorCallback.doCallback(this);
327 }
328 } 413 }
329 }); 414 });
330 } 415 }
331 416
332 protected void generateControlFile(boolean readyForSubmit) { 417 protected void generateControlFile(boolean readyForSubmit) {
333 generateControlFile(readyForSubmit, null, null); 418 generateControlFile(readyForSubmit, null, null);
334 } 419 }
335 420
336 public void handleSkipVerify() { 421 public void handleSkipVerify() {
337 boolean shouldSkipVerify = false; 422 boolean shouldSkipVerify = false;
338 for (JSONObject test : testSelector.getSelectedTests()) { 423 for (JSONObject test : testSelector.getSelectedTests()) {
339 boolean runVerify = test.get("run_verify").isBoolean().booleanValue( ); 424 boolean runVerify = test.get("run_verify").isBoolean().booleanValue( );
340 if (!runVerify) { 425 if (!runVerify) {
341 shouldSkipVerify = true; 426 shouldSkipVerify = true;
342 break; 427 break;
343 } 428 }
344 } 429 }
345 430
346 if (shouldSkipVerify) { 431 if (shouldSkipVerify) {
347 display.getSkipVerify().setValue(true); 432 skipVerify.setValue(true);
348 display.getSkipVerify().setEnabled(false); 433 skipVerify.setEnabled(false);
349 } else { 434 } else {
350 display.getSkipVerify().setEnabled(true); 435 skipVerify.setEnabled(true);
351 } 436 }
352 } 437 }
353 438
354 protected void setInputsEnabled() { 439 protected void setInputsEnabled() {
355 testSelector.setEnabled(true); 440 testSelector.setEnabled(true);
356 profilersPanel.setEnabled(true); 441 profilersPanel.setEnabled(true);
357 handleSkipVerify(); 442 handleSkipVerify();
358 display.getKernel().setEnabled(true); 443 kernel.setEnabled(true);
359 display.getKernelCmdline().setEnabled(true); 444 kernel_cmdline.setEnabled(true);
445 }
446
447 protected boolean isClientTypeSelected() {
448 return testSelector.getSelectedTestType().equals(TestSelector.CLIENT_TYP E);
360 } 449 }
361 450
362 protected void disableInputs() { 451 protected void disableInputs() {
363 testSelector.setEnabled(false); 452 testSelector.setEnabled(false);
364 profilersPanel.setEnabled(false); 453 profilersPanel.setEnabled(false);
365 display.getKernel().setEnabled(false); 454 kernel.setEnabled(false);
366 display.getKernelCmdline().setEnabled(false); 455 kernel_cmdline.setEnabled(false);
367 } 456 }
368 457
458 @Override
369 public void initialize() { 459 public void initialize() {
370 profilersPanel.bindDisplay(display.getCheckBoxPanelDisplay()); 460 super.initialize();
371 controlTypeSelect.bindDisplay(display.getControlTypeSelectDisplay());
372 testSelector.bindDisplay(display.getTestSelectorDisplay());
373 rebootBefore.bindDisplay(display.getRebootBefore());
374 rebootAfter.bindDisplay(display.getRebootAfter());
375
376 display.getEditControlButton().setText(EDIT_CONTROL_STRING);
377 display.getViewLink().setText(VIEW_CONTROL_STRING);
378
379 hostSelector = new HostSelector();
380 hostSelector.initialize();
381 hostSelector.bindDisplay(display.getHostSelectorDisplay());
382 461
383 populatePriorities(staticData.getData("priorities").isArray()); 462 populatePriorities(staticData.getData("priorities").isArray());
384 463
385 BlurHandler kernelBlurHandler = new BlurHandler() { 464 BlurHandler kernelBlurHandler = new BlurHandler() {
386 public void onBlur(BlurEvent event) { 465 public void onBlur(BlurEvent event) {
387 generateControlFile(false); 466 generateControlFile(false);
388 } 467 }
389 }; 468 };
390 469
391 display.getKernel().addBlurHandler(kernelBlurHandler); 470 kernel.addBlurHandler(kernelBlurHandler);
392 display.getKernelCmdline().addBlurHandler(kernelBlurHandler); 471 kernel_cmdline.addBlurHandler(kernelBlurHandler);
393 472
394 KeyPressHandler kernelKeyPressHandler = new KeyPressHandler() { 473 KeyPressHandler kernelKeyPressHandler = new KeyPressHandler() {
395 public void onKeyPress(KeyPressEvent event) { 474 public void onKeyPress(KeyPressEvent event) {
396 if (event.getCharCode() == (char) KeyCodes.KEY_ENTER) { 475 if (event.getCharCode() == (char) KeyCodes.KEY_ENTER)
397 generateControlFile(false); 476 generateControlFile(false);
398 }
399 } 477 }
400 }; 478 };
401 479
402 display.getKernel().addKeyPressHandler(kernelKeyPressHandler); 480 kernel.addKeyPressHandler(kernelKeyPressHandler);
403 display.getKernelCmdline().addKeyPressHandler(kernelKeyPressHandler); 481 kernel_cmdline.addKeyPressHandler(kernelKeyPressHandler);
404 482
405 populateProfilers(); 483 populateProfilers();
484 Panel profilerControls = new VerticalPanel();
485 profilerControls.add(profilersPanel);
486 profilerControls.add(runNonProfiledIteration);
406 updateNonProfiledRunControl(); 487 updateNonProfiledRunControl();
407 488
489 testSelector = new TestSelector();
490
408 populateRebootChoices(); 491 populateRebootChoices();
409 onPreferencesChanged(); 492 onPreferencesChanged();
410 493
494 controlFile.setSize("50em", "30em");
495 controlTypeSelect = new ControlTypeSelect();
496 HorizontalPanel controlOptionsPanel = new HorizontalPanel();
497 controlOptionsPanel.setVerticalAlignment(HorizontalPanel.ALIGN_BOTTOM);
498 controlOptionsPanel.add(controlTypeSelect);
499 Label useLabel = new Label("Use");
500 useLabel.getElement().getStyle().setProperty("marginLeft", "1em");
501 synchCountInput.setSize("3em", ""); // set width only
502 synchCountInput.getElement().getStyle().setProperty("margin", "0 0.5em 0 0.5em");
503 controlOptionsPanel.add(useLabel);
504 controlOptionsPanel.add(synchCountInput);
505 controlOptionsPanel.add(new Label("host(s) per execution"));
506 Panel controlEditPanel = new VerticalPanel();
507 controlEditPanel.add(controlOptionsPanel);
508 controlEditPanel.add(controlFile);
509
510 Panel controlHeaderPanel = new HorizontalPanel();
511 final Anchor viewLink = new Anchor(VIEW_CONTROL_STRING);
512 controlHeaderPanel.add(viewLink);
513 controlHeaderPanel.add(editControlButton);
514
411 if (parameterizedJobsEnabled()) { 515 if (parameterizedJobsEnabled()) {
412 display.getEditControlButton().setEnabled(false); 516 editControlButton.setEnabled(false);
413 } 517 }
414 518
415 display.getEditControlButton().addClickHandler(new ClickHandler() { 519 controlFilePanel.setHeader(controlHeaderPanel);
520 controlFilePanel.add(controlEditPanel);
521
522 editControlButton.addClickHandler(new ClickHandler() {
416 public void onClick(ClickEvent event) { 523 public void onClick(ClickEvent event) {
417 DOM.eventCancelBubble(DOM.eventGetCurrentEvent(), true); 524 DOM.eventCancelBubble(DOM.eventGetCurrentEvent(), true);
418 525
419 if (display.getEditControlButton().getText().equals(EDIT_CONTROL _STRING)) { 526 if (editControlButton.getText().equals(EDIT_CONTROL_STRING)) {
420 disableInputs(); 527 disableInputs();
421 display.getEditControlButton().setEnabled(false); 528 editControlButton.setEnabled(false);
422 SimpleCallback onGotControlFile = new SimpleCallback() { 529 SimpleCallback onGotControlFile = new SimpleCallback() {
423 public void doCallback(Object source) { 530 public void doCallback(Object source) {
424 openControlFileEditor(); 531 openControlFileEditor();
425 } 532 }
426 }; 533 };
427 SimpleCallback onControlFileError = new SimpleCallback() { 534 SimpleCallback onControlFileError = new SimpleCallback() {
428 public void doCallback(Object source) { 535 public void doCallback(Object source) {
429 setInputsEnabled(); 536 setInputsEnabled();
430 display.getEditControlButton().setEnabled(true); 537 editControlButton.setEnabled(true);
431 } 538 }
432 }; 539 };
433 generateControlFile(true, onGotControlFile, onControlFileErr or); 540 generateControlFile(true, onGotControlFile, onControlFileErr or);
434 } 541 }
435 else { 542 else {
436 if (controlEdited && 543 if (controlEdited &&
437 !Window.confirm("Are you sure you want to revert your" + 544 !Window.confirm("Are you sure you want to revert your" +
438 " changes?")) { 545 " changes?"))
439 return; 546 return;
440 }
441 generateControlFile(false); 547 generateControlFile(false);
442 display.getControlFile().setReadOnly(true); 548 controlFile.setReadOnly(true);
443 setInputsEnabled(); 549 setInputsEnabled();
444 display.getEditControlButton().setText(EDIT_CONTROL_STRING); 550 editControlButton.setText(EDIT_CONTROL_STRING);
445 controlTypeSelect.setEnabled(false); 551 controlTypeSelect.setEnabled(false);
446 display.getSynchCountInput().setEnabled(false); 552 synchCountInput.setEnabled(false);
447 controlEdited = false; 553 controlEdited = false;
448 } 554 }
449 } 555 }
450 }); 556 });
451 557
452 display.getControlFile().addChangeHandler(new ChangeHandler() { 558 controlFile.addChangeHandler(new ChangeHandler() {
453 public void onChange(ChangeEvent event) { 559 public void onChange(ChangeEvent event) {
454 controlEdited = true; 560 controlEdited = true;
455 } 561 }
456 }); 562 });
457 563
458 display.getControlFilePanelClose().addCloseHandler(new CloseHandler<Disc losurePanel>() { 564 controlFilePanel.addCloseHandler(new CloseHandler<DisclosurePanel>() {
459 public void onClose(CloseEvent<DisclosurePanel> event) { 565 public void onClose(CloseEvent<DisclosurePanel> event) {
460 display.getViewLink().setText(VIEW_CONTROL_STRING); 566 viewLink.setText(VIEW_CONTROL_STRING);
461 } 567 }
462 }); 568 });
463 569
464 display.getControlFilePanelOpen().addOpenHandler(new OpenHandler<Disclos urePanel>() { 570 controlFilePanel.addOpenHandler(new OpenHandler<DisclosurePanel>() {
465 public void onOpen(OpenEvent<DisclosurePanel> event) { 571 public void onOpen(OpenEvent<DisclosurePanel> event) {
466 display.getViewLink().setText(HIDE_CONTROL_STRING); 572 viewLink.setText(HIDE_CONTROL_STRING);
467 } 573 }
468 }); 574 });
469 575
470 display.getSubmitJobButton().addClickHandler(new ClickHandler() { 576 hostSelector = new HostSelector();
577 HostSelectorDisplay hostSelectorDisplay = new HostSelectorDisplay();
578 hostSelector.initialize();
579 hostSelector.bindDisplay(hostSelectorDisplay);
580
581 submitJobButton.addClickHandler(new ClickHandler() {
471 public void onClick(ClickEvent event) { 582 public void onClick(ClickEvent event) {
472 submitJob(false); 583 submitJob(false);
473 } 584 }
474 }); 585 });
475 586
476 display.getCreateTemplateJobButton().addClickHandler(new ClickHandler() { 587 createTemplateJobButton.addClickHandler(new ClickHandler() {
477 public void onClick(ClickEvent event) { 588 public void onClick(ClickEvent event) {
478 submitJob(true); 589 submitJob(true);
479 } 590 }
480 }); 591 });
481 592
482 display.getResetButton().addClickHandler(new ClickHandler() { 593 resetButton.addClickHandler(new ClickHandler() {
483 public void onClick(ClickEvent event) { 594 public void onClick(ClickEvent event) {
484 reset(); 595 reset();
485 } 596 }
486 }); 597 });
487 598
488 display.getHostless().addClickHandler(new ClickHandler() { 599 hostless.addClickHandler(new ClickHandler() {
489 @Override 600 @Override
490 public void onClick(ClickEvent event) { 601 public void onClick(ClickEvent event) {
491 hostSelector.setEnabled(!display.getHostless().getValue()); 602 hostSelector.setEnabled(!hostless.getValue());
492 } 603 }
493 }); 604 });
494 605
495 reset(); 606 reset();
496 607
608 addWidget(jobName, "create_job_name");
609 addWidget(kernel, "create_kernel");
610 addWidget(kernel_cmdline, "create_kernel_cmdline");
611 addWidget(timeout, "create_timeout");
612 addWidget(maxRuntime, "create_max_runtime");
613 addWidget(emailList, "create_email_list");
614 addWidget(priorityList, "create_priority");
615 addWidget(skipVerify, "create_skip_verify");
616 addWidget(rebootBefore, "create_reboot_before");
617 addWidget(rebootAfter, "create_reboot_after");
618 addWidget(parseFailedRepair, "create_parse_failed_repair");
619 addWidget(hostless, "create_hostless");
620 addWidget(testSelector, "create_tests");
621 addWidget(profilerControls, "create_profilers");
622 addWidget(controlFilePanel, "create_edit_control");
623 addWidget(hostSelectorDisplay, "create_host_selector");
624 addWidget(submitJobButton, "create_submit");
625 addWidget(createTemplateJobButton, "create_template_job");
626 addWidget(resetButton, "create_reset");
627
497 if (staticData.getData("drone_sets_enabled").isBoolean().booleanValue()) { 628 if (staticData.getData("drone_sets_enabled").isBoolean().booleanValue()) {
498 AfeUtils.populateListBox(display.getDroneSet(), "drone_sets"); 629 AfeUtils.popualateListBox(droneSet, "drone_sets");
630 addWidget(droneSet, "create_drone_set");
499 } else { 631 } else {
500 AfeUtils.removeElement("create_drone_set_wrapper"); 632 AfeUtils.removeElement("create_drone_set_wrapper");
501 } 633 }
502 634
503 testSelector.setListener(this); 635 testSelector.setListener(this);
504 } 636 }
505 637
506 public void reset() { 638 public void reset() {
507 StaticDataRepository repository = StaticDataRepository.getRepository(); 639 StaticDataRepository repository = StaticDataRepository.getRepository();
508 640
509 display.getJobName().setText(""); 641 jobName.setText("");
510 resetPriorityToDefault(); 642 resetPriorityToDefault();
511 rebootBefore.reset(); 643 rebootBefore.reset();
512 rebootAfter.reset(); 644 rebootAfter.reset();
513 display.getParseFailedRepair().setValue( 645 parseFailedRepair.setValue(
514 repository.getData("parse_failed_repair_default").isBoolean().bo oleanValue()); 646 repository.getData("parse_failed_repair_default").isBoolean().bo oleanValue());
515 display.getHostless().setValue(false); 647 hostless.setValue(false);
516 display.getKernel().setText(""); 648 kernel.setText("");
517 display.getKernelCmdline().setText(""); 649 kernel_cmdline.setText("");
518 display.getTimeout().setText(Utils.jsonToString(repository.getData("job_ timeout_default"))); 650 timeout.setText(Utils.jsonToString(repository.getData("job_timeout_defau lt")));
519 display.getMaxRuntime().setText( 651 maxRuntime.setText(Utils.jsonToString(repository.getData("job_max_runtim e_hrs_default")));
520 Utils.jsonToString(repository.getData("job_max_runtime_hrs_defau lt"))); 652 emailList.setText("");
521 display.getEmailList().setText("");
522 testSelector.reset(); 653 testSelector.reset();
523 display.getSkipVerify().setValue(false); 654 skipVerify.setValue(false);
524 profilersPanel.reset(); 655 profilersPanel.reset();
525 setInputsEnabled(); 656 setInputsEnabled();
526 controlTypeSelect.setControlType(TestSelector.CLIENT_TYPE); 657 controlTypeSelect.setControlType(TestSelector.CLIENT_TYPE);
527 controlTypeSelect.setEnabled(false); 658 controlTypeSelect.setEnabled(false);
528 display.getSynchCountInput().setEnabled(false); 659 synchCountInput.setEnabled(false);
529 display.getSynchCountInput().setText("1"); 660 synchCountInput.setText("1");
530 display.getControlFile().setText(""); 661 controlFile.setText("");
531 display.getControlFile().setReadOnly(true); 662 controlFile.setReadOnly(true);
532 controlEdited = false; 663 controlEdited = false;
533 display.setControlFilePanelOpen(false); 664 controlFilePanel.setOpen(false);
534 display.getEditControlButton().setText(EDIT_CONTROL_STRING); 665 editControlButton.setText(EDIT_CONTROL_STRING);
535 hostSelector.reset(); 666 hostSelector.reset();
536 dependencies = new JSONArray(); 667 dependencies = new JSONArray();
537 } 668 }
538 669
539 private void submitJob(final boolean isTemplate) { 670 protected void submitJob(final boolean isTemplate) {
540 final int timeoutValue, maxRuntimeValue; 671 final int timeoutValue, maxRuntimeValue;
541 final JSONValue synchCount; 672 final JSONValue synchCount;
542 try { 673 try {
543 timeoutValue = parsePositiveIntegerInput(display.getTimeout().getTex t(), "timeout"); 674 timeoutValue = parsePositiveIntegerInput(timeout.getText(), "timeout ");
544 maxRuntimeValue = parsePositiveIntegerInput( 675 maxRuntimeValue = parsePositiveIntegerInput(maxRuntime.getText(), "m ax runtime");
545 display.getMaxRuntime().getText(), "max runtime");
546 676
547 if (display.getHostless().getValue()) { 677 if (hostless.getValue()) {
548 synchCount = JSONNull.getInstance(); 678 synchCount = JSONNull.getInstance();
549 } else { 679 } else {
550 synchCount = new JSONNumber(parsePositiveIntegerInput( 680 synchCount = new JSONNumber(parsePositiveIntegerInput(
551 display.getSynchCountInput().getText(), 681 synchCountInput.getText(), "number of machines used per exec ution"));
552 "number of machines used per execution"));
553 } 682 }
554 } catch (IllegalArgumentException exc) { 683 } catch (IllegalArgumentException exc) {
555 return; 684 return;
556 } 685 }
557 686
558 // disallow accidentally clicking submit twice 687 // disallow accidentally clicking submit twice
559 display.getSubmitJobButton().setEnabled(false); 688 submitJobButton.setEnabled(false);
560 689
561 final SimpleCallback doSubmit = new SimpleCallback() { 690 final SimpleCallback doSubmit = new SimpleCallback() {
562 public void doCallback(Object source) { 691 public void doCallback(Object source) {
563 JSONObject args = new JSONObject(); 692 JSONObject args = new JSONObject();
564 args.put("name", new JSONString(display.getJobName().getText())) ; 693 args.put("name", new JSONString(jobName.getText()));
565 String priority = display.getPriorityList().getSelectedName(); 694 String priority = priorityList.getItemText(priorityList.getSelec tedIndex());
566 args.put("priority", new JSONString(priority)); 695 args.put("priority", new JSONString(priority));
567 args.put("control_file", new JSONString(display.getControlFile() .getText())); 696 args.put("control_file", new JSONString(controlFile.getText()));
568 args.put("control_type", 697 args.put("control_type",
569 new JSONString(controlTypeSelect.getControlType())); 698 new JSONString(controlTypeSelect.getControlType()));
570 args.put("synch_count", synchCount); 699 args.put("synch_count", synchCount);
571 args.put("timeout", new JSONNumber(timeoutValue)); 700 args.put("timeout", new JSONNumber(timeoutValue));
572 args.put("max_runtime_hrs", new JSONNumber(maxRuntimeValue)); 701 args.put("max_runtime_hrs", new JSONNumber(maxRuntimeValue));
573 args.put("email_list", new JSONString(display.getEmailList().get Text())); 702 args.put("email_list", new JSONString(emailList.getText()));
574 args.put("run_verify", JSONBoolean.getInstance( 703 args.put("run_verify", JSONBoolean.getInstance(!skipVerify.getVa lue()));
575 !display.getSkipVerify().getValue()));
576 args.put("is_template", JSONBoolean.getInstance(isTemplate)); 704 args.put("is_template", JSONBoolean.getInstance(isTemplate));
577 args.put("dependencies", getSelectedDependencies()); 705 args.put("dependencies", getSelectedDependencies());
578 args.put("reboot_before", new JSONString(rebootBefore.getSelecte dChoice())); 706 args.put("reboot_before", new JSONString(rebootBefore.getSelecte dChoice()));
579 args.put("reboot_after", new JSONString(rebootAfter.getSelectedC hoice())); 707 args.put("reboot_after", new JSONString(rebootAfter.getSelectedC hoice()));
580 args.put("parse_failed_repair", 708 args.put("parse_failed_repair",
581 JSONBoolean.getInstance(display.getParseFailedRepair(). getValue())); 709 JSONBoolean.getInstance(parseFailedRepair.getValue()));
582 args.put("hostless", JSONBoolean.getInstance(display.getHostless ().getValue())); 710 args.put("hostless", JSONBoolean.getInstance(hostless.getValue() ));
583 711
584 if (staticData.getData("drone_sets_enabled").isBoolean().boolean Value()) { 712 if (staticData.getData("drone_sets_enabled").isBoolean().boolean Value()) {
585 args.put("drone_set", new JSONString(display.getDroneSet().g etSelectedName())); 713 args.put("drone_set",
714 new JSONString(droneSet.getItemText(droneSet.getSele ctedIndex())));
586 } 715 }
587 716
588 HostSelector.HostSelection hosts = hostSelector.getSelectedHosts (); 717 HostSelector.HostSelection hosts = hostSelector.getSelectedHosts ();
589 args.put("hosts", Utils.stringsToJSON(hosts.hosts)); 718 args.put("hosts", Utils.stringsToJSON(hosts.hosts));
590 args.put("meta_hosts", Utils.stringsToJSON(hosts.metaHosts)); 719 args.put("meta_hosts", Utils.stringsToJSON(hosts.metaHosts));
591 args.put("one_time_hosts", 720 args.put("one_time_hosts",
592 Utils.stringsToJSON(hosts.oneTimeHosts)); 721 Utils.stringsToJSON(hosts.oneTimeHosts));
593 722
594 rpcProxy.rpcCall("create_job", args, new JsonRpcCallback() { 723 rpcProxy.rpcCall("create_job", args, new JsonRpcCallback() {
595 @Override 724 @Override
596 public void onSuccess(JSONValue result) { 725 public void onSuccess(JSONValue result) {
597 int id = (int) result.isNumber().doubleValue(); 726 int id = (int) result.isNumber().doubleValue();
598 NotifyManager.getInstance().showMessage( 727 NotifyManager.getInstance().showMessage(
599 "Job " + Integer.toString(id) + " created"); 728 "Job " + Integer.toString(id) + " created");
600 reset(); 729 reset();
601 if (listener != null) { 730 if (listener != null)
602 listener.onJobCreated(id); 731 listener.onJobCreated(id);
603 } 732 submitJobButton.setEnabled(true);
604 display.getSubmitJobButton().setEnabled(true);
605 } 733 }
606 734
607 @Override 735 @Override
608 public void onError(JSONObject errorObject) { 736 public void onError(JSONObject errorObject) {
609 super.onError(errorObject); 737 super.onError(errorObject);
610 display.getSubmitJobButton().setEnabled(true); 738 submitJobButton.setEnabled(true);
611 } 739 }
612 }); 740 });
613 } 741 }
614 }; 742 };
615 743
616 // ensure control file is ready for submission 744 // ensure control file is ready for submission
617 if (!controlReadyForSubmit) { 745 if (!controlReadyForSubmit)
618 generateControlFile(true, doSubmit, new SimpleCallback() { 746 generateControlFile(true, doSubmit, new SimpleCallback() {
619 public void doCallback(Object source) { 747 public void doCallback(Object source) {
620 display.getSubmitJobButton().setEnabled(true); 748 submitJobButton.setEnabled(true);
621 } 749 }
622 }); 750 });
623 } else { 751 else
624 doSubmit.doCallback(this); 752 doSubmit.doCallback(this);
625 }
626 } 753 }
627 754
628 private JSONArray getSelectedDependencies() { 755 private JSONArray getSelectedDependencies() {
629 return dependencies; 756 return dependencies;
630 } 757 }
631 758
632 private void setSelectedDependencies(JSONArray dependencies) { 759 private void setSelectedDependencies(JSONArray dependencies) {
633 this.dependencies = dependencies; 760 this.dependencies = dependencies;
634 } 761 }
635 762
636 private int parsePositiveIntegerInput(String input, String fieldName) { 763 private int parsePositiveIntegerInput(String input, String fieldName) {
637 final int parsedInt; 764 final int parsedInt;
638 try { 765 try {
639 if (input.equals("") || 766 if (input.equals("") ||
640 (parsedInt = Integer.parseInt(input)) <= 0) { 767 (parsedInt = Integer.parseInt(input)) <= 0) {
641 String error = "Please enter a positive " + fieldName; 768 String error = "Please enter a positive " + fieldName;
642 NotifyManager.getInstance().showError(error); 769 NotifyManager.getInstance().showError(error);
643 throw new IllegalArgumentException(); 770 throw new IllegalArgumentException();
644 } 771 }
645 } catch (NumberFormatException e) { 772 } catch (NumberFormatException e) {
646 String error = "Invalid " + fieldName + ": \"" + input + "\""; 773 String error = "Invalid " + fieldName + ": \"" + input + "\"";
647 NotifyManager.getInstance().showError(error); 774 NotifyManager.getInstance().showError(error);
648 throw new IllegalArgumentException(); 775 throw new IllegalArgumentException();
649 } 776 }
650 return parsedInt; 777 return parsedInt;
651 } 778 }
652 779
780 @Override
653 public void refresh() { 781 public void refresh() {
782 super.refresh();
654 hostSelector.refresh(); 783 hostSelector.refresh();
655 } 784 }
656 785
657 public void onTestSelectionChanged() { 786 public void onTestSelectionChanged() {
658 generateControlFile(false); 787 generateControlFile(false);
659 setInputsEnabled(); 788 setInputsEnabled();
660 } 789 }
661 790
662 private void setRebootSelectorDefault(RadioChooser chooser, String name) { 791 private void setRebootSelectorDefault(RadioChooser chooser, String name) {
663 JSONObject user = staticData.getData("current_user").isObject(); 792 JSONObject user = staticData.getData("current_user").isObject();
664 String defaultOption = Utils.jsonToString(user.get(name)); 793 String defaultOption = Utils.jsonToString(user.get(name));
665 chooser.setDefaultChoice(defaultOption); 794 chooser.setDefaultChoice(defaultOption);
666 } 795 }
667 796
668 private void selectPreferredDroneSet() { 797 private void selectPreferredDroneSet() {
669 JSONObject user = staticData.getData("current_user").isObject(); 798 JSONObject user = staticData.getData("current_user").isObject();
670 JSONValue droneSet = user.get("drone_set"); 799 String preference = Utils.jsonToString(user.get("drone_set"));
671 if (droneSet.isNull() == null) { 800 AfeUtils.setSelectedItem(droneSet, preference);
672 String preference = Utils.jsonToString(user.get("drone_set"));
673 display.getDroneSet().selectByName(preference);
674 }
675 } 801 }
676 802
677 public void onPreferencesChanged() { 803 public void onPreferencesChanged() {
678 setRebootSelectorDefault(rebootBefore, "reboot_before"); 804 setRebootSelectorDefault(rebootBefore, "reboot_before");
679 setRebootSelectorDefault(rebootAfter, "reboot_after"); 805 setRebootSelectorDefault(rebootAfter, "reboot_after");
680 selectPreferredDroneSet(); 806 selectPreferredDroneSet();
681 testSelector.reset(); 807 testSelector.reset();
682 } 808 }
683 809
684 private boolean parameterizedJobsEnabled() { 810 private boolean parameterizedJobsEnabled() {
685 return staticData.getData("parameterized_jobs").isBoolean().booleanValue (); 811 return staticData.getData("parameterized_jobs").isBoolean().booleanValue ();
686 } 812 }
687 } 813 }
OLDNEW
« no previous file with comments | « frontend/client/src/autotest/afe/ControlTypeSelectDisplay.java ('k') | frontend/client/src/autotest/afe/HostDetailView.java » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698