Examples of PersistentScottyEngine


Examples of de.scoopgmbh.copper.persistent.PersistentScottyEngine

    final int NUMB = 20;
    final String DATA = createTestData(50);
    final ConfigurableApplicationContext context = createContext(dsContext);
    context.getBean(BatchingAuditTrail.class).setMessagePostProcessor(new CompressedBase64PostProcessor());
    cleanDB(context.getBean(DataSource.class));
    final PersistentScottyEngine engine = context.getBean(PersistentScottyEngine.class);
    engine.startup();
    final BackChannelQueue backChannelQueue = context.getBean(BackChannelQueue.class);
    try {
      assertEquals(EngineState.STARTED,engine.getEngineState());

      for (int i=0; i<NUMB; i++) {
        engine.run(PersistentUnitTestWorkflow_NAME, DATA);
      }

      for (int i=0; i<NUMB; i++) {
        WorkflowResult x = backChannelQueue.dequeue(60, TimeUnit.SECONDS);
        assertNotNull(x);
        assertNotNull(x.getResult());
        assertNotNull(x.getResult().toString().length() == DATA.length());
        assertNull(x.getException());
      }
      Thread.sleep(1000);
     
      new RetryingTransaction<Void>(context.getBean(DataSource.class)) {
        @Override
        protected Void execute() throws Exception {
          Statement stmt = createStatement(getConnection());
          ResultSet rs = stmt.executeQuery("select unique message from (select dbms_lob.substr(long_message, 4000, 1 ) message from cop_audit_trail_event) order by 1 asc");
          assertTrue(rs.next());
          //logger.info("\""+new CompressedBase64PostProcessor().deserialize(rs.getString(1))+"\"");
          //System.out.println(new CompressedBase64PostProcessor().deserialize(rs.getString(1)));
          assertEquals("finished", new CompressedBase64PostProcessor().deserialize(rs.getString(1)));
          assertTrue(rs.next());
          assertEquals("foo successfully called", new CompressedBase64PostProcessor().deserialize(rs.getString(1)));
          //System.out.println(new CompressedBase64PostProcessor().deserialize(rs.getString(1)));
          assertFalse(rs.next());
          rs.close();
          stmt.close();
          return null;
        }
      }.run();

    }
    catch(Exception e) {
      logger.error("testCompressedAuditTrail failed",e);
      throw e;
    }
    finally {
      closeContext(context);
    }
    assertEquals(EngineState.STOPPED,engine.getEngineState());
    assertEquals(0,engine.getNumberOfWorkflowInstances());

  }
View Full Code Here

Examples of de.scoopgmbh.copper.persistent.PersistentScottyEngine

  public void testErrorHandlingWithWaitHook(String dsContext) throws Exception {
    assumeFalse(skipTests());
    final ConfigurableApplicationContext context = createContext(dsContext);
    cleanDB(context.getBean(DataSource.class));
    final PersistentScottyEngine engine = context.getBean(PersistentScottyEngine.class);
    try {
      engine.startup();
      final WorkflowInstanceDescr<Serializable> wfInstanceDescr = new WorkflowInstanceDescr<Serializable>("de.scoopgmbh.copper.test.persistent.ErrorWaitHookUnitTestWorkflow");
      wfInstanceDescr.setId(engine.createUUID());
      engine.run(wfInstanceDescr, null);
      Thread.sleep(2500);
      //check
      new RetryingTransaction<Void>(context.getBean(DataSource.class)) {
        @Override
        protected Void execute() throws Exception {
          Statement stmt = createStatement(getConnection());
          ResultSet rs = stmt.executeQuery("select * from cop_workflow_instance_error");
          assertTrue(rs.next());
          assertEquals(wfInstanceDescr.getId(), rs.getString("WORKFLOW_INSTANCE_ID"));
          assertNotNull(rs.getString("EXCEPTION"));
          assertFalse(rs.next());
          rs.close();
          stmt.close();
          return null;
        }
      }.run();
    }
    finally {
      closeContext(context);
    }
    assertEquals(EngineState.STOPPED,engine.getEngineState());
    assertEquals(0,engine.getNumberOfWorkflowInstances());
  }
View Full Code Here

