/** * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you 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.apache.hadoop.mapred; import java.io.DataOutputStream; import java.io.File; import junit.framework.TestCase; import org.apache.hadoop.fs.FileSystem; import org.apache.hadoop.fs.Path; import org.apache.hadoop.io.LongWritable; import org.apache.hadoop.io.Text; import org.apache.hadoop.mapred.lib.IdentityMapper; import org.apache.hadoop.mapred.lib.IdentityReducer; public class TestJobCleanup extends TestCase { private MiniMRCluster cluster = null; private JobConf conf = null; final private static String TEST_ROOT_DIR = new File(System.getProperty("test.build.data", "/tmp") + "/" + "test-job-cleanup").toString(); public void testJobDirctoryCleanup() throws Exception { try { conf = new JobConf(); FileSystem fileSys = FileSystem.get(conf); fileSys.delete(new Path(TEST_ROOT_DIR), true); cluster = new MiniMRCluster(1, "file:///", 1, null, new String[] {"host1"}, conf); JobConf jc = cluster.createJobConf(); jc.setJobName("TestJob"); Path inDir = new Path(TEST_ROOT_DIR, "test-input"); Path outDir = new Path(TEST_ROOT_DIR, "test-output"); String input = "Test\n"; DataOutputStream file = fileSys.create(new Path(inDir, "part-" + 0)); file.writeBytes(input); file.close(); FileInputFormat.setInputPaths(jc, inDir); FileOutputFormat.setOutputPath(jc, outDir); jc.setInputFormat(TextInputFormat.class); jc.setOutputKeyClass(LongWritable.class); jc.setOutputValueClass(Text.class); jc.setMapperClass(IdentityMapper.class); jc.setReducerClass(IdentityReducer.class); jc.setNumMapTasks(1); jc.setNumReduceTasks(1); JobClient jobClient = new JobClient(jc); RunningJob job = jobClient.submitJob(jc); JobID jobId = job.getID(); job.waitForCompletion(); cluster.getTaskTrackerRunner(0).getTaskTracker(); String subdir = TaskTracker.getLocalJobDir(jobId.toString()); File dir = new File(cluster.getTaskTrackerLocalDir(0) + "/" + subdir); assertEquals(null, dir.list()); } finally { if (cluster != null) { cluster.shutdown(); } } } }