Author: cos Date: Tue May 25 23:00:40 2010 New Revision: 948242 URL: http://svn.apache.org/viewvc?rev=948242&view=rev Log: HADOOP-6777. Implement a functionality for suspend and resume a process. Contributed by Vinay Thota.
Modified: hadoop/common/trunk/CHANGES.txt hadoop/common/trunk/src/test/system/aop/org/apache/hadoop/test/system/DaemonProtocolAspect.aj hadoop/common/trunk/src/test/system/java/org/apache/hadoop/test/system/DaemonProtocol.java Modified: hadoop/common/trunk/CHANGES.txt URL: http://svn.apache.org/viewvc/hadoop/common/trunk/CHANGES.txt?rev=948242&r1=948241&r2=948242&view=diff ============================================================================== --- hadoop/common/trunk/CHANGES.txt (original) +++ hadoop/common/trunk/CHANGES.txt Tue May 25 23:00:40 2010 @@ -336,6 +336,9 @@ Release 0.21.0 - Unreleased IMPROVEMENTS + HADOOP-6777. Implement a functionality for suspend and resume a process. + (Vinay Thota via cos) + HADOOP-6772. Utilities for system tests specific. (Vinay Thota via cos) HADOOP-6771. Herriot's artifact id for Maven deployment should be set to Modified: hadoop/common/trunk/src/test/system/aop/org/apache/hadoop/test/system/DaemonProtocolAspect.aj URL: http://svn.apache.org/viewvc/hadoop/common/trunk/src/test/system/aop/org/apache/hadoop/test/system/DaemonProtocolAspect.aj?rev=948242&r1=948241&r2=948242&view=diff ============================================================================== --- hadoop/common/trunk/src/test/system/aop/org/apache/hadoop/test/system/DaemonProtocolAspect.aj (original) +++ hadoop/common/trunk/src/test/system/aop/org/apache/hadoop/test/system/DaemonProtocolAspect.aj Tue May 25 23:00:40 2010 @@ -31,6 +31,7 @@ import org.apache.commons.logging.LogFac import org.apache.hadoop.io.Writable; import org.apache.hadoop.security.UserGroupInformation; import org.apache.hadoop.util.Shell.ShellCommandExecutor; +import org.apache.hadoop.util.Shell; import org.apache.hadoop.fs.FileStatus; import org.apache.hadoop.fs.FileSystem; import org.apache.hadoop.fs.Path; @@ -274,6 +275,56 @@ public aspect DaemonProtocolAspect { return Integer.parseInt(output.replaceAll("\n", "").trim()); } + /** + * This method is used for suspending the process. + * @param pid process id + * @throws IOException if an I/O error occurs. + * @return true if process is suspended otherwise false. + */ + public boolean DaemonProtocol.suspendProcess(String pid) throws IOException { + String suspendCmd = getDaemonConf().get("test.system.hdrc.suspend.cmd", + "kill -SIGSTOP"); + String [] command = {"bash", "-c", suspendCmd + " " + pid}; + ShellCommandExecutor shexec = new ShellCommandExecutor(command); + try { + shexec.execute(); + } catch (Shell.ExitCodeException e) { + LOG.warn("suspended process throws an exitcode " + + "exception for not being suspended the given process id."); + return false; + } + LOG.info("The suspend process command is :" + + shexec.toString() + + " and the output for the command is " + + shexec.getOutput()); + return true; + } + + /** + * This method is used for resuming the process + * @param pid process id of suspended process. + * @throws IOException if an I/O error occurs. + * @return true if suspeneded process is resumed otherwise false. + */ + public boolean DaemonProtocol.resumeProcess(String pid) throws IOException { + String resumeCmd = getDaemonConf().get("test.system.hdrc.resume.cmd", + "kill -SIGCONT"); + String [] command = {"bash", "-c", resumeCmd + " " + pid}; + ShellCommandExecutor shexec = new ShellCommandExecutor(command); + try { + shexec.execute(); + } catch(Shell.ExitCodeException e) { + LOG.warn("Resume process throws an exitcode " + + "exception for not being resumed the given process id."); + return false; + } + LOG.info("The resume process command is :" + + shexec.toString() + + " and the output for the command is " + + shexec.getOutput()); + return true; + } + private String DaemonProtocol.user = null; public String DaemonProtocol.getDaemonUser() { Modified: hadoop/common/trunk/src/test/system/java/org/apache/hadoop/test/system/DaemonProtocol.java URL: http://svn.apache.org/viewvc/hadoop/common/trunk/src/test/system/java/org/apache/hadoop/test/system/DaemonProtocol.java?rev=948242&r1=948241&r2=948242&view=diff ============================================================================== --- hadoop/common/trunk/src/test/system/java/org/apache/hadoop/test/system/DaemonProtocol.java (original) +++ hadoop/common/trunk/src/test/system/java/org/apache/hadoop/test/system/DaemonProtocol.java Tue May 25 23:00:40 2010 @@ -162,4 +162,20 @@ public interface DaemonProtocol extends * @throws IOException in case of errors */ String getDaemonUser() throws IOException; + + /** + * It uses for suspending the process. + * @param pid process id. + * @return true if the process is suspended otherwise false. + * @throws IOException if an I/O error occurs. + */ + boolean suspendProcess(String pid) throws IOException; + + /** + * It uses for resuming the suspended process. + * @param pid process id + * @return true if suspended process is resumed otherwise false. + * @throws IOException if an I/O error occurs. + */ + boolean resumeProcess(String pid) throws IOException; }