Author: mona
Date: Thu Aug 8 00:56:31 2013
New Revision: 1511550
URL: http://svn.apache.org/r1511550
Log:
OOZIE-1405 Fix flakey SLA tests (mona)
Modified:
oozie/trunk/core/src/main/java/org/apache/oozie/command/wf/KillXCommand.java
oozie/trunk/core/src/test/java/org/apache/oozie/sla/TestSLAEventGeneration.java
oozie/trunk/release-log.txt
Modified:
oozie/trunk/core/src/main/java/org/apache/oozie/command/wf/KillXCommand.java
URL:
http://svn.apache.org/viewvc/oozie/trunk/core/src/main/java/org/apache/oozie/command/wf/KillXCommand.java?rev=1511550&r1=1511549&r2=1511550&view=diff
==============================================================================
---
oozie/trunk/core/src/main/java/org/apache/oozie/command/wf/KillXCommand.java
(original)
+++
oozie/trunk/core/src/main/java/org/apache/oozie/command/wf/KillXCommand.java
Thu Aug 8 00:56:31 2013
@@ -17,6 +17,7 @@
*/
package org.apache.oozie.command.wf;
+import org.apache.oozie.action.control.ControlNodeActionExecutor;
import org.apache.oozie.client.WorkflowJob;
import org.apache.oozie.client.SLAEvent.SlaAppType;
import org.apache.oozie.client.SLAEvent.Status;
@@ -33,6 +34,7 @@ import org.apache.oozie.executor.jpa.Bul
import org.apache.oozie.executor.jpa.JPAExecutorException;
import org.apache.oozie.executor.jpa.WorkflowActionsGetForJobJPAExecutor;
import org.apache.oozie.executor.jpa.WorkflowJobGetJPAExecutor;
+import org.apache.oozie.service.ActionService;
import org.apache.oozie.service.EventHandlerService;
import org.apache.oozie.service.JPAService;
import org.apache.oozie.service.Services;
@@ -58,6 +60,7 @@ public class KillXCommand extends Workfl
private String wfId;
private WorkflowJobBean wfJob;
private List<WorkflowActionBean> actionList;
+ private ActionService actionService;
private JPAService jpaService = null;
private List<JsonBean> updateList = new ArrayList<JsonBean>();
private List<JsonBean> insertList = new ArrayList<JsonBean>();
@@ -89,6 +92,7 @@ public class KillXCommand extends Workfl
else {
throw new CommandException(ErrorCode.E0610);
}
+ actionService = Services.get().get(ActionService.class);
}
catch (XException ex) {
throw new CommandException(ex);
@@ -152,7 +156,8 @@ public class KillXCommand extends Workfl
insertList.add(slaEvent);
}
updateList.add(action);
- if (EventHandlerService.isEnabled()) {
+ if (EventHandlerService.isEnabled()
+ && !(actionService.getExecutor(action.getType())
instanceof ControlNodeActionExecutor)) {
generateEvent(action, wfJob.getUser());
}
}
Modified:
oozie/trunk/core/src/test/java/org/apache/oozie/sla/TestSLAEventGeneration.java
URL:
http://svn.apache.org/viewvc/oozie/trunk/core/src/test/java/org/apache/oozie/sla/TestSLAEventGeneration.java?rev=1511550&r1=1511549&r2=1511550&view=diff
==============================================================================
---
oozie/trunk/core/src/test/java/org/apache/oozie/sla/TestSLAEventGeneration.java
(original)
+++
oozie/trunk/core/src/test/java/org/apache/oozie/sla/TestSLAEventGeneration.java
Thu Aug 8 00:56:31 2013
@@ -33,6 +33,7 @@ import org.apache.oozie.client.Coordinat
import org.apache.oozie.client.CoordinatorJob;
import org.apache.oozie.client.OozieClient;
import org.apache.oozie.client.WorkflowJob;
+import org.apache.oozie.client.event.Event;
import org.apache.oozie.client.event.JobEvent;
import org.apache.oozie.client.event.SLAEvent.SLAStatus;
import org.apache.oozie.client.event.SLAEvent.EventStatus;
@@ -70,6 +71,7 @@ import org.junit.Test;
public class TestSLAEventGeneration extends XDataTestCase {
Services services;
+ EventHandlerService ehs = null;
JPAService jpa;
Calendar cal;
String alert_events = "START_MISS,END_MET,END_MISS";
@@ -96,6 +98,8 @@ public class TestSLAEventGeneration exte
super.setUp();
services = new Services();
Configuration conf = services.getConf();
+ String excludeServices[] = {
"org.apache.oozie.service.StatusTransitService" };
+ setClassesToBeExcluded(conf, excludeServices);
conf.set(Services.CONF_SERVICE_EXT_CLASSES,
EventHandlerService.class.getName() + "," +
SLAService.class.getName());
conf.setClass(EventHandlerService.CONF_LISTENERS,
SLAJobEventListener.class, JobEventListener.class);
@@ -104,6 +108,7 @@ public class TestSLAEventGeneration exte
conf.setInt(EventHandlerService.CONF_BATCH_SIZE, 1);
services.init();
jpa = services.get(JPAService.class);
+ ehs = services.get(EventHandlerService.class);
cal = Calendar.getInstance();
cleanUpDBTables();
}
@@ -122,7 +127,6 @@ public class TestSLAEventGeneration exte
*/
@Test
public void testWorkflowJobSLANew() throws Exception {
- EventHandlerService ehs = services.get(EventHandlerService.class);
assertNotNull(ehs);
SLAService slas = services.get(SLAService.class);
assertNotNull(slas);
@@ -133,7 +137,7 @@ public class TestSLAEventGeneration exte
Configuration conf = new XConfiguration();
conf.set(OozieClient.APP_PATH, appPath.toString());
conf.set(OozieClient.USER_NAME, getTestUser());
- _testWorkflowJobCommands(conf, ehs, slas, true);
+ _testWorkflowJobCommands(conf, slas, true);
}
/**
@@ -143,7 +147,6 @@ public class TestSLAEventGeneration exte
*/
@Test
public void testWorkflowJobSLARerun() throws Exception {
- EventHandlerService ehs = services.get(EventHandlerService.class);
SLAService slas = services.get(SLAService.class);
String wfXml = IOUtils.getResourceAsString("wf-job-sla.xml", -1);
@@ -315,7 +318,6 @@ public class TestSLAEventGeneration exte
@Test
public void testSLASchema1BackwardCompatibility() throws Exception {
- EventHandlerService ehs = services.get(EventHandlerService.class);
assertNotNull(ehs);
SLAService slas = services.get(SLAService.class);
assertNotNull(slas);
@@ -330,7 +332,7 @@ public class TestSLAEventGeneration exte
Date nominal = cal.getTime();
String nominalTime = DateUtils.formatDateOozieTZ(nominal);
conf.set("nominal_time", nominalTime);
- _testWorkflowJobCommands(conf, ehs, slas, false);
+ _testWorkflowJobCommands(conf, slas, false);
}
/**
@@ -340,7 +342,6 @@ public class TestSLAEventGeneration exte
*/
@Test
public void testCoordinatorActionCommands() throws Exception {
- EventHandlerService ehs = services.get(EventHandlerService.class);
// reduce noise from WF Job events (also default) by setting it to only
// coord action
ehs.setAppTypes(new HashSet<String>(Arrays.asList(new String[] {
"coordinator_action" })));
@@ -387,9 +388,8 @@ public class TestSLAEventGeneration exte
assertEquals(30 * 60 * 1000, slaEvent.getExpectedDuration());
assertEquals(alert_events, slaEvent.getAlertEvents());
waitForEventGeneration(200);
- ehs.getEventQueue().clear(); //clear the coord-action WAITING event
generated
slas.runSLAWorker();
- slaEvent = (SLACalcStatus) ehs.getEventQueue().poll();
+ slaEvent = skipToSLAEvent();
assertEquals(SLAStatus.NOT_STARTED, slaEvent.getSLAStatus());
assertEquals(EventStatus.START_MISS, slaEvent.getEventStatus());
@@ -401,7 +401,7 @@ public class TestSLAEventGeneration exte
slaEvent = slas.getSLACalculator().get(actionId);
slaEvent.setEventProcessed(0); //resetting for testing sla event
ehs.new EventWorker().run();
- slaEvent = (SLACalcStatus) ehs.getEventQueue().poll();
+ slaEvent = skipToSLAEvent();
assertEquals(actionId, slaEvent.getId());
assertNotNull(slaEvent.getActualStart());
assertEquals(SLAStatus.IN_PROCESS, slaEvent.getSLAStatus());
@@ -415,7 +415,7 @@ public class TestSLAEventGeneration exte
waitForEventGeneration(300);
slaEvent = (SLACalcStatus) ehs.getEventQueue().poll();
assertEquals(EventStatus.DURATION_MISS, slaEvent.getEventStatus());
- slaEvent = (SLACalcStatus) ehs.getEventQueue().poll();
+ slaEvent = skipToSLAEvent();
assertEquals(actionId, slaEvent.getId());
assertNotNull(slaEvent.getActualEnd());
assertEquals(EventStatus.END_MISS, slaEvent.getEventStatus());
@@ -430,7 +430,6 @@ public class TestSLAEventGeneration exte
* @throws Exception
*/
public void testFailureAndMissEventsOnKill() throws Exception {
- EventHandlerService ehs = services.get(EventHandlerService.class);
assertEquals(0, ehs.getEventQueue().size());
// CASE 1: Coord Job status - RUNNING (similar to
RunningWithError,Paused and PausedWithError for
// this test's purpose)
@@ -494,7 +493,6 @@ public class TestSLAEventGeneration exte
}
private void waitForEventGeneration(int wait) {
- final EventHandlerService ehs =
Services.get().get(EventHandlerService.class);
waitFor(wait, new Predicate() {
@Override
public boolean evaluate() throws Exception {
@@ -503,7 +501,15 @@ public class TestSLAEventGeneration exte
});
}
- private void _testWorkflowJobCommands(Configuration conf,
EventHandlerService ehs, SLAService slas, boolean isNew)
+ private SLACalcStatus skipToSLAEvent() {
+ Event someEvent;
+ do {
+ someEvent = ehs.getEventQueue().poll();
+ } while (!(someEvent instanceof SLACalcStatus));
+ return (SLACalcStatus) someEvent;
+ }
+
+ private void _testWorkflowJobCommands(Configuration conf, SLAService slas,
boolean isNew)
throws Exception {
cal.setTime(new Date());
cal.add(Calendar.MINUTE, -20); // for start_miss
Modified: oozie/trunk/release-log.txt
URL:
http://svn.apache.org/viewvc/oozie/trunk/release-log.txt?rev=1511550&r1=1511549&r2=1511550&view=diff
==============================================================================
--- oozie/trunk/release-log.txt (original)
+++ oozie/trunk/release-log.txt Thu Aug 8 00:56:31 2013
@@ -10,6 +10,7 @@ OOZIE-1440 Build fails in certain enviro
-- Oozie 4.0.0 release
+OOZIE-1405 Fix flakey SLA tests (mona)
OOZIE-1480 Web-console Workflow Job Info popup should display parent-id field
and no empty Nominal time field (mona)
OOZIE-1481 Getting a coordinator job info with len=0 should return 0 actions
(rohini)
OOZIE-1484 Error in DB upgrade when error message exceeds 4K characters (ryota)