You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@airavata.apache.org by sh...@apache.org on 2016/09/09 20:15:33 UTC
airavata git commit: fixed nonASCII in pbs email content
Repository: airavata
Updated Branches:
refs/heads/develop a0c9be8e2 -> 9c02fe056
fixed nonASCII in pbs email content
Project: http://git-wip-us.apache.org/repos/asf/airavata/repo
Commit: http://git-wip-us.apache.org/repos/asf/airavata/commit/9c02fe05
Tree: http://git-wip-us.apache.org/repos/asf/airavata/tree/9c02fe05
Diff: http://git-wip-us.apache.org/repos/asf/airavata/diff/9c02fe05
Branch: refs/heads/develop
Commit: 9c02fe056abad5e0e737afd44e4d6c108189b119
Parents: a0c9be8
Author: Shameera Rathnayaka <sh...@gmail.com>
Authored: Fri Sep 9 16:15:11 2016 -0400
Committer: Shameera Rathnayaka <sh...@gmail.com>
Committed: Fri Sep 9 16:15:24 2016 -0400
----------------------------------------------------------------------
.../monitor/email/parser/LSFEmailParser.java | 27 +++++++++-------
.../monitor/email/parser/PBSEmailParser.java | 29 +++++++++--------
.../monitor/email/parser/SLURMEmailParser.java | 8 +++--
.../monitor/email/parser/UGEEmailParser.java | 6 +++-
.../email/parser/PBSEmailParserTest.java | 33 ++++++++++++++++++++
5 files changed, 75 insertions(+), 28 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/airavata/blob/9c02fe05/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/monitor/email/parser/LSFEmailParser.java
----------------------------------------------------------------------
diff --git a/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/monitor/email/parser/LSFEmailParser.java b/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/monitor/email/parser/LSFEmailParser.java
index d6e396e..a2dd17e 100644
--- a/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/monitor/email/parser/LSFEmailParser.java
+++ b/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/monitor/email/parser/LSFEmailParser.java
@@ -44,23 +44,28 @@ public class LSFEmailParser implements EmailParser {
public JobStatusResult parseEmail(Message message) throws MessagingException, AiravataException {
JobStatusResult jobStatusResult = new JobStatusResult();
try {
- String content = ((String) message.getContent());
- Pattern pattern = Pattern.compile(LONESTAR_REGEX);
- Matcher matcher = pattern.matcher(content);
- if (matcher.find()) {
- jobStatusResult.setJobId(matcher.group(JOBID));
- String status = matcher.group(STATUS);
- jobStatusResult.setState(getJobState(status, content));
- return jobStatusResult;
- } else {
- log.error("[EJM]: No matched found for content => \n" + content);
- }
+ parseContent(((String) message.getContent()), jobStatusResult);
} catch (IOException e) {
throw new AiravataException("i[EJM]: Error while reading content of the email message");
}
return jobStatusResult;
}
+ private boolean parseContent(String content, JobStatusResult jobStatusResult) throws IOException, MessagingException {
+ content = content.replaceAll("[^\\x00-\\x7F]", "");
+ Pattern pattern = Pattern.compile(LONESTAR_REGEX);
+ Matcher matcher = pattern.matcher(content);
+ if (matcher.find()) {
+ jobStatusResult.setJobId(matcher.group(JOBID));
+ String status = matcher.group(STATUS);
+ jobStatusResult.setState(getJobState(status, content));
+ return true;
+ } else {
+ log.error("[EJM]: No matched found for content => \n" + content);
+ }
+ return false;
+ }
+
private JobState getJobState(String status, String content) {
switch (status) {
case "Aborted":
http://git-wip-us.apache.org/repos/asf/airavata/blob/9c02fe05/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/monitor/email/parser/PBSEmailParser.java
----------------------------------------------------------------------
diff --git a/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/monitor/email/parser/PBSEmailParser.java b/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/monitor/email/parser/PBSEmailParser.java
index 3879daf..9e56d2f 100644
--- a/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/monitor/email/parser/PBSEmailParser.java
+++ b/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/monitor/email/parser/PBSEmailParser.java
@@ -39,7 +39,7 @@ public class PBSEmailParser implements EmailParser {
public static final String EXECUTION_TERMINATED = "Execution terminated";
public static final String ABORTED_BY_PBS_SERVER = "Aborted by PBS Server";
- static final String REGEX = "[a-zA-Z ]*:[ ]*(?<" + JOBID + ">[a-zA-Z0-9-\\.]*)\\s+[a-zA-Z ]*:[ ]*(?<" +
+ static final String REGEX = "[a-zA-Z ]*:[ ]*(?<" + JOBID + ">[a-zA-Z0-9-_\\.]*)\\s+[a-zA-Z ]*:[ ]*(?<" +
JOBNAME + ">[a-zA-Z0-9-\\.]*)\\s[\\S|\\s]*(?<" + STATUS + ">" + BEGUN_EXECUTION + "|" +
EXECUTION_TERMINATED + "|" + ABORTED_BY_PBS_SERVER + ")";
@@ -51,24 +51,27 @@ public class PBSEmailParser implements EmailParser {
// log.info("Parsing -> " + message.getSubject());
try {
String content = ((String) message.getContent());
- Pattern pattern = Pattern.compile(REGEX);
- Matcher matcher = pattern.matcher(content);
- if (matcher.find()) {
- jobStatusResult.setJobId(matcher.group(JOBID));
- jobStatusResult.setJobName(matcher.group(JOBNAME));
- String statusLine = matcher.group(STATUS);
- jobStatusResult.setState(getJobState(statusLine, content));
- return jobStatusResult;
- } else {
- log.error("[EJM]: No matched found for content => \n" + content);
- }
-
+ parseContent(content, jobStatusResult);
} catch (IOException e) {
throw new AiravataException("[EJM]: Error while reading content of the email message");
}
return jobStatusResult;
}
+ void parseContent(String content, JobStatusResult jobStatusResult) throws MessagingException, AiravataException {
+ content = content.replaceAll("[^\\x00-\\x7F]", "");
+ Pattern pattern = Pattern.compile(REGEX);
+ Matcher matcher = pattern.matcher(content);
+ if (matcher.find()) {
+ jobStatusResult.setJobId(matcher.group(JOBID));
+ jobStatusResult.setJobName(matcher.group(JOBNAME));
+ String statusLine = matcher.group(STATUS);
+ jobStatusResult.setState(getJobState(statusLine, content));
+ } else {
+ log.error("[EJM]: No matched found for content => \n" + content);
+ }
+ }
+
private JobState getJobState(String statusLine, String content) {
switch (statusLine) {
case BEGUN_EXECUTION:
http://git-wip-us.apache.org/repos/asf/airavata/blob/9c02fe05/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/monitor/email/parser/SLURMEmailParser.java
----------------------------------------------------------------------
diff --git a/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/monitor/email/parser/SLURMEmailParser.java b/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/monitor/email/parser/SLURMEmailParser.java
index 792b24b..70985c2 100644
--- a/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/monitor/email/parser/SLURMEmailParser.java
+++ b/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/monitor/email/parser/SLURMEmailParser.java
@@ -49,17 +49,19 @@ public class SLURMEmailParser implements EmailParser {
@Override
public JobStatusResult parseEmail(Message message) throws MessagingException, AiravataException{
JobStatusResult jobStatusResult = new JobStatusResult();
- String subject = message.getSubject();
+ parseSubject(message.getSubject(), jobStatusResult);
+ return jobStatusResult;
+ }
+
+ private void parseSubject(String subject, JobStatusResult jobStatusResult) throws MessagingException {
Matcher matcher = pattern.matcher(subject);
if (matcher.find()) {
jobStatusResult.setJobId(matcher.group(JOBID));
jobStatusResult.setJobName(matcher.group(JOBNAME));
jobStatusResult.setState(getJobState(matcher.group(STATUS), subject));
- return jobStatusResult;
} else {
log.error("[EJM]: No matched found for subject -> " + subject);
}
- return jobStatusResult;
}
private JobState getJobState(String state, String subject) {
http://git-wip-us.apache.org/repos/asf/airavata/blob/9c02fe05/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/monitor/email/parser/UGEEmailParser.java
----------------------------------------------------------------------
diff --git a/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/monitor/email/parser/UGEEmailParser.java b/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/monitor/email/parser/UGEEmailParser.java
index 266456e..e43c900 100644
--- a/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/monitor/email/parser/UGEEmailParser.java
+++ b/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/monitor/email/parser/UGEEmailParser.java
@@ -49,6 +49,11 @@ public class UGEEmailParser implements EmailParser {
public JobStatusResult parseEmail(Message message) throws MessagingException, AiravataException {
JobStatusResult jobStatusResult = new JobStatusResult();
+ parseContent(message, jobStatusResult);
+ return jobStatusResult;
+ }
+
+ private void parseContent(Message message, JobStatusResult jobStatusResult) throws MessagingException, AiravataException {
String subject = message.getSubject();
Pattern pattern = Pattern.compile(REGEX);
Matcher matcher = pattern.matcher(subject);
@@ -64,7 +69,6 @@ public class UGEEmailParser implements EmailParser {
} catch (IOException e) {
throw new AiravataException("[EJM]: Error while reading content of the email message");
}
- return jobStatusResult;
}
private JobState getJobState(String status, String content) {
http://git-wip-us.apache.org/repos/asf/airavata/blob/9c02fe05/modules/gfac/gfac-impl/src/test/java/org/apache/airavata/gfac/monitor/email/parser/PBSEmailParserTest.java
----------------------------------------------------------------------
diff --git a/modules/gfac/gfac-impl/src/test/java/org/apache/airavata/gfac/monitor/email/parser/PBSEmailParserTest.java b/modules/gfac/gfac-impl/src/test/java/org/apache/airavata/gfac/monitor/email/parser/PBSEmailParserTest.java
new file mode 100644
index 0000000..36650b4
--- /dev/null
+++ b/modules/gfac/gfac-impl/src/test/java/org/apache/airavata/gfac/monitor/email/parser/PBSEmailParserTest.java
@@ -0,0 +1,33 @@
+package org.apache.airavata.gfac.monitor.email.parser;
+
+import org.apache.airavata.gfac.core.monitor.JobStatusResult;
+import org.apache.airavata.model.status.JobState;
+import org.junit.Assert;
+import org.junit.Before;
+import org.junit.BeforeClass;
+import org.junit.Test;
+
+import static org.junit.Assert.*;
+
+/**
+ * Created by syodage on 9/9/16.
+ */
+public class PBSEmailParserTest {
+
+ @Test
+ public void parseContent_non_ASCII() throws Exception {
+ PBSEmailParser parser = new PBSEmailParser();
+ // test for non ascii contents
+ String nonascii = "PBS Job Id: 33.torque_server\n" +
+ "Job Name:\u2002\u2002 A2085606929\n" +
+ "Exec host:\u2002\u2002compute-0/0-9\n" +
+ "Begun execution";
+ JobStatusResult jsr = new JobStatusResult();
+ parser.parseContent(nonascii, jsr);
+ Assert.assertNotNull(jsr.getJobId());
+ Assert.assertEquals("33.torque_server", jsr.getJobId());
+ Assert.assertEquals("A2085606929", jsr.getJobName());
+ Assert.assertEquals(JobState.ACTIVE, jsr.getState());
+ }
+
+}
\ No newline at end of file