Package org.springframework.data.hadoop.mapreduce

Source Code of org.springframework.data.hadoop.mapreduce.ToolTests

/*
* 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 java.net.URL;
import java.util.concurrent.Callable;

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.util.Tool;
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.TestUtils;
import org.springframework.data.hadoop.batch.JobsTrigger;
import org.springframework.test.annotation.DirtiesContext;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;

import static org.junit.Assert.*;

/**
* @author Costin Leau
*/
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration
@DirtiesContext(classMode = DirtiesContext.ClassMode.AFTER_EACH_TEST_METHOD)
public class ToolTests {

  {
    TestUtils.hackHadoopStagingOnWin();
  }

  public static class TestTool implements Tool {

    public static Configuration conf;
    public static Object obj;
    public static String[] args;

    public TestTool() {

    }

    public TestTool(Object obj) {

    }

    @Override
    public void setConf(Configuration conf) {
      TestTool.conf = conf;
    }

    @Override
    public Configuration getConf() {
      return conf;
    }

    @Override
    public int run(String[] args) throws Exception {
      TestTool.args = args;
      return 0;
    }
  }

  @Autowired
  private ApplicationContext ctx;

  @Test
  public void testToolClass() throws Exception {
    ctx.getBean("simple");
    assertNotNull(TestTool.conf);
    assertEquals(0, TestTool.args.length);
  }

  @Test
  public void testToolConfiguration() throws Exception {
    ctx.getBean("ref");
    assertNotNull(TestTool.conf);
    assertEquals(0, TestTool.args.length);
  }

  @Test
  public void testToolArgs() throws Exception {
    Callable<?> runner = ctx.getBean("nested", Callable.class);
    runner.call();
    assertNotNull(TestTool.conf);
    Configuration conf = TestTool.conf;
    assertFalse(ctx.getBean("hadoopConfiguration").equals(conf));

    assertEquals("for santa", conf.get("cookies"));

    String[] args = TestTool.args;
    assertNotNull(args);
    assertEquals(3, args.length);
    assertEquals("--local", args[0]);
    assertEquals("data/in.txt", args[1]);
    assertEquals("data/out.txt", args[2]);
  }

  @Test
  public void testTaskletScope() throws Exception {
    assertTrue(ctx.isPrototype("tasklet-ns"));
  }

  @SuppressWarnings("static-access")
  @Test
  public void testTasklet() throws Exception {
    JobsTrigger tj = new JobsTrigger();
    tj.startJobs(ctx);
  }

  @Test
  public void testToolJarLoading() throws Exception {
    ClassLoader loader = getClass().getClassLoader();
    Callable<?> runner = ctx.getBean("tool-jar", Callable.class);
    Object result = runner.call();

    assertNotNull(System.getProperty("org.springframework.data.tool.init"));
    assertEquals(Integer.valueOf(13), result);
    assertFalse(org.springframework.util.ClassUtils.isPresent("test.SomeTool", loader));

    @SuppressWarnings("resource")
    ParentLastURLClassLoader cl = new ParentLastURLClassLoader(
        new URL[] { ctx.getResource("some-tool.jar").getURL() }, loader);

    System.out.println("Loading classes ...");
    cl.loadClass("test.inner.InnerToolClass");
    cl = null;

//    System.out.println("****************** Forcing GC **************************");
    System.gc();
    System.gc();
    Thread.sleep(1 * 1000);
    System.gc();
    Thread.sleep(1 * 1000);
//    System.in.read();
  }
}
TOP

Related Classes of org.springframework.data.hadoop.mapreduce.ToolTests

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.