- remove references that are not used for running remote commands: - remote directory where the command will be ran - remove environment on remote host - rename class to RemoteShellExec since it is a wrapper over a remote shell execution of a command
Signed-off-by: Ioana Grigoropol <ioanax.grigoro...@intel.com> --- .../sdk/remotetools/actions/OprofileModel.java | 18 +-- .../sdk/remotetools/actions/PowertopModel.java | 25 +--- .../yocto/sdk/remotetools/actions/Ust2Model.java | 19 ++- .../sdk/remotetools/remote/RemoteApplication.java | 155 -------------------- .../sdk/remotetools/remote/RemoteShellExec.java | 149 +++++++++++++++++++ 5 files changed, 174 insertions(+), 192 deletions(-) delete mode 100644 plugins/org.yocto.sdk.remotetools/src/org/yocto/sdk/remotetools/remote/RemoteApplication.java create mode 100644 plugins/org.yocto.sdk.remotetools/src/org/yocto/sdk/remotetools/remote/RemoteShellExec.java diff --git a/plugins/org.yocto.sdk.remotetools/src/org/yocto/sdk/remotetools/actions/OprofileModel.java b/plugins/org.yocto.sdk.remotetools/src/org/yocto/sdk/remotetools/actions/OprofileModel.java index 794a101..d11c343 100644 --- a/plugins/org.yocto.sdk.remotetools/src/org/yocto/sdk/remotetools/actions/OprofileModel.java +++ b/plugins/org.yocto.sdk.remotetools/src/org/yocto/sdk/remotetools/actions/OprofileModel.java @@ -26,7 +26,7 @@ import org.yocto.sdk.ide.preferences.PreferenceConstants; import org.yocto.sdk.remotetools.CommonHelper; import org.yocto.sdk.remotetools.LocalJob; import org.yocto.sdk.remotetools.Messages; -import org.yocto.sdk.remotetools.remote.RemoteApplication; +import org.yocto.sdk.remotetools.remote.RemoteShellExec; public class OprofileModel extends BaseModel { @@ -45,17 +45,17 @@ public class OprofileModel extends BaseModel { private void startServer(IProgressMonitor monitor) throws Exception { int exit_code; - RemoteApplication app = new RemoteApplication(host, null, remoteExec, null); + RemoteShellExec exec = new RemoteShellExec(host, remoteExec); String args="start -d oprofile-server"; try { monitor.beginTask("Starting oprofile-server", 2); //starting oprofile-server - app.start(null,args,monitor); + exec.start(null,args,monitor); monitor.worked(1); - exit_code=app.waitFor(monitor); - app.terminate(); + exit_code = exec.waitFor(monitor); + exec.terminate(); if(exit_code!=0) { throw new RuntimeException("Starting oprofile-server failed with exit code " + new Integer(exit_code).toString()); } @@ -66,15 +66,15 @@ public class OprofileModel extends BaseModel { private void stopServer(IProgressMonitor monitor) throws Exception { - RemoteApplication app = new RemoteApplication(host, null, remoteExec, null); + RemoteShellExec exec = new RemoteShellExec(host, remoteExec); String args = "stop -d oprofile-server"; try { monitor.beginTask("Stopping oprofile-server", 2); - app.start(null,args,monitor); + exec.start(null, args, monitor); monitor.worked(1); //no cancel for stop server - app.waitFor(null); - app.terminate(); + exec.waitFor(null); + exec.terminate(); }finally { monitor.done(); } diff --git a/plugins/org.yocto.sdk.remotetools/src/org/yocto/sdk/remotetools/actions/PowertopModel.java b/plugins/org.yocto.sdk.remotetools/src/org/yocto/sdk/remotetools/actions/PowertopModel.java index ae1f8bf..37af342 100644 --- a/plugins/org.yocto.sdk.remotetools/src/org/yocto/sdk/remotetools/actions/PowertopModel.java +++ b/plugins/org.yocto.sdk.remotetools/src/org/yocto/sdk/remotetools/actions/PowertopModel.java @@ -24,7 +24,7 @@ import org.eclipse.ui.IWorkbenchPage; import org.eclipse.ui.PartInitException; import org.eclipse.ui.PlatformUI; import org.yocto.sdk.remotetools.RSEHelper; -import org.yocto.sdk.remotetools.remote.RemoteApplication; +import org.yocto.sdk.remotetools.remote.RemoteShellExec; import org.yocto.sdk.remotetools.views.BaseFileView; public class PowertopModel extends BaseModel { @@ -59,22 +59,11 @@ public class PowertopModel extends BaseModel { private void generateData(IProgressMonitor monitor) throws Exception { int exit_code; - RemoteApplication app = new RemoteApplication(host, null, remoteExec, null); - String currentDate=new SimpleDateFormat("yyyyMMddHHmmssSSS").format(Calendar.getInstance().getTime()).toString(); + RemoteShellExec exec = new RemoteShellExec(host, remoteExec); + String currentDate = new SimpleDateFormat("yyyyMMddHHmmssSSS").format(Calendar.getInstance().getTime()).toString(); remoteFile = new String(REMOTE_FILE_PREFIX + currentDate); localFile = new String(remoteFile + LOCAL_FILE_SUFFIX); - ArrayList <String> param= new ArrayList <String>(); - param.add(remoteExec); - param.add("start"); - param.add("-l"); - param.add(remoteFile); - param.add("powertop"); - param.add("-d"); - param.add("-t"); - param.add(time.toString()); - if(showpid) - param.add("-p"); String args = "start -l " + remoteFile + " powertop -d -t " + time.toString(); if(showpid) args += " -p"; @@ -82,11 +71,11 @@ public class PowertopModel extends BaseModel { try { monitor.beginTask("Starting powertop", 2); //starting oprofile-server - app.start(null,args,monitor); + exec.start(null,args,monitor); monitor.worked(1); - exit_code=app.waitFor(monitor); - app.terminate(); - if(exit_code!=0) { + exit_code = exec.waitFor(monitor); + exec.terminate(); + if(exit_code != 0) { throw new Exception("Starting powertop failed with exit code " + new Integer(exit_code).toString()); } }finally { diff --git a/plugins/org.yocto.sdk.remotetools/src/org/yocto/sdk/remotetools/actions/Ust2Model.java b/plugins/org.yocto.sdk.remotetools/src/org/yocto/sdk/remotetools/actions/Ust2Model.java index f767965..ce58546 100644 --- a/plugins/org.yocto.sdk.remotetools/src/org/yocto/sdk/remotetools/actions/Ust2Model.java +++ b/plugins/org.yocto.sdk.remotetools/src/org/yocto/sdk/remotetools/actions/Ust2Model.java @@ -26,7 +26,7 @@ import org.eclipse.core.runtime.Path; import org.eclipse.core.runtime.SubProgressMonitor; import org.eclipse.rse.core.model.IHost; import org.eclipse.ui.IWorkbenchWindow; -import org.yocto.sdk.remotetools.remote.RemoteApplication; +import org.yocto.sdk.remotetools.remote.RemoteShellExec; public class Ust2Model extends BaseModel { @@ -57,26 +57,25 @@ public class Ust2Model extends BaseModel { private void generateData(IProgressMonitor monitor) throws Exception { int exit_code; - RemoteApplication app = new RemoteApplication(host, null, remoteExec, null); - + RemoteShellExec exec = new RemoteShellExec(host, remoteExec); try { String temp; int idx; monitor.beginTask("Getting remote ust2 trace", 2); //starting usttrace - app.start(null,trace_loc,monitor); + exec.start(null, trace_loc, monitor); monitor.worked(1); - BufferedReader in=new BufferedReader(new InputStreamReader(app.getInputStream())); - while((temp=in.readLine())!=null) { - idx=temp.indexOf(DATAFILE_PREFIX); - if(idx!=-1) { + BufferedReader in = new BufferedReader(new InputStreamReader(exec.getInputStream())); + while((temp = in.readLine())!=null) { + idx = temp.indexOf(DATAFILE_PREFIX); + if(idx != -1) { remoteFile = temp.substring(idx + DATAFILE_PREFIX.length()); break; } } - exit_code=app.waitFor(monitor); - app.terminate(); + exit_code = exec.waitFor(monitor); + exec.terminate(); if(exit_code!=0) { throw new Exception("Getting remote ust2 trace failed with exit code " + new Integer(exit_code).toString()); } diff --git a/plugins/org.yocto.sdk.remotetools/src/org/yocto/sdk/remotetools/remote/RemoteApplication.java b/plugins/org.yocto.sdk.remotetools/src/org/yocto/sdk/remotetools/remote/RemoteApplication.java deleted file mode 100644 index c8ae9c5..0000000 --- a/plugins/org.yocto.sdk.remotetools/src/org/yocto/sdk/remotetools/remote/RemoteApplication.java +++ /dev/null @@ -1,155 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2010 Intel Corporation. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * Intel - initial API and implementation - *******************************************************************************/ -package org.yocto.sdk.remotetools.remote; - -import java.io.BufferedReader; -import java.io.IOException; -import java.io.InputStream; -import java.io.InputStreamReader; -import java.io.OutputStream; - -import org.eclipse.core.runtime.IProgressMonitor; -//import org.eclipse.tcf.protocol.IToken; -//import org.eclipse.tcf.services.IStreams; -//import org.eclipse.tcf.services.IProcesses; -//import org.eclipse.tcf.util.TCFTask; -import org.eclipse.rse.core.model.IHost; -import org.yocto.sdk.remotetools.RSEHelper; - -public class RemoteApplication { - - public static final int - STATE_NULL = 0, - STATE_RUNNING = 1, - STATE_EXITED = 2; - - private String directory; - private String command; - private String []environment; - private IHost target; - - private InputStream fInStream; - private OutputStream fOutStream; - private InputStream fErrStream; - private Process remoteShellProcess; - - private int exit_code=0; - private int status=STATE_NULL; - - private String RETURN_VALUE_TAG = "org.yocto.sdk.remotetools.RVTAG"; - private String RETURN_VALUE_CMD = ";echo \"" + RETURN_VALUE_TAG + "$?\""; - - public RemoteApplication(IHost target, - String directory, - String command, - String[] environment) { - assert(target!=null); - this.target = target; - this.directory=directory; - this.command=command; - this.environment=environment; - } - - public int getStatus() - { - return status; - } - - public int getExitCode() - { - return exit_code; - } - - private void reset() { - fInStream=null; - fOutStream=null; - fErrStream=null; - - remoteShellProcess=null; - exit_code=0; - status=STATE_NULL; - } - - public InputStream getInputStream() { - return fInStream; - } - - public OutputStream getOutputStream() { - return fOutStream; - } - - public InputStream getErrStream() { - return fErrStream; - } - - public synchronized void start(String prelaunchCmd, String argument, IProgressMonitor monitor) throws Exception { - if(status==STATE_RUNNING) - return; - - reset(); - remoteShellProcess = RSEHelper.remoteShellExec(this.target, prelaunchCmd, this.command, argument==null?RETURN_VALUE_CMD:argument+RETURN_VALUE_CMD, monitor); - fInStream = remoteShellProcess.getInputStream(); - fOutStream = remoteShellProcess.getOutputStream(); - fErrStream = remoteShellProcess.getErrorStream(); - status=STATE_RUNNING; - } - - public synchronized void terminate() throws Exception { - - if(status != STATE_RUNNING || remoteShellProcess != null) - return; - - remoteShellProcess.destroy(); - reset(); - } - - public int waitFor(IProgressMonitor monitor) throws InterruptedException { - while(status==STATE_RUNNING) { - if(monitor!=null) { - if(monitor.isCanceled()) { - throw new InterruptedException("User Cancelled"); - } - } - - try { - remoteShellProcess.waitFor(); - }catch(InterruptedException e){ - //get the return value - try { - if(fInStream.available() != 0) { - BufferedReader in=new BufferedReader(new InputStreamReader(fInStream)); - String thisline; - int idx; - while((thisline=in.readLine()) != null) { - if(thisline.indexOf(RETURN_VALUE_CMD)==-1) { - idx=thisline.indexOf(RETURN_VALUE_TAG); - if(idx != -1) { - try { - exit_code=(new Integer(thisline.substring(idx+RETURN_VALUE_TAG.length()))).intValue(); - }catch(NumberFormatException e2) { - // - } - break; - } - } - } - } - }catch(IOException e1) { - //do nothing - } - }finally { - status=STATE_EXITED; - } - } - return exit_code; - } -} - diff --git a/plugins/org.yocto.sdk.remotetools/src/org/yocto/sdk/remotetools/remote/RemoteShellExec.java b/plugins/org.yocto.sdk.remotetools/src/org/yocto/sdk/remotetools/remote/RemoteShellExec.java new file mode 100644 index 0000000..bb4859d --- /dev/null +++ b/plugins/org.yocto.sdk.remotetools/src/org/yocto/sdk/remotetools/remote/RemoteShellExec.java @@ -0,0 +1,149 @@ +/******************************************************************************* + * Copyright (c) 2010 Intel Corporation. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * Intel - initial API and implementation + *******************************************************************************/ +package org.yocto.sdk.remotetools.remote; + +import java.io.BufferedReader; +import java.io.IOException; +import java.io.InputStream; +import java.io.InputStreamReader; +import java.io.OutputStream; + +import org.eclipse.core.runtime.IProgressMonitor; +//import org.eclipse.tcf.protocol.IToken; +//import org.eclipse.tcf.services.IStreams; +//import org.eclipse.tcf.services.IProcesses; +//import org.eclipse.tcf.util.TCFTask; +import org.eclipse.rse.core.model.IHost; +import org.yocto.sdk.remotetools.RSEHelper; + +public class RemoteShellExec { + + public static final int + STATE_NULL = 0, + STATE_RUNNING = 1, + STATE_EXITED = 2; + + private String command; + private IHost host; + + private InputStream fInStream; + private OutputStream fOutStream; + private InputStream fErrStream; + private Process remoteShellProcess; + + private int exit_code=0; + private int status=STATE_NULL; + + private String RETURN_VALUE_TAG = "org.yocto.sdk.remotetools.RVTAG"; + private String RETURN_VALUE_CMD = ";echo \"" + RETURN_VALUE_TAG + "$?\""; + + public RemoteShellExec(IHost host, String command) { + assert(host != null); + this.host = host; + this.command=command; + } + + public int getStatus() + { + return status; + } + + public int getExitCode() + { + return exit_code; + } + + private void reset() { + fInStream=null; + fOutStream=null; + fErrStream=null; + + remoteShellProcess=null; + exit_code=0; + status=STATE_NULL; + } + + public InputStream getInputStream() { + return fInStream; + } + + public OutputStream getOutputStream() { + return fOutStream; + } + + public InputStream getErrStream() { + return fErrStream; + } + + public synchronized void start(String prelaunchCmd, String argument, IProgressMonitor monitor) throws Exception { + if(status == STATE_RUNNING) + return; + + reset(); + argument = (argument == null ? RETURN_VALUE_CMD : argument + RETURN_VALUE_CMD); + remoteShellProcess = RSEHelper.remoteShellExec(this.host, prelaunchCmd, this.command, argument, monitor); + fInStream = remoteShellProcess.getInputStream(); + fOutStream = remoteShellProcess.getOutputStream(); + fErrStream = remoteShellProcess.getErrorStream(); + status = STATE_RUNNING; + } + + public synchronized void terminate() throws Exception { + + if(status != STATE_RUNNING || remoteShellProcess != null) + return; + + remoteShellProcess.destroy(); + reset(); + } + + public int waitFor(IProgressMonitor monitor) throws InterruptedException { + while(status==STATE_RUNNING) { + if(monitor!=null) { + if(monitor.isCanceled()) { + throw new InterruptedException("User Cancelled"); + } + } + + try { + remoteShellProcess.waitFor(); + }catch(InterruptedException e){ + //get the return value + try { + if(fInStream.available() != 0) { + BufferedReader in=new BufferedReader(new InputStreamReader(fInStream)); + String thisline; + int idx; + while((thisline=in.readLine()) != null) { + if(thisline.indexOf(RETURN_VALUE_CMD)==-1) { + idx=thisline.indexOf(RETURN_VALUE_TAG); + if(idx != -1) { + try { + exit_code=(new Integer(thisline.substring(idx+RETURN_VALUE_TAG.length()))).intValue(); + }catch(NumberFormatException e2) { + // + } + break; + } + } + } + } + }catch(IOException e1) { + //do nothing + } + }finally { + status=STATE_EXITED; + } + } + return exit_code; + } +} + -- 1.7.9.5 _______________________________________________ yocto mailing list yocto@yoctoproject.org https://lists.yoctoproject.org/listinfo/yocto