source: proiecte/HadoopJUnit/hadoop-0.20.1/src/test/org/apache/hadoop/mapred/TestMiniMRWithDFSWithDistinctUsers.java @ 120

Last change on this file since 120 was 120, checked in by (none), 14 years ago

Added the mail files for the Hadoop JUNit Project

  • Property svn:executable set to *
File size: 3.1 KB
Line 
1/**
2 * Licensed to the Apache Software Foundation (ASF) under one
3 * or more contributor license agreements.  See the NOTICE file
4 * distributed with this work for additional information
5 * regarding copyright ownership.  The ASF licenses this file
6 * to you under the Apache License, Version 2.0 (the
7 * "License"); you may not use this file except in compliance
8 * with the License.  You may obtain a copy of the License at
9 *
10 *     http://www.apache.org/licenses/LICENSE-2.0
11 *
12 * Unless required by applicable law or agreed to in writing, software
13 * distributed under the License is distributed on an "AS IS" BASIS,
14 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15 * See the License for the specific language governing permissions and
16 * limitations under the License.
17 */
18package org.apache.hadoop.mapred;
19
20import java.io.*;
21
22import junit.framework.TestCase;
23
24import org.apache.hadoop.conf.Configuration;
25import org.apache.hadoop.hdfs.MiniDFSCluster;
26import org.apache.hadoop.fs.FileSystem;
27import org.apache.hadoop.fs.Path;
28import org.apache.hadoop.fs.permission.FsPermission;
29import org.apache.hadoop.security.*;
30
31/**
32 * A JUnit test to test Mini Map-Reduce Cluster with Mini-DFS.
33 */
34public class TestMiniMRWithDFSWithDistinctUsers extends TestCase {
35  static final long now = System.currentTimeMillis();
36  static final UnixUserGroupInformation DFS_UGI = createUGI("dfs", true); 
37  static final UnixUserGroupInformation PI_UGI = createUGI("pi", false); 
38  static final UnixUserGroupInformation WC_UGI = createUGI("wc", false); 
39
40  static UnixUserGroupInformation createUGI(String name, boolean issuper) {
41    String username = name + now;
42    String group = issuper? "supergroup": username;
43    return UnixUserGroupInformation.createImmutable(
44        new String[]{username, group});
45  }
46 
47  static JobConf createJobConf(MiniMRCluster mr, UnixUserGroupInformation ugi) {
48    JobConf jobconf = mr.createJobConf();
49    UnixUserGroupInformation.saveToConf(jobconf,
50        UnixUserGroupInformation.UGI_PROPERTY_NAME, ugi);
51    return jobconf;
52  }
53
54  static void mkdir(FileSystem fs, String dir) throws IOException {
55    Path p = new Path(dir);
56    fs.mkdirs(p);
57    fs.setPermission(p, new FsPermission((short)0777));
58  }
59
60  public void testDistinctUsers() throws Exception {
61    MiniDFSCluster dfs = null;
62    MiniMRCluster mr = null;
63    try {
64      Configuration conf = new Configuration();
65      UnixUserGroupInformation.saveToConf(conf,
66          UnixUserGroupInformation.UGI_PROPERTY_NAME, DFS_UGI);
67      dfs = new MiniDFSCluster(conf, 4, true, null);
68      FileSystem fs = dfs.getFileSystem();
69      mkdir(fs, "/user");
70      mkdir(fs, "/mapred");
71
72      UnixUserGroupInformation MR_UGI = createUGI(
73          UnixUserGroupInformation.login().getUserName(), false); 
74      mr = new MiniMRCluster(0, 0, 4, dfs.getFileSystem().getUri().toString(),
75           1, null, null, MR_UGI);
76
77      JobConf pi = createJobConf(mr, PI_UGI);
78      TestMiniMRWithDFS.runPI(mr, pi);
79
80      JobConf wc = createJobConf(mr, WC_UGI);
81      TestMiniMRWithDFS.runWordCount(mr, wc);
82    } finally {
83      if (dfs != null) { dfs.shutdown(); }
84      if (mr != null) { mr.shutdown();}
85    }
86  }
87}
Note: See TracBrowser for help on using the repository browser.