TemplateInvocationEngineTest.java :  » Media » projectopenfarm » openfarm » transmission » ws » engine » Java Open Source

Java Open Source » Media » projectopenfarm 
projectopenfarm » openfarm » transmission » ws » engine » TemplateInvocationEngineTest.java
/**
 * @Author Filipe Martins
 * 18 Jun 2010
 * OF-Interpreter
 */
package openfarm.transmission.ws.engine;

import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertTrue;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Map;
import java.util.Set;

import openfarm.analysiscomponents.AnalysisComponent;
import openfarm.analysiscomponents.Parameterize;
import openfarm.analysiscomponents.template.properties.ACTemplateProperties;
import openfarm.interpreter.InterpreterRegister;
import openfarm.jni.template.openfarmtemplates.CppTemplate;
import openfarm.jni.template.openfarmtemplates.JavaTemplate;
import openfarm.multithreading.machine.IJobThread;
import openfarm.multithreading.machine.Job;
import openfarm.properties.PropertiesReader;
import openfarm.transmission.ws.jobmonitoring.CurrentState;
import openfarm.transmission.ws.jobmonitoring.InterpreterJobState;
import openfarmtools.analysiscomponents.AnalysisComponentParameters;
import openfarmtools.interpreter.exceptions.AnalysisComponentNotFoundException;
import openfarmtools.interpreter.exceptions.InvalidParametersException;
import openfarmtools.interpreter.exceptions.InvalidRegisterConfigurationException;
import openfarmtools.interpreter.exceptions.MtMachineException;
import openfarmtools.interpreter.exceptions.TemplateException;
import openfarmtools.interpreter.exceptions.VideoFileNotFoundException;
import openfarmtools.interpreter.exceptions.XmlException;
import openfarmtools.repository.filehandling.EOperatingSystemProperties;

import org.dom4j.DocumentException;
import org.junit.Test;

public class TemplateInvocationEngineTest
{
  private TemplateInvocationEngine engine;
  private String [] materialList = {"video/vid1.avi"};
  private Parameterize parameters = new Parameterize();
  private String managerUrl = PropertiesReader.quickGetProperty("manager.url", "utresources/properties/test_properties.properties");
  private static final String LIB_REPOSITORY = "C:\\openfarm\\libRepository\\";
  

  public TemplateInvocationEngineTest() throws FileNotFoundException, XmlException, TemplateException, AnalysisComponentNotFoundException, IOException, SecurityException, NoSuchFieldException, IllegalArgumentException, IllegalAccessException, InvalidRegisterConfigurationException
  {
    InterpreterRegister.getInstance().reloadRegistry();
    
    Set<String> materialExtensions = new HashSet<String>();
    materialExtensions.add("avi");
    
    Set<AnalysisComponentParameters> parameterConfig = new HashSet<AnalysisComponentParameters>();
    parameterConfig.add(new AnalysisComponentParameters("firstNFrames","int","2000"));
    parameterConfig.add(new AnalysisComponentParameters("threshold","float","0.6890"));
    parameterConfig.add(new AnalysisComponentParameters("mock","String",""));
        
    AnalysisComponent scd = new AnalysisComponent(1, "Scene Cut Detection", "libscenecutdetection",
                             "dll", "windows", "C++", materialExtensions, 
                             new CppTemplate("libscenecutdetection",LIB_REPOSITORY), parameterConfig);
        
    scd.setAcTemplateProperties(new ACTemplateProperties("CppTemplate", "default","", new HashMap<String,String>()));
    
          
    AnalysisComponent jd = new AnalysisComponent(2, "Java Mock Detector", "AcTest",
                            "class", "windows", "Java", materialExtensions, 
                            new JavaTemplate("AcTest",LIB_REPOSITORY,"xpto.template.AcTest"), parameterConfig);
    
    jd.setAcTemplateProperties(new ACTemplateProperties("JavaTemplate", "default","", new HashMap<String,String>()));
    
    
    InterpreterRegister.getInstance().getRegisteredAnalysisComponents().clear();
    InterpreterRegister.getInstance().getRegisteredAnalysisComponents().add(scd);
    InterpreterRegister.getInstance().getRegisteredAnalysisComponents().add(jd);
            
    InterpreterRegister.setId("MockInterpreterId_112233");
    InterpreterRegister.getInstance().getInp().setManagerUrl(managerUrl);
        
    engine = new TemplateInvocationEngine(InterpreterRegister.getInstance());    
    parameters.getParams().put("firstNFrames", "3000");    
  }  
  
