MAPREDUCE-4110. Fix tests in TestMiniMRClasspath & TestMiniMRWithDFSWithDistinctUsers (Devaraj K via bobby)
git-svn-id: https://svn.apache.org/repos/asf/hadoop/common/trunk@1310546 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
parent
5af7077dcd
commit
b435e2202d
@ -214,6 +214,10 @@ Release 2.0.0 - UNRELEASED
|
|||||||
MAPREDUCE-4111. Fix tests in org.apache.hadoop.mapred.TestJobName (Devaraj
|
MAPREDUCE-4111. Fix tests in org.apache.hadoop.mapred.TestJobName (Devaraj
|
||||||
K via bobby)
|
K via bobby)
|
||||||
|
|
||||||
|
MAPREDUCE-4110. Fix tests in org.apache.hadoop.mapred.TestMiniMRClasspath &
|
||||||
|
org.apache.hadoop.mapred.TestMiniMRWithDFSWithDistinctUsers (Devaraj K via
|
||||||
|
bobby)
|
||||||
|
|
||||||
Release 0.23.3 - UNRELEASED
|
Release 0.23.3 - UNRELEASED
|
||||||
|
|
||||||
INCOMPATIBLE CHANGES
|
INCOMPATIBLE CHANGES
|
||||||
|
@ -18,47 +18,43 @@
|
|||||||
|
|
||||||
package org.apache.hadoop.mapred;
|
package org.apache.hadoop.mapred;
|
||||||
|
|
||||||
import java.io.*;
|
import java.io.BufferedReader;
|
||||||
|
import java.io.DataOutputStream;
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.io.InputStreamReader;
|
||||||
import java.net.URI;
|
import java.net.URI;
|
||||||
|
|
||||||
import junit.framework.TestCase;
|
import junit.framework.TestCase;
|
||||||
|
|
||||||
import org.apache.hadoop.conf.Configuration;
|
import org.apache.hadoop.conf.Configuration;
|
||||||
import org.apache.hadoop.hdfs.MiniDFSCluster;
|
|
||||||
import org.apache.hadoop.fs.FileSystem;
|
import org.apache.hadoop.fs.FileSystem;
|
||||||
import org.apache.hadoop.fs.FileUtil;
|
import org.apache.hadoop.fs.FileUtil;
|
||||||
import org.apache.hadoop.fs.Path;
|
import org.apache.hadoop.fs.Path;
|
||||||
|
import org.apache.hadoop.hdfs.MiniDFSCluster;
|
||||||
import org.apache.hadoop.io.IntWritable;
|
import org.apache.hadoop.io.IntWritable;
|
||||||
import org.apache.hadoop.io.Text;
|
import org.apache.hadoop.io.Text;
|
||||||
import org.apache.hadoop.mapreduce.server.jobtracker.JTConfig;
|
import org.apache.hadoop.mapreduce.server.jobtracker.JTConfig;
|
||||||
import org.junit.Ignore;
|
import org.junit.Assert;
|
||||||
|
import org.junit.Test;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* A JUnit test to test Mini Map-Reduce Cluster with multiple directories
|
* A JUnit test to test Mini Map-Reduce Cluster with multiple directories
|
||||||
* and check for correct classpath
|
* and check for correct classpath
|
||||||
*/
|
*/
|
||||||
@Ignore
|
public class TestMiniMRClasspath {
|
||||||
public class TestMiniMRClasspath extends TestCase {
|
|
||||||
|
|
||||||
|
|
||||||
static void configureWordCount(FileSystem fs,
|
static void configureWordCount(FileSystem fs, JobConf conf, String input,
|
||||||
String jobTracker,
|
int numMaps, int numReduces, Path inDir, Path outDir) throws IOException {
|
||||||
JobConf conf,
|
|
||||||
String input,
|
|
||||||
int numMaps,
|
|
||||||
int numReduces,
|
|
||||||
Path inDir, Path outDir) throws IOException {
|
|
||||||
fs.delete(outDir, true);
|
fs.delete(outDir, true);
|
||||||
if (!fs.mkdirs(inDir)) {
|
if (!fs.mkdirs(inDir)) {
|
||||||
throw new IOException("Mkdirs failed to create " + inDir.toString());
|
throw new IOException("Mkdirs failed to create " + inDir.toString());
|
||||||
}
|
}
|
||||||
{
|
DataOutputStream file = fs.create(new Path(inDir, "part-0"));
|
||||||
DataOutputStream file = fs.create(new Path(inDir, "part-0"));
|
file.writeBytes(input);
|
||||||
file.writeBytes(input);
|
file.close();
|
||||||
file.close();
|
|
||||||
}
|
|
||||||
FileSystem.setDefaultUri(conf, fs.getUri());
|
FileSystem.setDefaultUri(conf, fs.getUri());
|
||||||
conf.set(JTConfig.FRAMEWORK_NAME, JTConfig.CLASSIC_FRAMEWORK_NAME);
|
conf.set(JTConfig.FRAMEWORK_NAME, JTConfig.YARN_FRAMEWORK_NAME);
|
||||||
conf.set(JTConfig.JT_IPC_ADDRESS, jobTracker);
|
|
||||||
conf.setJobName("wordcount");
|
conf.setJobName("wordcount");
|
||||||
conf.setInputFormat(TextInputFormat.class);
|
conf.setInputFormat(TextInputFormat.class);
|
||||||
|
|
||||||
@ -74,18 +70,17 @@ static void configureWordCount(FileSystem fs,
|
|||||||
FileOutputFormat.setOutputPath(conf, outDir);
|
FileOutputFormat.setOutputPath(conf, outDir);
|
||||||
conf.setNumMapTasks(numMaps);
|
conf.setNumMapTasks(numMaps);
|
||||||
conf.setNumReduceTasks(numReduces);
|
conf.setNumReduceTasks(numReduces);
|
||||||
//pass a job.jar already included in the hadoop build
|
//set the tests jar file
|
||||||
conf.setJar("build/test/mapred/testjar/testjob.jar");
|
conf.setJarByClass(TestMiniMRClasspath.class);
|
||||||
}
|
}
|
||||||
|
|
||||||
static String launchWordCount(URI fileSys, String jobTracker, JobConf conf,
|
static String launchWordCount(URI fileSys, JobConf conf, String input,
|
||||||
String input, int numMaps, int numReduces)
|
int numMaps, int numReduces)
|
||||||
throws IOException {
|
throws IOException {
|
||||||
final Path inDir = new Path("/testing/wc/input");
|
final Path inDir = new Path("/testing/wc/input");
|
||||||
final Path outDir = new Path("/testing/wc/output");
|
final Path outDir = new Path("/testing/wc/output");
|
||||||
FileSystem fs = FileSystem.get(fileSys, conf);
|
FileSystem fs = FileSystem.get(fileSys, conf);
|
||||||
configureWordCount(fs, jobTracker, conf, input, numMaps, numReduces, inDir,
|
configureWordCount(fs, conf, input, numMaps, numReduces, inDir, outDir);
|
||||||
outDir);
|
|
||||||
JobClient.runJob(conf);
|
JobClient.runJob(conf);
|
||||||
StringBuffer result = new StringBuffer();
|
StringBuffer result = new StringBuffer();
|
||||||
{
|
{
|
||||||
@ -107,8 +102,8 @@ static String launchWordCount(URI fileSys, String jobTracker, JobConf conf,
|
|||||||
return result.toString();
|
return result.toString();
|
||||||
}
|
}
|
||||||
|
|
||||||
static String launchExternal(URI uri, String jobTracker, JobConf conf,
|
static String launchExternal(URI uri, JobConf conf, String input,
|
||||||
String input, int numMaps, int numReduces)
|
int numMaps, int numReduces)
|
||||||
throws IOException {
|
throws IOException {
|
||||||
|
|
||||||
final Path inDir = new Path("/testing/ext/input");
|
final Path inDir = new Path("/testing/ext/input");
|
||||||
@ -124,8 +119,7 @@ static String launchExternal(URI uri, String jobTracker, JobConf conf,
|
|||||||
file.close();
|
file.close();
|
||||||
}
|
}
|
||||||
FileSystem.setDefaultUri(conf, uri);
|
FileSystem.setDefaultUri(conf, uri);
|
||||||
conf.set(JTConfig.FRAMEWORK_NAME, JTConfig.CLASSIC_FRAMEWORK_NAME);
|
conf.set(JTConfig.FRAMEWORK_NAME, JTConfig.YARN_FRAMEWORK_NAME);
|
||||||
conf.set(JTConfig.JT_IPC_ADDRESS, jobTracker);
|
|
||||||
conf.setJobName("wordcount");
|
conf.setJobName("wordcount");
|
||||||
conf.setInputFormat(TextInputFormat.class);
|
conf.setInputFormat(TextInputFormat.class);
|
||||||
|
|
||||||
@ -142,8 +136,8 @@ static String launchExternal(URI uri, String jobTracker, JobConf conf,
|
|||||||
conf.set("mapred.mapper.class", "testjar.ExternalMapperReducer");
|
conf.set("mapred.mapper.class", "testjar.ExternalMapperReducer");
|
||||||
conf.set("mapred.reducer.class", "testjar.ExternalMapperReducer");
|
conf.set("mapred.reducer.class", "testjar.ExternalMapperReducer");
|
||||||
|
|
||||||
//pass a job.jar already included in the hadoop build
|
// set the tests jar file
|
||||||
conf.setJar("build/test/mapred/testjar/testjob.jar");
|
conf.setJarByClass(TestMiniMRClasspath.class);
|
||||||
JobClient.runJob(conf);
|
JobClient.runJob(conf);
|
||||||
StringBuffer result = new StringBuffer();
|
StringBuffer result = new StringBuffer();
|
||||||
Path[] fileList = FileUtil.stat2Paths(fs.listStatus(outDir,
|
Path[] fileList = FileUtil.stat2Paths(fs.listStatus(outDir,
|
||||||
@ -164,6 +158,7 @@ static String launchExternal(URI uri, String jobTracker, JobConf conf,
|
|||||||
return result.toString();
|
return result.toString();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
public void testClassPath() throws IOException {
|
public void testClassPath() throws IOException {
|
||||||
String namenode = null;
|
String namenode = null;
|
||||||
MiniDFSCluster dfs = null;
|
MiniDFSCluster dfs = null;
|
||||||
@ -180,13 +175,10 @@ public void testClassPath() throws IOException {
|
|||||||
mr = new MiniMRCluster(taskTrackers, namenode, 3);
|
mr = new MiniMRCluster(taskTrackers, namenode, 3);
|
||||||
JobConf jobConf = new JobConf();
|
JobConf jobConf = new JobConf();
|
||||||
String result;
|
String result;
|
||||||
final String jobTrackerName = "localhost:" + mr.getJobTrackerPort();
|
result = launchWordCount(fileSys.getUri(), jobConf,
|
||||||
result = launchWordCount(fileSys.getUri(), jobTrackerName, jobConf,
|
"The quick brown fox\nhas many silly\n" + "red fox sox\n", 3, 1);
|
||||||
"The quick brown fox\nhas many silly\n" +
|
Assert.assertEquals("The\t1\nbrown\t1\nfox\t2\nhas\t1\nmany\t1\n"
|
||||||
"red fox sox\n",
|
+ "quick\t1\nred\t1\nsilly\t1\nsox\t1\n", result);
|
||||||
3, 1);
|
|
||||||
assertEquals("The\t1\nbrown\t1\nfox\t2\nhas\t1\nmany\t1\n" +
|
|
||||||
"quick\t1\nred\t1\nsilly\t1\nsox\t1\n", result);
|
|
||||||
|
|
||||||
} finally {
|
} finally {
|
||||||
if (dfs != null) { dfs.shutdown(); }
|
if (dfs != null) { dfs.shutdown(); }
|
||||||
@ -195,6 +187,7 @@ public void testClassPath() throws IOException {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
public void testExternalWritable()
|
public void testExternalWritable()
|
||||||
throws IOException {
|
throws IOException {
|
||||||
|
|
||||||
@ -214,12 +207,10 @@ public void testExternalWritable()
|
|||||||
mr = new MiniMRCluster(taskTrackers, namenode, 3);
|
mr = new MiniMRCluster(taskTrackers, namenode, 3);
|
||||||
JobConf jobConf = new JobConf();
|
JobConf jobConf = new JobConf();
|
||||||
String result;
|
String result;
|
||||||
final String jobTrackerName = "localhost:" + mr.getJobTrackerPort();
|
|
||||||
|
|
||||||
result = launchExternal(fileSys.getUri(), jobTrackerName, jobConf,
|
result = launchExternal(fileSys.getUri(), jobConf,
|
||||||
"Dennis was here!\nDennis again!",
|
"Dennis was here!\nDennis again!", 3, 1);
|
||||||
3, 1);
|
Assert.assertEquals("Dennis again!\t1\nDennis was here!\t1\n", result);
|
||||||
assertEquals("Dennis again!\t1\nDennis was here!\t1\n", result);
|
|
||||||
|
|
||||||
}
|
}
|
||||||
finally {
|
finally {
|
||||||
|
@ -17,26 +17,26 @@
|
|||||||
*/
|
*/
|
||||||
package org.apache.hadoop.mapred;
|
package org.apache.hadoop.mapred;
|
||||||
|
|
||||||
import java.io.*;
|
import java.io.IOException;
|
||||||
import java.security.PrivilegedExceptionAction;
|
import java.security.PrivilegedExceptionAction;
|
||||||
|
|
||||||
import junit.framework.TestCase;
|
|
||||||
|
|
||||||
import org.apache.hadoop.conf.Configuration;
|
import org.apache.hadoop.conf.Configuration;
|
||||||
import org.apache.hadoop.hdfs.MiniDFSCluster;
|
|
||||||
import org.apache.hadoop.fs.FileSystem;
|
import org.apache.hadoop.fs.FileSystem;
|
||||||
import org.apache.hadoop.fs.Path;
|
import org.apache.hadoop.fs.Path;
|
||||||
import org.apache.hadoop.fs.permission.FsPermission;
|
import org.apache.hadoop.fs.permission.FsPermission;
|
||||||
|
import org.apache.hadoop.hdfs.MiniDFSCluster;
|
||||||
import org.apache.hadoop.mapreduce.MRJobConfig;
|
import org.apache.hadoop.mapreduce.MRJobConfig;
|
||||||
import org.apache.hadoop.mapreduce.server.jobtracker.JTConfig;
|
import org.apache.hadoop.mapreduce.server.jobtracker.JTConfig;
|
||||||
import org.apache.hadoop.security.*;
|
import org.apache.hadoop.security.UserGroupInformation;
|
||||||
import org.junit.Ignore;
|
import org.junit.After;
|
||||||
|
import org.junit.Assert;
|
||||||
|
import org.junit.Before;
|
||||||
|
import org.junit.Test;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* A JUnit test to test Mini Map-Reduce Cluster with Mini-DFS.
|
* A JUnit test to test Mini Map-Reduce Cluster with Mini-DFS.
|
||||||
*/
|
*/
|
||||||
@Ignore
|
public class TestMiniMRWithDFSWithDistinctUsers {
|
||||||
public class TestMiniMRWithDFSWithDistinctUsers extends TestCase {
|
|
||||||
static final UserGroupInformation DFS_UGI = createUGI("dfs", true);
|
static final UserGroupInformation DFS_UGI = createUGI("dfs", true);
|
||||||
static final UserGroupInformation ALICE_UGI = createUGI("alice", false);
|
static final UserGroupInformation ALICE_UGI = createUGI("alice", false);
|
||||||
static final UserGroupInformation BOB_UGI = createUGI("bob", false);
|
static final UserGroupInformation BOB_UGI = createUGI("bob", false);
|
||||||
@ -45,7 +45,6 @@ public class TestMiniMRWithDFSWithDistinctUsers extends TestCase {
|
|||||||
MiniDFSCluster dfs = null;
|
MiniDFSCluster dfs = null;
|
||||||
FileSystem fs = null;
|
FileSystem fs = null;
|
||||||
Configuration conf = new Configuration();
|
Configuration conf = new Configuration();
|
||||||
String jobTrackerName;
|
|
||||||
|
|
||||||
static UserGroupInformation createUGI(String name, boolean issuper) {
|
static UserGroupInformation createUGI(String name, boolean issuper) {
|
||||||
String group = issuper? "supergroup": name;
|
String group = issuper? "supergroup": name;
|
||||||
@ -71,9 +70,10 @@ public RunningJob run() throws IOException {
|
|||||||
});
|
});
|
||||||
|
|
||||||
rj.waitForCompletion();
|
rj.waitForCompletion();
|
||||||
assertEquals("SUCCEEDED", JobStatus.getJobRunState(rj.getJobState()));
|
Assert.assertEquals("SUCCEEDED", JobStatus.getJobRunState(rj.getJobState()));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Before
|
||||||
public void setUp() throws Exception {
|
public void setUp() throws Exception {
|
||||||
dfs = new MiniDFSCluster(conf, 4, true, null);
|
dfs = new MiniDFSCluster(conf, 4, true, null);
|
||||||
|
|
||||||
@ -96,29 +96,30 @@ public FileSystem run() throws IOException {
|
|||||||
|
|
||||||
mr = new MiniMRCluster(0, 0, 4, dfs.getFileSystem().getUri().toString(),
|
mr = new MiniMRCluster(0, 0, 4, dfs.getFileSystem().getUri().toString(),
|
||||||
1, null, null, MR_UGI, mrConf);
|
1, null, null, MR_UGI, mrConf);
|
||||||
jobTrackerName = "localhost:" + mr.getJobTrackerPort();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@After
|
||||||
public void tearDown() throws Exception {
|
public void tearDown() throws Exception {
|
||||||
if (mr != null) { mr.shutdown();}
|
if (mr != null) { mr.shutdown();}
|
||||||
if (dfs != null) { dfs.shutdown(); }
|
if (dfs != null) { dfs.shutdown(); }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
public void testDistinctUsers() throws Exception {
|
public void testDistinctUsers() throws Exception {
|
||||||
JobConf job1 = mr.createJobConf();
|
JobConf job1 = mr.createJobConf();
|
||||||
String input = "The quick brown fox\nhas many silly\n"
|
String input = "The quick brown fox\nhas many silly\n"
|
||||||
+ "red fox sox\n";
|
+ "red fox sox\n";
|
||||||
Path inDir = new Path("/testing/distinct/input");
|
Path inDir = new Path("/testing/distinct/input");
|
||||||
Path outDir = new Path("/user/alice/output");
|
Path outDir = new Path("/user/alice/output");
|
||||||
TestMiniMRClasspath.configureWordCount(fs, jobTrackerName, job1,
|
TestMiniMRClasspath
|
||||||
input, 2, 1, inDir, outDir);
|
.configureWordCount(fs, job1, input, 2, 1, inDir, outDir);
|
||||||
runJobAsUser(job1, ALICE_UGI);
|
runJobAsUser(job1, ALICE_UGI);
|
||||||
|
|
||||||
JobConf job2 = mr.createJobConf();
|
JobConf job2 = mr.createJobConf();
|
||||||
Path inDir2 = new Path("/testing/distinct/input2");
|
Path inDir2 = new Path("/testing/distinct/input2");
|
||||||
Path outDir2 = new Path("/user/bob/output2");
|
Path outDir2 = new Path("/user/bob/output2");
|
||||||
TestMiniMRClasspath.configureWordCount(fs, jobTrackerName, job2,
|
TestMiniMRClasspath.configureWordCount(fs, job2, input, 2, 1, inDir2,
|
||||||
input, 2, 1, inDir2, outDir2);
|
outDir2);
|
||||||
runJobAsUser(job2, BOB_UGI);
|
runJobAsUser(job2, BOB_UGI);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -127,6 +128,7 @@ public void testDistinctUsers() throws Exception {
|
|||||||
* task makes lots of spills (more than fit in the spill index cache)
|
* task makes lots of spills (more than fit in the spill index cache)
|
||||||
* that it will succeed.
|
* that it will succeed.
|
||||||
*/
|
*/
|
||||||
|
@Test
|
||||||
public void testMultipleSpills() throws Exception {
|
public void testMultipleSpills() throws Exception {
|
||||||
JobConf job1 = mr.createJobConf();
|
JobConf job1 = mr.createJobConf();
|
||||||
|
|
||||||
@ -141,8 +143,8 @@ public void testMultipleSpills() throws Exception {
|
|||||||
+ "red fox sox\n";
|
+ "red fox sox\n";
|
||||||
Path inDir = new Path("/testing/distinct/input");
|
Path inDir = new Path("/testing/distinct/input");
|
||||||
Path outDir = new Path("/user/alice/output");
|
Path outDir = new Path("/user/alice/output");
|
||||||
TestMiniMRClasspath.configureWordCount(fs, jobTrackerName, job1,
|
TestMiniMRClasspath
|
||||||
input, 2, 1, inDir, outDir);
|
.configureWordCount(fs, job1, input, 2, 1, inDir, outDir);
|
||||||
runJobAsUser(job1, ALICE_UGI);
|
runJobAsUser(job1, ALICE_UGI);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user