Client(String[] args) { // // Initialize an Ice communicator. // try { com.zeroc.Ice.InitializationData initData = new com.zeroc.Ice.InitializationData(); initData.properties = com.zeroc.Ice.Util.createProperties(); initData.properties.load("config.client"); initData.dispatcher = (runnable, connection) -> { SwingUtilities.invokeLater(runnable); }; _communicator = com.zeroc.Ice.Util.initialize(args, initData).communicator; } catch (Throwable ex) { handleException(ex); } Container cp = this; JLabel l1 = new JLabel("Hostname"); _hostname = new JTextField(); JLabel l2 = new JLabel("Mode"); _mode = new JComboBox<String>(); JLabel l3 = new JLabel("Timeout"); _timeoutSlider = new JSlider(0, MAX_TIME); _timeoutLabel = new JLabel("0.0"); JLabel l4 = new JLabel("Delay"); _delaySlider = new JSlider(0, MAX_TIME); _delayLabel = new JLabel("0.0"); JPanel buttonPanel = new JPanel(); _hello = new JButton("Hello World!"); _shutdown = new JButton("Shutdown"); _flush = new JButton("Flush"); _flush.setEnabled(false); JSeparator statusPanelSeparator = new JSeparator(); _status = new JLabel(); _status.setText("Ready"); // // Default to localhost. // _hostname.setText("127.0.0.1"); _hostname .getDocument() .addDocumentListener( new DocumentListener() { @Override public void changedUpdate(DocumentEvent e) { updateProxy(); } @Override public void insertUpdate(DocumentEvent e) { if (e.getDocument().getLength() > 0) { _hello.setEnabled(true); _shutdown.setEnabled(true); } updateProxy(); } @Override public void removeUpdate(DocumentEvent e) { if (e.getDocument().getLength() == 0) { _hello.setEnabled(false); _shutdown.setEnabled(false); _flush.setEnabled(false); } updateProxy(); } }); _mode.setModel(new DefaultComboBoxModel<String>(DELIVERY_MODE_DESC)); _hello.addActionListener( new ActionListener() { @Override public void actionPerformed(ActionEvent e) { sayHello(); } }); _shutdown.addActionListener( new ActionListener() { @Override public void actionPerformed(ActionEvent e) { shutdown(); } }); _flush.addActionListener( new ActionListener() { @Override public void actionPerformed(ActionEvent e) { flush(); } }); _mode.addActionListener( new ActionListener() { @Override public void actionPerformed(ActionEvent e) { changeDeliveryMode(_mode.getSelectedIndex()); } }); changeDeliveryMode(_mode.getSelectedIndex()); _timeoutSlider.addChangeListener(new SliderListener(_timeoutSlider, _timeoutLabel)); _timeoutSlider.addChangeListener( new ChangeListener() { @Override public void stateChanged(ChangeEvent ce) { updateProxy(); } }); _timeoutSlider.setValue(0); _delaySlider.addChangeListener(new SliderListener(_delaySlider, _delayLabel)); _delaySlider.setValue(0); GridBagConstraints gridBagConstraints; cp.setMaximumSize(null); cp.setPreferredSize(null); cp.setLayout(new GridBagLayout()); l1.setText("Hostname"); gridBagConstraints = new GridBagConstraints(); gridBagConstraints.gridx = 0; gridBagConstraints.gridy = 0; gridBagConstraints.anchor = GridBagConstraints.WEST; gridBagConstraints.insets = new Insets(5, 5, 5, 5); cp.add(l1, gridBagConstraints); gridBagConstraints = new GridBagConstraints(); gridBagConstraints.gridx = 1; gridBagConstraints.gridy = 0; gridBagConstraints.gridwidth = 2; gridBagConstraints.fill = GridBagConstraints.HORIZONTAL; gridBagConstraints.insets = new Insets(5, 0, 5, 5); cp.add(_hostname, gridBagConstraints); l2.setText("Mode"); gridBagConstraints = new GridBagConstraints(); gridBagConstraints.gridx = 0; gridBagConstraints.gridy = 1; gridBagConstraints.anchor = GridBagConstraints.WEST; gridBagConstraints.insets = new Insets(0, 5, 5, 0); cp.add(l2, gridBagConstraints); gridBagConstraints = new GridBagConstraints(); gridBagConstraints.gridx = 1; gridBagConstraints.gridy = 1; gridBagConstraints.gridwidth = 2; gridBagConstraints.fill = GridBagConstraints.HORIZONTAL; gridBagConstraints.insets = new Insets(0, 0, 5, 5); cp.add(_mode, gridBagConstraints); l3.setText("Timeout"); gridBagConstraints = new GridBagConstraints(); gridBagConstraints.gridx = 0; gridBagConstraints.gridy = 2; gridBagConstraints.anchor = GridBagConstraints.WEST; gridBagConstraints.insets = new Insets(0, 5, 5, 0); cp.add(l3, gridBagConstraints); gridBagConstraints = new GridBagConstraints(); gridBagConstraints.gridx = 1; gridBagConstraints.gridy = 2; gridBagConstraints.fill = GridBagConstraints.HORIZONTAL; gridBagConstraints.anchor = GridBagConstraints.WEST; cp.add(_timeoutSlider, gridBagConstraints); _timeoutLabel.setMinimumSize(new Dimension(20, 17)); gridBagConstraints = new GridBagConstraints(); gridBagConstraints.gridx = 2; gridBagConstraints.gridy = 2; gridBagConstraints.anchor = GridBagConstraints.WEST; gridBagConstraints.insets = new Insets(0, 5, 5, 5); cp.add(_timeoutLabel, gridBagConstraints); l4.setText("Delay"); gridBagConstraints = new GridBagConstraints(); gridBagConstraints.gridx = 0; gridBagConstraints.gridy = 3; gridBagConstraints.anchor = GridBagConstraints.WEST; gridBagConstraints.insets = new Insets(0, 5, 5, 0); cp.add(l4, gridBagConstraints); gridBagConstraints = new GridBagConstraints(); gridBagConstraints.gridx = 1; gridBagConstraints.gridy = 3; gridBagConstraints.fill = GridBagConstraints.HORIZONTAL; gridBagConstraints.anchor = GridBagConstraints.WEST; cp.add(_delaySlider, gridBagConstraints); _delayLabel.setMinimumSize(new Dimension(20, 17)); gridBagConstraints = new GridBagConstraints(); gridBagConstraints.gridx = 2; gridBagConstraints.gridy = 3; gridBagConstraints.anchor = GridBagConstraints.WEST; gridBagConstraints.insets = new Insets(0, 5, 5, 5); cp.add(_delayLabel, gridBagConstraints); _hello.setText("Hello World!"); buttonPanel.add(_hello); _shutdown.setText("Shutdown"); buttonPanel.add(_shutdown); _flush.setText("Flush"); buttonPanel.add(_flush); gridBagConstraints = new GridBagConstraints(); gridBagConstraints.gridx = 0; gridBagConstraints.gridy = 4; gridBagConstraints.gridwidth = 3; gridBagConstraints.ipady = 5; cp.add(buttonPanel, gridBagConstraints); gridBagConstraints = new GridBagConstraints(); gridBagConstraints.gridx = 0; gridBagConstraints.gridy = 5; gridBagConstraints.gridwidth = 3; gridBagConstraints.fill = GridBagConstraints.HORIZONTAL; gridBagConstraints.insets = new Insets(0, 5, 5, 5); cp.add(statusPanelSeparator, gridBagConstraints); gridBagConstraints = new GridBagConstraints(); gridBagConstraints.gridx = 0; gridBagConstraints.gridy = 6; gridBagConstraints.gridwidth = 3; gridBagConstraints.fill = GridBagConstraints.HORIZONTAL; gridBagConstraints.insets = new Insets(0, 5, 5, 5); cp.add(_status, gridBagConstraints); setDefaultCloseOperation(WindowConstants.DO_NOTHING_ON_CLOSE); _shutdownHook = new Thread("Shutdown hook") { @Override public void run() { destroyCommunicator(); } }; try { Runtime.getRuntime().addShutdownHook(_shutdownHook); } catch (IllegalStateException e) { // // Shutdown in progress, ignored // } addWindowListener( new WindowAdapter() { @Override public void windowClosing(WindowEvent e) { destroyCommunicator(); Runtime.getRuntime().removeShutdownHook(_shutdownHook); dispose(); Runtime.getRuntime().exit(0); } }); setTitle("Ice - Hello World!"); pack(); locateOnScreen(this); setVisible(true); }
// create a new profile: read the script and possibly execute the queries, // save the stats (if 'import' == true, we assume the profile already exists // and don't run the queries) public void createWkld(String name, String scriptFile, boolean runQueries) { System.gc(); Workload wkld = new Workload(name); if (showCmdsItem.getState()) { consoleFrame.echoCmd((!runQueries ? "importprof " : "newwkld ") + name + " " + scriptFile); } // construct the Workload object from the script; // first, check if the file exists try { FileReader reader = new FileReader(scriptFile); reader.close(); } catch (FileNotFoundException e) { System.out.println("couldn't open " + scriptFile); return; } catch (IOException e) { System.out.println("couldn't close " + scriptFile); } // now, check if it contains only queries int scriptId = 0; try { scriptId = Libgist.openScript(scriptFile); } catch (LibgistException e) { System.out.println("couldn't open (C) " + scriptFile); return; } char[] arg1 = new char[64 * 1024]; StringBuffer arg1Buf = new StringBuffer(); char[] arg2 = new char[64 * 1024]; StringBuffer arg2Buf = new StringBuffer(); // for (;;) { // int cmd = Libgist.getCommand(scriptId, arg1, arg2); // if (cmd == Libgist.EOF) break; // if (cmd != Libgist.FETCH) { // there should only be queries // System.out.println("Script file contains non-SELECT command"); // return; // } // } if (runQueries) { // turn profiling on and execute queries // Libgist.setProfilingEnabled(true); Libgist.disableBps(true); // we don't want to stop at breakpoints // rescan queries try { scriptId = Libgist.openScript(scriptFile); } catch (LibgistException e) { System.out.println("couldn't open (C) " + scriptFile); return; } int cnt = 1; // for (;;) { // int cmd = Libgist.getCommand(scriptId, arg1, arg2); // if (cmd == Libgist.EOF) break; // arg1Buf.setLength(0); // arg1Buf.append(arg1, 0, strlen(arg1)); // arg2Buf.setLength(0); // arg2Buf.append(arg2, 0, strlen(arg2)); // OpThread.execCmd(LibgistCommand.FETCH, arg1Buf.toString(), // arg2Buf.toString(), false); // System.out.print(cnt + " "); // System.out.println(cnt + ": execute " + arg2Buf.toString() + " " // + arg1Buf.toString()); // cnt++; // } System.out.println(); Libgist.disableBps(false); // compute optimal clustering and some more statistics // Libgist.computeMetrics(wkld.filename); } // save profile try { // we're saving Java and C++ data in separate files (filename and filename.prof) // the profile object only contains the filename, the queries will be // read in from the file when the profile is opened (faster that way) ObjectOutputStream out = new ObjectOutputStream(new FileOutputStream(wkld.filename)); out.writeObject(wkld); out.close(); System.out.println("copy query file"); Runtime.getRuntime().exec("cp " + scriptFile + " " + wkld.filename + ".queries"); System.out.println("saving tree and profile"); Libgist.saveToFile(wkld.filename + ".idx"); if (runQueries) { // Libgist.saveProfile(wkld.filename + ".prof"); } } catch (Exception e) { System.out.println("Error saving profile: " + e); return; } if (runQueries) { // turn profiling off (after the metrics were computed and // the profile saved) // Libgist.setProfilingEnabled(false); } }
// Run selected test cases. private void runTests() { for (int i = 0; i < tests.size(); i++) { // If box for test is checked, run it. if (tests.get(i).isSelected()) { // Get the URLs of all of the required files. String folderURL = tests.get(i).getText(); String testURL = folderURL.concat(folderURL.substring(folderURL.lastIndexOf('/'))); String efgFile = testURL + ".EFG"; String guiFile = testURL + ".GUI"; String tstFile = testURL + ".TST"; String prgFile = testURL + ".PRG"; // attempt to read in file with program's parameters try { FileInputStream fstream = new FileInputStream(prgFile); DataInputStream in = new DataInputStream(fstream); BufferedReader br = new BufferedReader(new InputStreamReader(in)); HashMap<String, String> prgParams = new HashMap<String, String>(); String strLine; while ((strLine = br.readLine()) != null) { // add found parameters into prgParams as <key, value> String[] matches = strLine.split("="); prgParams.put(matches[0], matches[1]); } if (prgParams.containsKey("path") && prgParams.containsKey("main")) { programPath = prgParams.get("path"); mainClass = prgParams.get("main"); } in.close(); } catch (Exception e) { System.err.println(e.getMessage()); } System.out.println("We hit Run"); // Run the replayer using the three test files. System.out.println( "../../../dist/guitar/jfc-replayer.sh -cp " + programPath + " -c " + mainClass + " -g " + guiFile + " -e " + efgFile + " -t " + tstFile); try { Runtime rt = Runtime.getRuntime(); Process proc = rt.exec( "../../../dist/guitar/jfc-replayer.sh -cp " + programPath + " -c " + mainClass + " -g " + guiFile + " -e " + efgFile + " -t " + tstFile); // InputStream ips = proc.getInputStream(); BufferedReader in = new BufferedReader(new InputStreamReader(proc.getInputStream())); String inputLine; while ((inputLine = in.readLine()) != null) System.out.println(inputLine); in.close(); } catch (Exception e) { e.printStackTrace(); } } } }