TestUnixUserGroupInformation.java
上传用户:quxuerui
上传日期:2018-01-08
资源大小:41811k
文件大小:4k
源码类别:

网格计算

开发平台:

Java

  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.  */
  18. package org.apache.hadoop.security;
  19. import org.apache.hadoop.conf.Configuration;
  20. import org.apache.hadoop.io.TestWritable;
  21. import junit.framework.TestCase;
  22. /** Unit tests for UnixUserGroupInformation */
  23. public class TestUnixUserGroupInformation extends TestCase {
  24.   final private static String USER_NAME = "user1";
  25.   final private static String GROUP1_NAME = "group1";
  26.   final private static String GROUP2_NAME = "group2";
  27.   final private static String GROUP3_NAME = "group3";
  28.   final private static String[] GROUP_NAMES = 
  29.                       new String[]{GROUP1_NAME, GROUP2_NAME, GROUP3_NAME};
  30.   
  31.   /** Test login method */
  32.   public void testLogin() throws Exception {
  33.     Configuration conf = new Configuration();
  34.     
  35.     // loin from unix
  36.     String userName = UnixUserGroupInformation.getUnixUserName();
  37.     UnixUserGroupInformation curUserGroupInfo = 
  38.         UnixUserGroupInformation.login(conf);
  39.     assertEquals(curUserGroupInfo.getUserName(), userName);
  40.     assertTrue(curUserGroupInfo == UnixUserGroupInformation.login(conf));
  41.     
  42.     // login from the configuration
  43.     UnixUserGroupInformation userGroupInfo = new UnixUserGroupInformation(
  44.         USER_NAME, GROUP_NAMES );
  45.     UnixUserGroupInformation.saveToConf(conf, 
  46.         UnixUserGroupInformation.UGI_PROPERTY_NAME, userGroupInfo);
  47.     curUserGroupInfo = UnixUserGroupInformation.login(conf);
  48.     assertEquals(curUserGroupInfo, userGroupInfo);
  49.     assertTrue(curUserGroupInfo == UnixUserGroupInformation.login(conf));
  50.   }
  51.   /** test constructor */
  52.   public void testConstructor() throws Exception {
  53.     UnixUserGroupInformation uugi = 
  54.       new UnixUserGroupInformation(USER_NAME, GROUP_NAMES);
  55.     assertEquals(uugi, new UnixUserGroupInformation( new String[]{
  56.        USER_NAME, GROUP1_NAME, GROUP2_NAME, GROUP3_NAME} ));  
  57.     // failure test
  58.     testConstructorFailures(null, GROUP_NAMES);
  59.     testConstructorFailures("", GROUP_NAMES);
  60.     testConstructorFailures(USER_NAME, null);
  61.     testConstructorFailures(USER_NAME, new String[0]);
  62.     testConstructorFailures(USER_NAME, new String[]{null});
  63.     testConstructorFailures(USER_NAME, new String[]{""});
  64.     testConstructorFailures(USER_NAME, new String[]{GROUP1_NAME, null});
  65.     testConstructorFailures(USER_NAME, 
  66.         new String[]{GROUP1_NAME, null, GROUP2_NAME});
  67.   }
  68.   
  69.   private void testConstructorFailures(String userName, String[] groupNames) {
  70.     boolean gotException = false;
  71.     try {
  72.       new UnixUserGroupInformation(userName, groupNames);
  73.     } catch (Exception e) {
  74.       gotException = true;
  75.     }
  76.     assertTrue(gotException);
  77.   }
  78.   
  79.   public void testEquals() throws Exception {
  80.     UnixUserGroupInformation uugi = 
  81.       new UnixUserGroupInformation(USER_NAME, GROUP_NAMES);
  82.     assertEquals(uugi, uugi);
  83.     assertEquals(uugi, new UnixUserGroupInformation(USER_NAME, GROUP_NAMES));
  84.     assertEquals(uugi, new UnixUserGroupInformation(USER_NAME,
  85.         new String[]{GROUP1_NAME, GROUP3_NAME, GROUP2_NAME}));
  86.     assertFalse(uugi.equals(new UnixUserGroupInformation()));
  87.     assertFalse(uugi.equals(new UnixUserGroupInformation(USER_NAME,
  88.         new String[]{GROUP2_NAME, GROUP3_NAME, GROUP1_NAME})));
  89.   }
  90.   
  91.   /** test Writable */
  92.   public void testWritable() throws Exception {
  93.     UnixUserGroupInformation ugi = new UnixUserGroupInformation(
  94.         USER_NAME, GROUP_NAMES);
  95.     TestWritable.testWritable(ugi, new Configuration());
  96.   }
  97. }