Examples of de.scoopgmbh.copper.persistent.PersistentScottyEngine

  public void testNotifyWithoutEarlyResponseHandling(String dsContext) throws Exception {
    assumeFalse(skipTests());
    logger.info("running testNotifyWithoutEarlyResponseHandling");
    final ConfigurableApplicationContext context = createContext(dsContext);
    cleanDB(context.getBean(DataSource.class));
    final PersistentScottyEngine engine = context.getBean(PersistentScottyEngine.class);
    try {
      engine.startup();
      new RetryingTransaction<Void>(context.getBean(DataSource.class)) {
        @Override
        protected Void execute() throws Exception {
          try {
            Response<?> response = new Response<String>("CID#withEarlyResponse", "TEST", null);
            engine.notify(response, getConnection());
            Statement stmt = createStatement(getConnection());
            ResultSet rs = stmt.executeQuery("select * from cop_response");
            assertTrue(rs.next());
            assertEquals(response.getCorrelationId(), rs.getString("CORRELATION_ID"));
            assertFalse(rs.next());
            getConnection().rollback();

            response = new Response<String>("CID#withoutEarlyResponse", "TEST", null);
            response.setEarlyResponseHandling(false);
            engine.notify(response, getConnection());
            rs = stmt.executeQuery("select * from cop_response");
            assertFalse(rs.next());
            rs.close();
            stmt.close();
            getConnection().rollback();
          }
          catch(Exception e) {
            logger.error("testNotifyWithoutEarlyResponseHandling failed",e);
            throw e;
          }
          return null;
        }
      }.run();
    }
    finally {
      closeContext(context);
    }
    assertEquals(EngineState.STOPPED,engine.getEngineState());
    assertEquals(0,engine.getNumberOfWorkflowInstances());

  }   
View Full Code Here

Examples of de.scoopgmbh.copper.persistent.PersistentScottyEngine

    logger.info("running testMultipleEngines");
    final int NUMB = 50;
    final ConfigurableApplicationContext context = new ClassPathXmlApplicationContext(new String[] {"/CopperTxnPersistentWorkflowTest/multiengine-oracle-unittest-context.xml"});
    cleanDB(context.getBean(DataSource.class));
    final PersistentScottyEngine engineRed = context.getBean("persistent.engine.red",PersistentScottyEngine.class);
    final PersistentScottyEngine engineBlue = context.getBean("persistent.engine.blue",PersistentScottyEngine.class);
    final BackChannelQueue backChannelQueue = context.getBean(BackChannelQueue.class);
    engineRed.startup();
    engineBlue.startup();
    try {
      assertEquals(EngineState.STARTED,engineRed.getEngineState());
      assertEquals(EngineState.STARTED,engineBlue.getEngineState());

      for (int i=0; i<NUMB; i++) {
        ProcessingEngine engine = i % 2 == 0 ? engineRed : engineBlue;
        engine.run(PersistentUnitTestWorkflow_NAME,null);
      }

      int x=0;
      long startTS = System.currentTimeMillis();
      while (x < NUMB && startTS+60000 > System.currentTimeMillis()) {
        WorkflowResult wfr = backChannelQueue.poll();
        if (wfr != null) {
          assertNull(wfr.getResult());
          assertNull(wfr.getException());
          x++;
        }
        else {
          Thread.sleep(50);
        }
      }
      assertSame("Test failed - Timeout - "+x+" responses so far",x, NUMB);

      Thread.sleep(1000);

      // check for late queue entries
      assertNull(backChannelQueue.poll());

      // check AuditTrail Log
      new RetryingTransaction<Void>(context.getBean(DataSource.class)) {
        @Override
        protected Void execute() throws Exception {
          ResultSet rs = getConnection().createStatement().executeQuery("SELECT count(*) FROM COP_AUDIT_TRAIL_EVENT");
          rs.next();
          int count = rs.getInt(1);
          assertEquals(NUMB*6, count);
          rs.close();
          return null;
        }
      }.run();
    }
    finally {
      context.close();
    }
    assertEquals(EngineState.STOPPED,engineRed.getEngineState());
    assertEquals(EngineState.STOPPED,engineBlue.getEngineState());
    assertEquals(0,engineRed.getNumberOfWorkflowInstances());
    assertEquals(0,engineBlue.getNumberOfWorkflowInstances());

  }
View Full Code Here

