/*
* Copyright 2011-2013 the original author or authors.
*
* Licensed 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.springframework.data.hadoop.mapreduce;
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 javax.annotation.Resource;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.mapred.JobConf;
import org.apache.hadoop.mapred.RunningJob;
import org.apache.hadoop.mapreduce.Job;
import org.apache.hadoop.mapreduce.JobID;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.ApplicationContext;
import org.springframework.data.hadoop.mapreduce.ToolTests.TestTool;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
/**
* @author Costin Leau
*/
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration
public class JobTests {
public static class JobInfo {
public JobID jobId;
public org.apache.hadoop.mapred.JobID oldJobId;
public RunningJob runningJob;
public JobConf jobConf;
public void setJobId(JobID jobId) {
this.jobId = jobId;
}
public void setOldJobId(org.apache.hadoop.mapred.JobID oldJobId) {
this.oldJobId = oldJobId;
}
public void setRunningJob(RunningJob runningJob) {
this.runningJob = runningJob;
}
public void setJobConf(JobConf jobConf) {
this.jobConf = jobConf;
}
}
@Autowired
private ApplicationContext ctx;
@Resource(name = "ns-job")
private Job job;
private JobInfo jobInfo;
@Before
public void before() {
TestTool.conf = null;
TestTool.obj = null;
TestTool.args = null;
}
@Test
public void testSanityTest() throws Exception {
assertNotNull(ctx);
}
@Test
public void testJarJob() throws Exception {
Job job = ctx.getBean("jar-job", Job.class);
assertTrue(ctx.isPrototype("jar-job"));
assertNotNull(job.getJar());
assertEquals("true", job.getConfiguration().get("mapred.used.genericoptionsparser"));
}
@Test
public void testCustomJarJob() throws Exception {
Job job = ctx.getBean("custom-jar-job", Job.class);
assertTrue(ctx.isPrototype("custom-jar-job"));
assertNotNull(job.getJar());
assertEquals("true", job.getConfiguration().get("mapred.used.genericoptionsparser"));
ClassLoader loader = job.getConfiguration().getClassLoader();
assertFalse(Thread.currentThread().getContextClassLoader().equals(loader));
}
@Test
public void testJobProperties() throws Exception {
assertNotNull(job);
Configuration cfg = job.getConfiguration();
assertNotNull(cfg);
assertEquals("chasing", cfg.get("star"));
assertEquals("captain eo", cfg.get("return"));
assertEquals("last", cfg.get("train"));
assertEquals("the dream", cfg.get("dancing"));
assertEquals("in the mirror", cfg.get("tears"));
assertEquals("eo", cfg.get("captain"));
assertEquals("8", cfg.get("mapred.reduce.tasks"));
// will always be 1 when local
//assertEquals("4", cfg.get("mapred.map.tasks"));
System.out.println(cfg.get("mapred.map.tasks"));
assertEquals("true", job.getConfiguration().get("mapred.used.genericoptionsparser"));
//System.in.read();
}
public void testPropertyEditors() throws Exception {
assertNotNull(jobInfo);
assertNotNull(jobInfo.jobConf);
assertNotNull(jobInfo.jobId);
assertNotNull(jobInfo.oldJobId);
assertNotNull(jobInfo.runningJob);
}
}