blob: ad424006fa6afd82b593b6b40cc8f5ef54e6666c [file] [log] [blame]
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
package org.apache.uima.collection.impl.cpm;
import junit.framework.TestCase;
import org.apache.uima.collection.impl.metadata.cpe.CpeDescriptorFactory;
import org.apache.uima.collection.metadata.CpeCasProcessors;
import org.apache.uima.collection.metadata.CpeCheckpoint;
import org.apache.uima.collection.metadata.CpeConfiguration;
import org.apache.uima.collection.metadata.CpeDescription;
import org.apache.uima.collection.metadata.CpeIntegratedCasProcessor;
import org.apache.uima.collection.metadata.CpeLocalCasProcessor;
import org.apache.uima.collection.metadata.CpeRemoteCasProcessor;
import org.apache.uima.collection.metadata.CpeTimer;
/**
* this TestCase is testing the cpm API concerning the setting of CasProcessors
*
* <p>
* The general workflow of the TestCases is producing a default cpm and then adding a new
* CasProcessor to this configuration. After that, the new configuration is read via API and checked
* for correctness.
* </p>
* <b>Attention!!!</b><br>
* All parameters set in the script are only dummy values. They do not have any corresponding files,
* values or something else. The parameters are only set to be comparable for unit testing.
*
*/
public class CpeCasProcessorAPI_Test extends TestCase {
private static final String confLocation = "c://cpm/conf/";
private CpeDescription cpe = null;
/**
* create a new (default) cpe ( including a remote, local and integrated CasProcessor)
*
* @see junit.framework.TestCase#setUp()
*/
protected void setUp() throws Exception {
// Creates the Cpe Descriptor
cpe = CpeDescriptorFactory.produceDescriptor();
// Create CollectionReader and associate it with the descriptor
CpeDescriptorFactory.produceCollectionReader(confLocation + "collectionReaders/WFReader.xml",
cpe);
// Crate CasInitializer and associate it with the CollectionReader
CpeDescriptorFactory.produceCollectionReaderCasInitializer(confLocation
+ "casinitializers/WFReaderInitializer.xml", cpe);
// Create CasProcessors
CpeCasProcessors processors = CpeDescriptorFactory.produceCasProcessors(2, 4, 3, cpe);
// Create Detag CasProcessor
CpeRemoteCasProcessor remoteProcessor = CpeDescriptorFactory
.produceRemoteCasProcessor("Detag Miner");
// CpeComponentDescriptor detagDesc =
// CpeDescriptorFactory.produceComponentDescriptor("c://cpm/annotators/wfminers/detag/service.xml");
remoteProcessor.setDescriptor("c://cpm/annotators/wfminers/detag/service.xml"); // detagDesc);
remoteProcessor.addDeployParam("vnsPort", "9003");
remoteProcessor.addDeployParam("vnsHost", "localhost");
remoteProcessor.setCasProcessorFilter("where Detag:DetagContent");
remoteProcessor.setBatchSize(3);
remoteProcessor.setMaxErrorCount(50);
remoteProcessor.setMaxErrorSampleSize(500);
remoteProcessor.setActionOnMaxError("continue");
remoteProcessor.setMaxRestartCount(3);
remoteProcessor.setActionOnMaxRestart("continue");
remoteProcessor.setTimeout(5000);
remoteProcessor.setCasProcessorFilter("where Detag:DetagContent");
processors.addCpeCasProcessor(remoteProcessor);
// Create Detag CasProcessor
CpeLocalCasProcessor localProcessor = CpeDescriptorFactory.produceLocalCasProcessor(
"DupShingle Miner", "Detag:DetagContent");
localProcessor.setDescriptor("c://cpm/annotators/wfminers/detag/descriptor.xml");
localProcessor
.setExecutable("/home/cwiklik/cpm/wfcp/annotators/wfminers/detagger/bin/runDetagger.sh");
localProcessor.addDeployParam("Parm1", "Value1");
localProcessor.addDeployParam("vnsHost", "Host1");
localProcessor.addExecArg("-DVNS_HOST=127.0.0.1");
localProcessor.addExecArg("-DVNS_PORT=9904");
localProcessor.setCasProcessorFilter("where Detag:DetagContent");
localProcessor.setBatchSize(3);
localProcessor.setMaxErrorCount(50);
localProcessor.setMaxErrorSampleSize(500);
localProcessor.setActionOnMaxError("continue");
localProcessor.setMaxRestartCount(3);
localProcessor.setActionOnMaxRestart("continue");
localProcessor.setTimeout(5000);
processors.addCpeCasProcessor(localProcessor);
CpeIntegratedCasProcessor integratedProcessor = CpeDescriptorFactory
.produceCasProcessor("WF Writer");
integratedProcessor.setDescriptor(confLocation + "consumers/wf/store/descriptor.xml");
integratedProcessor.setBatchSize(100);
processors.addCpeCasProcessor(integratedProcessor);
CpeConfiguration config = CpeDescriptorFactory.produceCpeConfiguration(cpe);
CpeCheckpoint checkpoint = CpeDescriptorFactory.produceCpeCheckpoint();
checkpoint.setBatchSize(10);
checkpoint.setFilePath("c://cpm/data/checkpoint.dat");
checkpoint.setFrequency(3000, true);
config.setCheckpoint(checkpoint);
CpeTimer cpeTimer = CpeDescriptorFactory.produceCpeTimer("java");
config.setCpeTimer(cpeTimer);
config.setDeployment("immediate");
config.setNumToProcess(1000);
config.setStartingEntityId("");
}
/**
* test the config of a remote CasProcessor with all possible values set
*
* @throws Exception
*/
public void testAddRemoteCasProcessor() throws Exception {
CpeCasProcessors processors = cpe.getCpeCasProcessors();
CpeRemoteCasProcessor remoteProcessor = CpeDescriptorFactory
.produceRemoteCasProcessor("Detag Miner _2_");
remoteProcessor.setDescriptor("c://cpm/annotators/dummy.xml");
remoteProcessor.addDeployParam("vnsPort", "9999");
remoteProcessor.addDeployParam("vnsHost", "localhost");
remoteProcessor.setCasProcessorFilter("where Detag:DetagContent_2");
remoteProcessor.setBatchSize(5);
remoteProcessor.setMaxErrorCount(51);
remoteProcessor.setMaxErrorSampleSize(505);
remoteProcessor.setActionOnMaxError("continue");
remoteProcessor.setMaxRestartCount(2);
remoteProcessor.setActionOnMaxRestart("continue");
remoteProcessor.setTimeout(5002);
processors.addCpeCasProcessor(remoteProcessor);
assertEquals("Name", "Detag Miner _2_", remoteProcessor.getName());
assertEquals("Descriptor()", "c://cpm/annotators/dummy.xml", remoteProcessor.getDescriptor());
assertEquals("DeploymentParam", "9999",
((remoteProcessor.getDeploymentParams()).get("vnsPort")).getParameterValue());
assertEquals("DeploymentParam", "localhost", ((remoteProcessor.getDeploymentParams())
.get("vnsHost")).getParameterValue());
assertEquals("CasProcessorFilter", "where Detag_colon_DetagContent_2", remoteProcessor
.getCasProcessorFilter());
assertEquals("BatchSize", 5, remoteProcessor.getBatchSize());
assertEquals("MaxErrorCount", 51, remoteProcessor.getMaxErrorCount());
assertEquals("MaxErrorSampleSize", 505, remoteProcessor.getMaxErrorSampleSize());
assertEquals("ActionOnMaxError", "continue", remoteProcessor.getActionOnMaxError());
assertEquals("MaxRestartCount", 2, remoteProcessor.getMaxRestartCount());
assertEquals("ActionOnMaxRestart", "continue", remoteProcessor.getActionOnMaxRestart());
assertEquals("Timeout", 5002, remoteProcessor.getTimeout());
}
/**
* test the config of a local CasProcessor with all possible values set
*
* @throws Exception
*/
public void testAddLocalCasProcessor() throws Exception {
CpeCasProcessors processors = cpe.getCpeCasProcessors();
// Create Detag CasProcessor
CpeLocalCasProcessor localProcessor = CpeDescriptorFactory.produceLocalCasProcessor(
"DupShingle Miner", "Detag:DetagContent");
localProcessor.setDescriptor("c://cpm/annotators/example.xml");
localProcessor.setExecutable("/some/path/executable.sh");
localProcessor.addDeployParam("Parm1", "Value1x");
localProcessor.addDeployParam("vnsHost", "Host1x");
localProcessor.addExecArg("-DVNS_HOST=localhost");
localProcessor.addExecArg("-DVNS_PORT=9905");
localProcessor.setCasProcessorFilter("where Detag:DetagContent");
localProcessor.setBatchSize(4);
localProcessor.setMaxErrorCount(52);
localProcessor.setMaxErrorSampleSize(503);
localProcessor.setActionOnMaxError("continue");
localProcessor.setMaxRestartCount(2);
localProcessor.setActionOnMaxRestart("continue");
localProcessor.setTimeout(5001);
processors.addCpeCasProcessor(localProcessor);
assertEquals("Name", "DupShingle Miner", localProcessor.getName());
assertEquals("Descriptor()", "c://cpm/annotators/example.xml", localProcessor.getDescriptor());
assertEquals("DeploymentParam", "Value1x",
((localProcessor.getDeploymentParams()).get("Parm1")).getParameterValue());
assertEquals("DeploymentParam", "Host1x", ((localProcessor.getDeploymentParams())
.get("vnsHost")).getParameterValue());
assertEquals("CasProcessorFilter", "where Detag_colon_DetagContent", localProcessor
.getCasProcessorFilter());
assertEquals("BatchSize", 4, localProcessor.getBatchSize());
assertEquals("MaxErrorCount", 52, localProcessor.getMaxErrorCount());
assertEquals("MaxErrorSampleSize", 503, localProcessor.getMaxErrorSampleSize());
assertEquals("ActionOnMaxError", "continue", localProcessor.getActionOnMaxError());
assertEquals("MaxRestartCount", 2, localProcessor.getMaxRestartCount());
assertEquals("ActionOnMaxRestart", "continue", localProcessor.getActionOnMaxRestart());
assertEquals("Timeout", 5001, localProcessor.getTimeout());
}
/**
* test the config of a integrated CasProcessor with all possible values set
*
* @throws Exception
*/
public void testAddIntegratedCasProcessor() throws Exception {
CpeCasProcessors processors = cpe.getCpeCasProcessors();
CpeIntegratedCasProcessor integratedProcessor = CpeDescriptorFactory
.produceCasProcessor("WF Writer_X");
assertEquals("name", "WF Writer_X", integratedProcessor.getName());
integratedProcessor.setDescriptor(confLocation + "consumers/bla.xml");
integratedProcessor.setBatchSize(99);
assertEquals("BatchSize", 99, integratedProcessor.getBatchSize());
integratedProcessor.addDeployParam("testversion", "V1.0");
integratedProcessor.setActionOnMaxError("terminate");
integratedProcessor.setActionOnMaxRestart("continue");
integratedProcessor.setBatchSize(25);
integratedProcessor.setCasProcessorFilter("some filter");
integratedProcessor.setMaxErrorCount(300);
integratedProcessor.setMaxErrorSampleSize(100);
integratedProcessor.setMaxRestartCount(5);
integratedProcessor.setTimeout(6000);
integratedProcessor.setName("special name");
processors.addCpeCasProcessor(integratedProcessor);
assertEquals("name", "special name", integratedProcessor.getName());
assertEquals("Descriptor()", confLocation + "consumers/bla.xml", integratedProcessor
.getDescriptor());
assertEquals("DeploymentParam", "V1.0", ((integratedProcessor.getDeploymentParams())
.get("testversion")).getParameterValue());
assertEquals("CasProcessorFilter", "some filter", integratedProcessor.getCasProcessorFilter());
assertEquals("BatchSize", 25, integratedProcessor.getBatchSize());
assertEquals("MaxErrorCount", 300, integratedProcessor.getMaxErrorCount());
assertEquals("MaxErrorSampleSize", 100, integratedProcessor.getMaxErrorSampleSize());
assertEquals("ActionOnMaxError", "terminate", integratedProcessor.getActionOnMaxError());
assertEquals("MaxRestartCount", 5, integratedProcessor.getMaxRestartCount());
assertEquals("ActionOnMaxRestart", "continue", integratedProcessor.getActionOnMaxRestart());
assertEquals("Timeout", 6000, integratedProcessor.getTimeout());
}
}