Examples of de.scoopgmbh.copper.persistent.PersistentScottyEngine

  public void testSpringTxnUnitTestWorkflow(String dsContext) throws Exception {
    assumeFalse(skipTests());
    final ConfigurableApplicationContext context = createContext(dsContext);
    cleanDB(context.getBean(DataSource.class));
    final PersistentScottyEngine engine = context.getBean(PersistentScottyEngine.class);
    final BackChannelQueue backChannelQueue = context.getBean(BackChannelQueue.class);
    try {
      engine.startup();
      engine.run("de.scoopgmbh.copper.test.persistent.springtxn.SpringTxnUnitTestWorkflow", "TestData");
      WorkflowResult x = backChannelQueue.dequeue(60, TimeUnit.SECONDS);
      assertNotNull(x);
      assertNotNull(x.getResult());
      assertNull(x.getException());

      //check
      new RetryingTransaction<Void>(context.getBean(DataSource.class)) {
        @Override
        protected Void execute() throws Exception {
          Statement stmt = getConnection().createStatement();
          ResultSet rs = stmt.executeQuery("select count(*) from cop_audit_trail_event");
          assertTrue(rs.next());
          int c = rs.getInt(1);
          assertEquals(7, c);
          rs.close();
          stmt.close();
          return null;
        }
      }.run();
    }
    finally {
      closeContext(context);
    }
    assertEquals(EngineState.STOPPED,engine.getEngineState());
    assertEquals(0,engine.getNumberOfWorkflowInstances());
 
View Full Code Here

Examples of de.scoopgmbh.copper.persistent.PersistentScottyEngine

    List<PersistentProcessorPool> pools = new ArrayList<PersistentProcessorPool>();
    pools.add(ppool);
    DefaultProcessorPoolManager<PersistentProcessorPool> processorPoolManager = new DefaultProcessorPoolManager<PersistentProcessorPool>();
    processorPoolManager.setProcessorPools(pools);

    PersistentScottyEngine engine = new PersistentScottyEngine();
    engine.setDbStorage(dbStorage);
    engine.setWfRepository(wfRepository);
    engine.setEngineIdProvider(engineIdProvider);
    engine.setIdFactory(new JdkRandomUUIDFactory());
    engine.setProcessorPoolManager(processorPoolManager);
    engine.setDependencyInjector(dependencyInjector);

    return engine;
  }
View Full Code Here

Examples of de.scoopgmbh.copper.persistent.PersistentScottyEngine

    persistentdbStorage.setCheckDbConsistencyAtStartup(true);
 
   
    PersistentPriorityProcessorPool persistentPriorityProcessorPool = new PersistentPriorityProcessorPool(PersistentProcessorPool.DEFAULT_POOL_ID,txnController);
   
    PersistentScottyEngine persistentengine = new PersistentScottyEngine();
    persistentengine.setIdFactory(new JdkRandomUUIDFactory());
    persistentengine.setDbStorage(persistentdbStorage);
    persistentengine.setWfRepository(wfRepository);
    persistentengine.setEngineIdProvider(ENGINE_ID_PROVIDER);
    persistentengine.setStatisticsCollector(runtimeStatisticsCollector);
   
    DefaultProcessorPoolManager<PersistentPriorityProcessorPool> defaultProcessorPoolManager = new DefaultProcessorPoolManager<PersistentPriorityProcessorPool>();
    defaultProcessorPoolManager.setProcessorPools(Arrays.asList(persistentPriorityProcessorPool));
    defaultProcessorPoolManager.setEngine(persistentengine);
   
    persistentengine.setProcessorPoolManager(defaultProcessorPoolManager);
    //persistentengine.shutdown();
   
   
    BatchingAuditTrail auditTrail = new BatchingAuditTrail();
    auditTrail.setBatcher(batcher);
    auditTrail.setDataSource(databaseData.dataSource);
    auditTrail.setMessagePostProcessor(new CompressedBase64PostProcessor());
    try {
      auditTrail.startup();
    } catch (Exception e) {
      throw new RuntimeException(e);
    }
   
   
    PojoDependencyInjector dependyInjector = new PojoDependencyInjector();
    MonitoringDataStorage monitoringDataStorage;
    try {
      monitoringDataStorage = new MonitoringDataStorage(File.createTempFile("test", ".tmp").getParentFile(), "copperMonitorLog");
    } catch (IOException e1) {
      throw new RuntimeException(e1);
    }
    final MonitoringDataAccessQueue monitoringQueue = new MonitoringDataAccessQueue(new MonitoringDataAccesor(monitoringDataStorage),new MonitoringDataAdder(monitoringDataStorage));
   
    final MonitoringDataCollector monitoringDataCollector = new MonitoringDataCollector(monitoringQueue);
    MonitoringDependencyInjector monitoringDependencyInjector= new MonitoringDependencyInjector(dependyInjector, monitoringDataCollector);
    BillAdapterImpl billAdapterImpl = new BillAdapterImpl(monitoringDataCollector);
    billAdapterImpl.initWithEngine(new MonitoringAdapterProcessingEngine(billAdapterImpl,persistentengine,monitoringDataCollector));
    dependyInjector.register("billAdapter", billAdapterImpl);
    dependyInjector.register("auditTrail", auditTrail);
   
    persistentengine.setDependencyInjector(monitoringDependencyInjector);
    persistentengine.startup();
   
    try {
      persistentengine.run("BillWorkflow", "");
    } catch (CopperException e) {
      throw new RuntimeException(e);
    }
     
    List<ProcessingEngineMXBean> engines = new ArrayList<ProcessingEngineMXBean>();
View Full Code Here
TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.