package eu.dnetlib.iis.common.java;
import static org.junit.Assert.assertEquals;
import java.util.Map;
import org.apache.commons.cli.CommandLine;
import org.apache.hadoop.conf.Configuration;
import org.junit.Test;
import eu.dnetlib.iis.common.java.porttype.PortType;
/**
*
* @author Mateusz Kobos
*
*/
class DummyProcess implements Process {
public DummyProcess(){
}
@Override
public Map<String, PortType> getInputPorts() {
return null;
}
@Override
public Map<String, PortType> getOutputPorts(){
return null;
}
@Override
public void run(PortBindings portBindings, Configuration configuration,
Map<String, String> parameters){
}
}
class DummyProcessWithParametersConstructor implements Process{
public String[] params;
public DummyProcessWithParametersConstructor(String[] params){
this.params = params;
}
@Override
public Map<String, PortType> getInputPorts() {
return null;
}
@Override
public Map<String, PortType> getOutputPorts() {
return null;
}
@Override
public void run(PortBindings portBindings, Configuration configuration,
Map<String, String> parameters) throws Exception {
}
}
public class CmdLineParserForProcessConstructionTest{
@Test
public void testTrivial() {
String[] args = new String[]{
"eu.dnetlib.iis.common.java.DummyProcess"};
CmdLineParserForProcessConstruction cmdLineParser =
new CmdLineParserForProcessConstruction();
CommandLine cmdLine = CmdLineParser.parse(args);
Process actual = cmdLineParser.run(cmdLine);
assertEquals(DummyProcess.class, actual.getClass());
}
@Test
public void testWithSomeParameters() {
String[] args = new String[]{
"eu.dnetlib.iis.common.java.DummyProcess",
"-Iperson=hdfs://localhost:8020/users/joe/person_input",
"-Idocument=hdfs://localhost:8020/users/joe/doc_input",
"-Omerged=hdfs://localhost:8020/users/joe/merged_out",
"-SclassName=java.util.String"};
CmdLineParserForProcessConstruction cmdLineParser =
new CmdLineParserForProcessConstruction();
CommandLine cmdLine = CmdLineParser.parse(args);
Process actual = cmdLineParser.run(cmdLine);
assertEquals(DummyProcess.class, actual.getClass());
}
@Test
public void testWithSomeParametersWithParametersConstructor() {
String[] constructorParams = new String[]{
"some string", "some other string"};
String[] args = new String[]{
"eu.dnetlib.iis.common.java.DummyProcessWithParametersConstructor",
"-C" + constructorParams[0],
"-C" + constructorParams[1],
"-Iperson=hdfs://localhost:8020/users/joe/person_input",
"-Idocument=hdfs://localhost:8020/users/joe/doc_input",
"-Omerged=hdfs://localhost:8020/users/joe/merged_out",
"-SclassName=java.util.String"};
CmdLineParserForProcessConstruction cmdLineParser =
new CmdLineParserForProcessConstruction();
CommandLine cmdLine = CmdLineParser.parse(args);
DummyProcessWithParametersConstructor actual =
(DummyProcessWithParametersConstructor) cmdLineParser.run(cmdLine);
assertEquals(DummyProcessWithParametersConstructor.class,
actual.getClass());
for(int i = 0; i < constructorParams.length; i++){
assertEquals(constructorParams[i], actual.params[i]);
}
}
}