  /**
   * Test method for {@link openfarm.transmission.ws.engine.TemplateInvocationEngine#TemplateInvocationEngine(openfarm.interpreter.InterpreterRegister)}.
   */
  @Test
  public void testTemplateInvocationEngine()
  {
    assertNotNull(engine);    
  }

  /**
   * Test method for {@link openfarm.transmission.ws.engine.TemplateInvocationEngine#getInterpreterId()}.
   */
  @Test
  public void testGetInterpreterId()
  {
    assertEquals(InterpreterRegister.getId(), engine.getInterpreterId());
  }

  /**
   * Test method for {@link openfarm.transmission.ws.engine.TemplateInvocationEngine#analysisComponentsDescription()}.
   * @throws DocumentException 
   * @throws IOException 
   */
  @Test
  public void testAnalysisComponentsDescription() throws DocumentException, IOException
  {    
    String result = engine.analysisComponentsDescription();
    
    FileInputStream fin = new FileInputStream(new File("utresources/generatedmetadata/mock_idx.xml"));    
    BufferedReader br = new BufferedReader(new InputStreamReader(fin));
    
    String temp;
    String expected = "";
    boolean ignore = false;
    
    while((temp=br.readLine())!=null)
    {      
      expected+=temp;
      
      if(!ignore)
      {
        expected+="\n";
        ignore=true;
      }
    }  
    
    System.out.println(result);
    
    assertEquals(expected, result);  
  }
  

  /**
   * Test method for {@link openfarm.transmission.ws.engine.TemplateInvocationEngine#isInterpreterJobGroupCompleted(java.lang.String)}.
   * @throws IOException 
   * @throws MtMachineException 
   * @throws InvalidParametersException 
   * @throws AnalysisComponentNotFoundException 
   * @throws VideoFileNotFoundException 
   * @throws NoSuchFieldException 
   * @throws SecurityException 
   * @throws IllegalAccessException 
   * @throws TemplateException 
   * @throws XmlException 
   * @throws IllegalArgumentException 
   * @throws InterruptedException 
   */
  @Test
  public void testIsInterpreterJobGroupCompleted() throws Exception  
  {
    InterpreterRegister.getInstance().setRootRepository("utresources");
  
    String jobGroup = engine.invokeAnalysis("scene cut detection", materialList, parameters);    
    assertFalse(engine.isInterpreterJobGroupCompleted(jobGroup));  
    
    Thread.sleep(2000);
    engine.abortAll();  
  }
  

  /**
   * Test method for {@link openfarm.transmission.ws.engine.TemplateInvocationEngine#isInterpreterSingleJobRunning(java.lang.String)}.
   * @throws NoSuchFieldException 
   * @throws SecurityException 
   * @throws IOException 
   * @throws IllegalAccessException 
   * @throws AnalysisComponentNotFoundException 
   * @throws TemplateException 
   * @throws XmlException 
   * @throws FileNotFoundException 
   * @throws IllegalArgumentException 
   * @throws MtMachineException 
   * @throws InvalidParametersException 
   * @throws VideoFileNotFoundException 
   * @throws InterruptedException 
   * @throws InvalidRegisterConfigurationException 
   */
  @Test
  public void testIsInterpreterSingleJobRunning() throws SecurityException, NoSuchFieldException, IllegalArgumentException, FileNotFoundException, XmlException, TemplateException, AnalysisComponentNotFoundException, IllegalAccessException, IOException, VideoFileNotFoundException, InvalidParametersException, MtMachineException, InterruptedException, InvalidRegisterConfigurationException
  {
    InterpreterRegister.getInstance().setRootRepository("utresources");  
    
    String jobGroup = engine.invokeAnalysis("scene cut detection", materialList, parameters);    
    
    Map<String,IJobThread> map = engine.getMtMachine().getJobGroupMap().get(jobGroup);
        
    for(String key : map.keySet())
      assertTrue(engine.isInterpreterSingleJobRunning(key));
    
    Thread.sleep(2000);
    engine.abortAll();  
  }

