[yocto] [PATCH 7/8] Refactor powertop, oprofile and ust2 models to remote duplicate code
Ioana Grigoropol
ioanax.grigoropol at intel.com
Tue Apr 30 07:36:30 PDT 2013
- each of the powertop, oprofile and ust2 commands runs a command remote using RemoteShellExec(former RemoteApplication) following these steps:
- start the command
- wait to terminate
- terminate the command
- check exit code
- in order to remove duplicate code in these models
-> move this code stub to BaseModel in the method runRemoteShellExec
-> customize the retrieval of remote file after running the command (special case for ust2)
Signed-off-by: Ioana Grigoropol <ioanax.grigoropol at intel.com>
---
.../yocto/sdk/remotetools/actions/BaseModel.java | 19 +++++++++
.../sdk/remotetools/actions/OprofileModel.java | 32 +--------------
.../sdk/remotetools/actions/PowertopModel.java | 20 +---------
.../yocto/sdk/remotetools/actions/Ust2Model.java | 41 +++++++-------------
4 files changed, 37 insertions(+), 75 deletions(-)
diff --git a/plugins/org.yocto.sdk.remotetools/src/org/yocto/sdk/remotetools/actions/BaseModel.java b/plugins/org.yocto.sdk.remotetools/src/org/yocto/sdk/remotetools/actions/BaseModel.java
index 51ab09b..d7a201e 100644
--- a/plugins/org.yocto.sdk.remotetools/src/org/yocto/sdk/remotetools/actions/BaseModel.java
+++ b/plugins/org.yocto.sdk.remotetools/src/org/yocto/sdk/remotetools/actions/BaseModel.java
@@ -10,6 +10,8 @@
*******************************************************************************/
package org.yocto.sdk.remotetools.actions;
+import java.io.IOException;
+import java.io.InputStream;
import java.lang.reflect.InvocationTargetException;
import org.eclipse.core.runtime.IProgressMonitor;
@@ -17,6 +19,7 @@ import org.eclipse.core.runtime.SubProgressMonitor;
import org.eclipse.jface.operation.IRunnableWithProgress;
import org.eclipse.rse.core.model.IHost;
import org.yocto.sdk.remotetools.RSEHelper;
+import org.yocto.sdk.remotetools.remote.RemoteShellExec;
abstract public class BaseModel implements IRunnableWithProgress {
protected IHost host;
@@ -41,6 +44,7 @@ abstract public class BaseModel implements IRunnableWithProgress {
private static final String POST_PROCESS_MSG = "Finishing ";
private static final String CLEAN_MSG = "Cleaning ";
private static final String DOTS = "...";
+ private static final String FAILED_ERR_MSG = " failed with exit code ";
public void preProcess(IProgressMonitor monitor) throws InvocationTargetException, InterruptedException{
//upload script to remote
@@ -100,4 +104,19 @@ abstract public class BaseModel implements IRunnableWithProgress {
protected void getDataFile(IProgressMonitor monitor) throws Exception {
RSEHelper.getRemoteFile( host, localFile, remoteFile, monitor);
}
+ protected void runRemoteShellExec(IProgressMonitor monitor, String args, boolean cancelable) throws Exception {
+ try {
+ RemoteShellExec exec = new RemoteShellExec(host, remoteExec);
+ exec.start(null, args, monitor);
+ monitor.worked(1);
+ checkTerminate(exec.getInputStream());
+ int exit_code = exec.waitFor(cancelable ? monitor : null);
+ exec.terminate();
+ if(exit_code != 0)
+ throw new Exception(taskName + FAILED_ERR_MSG + new Integer(exit_code).toString());
+ } finally {
+ monitor.done();
+ }
+ }
+ protected void checkTerminate(InputStream inputStream) throws IOException {}
}
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 d11c343..6e8d044 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,6 @@ 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.RemoteShellExec;
public class OprofileModel extends BaseModel {
@@ -44,40 +43,13 @@ public class OprofileModel extends BaseModel {
}
private void startServer(IProgressMonitor monitor) throws Exception {
- int exit_code;
- RemoteShellExec exec = new RemoteShellExec(host, remoteExec);
String args="start -d oprofile-server";
-
- try {
- monitor.beginTask("Starting oprofile-server", 2);
- //starting oprofile-server
- exec.start(null,args,monitor);
- monitor.worked(1);
-
- 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());
- }
- }finally {
- monitor.done();
- }
+ runRemoteShellExec(monitor, args, true);
}
private void stopServer(IProgressMonitor monitor) throws Exception {
-
- RemoteShellExec exec = new RemoteShellExec(host, remoteExec);
String args = "stop -d oprofile-server";
- try {
- monitor.beginTask("Stopping oprofile-server", 2);
- exec.start(null, args, monitor);
- monitor.worked(1);
- //no cancel for stop server
- exec.waitFor(null);
- exec.terminate();
- }finally {
- monitor.done();
- }
+ runRemoteShellExec(monitor, args, false);
}
private String getSearchPath()
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 37af342..f2a1f99 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
@@ -13,7 +13,6 @@ package org.yocto.sdk.remotetools.actions;
import java.io.File;
import java.lang.reflect.InvocationTargetException;
import java.text.SimpleDateFormat;
-import java.util.ArrayList;
import java.util.Calendar;
import org.eclipse.core.runtime.IProgressMonitor;
@@ -23,8 +22,6 @@ import org.eclipse.swt.widgets.Display;
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.RemoteShellExec;
import org.yocto.sdk.remotetools.views.BaseFileView;
public class PowertopModel extends BaseModel {
@@ -58,8 +55,6 @@ public class PowertopModel extends BaseModel {
}
private void generateData(IProgressMonitor monitor) throws Exception {
- int exit_code;
- 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);
@@ -67,20 +62,7 @@ public class PowertopModel extends BaseModel {
String args = "start -l " + remoteFile + " powertop -d -t " + time.toString();
if(showpid)
args += " -p";
-
- try {
- monitor.beginTask("Starting powertop", 2);
- //starting oprofile-server
- exec.start(null,args,monitor);
- monitor.worked(1);
- 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 {
- monitor.done();
- }
+ runRemoteShellExec(monitor, args, true);
}
@Override
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 ce58546..b9eca2f 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
@@ -12,6 +12,8 @@ package org.yocto.sdk.remotetools.actions;
import java.io.BufferedReader;
import java.io.File;
+import java.io.IOException;
+import java.io.InputStream;
import java.io.InputStreamReader;
import java.lang.reflect.InvocationTargetException;
@@ -26,7 +28,6 @@ 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.RemoteShellExec;
public class Ust2Model extends BaseModel {
@@ -55,33 +56,21 @@ public class Ust2Model extends BaseModel {
this.window = window;
}
- private void generateData(IProgressMonitor monitor) throws Exception {
- int exit_code;
- RemoteShellExec exec = new RemoteShellExec(host, remoteExec);
-
- try {
- String temp;
- int idx;
- monitor.beginTask("Getting remote ust2 trace", 2);
- //starting usttrace
- exec.start(null, trace_loc, monitor);
- monitor.worked(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 = 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());
+ @Override
+ protected void checkTerminate(InputStream is) throws IOException {
+ String temp;
+ BufferedReader in = new BufferedReader(new InputStreamReader(is));
+ while((temp = in.readLine())!=null) {
+ int idx = temp.indexOf(DATAFILE_PREFIX);
+ if(idx != -1) {
+ remoteFile = temp.substring(idx + DATAFILE_PREFIX.length());
+ break;
}
- }finally {
- monitor.done();
}
+ }
+
+ private void generateData(IProgressMonitor monitor) throws Exception {
+ runRemoteShellExec(monitor, trace_loc, true);
if(remoteFile == null)
throw new Exception("Ust: null remote data file");
if(remoteFile.endsWith(REMOTE_FILE_SUFFIX)==false)
--
1.7.9.5
More information about the yocto
mailing list