/** Tests the publish/subscribe mechanisms implemented in the {@link TaskEventHandler}. */
  @Test
  public void testEventNotificationManager() {

    final TaskEventHandler evm = new TaskEventHandler();
    final TestEventListener listener = new TestEventListener();

    evm.subscribe(listener, StringTaskEvent.class);

    final StringTaskEvent stringTaskEvent1 = new StringTaskEvent("Test 1");
    final StringTaskEvent stringTaskEvent2 = new StringTaskEvent("Test 2");

    evm.publish(stringTaskEvent1);
    evm.publish(new IntegerTaskEvent(5));

    assertNotNull(listener.getLastReceivedEvent());
    StringTaskEvent receivedStringEvent = (StringTaskEvent) listener.getLastReceivedEvent();
    assertEquals(stringTaskEvent1, receivedStringEvent);

    evm.unsubscribe(listener, StringTaskEvent.class);

    evm.publish(stringTaskEvent2);

    assertNotNull(listener.getLastReceivedEvent());
    receivedStringEvent = (StringTaskEvent) listener.getLastReceivedEvent();
    assertEquals(stringTaskEvent1, receivedStringEvent);
  }
 public void fireEvent(EventObject o) {
   Iterator it = listeners.iterator();
   while (it.hasNext()) {
     TestEventListener l = (TestEventListener) it.next();
     l.handleEvent(o);
   }
 }
  @Test
  public void testRemoveSession() throws Exception {
    String contextPath = "";
    String servletMapping = "/server";
    int scavengePeriod = 3;
    AbstractTestServer server = createServer(0, 1, scavengePeriod);
    ServletContextHandler context = server.addContext(contextPath);
    context.addServlet(TestServlet.class, servletMapping);
    TestEventListener testListener = new TestEventListener();
    context.getSessionHandler().addEventListener(testListener);
    AbstractSessionManager m =
        (AbstractSessionManager) context.getSessionHandler().getSessionManager();
    try {
      server.start();
      int port = server.getPort();

      HttpClient client = new HttpClient();
      client.start();
      try {
        ContentResponse response =
            client.GET(
                "http://localhost:" + port + contextPath + servletMapping + "?action=create");
        assertEquals(HttpServletResponse.SC_OK, response.getStatus());
        String sessionCookie = response.getHeaders().get("Set-Cookie");
        assertTrue(sessionCookie != null);
        // Mangle the cookie, replacing Path with $Path, etc.
        sessionCookie = sessionCookie.replaceFirst("(\\W)(P|p)ath=", "$1\\$Path=");
        // ensure sessionCreated listener is called
        assertTrue(testListener.isCreated());
        assertEquals(1, m.getSessions());
        assertEquals(1, m.getSessionsMax());
        assertEquals(1, m.getSessionsTotal());

        // now delete the session
        Request request =
            client.newRequest(
                "http://localhost:" + port + contextPath + servletMapping + "?action=delete");
        request.header("Cookie", sessionCookie);
        response = request.send();
        assertEquals(HttpServletResponse.SC_OK, response.getStatus());
        // ensure sessionDestroyed listener is called
        assertTrue(testListener.isDestroyed());
        assertEquals(0, m.getSessions());
        assertEquals(1, m.getSessionsMax());
        assertEquals(1, m.getSessionsTotal());

        // The session is not there anymore, even if we present an old cookie
        request =
            client.newRequest(
                "http://localhost:" + port + contextPath + servletMapping + "?action=check");
        request.header("Cookie", sessionCookie);
        response = request.send();
        assertEquals(HttpServletResponse.SC_OK, response.getStatus());
        assertEquals(0, m.getSessions());
        assertEquals(1, m.getSessionsMax());
        assertEquals(1, m.getSessionsTotal());
      } finally {
        client.stop();
      }
    } finally {
      server.stop();
    }
  }
  @Test
  @Deployment(
      resources = {"org/activiti/cdi/test/impl/event/MultiInstanceServiceTaskEvent.bpmn20.xml"})
  public void testReceiveAll() {

    TestEventListener listenerBean = getBeanInstance(TestEventListener.class);
    listenerBean.reset();

    assertEquals(0, listenerBean.getStartActivityService1WithLoopCounter());
    assertEquals(0, listenerBean.getEndActivityService1());
    assertEquals(0, listenerBean.getStartActivityService2WithLoopCounter());
    assertEquals(0, listenerBean.getEndActivityService2());

    // start the process
    runtimeService.startProcessInstanceByKey("process1");

    // assert
    assertEquals(1, listenerBean.getTakeTransitiont1());
    assertEquals(1, listenerBean.getTakeTransitiont2());
    assertEquals(1, listenerBean.getTakeTransitiont3());
    assertEquals(2, listenerBean.getStartActivityService1WithLoopCounter());
    assertEquals(3, listenerBean.getStartActivityService2WithLoopCounter());
    assertEquals(2, listenerBean.getEndActivityService1());
    // Uncomment the following line once ACT-1271 is also solved for parallel multi-instance tasks
    // assertEquals(3, listenerBean.getEndActivityService2());
  }
Beispiel #5
0
 private void sendPreTestNotification() throws Exception {
   for (TestEventListener eventListener : eventListeners) {
     eventListener.notifyPreTest(this, data);
   }
 }