  /**
   * Test method for {@link openfarm.transmission.ws.engine.TemplateInvocationEngine#getInterpreterJobDetails(java.lang.String)}.
   * @throws InterruptedException 
   */
  @Test
  public void testGetInterpreterJobDetails() throws Exception
  {
    InterpreterRegister.getInstance().setRootRepository("utresources");
    
    String jobGroup = engine.invokeAnalysis("scene cut detection", materialList, parameters);
    
    Job [] job = engine.getInterpreterJobDetails(jobGroup);            
    assertEquals(1, job.length);
    assertEquals("RIDDICK",job[0].getInterpreterName());
    assertEquals("video/vid1.avi",job[0].getVideoFile());
    assertEquals("Scene Cut Detection",job[0].getAnalysisComponent().getName());
    assertEquals(EOperatingSystemProperties.WINDOWS,job[0].getAnalysisComponent().getOs());

    Thread.sleep(2000);
    engine.abortAll();
  }

  /**
   * Test method for {@link openfarm.transmission.ws.engine.TemplateInvocationEngine#invokeAnalysis(java.lang.String, java.lang.String[], openfarm.analysiscomponents.Parameterize)}.
   * @throws InterruptedException 
   */
  @Test
  public void testInvokeAnalysis() throws Exception
  {
    InterpreterRegister.getInstance().setRootRepository("utresources");
    
    String jobGroup = engine.invokeAnalysis("scene cut detection", materialList, parameters);  
    
    Thread.sleep(1000);
    
    Map<String,IJobThread> map = engine.getMtMachine().getJobGroupMap().get(jobGroup);
    
    for(String key : map.keySet())
    {
      IJobThread t = map.get(key);
      
      assertFalse(t.getTemplate().isDone());
      assertFalse(t.getTemplate().isStopped());      
    }
    
    Thread.sleep(1000);
    engine.abortAll();
  }

  /**
   * Test method for {@link openfarm.transmission.ws.engine.TemplateInvocationEngine#abortAll()}.
   */
  @Test
  public void testAbortAll() throws Exception
  {
    InterpreterRegister.getInstance().setRootRepository("utresources");
    
    String jobGroup = engine.invokeAnalysis("scene cut detection", materialList, parameters);  
    
    Thread.sleep(1000);
    
    Map<String,IJobThread> map = engine.getMtMachine().getJobGroupMap().get(jobGroup);
    
    for(String key : map.keySet())
    {
      IJobThread t = map.get(key);
      
      assertFalse(t.getTemplate().isDone());
      assertFalse(t.getTemplate().isStopped());      
    }
    
    Thread.sleep(1000);
    engine.abortAll();    
    Thread.sleep(500);
    
    for(String key : map.keySet())
    {
      IJobThread t = map.get(key);
      
      assertTrue(t.getTemplate().isDone());
      assertTrue(t.getTemplate().isStopped());      
    }
    
    //Teste Java plug-in
    jobGroup = engine.invokeAnalysis("Java Mock Detector", materialList, parameters);  
    
    Thread.sleep(1000);    
    map = engine.getMtMachine().getJobGroupMap().get(jobGroup);    

    Thread.sleep(1000);
    engine.abortAll();    
  
    Thread.sleep(500);
    
    for(String key : map.keySet())
    {
      IJobThread t = map.get(key);
      
      assertTrue(t.getTemplate().isDone());
      assertTrue(t.getTemplate().isStopped());      
    }
  }

  /**
   * Test method for {@link openfarm.transmission.ws.engine.TemplateInvocationEngine#jobCurrentInterpreterState(java.lang.String)}.
   * @throws NoSuchFieldException 
   * @throws SecurityException 
   */
  @Test
  public void testJobCurrentInterpreterState() throws Exception
  {
    InterpreterRegister.getInstance().setRootRepository("utresources");
    
    String jobGroup = engine.invokeAnalysis("scene cut detection", materialList, parameters);  
    
    Thread.sleep(1000);
    
    Map<String,IJobThread> map = engine.getMtMachine().getJobGroupMap().get(jobGroup);
    
    for(String key : map.keySet())
    {
      assertEquals(CurrentState.RUNNING, engine.jobCurrentInterpreterState(key));
    }
    
    Thread.sleep(1000);
    engine.abortAll();
        
    for(String key : map.keySet())
    {
      assertEquals(CurrentState.CANCELED, engine.jobCurrentInterpreterState(key));
    }
  }

