Package azkaban.jobs.builtin

Source Code of azkaban.jobs.builtin.JavaJobTest

package azkaban.jobs.builtin;

import java.io.IOException;
import java.util.Date;
import java.util.Properties;

import org.easymock.classextension.EasyMock;
import org.junit.AfterClass;
import org.junit.Assert;
import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.Test;

import azkaban.app.JobDescriptor;
import azkaban.common.utils.Props;
import azkaban.jobs.AbstractProcessJob;

public class JavaJobTest
{

  private JavaJob job = null;
  private JobDescriptor descriptor = null;
  private Props props = null;
  private static String classPaths ;

  private static final String inputContent =
    "Quick Change in Strategy for a Bookseller \n" +
    " By JULIE BOSMAN \n" +
    "Published: August 11, 2010 \n" +
    " \n" +
    "Twelve years later, it may be Joe Fox�s turn to worry. Readers have gone from skipping small \n" +
    "bookstores to wondering if they need bookstores at all. More people are ordering books online  \n" +
    "or plucking them from the best-seller bin at Wal-Mart";

  private static final String errorInputContent =
      inputContent + "\n stop_here " +
      "But the threat that has the industry and some readers the most rattled is the growth of e-books. \n" +
      " In the first five months of 2009, e-books made up 2.9 percent of trade book sales. In the same period \n" +
      "in 2010, sales of e-books, which generally cost less than hardcover books, grew to 8.5 percent, according \n" +
      "to the Association of American Publishers, spurred by sales of the Amazon Kindle and the new Apple iPad. \n" +
      "For Barnes & Noble, long the largest and most powerful bookstore chain in the country, the new competition \n" +
      "has led to declining profits and store traffic.";
 
  private static String inputFile ;
  private static String errorInputFile ;
  private static String outputFile ;
 
  @BeforeClass
  public static void init() {
    // get the classpath
    Properties prop = System.getProperties();
    classPaths = prop.getProperty("java.class.path", null);
    long time = (new Date()).getTime();
   inputFile = "/tmp/azkaban_input_" + time;
   errorInputFile = "/tmp/azkaban_input_error_" + time;
   outputFile = "/tmp/azkaban_output_" + time;
    // dump input files
   try {
     Utils.dumpFile(inputFile, inputContent);
     Utils.dumpFile(errorInputFile, errorInputContent);
   }
   catch (IOException e) {
     e.printStackTrace(System.err);
     Assert.fail("error in creating input file:" + e.getLocalizedMessage());
   }
       
  }
 
  @AfterClass
  public static void cleanup() {
    // remove the input file and error input file
    Utils.removeFile(inputFile);
    Utils.removeFile(errorInputFile);
    Utils.removeFile(outputFile);
  }
 
  @Before
  public void setUp() {
   
    /*  initialize job */
    descriptor = EasyMock.createMock(JobDescriptor.class);
   
    props = new Props();
    props.put(AbstractProcessJob.WORKING_DIR, ".");
   
    EasyMock.expect(descriptor.getId()).andReturn("java").times(1);
    EasyMock.expect(descriptor.getResolvedProps()).andReturn(props).times(1);
    EasyMock.expect(descriptor.getFullPath()).andReturn(".").times(1);
   
    EasyMock.replay(descriptor);
   
    job = new JavaJob(descriptor);
   
    EasyMock.verify(descriptor);
  }
 
  @Test
  public void testJavaJob() {
    /* initialize the Props */
    props.put(JavaJob.JOB_CLASS, "azkaban.jobs.builtin.WordCountLocal");
    props.put(ProcessJob.WORKING_DIR, ".");
    props.put("input", inputFile);
    props.put("output", outputFile);
    props.put("classpath",  classPaths);
    job.run();
  }
 
  @Test
  public void testFailedJavaJob() {
    props.put(JavaJob.JOB_CLASS, "azkaban.jobs.builtin.WordCountLocal");
    props.put(ProcessJob.WORKING_DIR, ".");
    props.put("input", errorInputFile);
    props.put("output", outputFile);
    props.put("classpath", classPaths);
   
    try {
    job.run();
    }
    catch (RuntimeException e) {
      Assert.assertTrue(true);
    }
  }
 
}
TOP

Related Classes of azkaban.jobs.builtin.JavaJobTest

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.