  /**
   * Test method for {@link openfarm.transmission.ws.engine.TemplateInvocationEngine#interpreterStatus()}.
   */
  @Test
  public void testInterpreterStatus() throws Exception
  {
    InterpreterJobState ij = engine.interpreterStatus();
    assertEquals(0, ij.getJobsRunning().size());
    assertEquals(0, ij.getJobsCanceled().size());
    assertEquals(0, ij.getJobsDone().size());
    
    InterpreterRegister.getInstance().setRootRepository("utresources");
    
    engine.invokeAnalysis("scene cut detection", materialList, parameters);
    Thread.sleep(1000);
    
    ij = engine.interpreterStatus();
    
    assertEquals(1, ij.getJobsRunning().size());
    assertEquals(0, ij.getJobsCanceled().size());
    assertEquals(0, ij.getJobsDone().size());

    Thread.sleep(2000);
    engine.abortAll();
    
    ij = engine.interpreterStatus();
    assertEquals(0, ij.getJobsRunning().size());
    assertEquals(1, ij.getJobsCanceled().size());
    assertEquals(0, ij.getJobsDone().size());
    
    String jobGroupId = engine.invokeAnalysis("scene cut detection", materialList, parameters);
    
    while(!engine.isInterpreterJobGroupCompleted(jobGroupId))
    {
      Thread.sleep(500);
    }
    
    ij = engine.interpreterStatus();
    assertEquals(0, ij.getJobsRunning().size());
    assertEquals(1, ij.getJobsCanceled().size());
    assertEquals(1, ij.getJobsDone().size());    
  }

  /**
   * Test method for {@link openfarm.transmission.ws.engine.TemplateInvocationEngine#stopJobGroup(java.lang.String)}.
   */
  @Test
  public void testStopJobGroup() throws Exception
  {
    InterpreterRegister.getInstance().setRootRepository("utresources");  
    
    String jobGroup = engine.invokeAnalysis("scene cut detection", materialList, parameters);  
    
    Thread.sleep(1000);    
    engine.stopJobGroup(jobGroup);  
    Thread.sleep(500);
    
    assertTrue(engine.isInterpreterJobGroupCompleted(jobGroup));
    
    
    jobGroup = engine.invokeAnalysis("Java Mock Detector", materialList, parameters);  
    
    Thread.sleep(1000);    
    engine.stopJobGroup(jobGroup);  
    Thread.sleep(500);
    
    assertTrue(engine.isInterpreterJobGroupCompleted(jobGroup));
    
    engine.abortAll();
  }

  /**
   * Test method for {@link openfarm.transmission.ws.engine.TemplateInvocationEngine#stopSingleJob(java.lang.String)}.
   */
  @Test
  public void testStopSingleJob() throws Exception
  {
    InterpreterRegister.getInstance().setRootRepository("utresources");  
    
    String jobGroup = engine.invokeAnalysis("scene cut detection", materialList, parameters);  
    
    Thread.sleep(1000);    
    
    Map<String,IJobThread> map = engine.getMtMachine().getJobGroupMap().get(jobGroup);    
    for(String key : map.keySet())
    {      
      engine.stopSingleJob(key);          
    }
    
    assertTrue(engine.isInterpreterJobGroupCompleted(jobGroup));
    Thread.sleep(500);
    
    //test Java Detector
    jobGroup = engine.invokeAnalysis("Java Mock Detector", materialList, parameters);  
    
    Thread.sleep(1000);    
    
     map = engine.getMtMachine().getJobGroupMap().get(jobGroup);    
    for(String key : map.keySet())
    {      
      engine.stopSingleJob(key);          
    }
    
    assertTrue(engine.isInterpreterJobGroupCompleted(jobGroup));
    Thread.sleep(500);
      
    engine.abortAll();    
  }

}
java2s.com  | Contact Us | Privacy Policy
Copyright 2009 - 12 Demo Source and Support. All rights reserved.
All other trademarks are property of their respective owners.