| /** |
| * 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.fs.permission; |
| |
| import java.io.IOException; |
| |
| import org.apache.hadoop.conf.Configuration; |
| |
| import junit.framework.TestCase; |
| |
| import static org.apache.hadoop.fs.permission.FsAction.*; |
| |
| public class TestFsPermission extends TestCase { |
| public void testFsAction() { |
| //implies |
| for(FsAction a : FsAction.values()) { |
| assertTrue(ALL.implies(a)); |
| } |
| for(FsAction a : FsAction.values()) { |
| assertTrue(a == NONE? NONE.implies(a): !NONE.implies(a)); |
| } |
| for(FsAction a : FsAction.values()) { |
| assertTrue(a == READ_EXECUTE || a == READ || a == EXECUTE || a == NONE? |
| READ_EXECUTE.implies(a): !READ_EXECUTE.implies(a)); |
| } |
| |
| //masks |
| assertEquals(EXECUTE, EXECUTE.and(READ_EXECUTE)); |
| assertEquals(READ, READ.and(READ_EXECUTE)); |
| assertEquals(NONE, WRITE.and(READ_EXECUTE)); |
| |
| assertEquals(READ, READ_EXECUTE.and(READ_WRITE)); |
| assertEquals(NONE, READ_EXECUTE.and(WRITE)); |
| assertEquals(WRITE_EXECUTE, ALL.and(WRITE_EXECUTE)); |
| } |
| |
| /** |
| * Ensure that when manually specifying permission modes we get |
| * the expected values back out for all combinations |
| */ |
| public void testConvertingPermissions() { |
| for(short s = 0; s < 01777; s++) { |
| assertEquals(s, new FsPermission(s).toShort()); |
| } |
| |
| short s = 0; |
| |
| for(boolean sb : new boolean [] { false, true }) { |
| for(FsAction u : FsAction.values()) { |
| for(FsAction g : FsAction.values()) { |
| for(FsAction o : FsAction.values()) { |
| FsPermission f = new FsPermission(u, g, o, sb); |
| assertEquals(s, f.toShort()); |
| FsPermission f2 = new FsPermission(f); |
| assertEquals(s, f2.toShort()); |
| s++; |
| } |
| } |
| } |
| } |
| } |
| |
| public void testStickyBitToString() { |
| // Check that every permission has its sticky bit represented correctly |
| for(boolean sb : new boolean [] { false, true }) { |
| for(FsAction u : FsAction.values()) { |
| for(FsAction g : FsAction.values()) { |
| for(FsAction o : FsAction.values()) { |
| FsPermission f = new FsPermission(u, g, o, sb); |
| if(f.getStickyBit() && f.getOtherAction().implies(EXECUTE)) |
| assertEquals('t', f.toString().charAt(8)); |
| else if(f.getStickyBit() && !f.getOtherAction().implies(EXECUTE)) |
| assertEquals('T', f.toString().charAt(8)); |
| else if(!f.getStickyBit() && f.getOtherAction().implies(EXECUTE)) |
| assertEquals('x', f.toString().charAt(8)); |
| else |
| assertEquals('-', f.toString().charAt(8)); |
| } |
| } |
| } |
| } |
| } |
| |
| public void testFsPermission() { |
| String symbolic = "-rwxrwxrwx"; |
| StringBuilder b = new StringBuilder("-123456789"); |
| |
| for(int i = 0; i < (1<<9); i++) { |
| for(int j = 1; j < 10; j++) { |
| b.setCharAt(j, '-'); |
| } |
| String binary = Integer.toBinaryString(i); |
| |
| int len = binary.length(); |
| for(int j = 0; j < len; j++) { |
| if (binary.charAt(j) == '1') { |
| int k = 9 - (len - 1 - j); |
| b.setCharAt(k, symbolic.charAt(k)); |
| } |
| } |
| |
| assertEquals(i, FsPermission.valueOf(b.toString()).toShort()); |
| } |
| } |
| |
| public void testUMaskParser() throws IOException { |
| Configuration conf = new Configuration(); |
| |
| // Ensure that we get the right octal values back for all legal values |
| for(FsAction u : FsAction.values()) { |
| for(FsAction g : FsAction.values()) { |
| for(FsAction o : FsAction.values()) { |
| FsPermission f = new FsPermission(u, g, o); |
| String asOctal = String.format("%1$03o", f.toShort()); |
| conf.set(FsPermission.UMASK_LABEL, asOctal); |
| FsPermission fromConf = FsPermission.getUMask(conf); |
| assertEquals(f, fromConf); |
| } |
| } |
| } |
| } |
| |
| public void testSymbolicUmasks() { |
| Configuration conf = new Configuration(); |
| |
| // Test some symbolic to octal settings |
| // Symbolic umask list is generated in linux shell using by the command: |
| // umask 0; umask <octal number>; umask -S |
| String [][] symbolic = new String [][] { |
| {"a+rw", "111",}, |
| {"u=rwx,g=rwx,o=rwx", "0",}, |
| {"u=rwx,g=rwx,o=rw", "1",}, |
| {"u=rwx,g=rwx,o=rx", "2",}, |
| {"u=rwx,g=rwx,o=r", "3",}, |
| {"u=rwx,g=rwx,o=wx", "4",}, |
| {"u=rwx,g=rwx,o=w", "5",}, |
| {"u=rwx,g=rwx,o=x", "6",}, |
| {"u=rwx,g=rwx,o=", "7",}, |
| {"u=rwx,g=rw,o=rwx", "10",}, |
| {"u=rwx,g=rw,o=rw", "11",}, |
| {"u=rwx,g=rw,o=rx", "12",}, |
| {"u=rwx,g=rw,o=r", "13",}, |
| {"u=rwx,g=rw,o=wx", "14",}, |
| {"u=rwx,g=rw,o=w", "15",}, |
| {"u=rwx,g=rw,o=x", "16",}, |
| {"u=rwx,g=rw,o=", "17",}, |
| {"u=rwx,g=rx,o=rwx", "20",}, |
| {"u=rwx,g=rx,o=rw", "21",}, |
| {"u=rwx,g=rx,o=rx", "22",}, |
| {"u=rwx,g=rx,o=r", "23",}, |
| {"u=rwx,g=rx,o=wx", "24",}, |
| {"u=rwx,g=rx,o=w", "25",}, |
| {"u=rwx,g=rx,o=x", "26",}, |
| {"u=rwx,g=rx,o=", "27",}, |
| {"u=rwx,g=r,o=rwx", "30",}, |
| {"u=rwx,g=r,o=rw", "31",}, |
| {"u=rwx,g=r,o=rx", "32",}, |
| {"u=rwx,g=r,o=r", "33",}, |
| {"u=rwx,g=r,o=wx", "34",}, |
| {"u=rwx,g=r,o=w", "35",}, |
| {"u=rwx,g=r,o=x", "36",}, |
| {"u=rwx,g=r,o=", "37",}, |
| {"u=rwx,g=wx,o=rwx", "40",}, |
| {"u=rwx,g=wx,o=rw", "41",}, |
| {"u=rwx,g=wx,o=rx", "42",}, |
| {"u=rwx,g=wx,o=r", "43",}, |
| {"u=rwx,g=wx,o=wx", "44",}, |
| {"u=rwx,g=wx,o=w", "45",}, |
| {"u=rwx,g=wx,o=x", "46",}, |
| {"u=rwx,g=wx,o=", "47",}, |
| {"u=rwx,g=w,o=rwx", "50",}, |
| {"u=rwx,g=w,o=rw", "51",}, |
| {"u=rwx,g=w,o=rx", "52",}, |
| {"u=rwx,g=w,o=r", "53",}, |
| {"u=rwx,g=w,o=wx", "54",}, |
| {"u=rwx,g=w,o=w", "55",}, |
| {"u=rwx,g=w,o=x", "56",}, |
| {"u=rwx,g=w,o=", "57",}, |
| {"u=rwx,g=x,o=rwx", "60",}, |
| {"u=rwx,g=x,o=rw", "61",}, |
| {"u=rwx,g=x,o=rx", "62",}, |
| {"u=rwx,g=x,o=r", "63",}, |
| {"u=rwx,g=x,o=wx", "64",}, |
| {"u=rwx,g=x,o=w", "65",}, |
| {"u=rwx,g=x,o=x", "66",}, |
| {"u=rwx,g=x,o=", "67",}, |
| {"u=rwx,g=,o=rwx", "70",}, |
| {"u=rwx,g=,o=rw", "71",}, |
| {"u=rwx,g=,o=rx", "72",}, |
| {"u=rwx,g=,o=r", "73",}, |
| {"u=rwx,g=,o=wx", "74",}, |
| {"u=rwx,g=,o=w", "75",}, |
| {"u=rwx,g=,o=x", "76",}, |
| {"u=rwx,g=,o=", "77",}, |
| {"u=rw,g=rwx,o=rwx", "100",}, |
| {"u=rw,g=rwx,o=rw", "101",}, |
| {"u=rw,g=rwx,o=rx", "102",}, |
| {"u=rw,g=rwx,o=r", "103",}, |
| {"u=rw,g=rwx,o=wx", "104",}, |
| {"u=rw,g=rwx,o=w", "105",}, |
| {"u=rw,g=rwx,o=x", "106",}, |
| {"u=rw,g=rwx,o=", "107",}, |
| {"u=rw,g=rw,o=rwx", "110",}, |
| {"u=rw,g=rw,o=rw", "111",}, |
| {"u=rw,g=rw,o=rx", "112",}, |
| {"u=rw,g=rw,o=r", "113",}, |
| {"u=rw,g=rw,o=wx", "114",}, |
| {"u=rw,g=rw,o=w", "115",}, |
| {"u=rw,g=rw,o=x", "116",}, |
| {"u=rw,g=rw,o=", "117",}, |
| {"u=rw,g=rx,o=rwx", "120",}, |
| {"u=rw,g=rx,o=rw", "121",}, |
| {"u=rw,g=rx,o=rx", "122",}, |
| {"u=rw,g=rx,o=r", "123",}, |
| {"u=rw,g=rx,o=wx", "124",}, |
| {"u=rw,g=rx,o=w", "125",}, |
| {"u=rw,g=rx,o=x", "126",}, |
| {"u=rw,g=rx,o=", "127",}, |
| {"u=rw,g=r,o=rwx", "130",}, |
| {"u=rw,g=r,o=rw", "131",}, |
| {"u=rw,g=r,o=rx", "132",}, |
| {"u=rw,g=r,o=r", "133",}, |
| {"u=rw,g=r,o=wx", "134",}, |
| {"u=rw,g=r,o=w", "135",}, |
| {"u=rw,g=r,o=x", "136",}, |
| {"u=rw,g=r,o=", "137",}, |
| {"u=rw,g=wx,o=rwx", "140",}, |
| {"u=rw,g=wx,o=rw", "141",}, |
| {"u=rw,g=wx,o=rx", "142",}, |
| {"u=rw,g=wx,o=r", "143",}, |
| {"u=rw,g=wx,o=wx", "144",}, |
| {"u=rw,g=wx,o=w", "145",}, |
| {"u=rw,g=wx,o=x", "146",}, |
| {"u=rw,g=wx,o=", "147",}, |
| {"u=rw,g=w,o=rwx", "150",}, |
| {"u=rw,g=w,o=rw", "151",}, |
| {"u=rw,g=w,o=rx", "152",}, |
| {"u=rw,g=w,o=r", "153",}, |
| {"u=rw,g=w,o=wx", "154",}, |
| {"u=rw,g=w,o=w", "155",}, |
| {"u=rw,g=w,o=x", "156",}, |
| {"u=rw,g=w,o=", "157",}, |
| {"u=rw,g=x,o=rwx", "160",}, |
| {"u=rw,g=x,o=rw", "161",}, |
| {"u=rw,g=x,o=rx", "162",}, |
| {"u=rw,g=x,o=r", "163",}, |
| {"u=rw,g=x,o=wx", "164",}, |
| {"u=rw,g=x,o=w", "165",}, |
| {"u=rw,g=x,o=x", "166",}, |
| {"u=rw,g=x,o=", "167",}, |
| {"u=rw,g=,o=rwx", "170",}, |
| {"u=rw,g=,o=rw", "171",}, |
| {"u=rw,g=,o=rx", "172",}, |
| {"u=rw,g=,o=r", "173",}, |
| {"u=rw,g=,o=wx", "174",}, |
| {"u=rw,g=,o=w", "175",}, |
| {"u=rw,g=,o=x", "176",}, |
| {"u=rw,g=,o=", "177",}, |
| {"u=rx,g=rwx,o=rwx", "200",}, |
| {"u=rx,g=rwx,o=rw", "201",}, |
| {"u=rx,g=rwx,o=rx", "202",}, |
| {"u=rx,g=rwx,o=r", "203",}, |
| {"u=rx,g=rwx,o=wx", "204",}, |
| {"u=rx,g=rwx,o=w", "205",}, |
| {"u=rx,g=rwx,o=x", "206",}, |
| {"u=rx,g=rwx,o=", "207",}, |
| {"u=rx,g=rw,o=rwx", "210",}, |
| {"u=rx,g=rw,o=rw", "211",}, |
| {"u=rx,g=rw,o=rx", "212",}, |
| {"u=rx,g=rw,o=r", "213",}, |
| {"u=rx,g=rw,o=wx", "214",}, |
| {"u=rx,g=rw,o=w", "215",}, |
| {"u=rx,g=rw,o=x", "216",}, |
| {"u=rx,g=rw,o=", "217",}, |
| {"u=rx,g=rx,o=rwx", "220",}, |
| {"u=rx,g=rx,o=rw", "221",}, |
| {"u=rx,g=rx,o=rx", "222",}, |
| {"u=rx,g=rx,o=r", "223",}, |
| {"u=rx,g=rx,o=wx", "224",}, |
| {"u=rx,g=rx,o=w", "225",}, |
| {"u=rx,g=rx,o=x", "226",}, |
| {"u=rx,g=rx,o=", "227",}, |
| {"u=rx,g=r,o=rwx", "230",}, |
| {"u=rx,g=r,o=rw", "231",}, |
| {"u=rx,g=r,o=rx", "232",}, |
| {"u=rx,g=r,o=r", "233",}, |
| {"u=rx,g=r,o=wx", "234",}, |
| {"u=rx,g=r,o=w", "235",}, |
| {"u=rx,g=r,o=x", "236",}, |
| {"u=rx,g=r,o=", "237",}, |
| {"u=rx,g=wx,o=rwx", "240",}, |
| {"u=rx,g=wx,o=rw", "241",}, |
| {"u=rx,g=wx,o=rx", "242",}, |
| {"u=rx,g=wx,o=r", "243",}, |
| {"u=rx,g=wx,o=wx", "244",}, |
| {"u=rx,g=wx,o=w", "245",}, |
| {"u=rx,g=wx,o=x", "246",}, |
| {"u=rx,g=wx,o=", "247",}, |
| {"u=rx,g=w,o=rwx", "250",}, |
| {"u=rx,g=w,o=rw", "251",}, |
| {"u=rx,g=w,o=rx", "252",}, |
| {"u=rx,g=w,o=r", "253",}, |
| {"u=rx,g=w,o=wx", "254",}, |
| {"u=rx,g=w,o=w", "255",}, |
| {"u=rx,g=w,o=x", "256",}, |
| {"u=rx,g=w,o=", "257",}, |
| {"u=rx,g=x,o=rwx", "260",}, |
| {"u=rx,g=x,o=rw", "261",}, |
| {"u=rx,g=x,o=rx", "262",}, |
| {"u=rx,g=x,o=r", "263",}, |
| {"u=rx,g=x,o=wx", "264",}, |
| {"u=rx,g=x,o=w", "265",}, |
| {"u=rx,g=x,o=x", "266",}, |
| {"u=rx,g=x,o=", "267",}, |
| {"u=rx,g=,o=rwx", "270",}, |
| {"u=rx,g=,o=rw", "271",}, |
| {"u=rx,g=,o=rx", "272",}, |
| {"u=rx,g=,o=r", "273",}, |
| {"u=rx,g=,o=wx", "274",}, |
| {"u=rx,g=,o=w", "275",}, |
| {"u=rx,g=,o=x", "276",}, |
| {"u=rx,g=,o=", "277",}, |
| {"u=r,g=rwx,o=rwx", "300",}, |
| {"u=r,g=rwx,o=rw", "301",}, |
| {"u=r,g=rwx,o=rx", "302",}, |
| {"u=r,g=rwx,o=r", "303",}, |
| {"u=r,g=rwx,o=wx", "304",}, |
| {"u=r,g=rwx,o=w", "305",}, |
| {"u=r,g=rwx,o=x", "306",}, |
| {"u=r,g=rwx,o=", "307",}, |
| {"u=r,g=rw,o=rwx", "310",}, |
| {"u=r,g=rw,o=rw", "311",}, |
| {"u=r,g=rw,o=rx", "312",}, |
| {"u=r,g=rw,o=r", "313",}, |
| {"u=r,g=rw,o=wx", "314",}, |
| {"u=r,g=rw,o=w", "315",}, |
| {"u=r,g=rw,o=x", "316",}, |
| {"u=r,g=rw,o=", "317",}, |
| {"u=r,g=rx,o=rwx", "320",}, |
| {"u=r,g=rx,o=rw", "321",}, |
| {"u=r,g=rx,o=rx", "322",}, |
| {"u=r,g=rx,o=r", "323",}, |
| {"u=r,g=rx,o=wx", "324",}, |
| {"u=r,g=rx,o=w", "325",}, |
| {"u=r,g=rx,o=x", "326",}, |
| {"u=r,g=rx,o=", "327",}, |
| {"u=r,g=r,o=rwx", "330",}, |
| {"u=r,g=r,o=rw", "331",}, |
| {"u=r,g=r,o=rx", "332",}, |
| {"u=r,g=r,o=r", "333",}, |
| {"u=r,g=r,o=wx", "334",}, |
| {"u=r,g=r,o=w", "335",}, |
| {"u=r,g=r,o=x", "336",}, |
| {"u=r,g=r,o=", "337",}, |
| {"u=r,g=wx,o=rwx", "340",}, |
| {"u=r,g=wx,o=rw", "341",}, |
| {"u=r,g=wx,o=rx", "342",}, |
| {"u=r,g=wx,o=r", "343",}, |
| {"u=r,g=wx,o=wx", "344",}, |
| {"u=r,g=wx,o=w", "345",}, |
| {"u=r,g=wx,o=x", "346",}, |
| {"u=r,g=wx,o=", "347",}, |
| {"u=r,g=w,o=rwx", "350",}, |
| {"u=r,g=w,o=rw", "351",}, |
| {"u=r,g=w,o=rx", "352",}, |
| {"u=r,g=w,o=r", "353",}, |
| {"u=r,g=w,o=wx", "354",}, |
| {"u=r,g=w,o=w", "355",}, |
| {"u=r,g=w,o=x", "356",}, |
| {"u=r,g=w,o=", "357",}, |
| {"u=r,g=x,o=rwx", "360",}, |
| {"u=r,g=x,o=rw", "361",}, |
| {"u=r,g=x,o=rx", "362",}, |
| {"u=r,g=x,o=r", "363",}, |
| {"u=r,g=x,o=wx", "364",}, |
| {"u=r,g=x,o=w", "365",}, |
| {"u=r,g=x,o=x", "366",}, |
| {"u=r,g=x,o=", "367",}, |
| {"u=r,g=,o=rwx", "370",}, |
| {"u=r,g=,o=rw", "371",}, |
| {"u=r,g=,o=rx", "372",}, |
| {"u=r,g=,o=r", "373",}, |
| {"u=r,g=,o=wx", "374",}, |
| {"u=r,g=,o=w", "375",}, |
| {"u=r,g=,o=x", "376",}, |
| {"u=r,g=,o=", "377",}, |
| {"u=wx,g=rwx,o=rwx", "400",}, |
| {"u=wx,g=rwx,o=rw", "401",}, |
| {"u=wx,g=rwx,o=rx", "402",}, |
| {"u=wx,g=rwx,o=r", "403",}, |
| {"u=wx,g=rwx,o=wx", "404",}, |
| {"u=wx,g=rwx,o=w", "405",}, |
| {"u=wx,g=rwx,o=x", "406",}, |
| {"u=wx,g=rwx,o=", "407",}, |
| {"u=wx,g=rw,o=rwx", "410",}, |
| {"u=wx,g=rw,o=rw", "411",}, |
| {"u=wx,g=rw,o=rx", "412",}, |
| {"u=wx,g=rw,o=r", "413",}, |
| {"u=wx,g=rw,o=wx", "414",}, |
| {"u=wx,g=rw,o=w", "415",}, |
| {"u=wx,g=rw,o=x", "416",}, |
| {"u=wx,g=rw,o=", "417",}, |
| {"u=wx,g=rx,o=rwx", "420",}, |
| {"u=wx,g=rx,o=rw", "421",}, |
| {"u=wx,g=rx,o=rx", "422",}, |
| {"u=wx,g=rx,o=r", "423",}, |
| {"u=wx,g=rx,o=wx", "424",}, |
| {"u=wx,g=rx,o=w", "425",}, |
| {"u=wx,g=rx,o=x", "426",}, |
| {"u=wx,g=rx,o=", "427",}, |
| {"u=wx,g=r,o=rwx", "430",}, |
| {"u=wx,g=r,o=rw", "431",}, |
| {"u=wx,g=r,o=rx", "432",}, |
| {"u=wx,g=r,o=r", "433",}, |
| {"u=wx,g=r,o=wx", "434",}, |
| {"u=wx,g=r,o=w", "435",}, |
| {"u=wx,g=r,o=x", "436",}, |
| {"u=wx,g=r,o=", "437",}, |
| {"u=wx,g=wx,o=rwx", "440",}, |
| {"u=wx,g=wx,o=rw", "441",}, |
| {"u=wx,g=wx,o=rx", "442",}, |
| {"u=wx,g=wx,o=r", "443",}, |
| {"u=wx,g=wx,o=wx", "444",}, |
| {"u=wx,g=wx,o=w", "445",}, |
| {"u=wx,g=wx,o=x", "446",}, |
| {"u=wx,g=wx,o=", "447",}, |
| {"u=wx,g=w,o=rwx", "450",}, |
| {"u=wx,g=w,o=rw", "451",}, |
| {"u=wx,g=w,o=rx", "452",}, |
| {"u=wx,g=w,o=r", "453",}, |
| {"u=wx,g=w,o=wx", "454",}, |
| {"u=wx,g=w,o=w", "455",}, |
| {"u=wx,g=w,o=x", "456",}, |
| {"u=wx,g=w,o=", "457",}, |
| {"u=wx,g=x,o=rwx", "460",}, |
| {"u=wx,g=x,o=rw", "461",}, |
| {"u=wx,g=x,o=rx", "462",}, |
| {"u=wx,g=x,o=r", "463",}, |
| {"u=wx,g=x,o=wx", "464",}, |
| {"u=wx,g=x,o=w", "465",}, |
| {"u=wx,g=x,o=x", "466",}, |
| {"u=wx,g=x,o=", "467",}, |
| {"u=wx,g=,o=rwx", "470",}, |
| {"u=wx,g=,o=rw", "471",}, |
| {"u=wx,g=,o=rx", "472",}, |
| {"u=wx,g=,o=r", "473",}, |
| {"u=wx,g=,o=wx", "474",}, |
| {"u=wx,g=,o=w", "475",}, |
| {"u=wx,g=,o=x", "476",}, |
| {"u=wx,g=,o=", "477",}, |
| {"u=w,g=rwx,o=rwx", "500",}, |
| {"u=w,g=rwx,o=rw", "501",}, |
| {"u=w,g=rwx,o=rx", "502",}, |
| {"u=w,g=rwx,o=r", "503",}, |
| {"u=w,g=rwx,o=wx", "504",}, |
| {"u=w,g=rwx,o=w", "505",}, |
| {"u=w,g=rwx,o=x", "506",}, |
| {"u=w,g=rwx,o=", "507",}, |
| {"u=w,g=rw,o=rwx", "510",}, |
| {"u=w,g=rw,o=rw", "511",}, |
| {"u=w,g=rw,o=rx", "512",}, |
| {"u=w,g=rw,o=r", "513",}, |
| {"u=w,g=rw,o=wx", "514",}, |
| {"u=w,g=rw,o=w", "515",}, |
| {"u=w,g=rw,o=x", "516",}, |
| {"u=w,g=rw,o=", "517",}, |
| {"u=w,g=rx,o=rwx", "520",}, |
| {"u=w,g=rx,o=rw", "521",}, |
| {"u=w,g=rx,o=rx", "522",}, |
| {"u=w,g=rx,o=r", "523",}, |
| {"u=w,g=rx,o=wx", "524",}, |
| {"u=w,g=rx,o=w", "525",}, |
| {"u=w,g=rx,o=x", "526",}, |
| {"u=w,g=rx,o=", "527",}, |
| {"u=w,g=r,o=rwx", "530",}, |
| {"u=w,g=r,o=rw", "531",}, |
| {"u=w,g=r,o=rx", "532",}, |
| {"u=w,g=r,o=r", "533",}, |
| {"u=w,g=r,o=wx", "534",}, |
| {"u=w,g=r,o=w", "535",}, |
| {"u=w,g=r,o=x", "536",}, |
| {"u=w,g=r,o=", "537",}, |
| {"u=w,g=wx,o=rwx", "540",}, |
| {"u=w,g=wx,o=rw", "541",}, |
| {"u=w,g=wx,o=rx", "542",}, |
| {"u=w,g=wx,o=r", "543",}, |
| {"u=w,g=wx,o=wx", "544",}, |
| {"u=w,g=wx,o=w", "545",}, |
| {"u=w,g=wx,o=x", "546",}, |
| {"u=w,g=wx,o=", "547",}, |
| {"u=w,g=w,o=rwx", "550",}, |
| {"u=w,g=w,o=rw", "551",}, |
| {"u=w,g=w,o=rx", "552",}, |
| {"u=w,g=w,o=r", "553",}, |
| {"u=w,g=w,o=wx", "554",}, |
| {"u=w,g=w,o=w", "555",}, |
| {"u=w,g=w,o=x", "556",}, |
| {"u=w,g=w,o=", "557",}, |
| {"u=w,g=x,o=rwx", "560",}, |
| {"u=w,g=x,o=rw", "561",}, |
| {"u=w,g=x,o=rx", "562",}, |
| {"u=w,g=x,o=r", "563",}, |
| {"u=w,g=x,o=wx", "564",}, |
| {"u=w,g=x,o=w", "565",}, |
| {"u=w,g=x,o=x", "566",}, |
| {"u=w,g=x,o=", "567",}, |
| {"u=w,g=,o=rwx", "570",}, |
| {"u=w,g=,o=rw", "571",}, |
| {"u=w,g=,o=rx", "572",}, |
| {"u=w,g=,o=r", "573",}, |
| {"u=w,g=,o=wx", "574",}, |
| {"u=w,g=,o=w", "575",}, |
| {"u=w,g=,o=x", "576",}, |
| {"u=w,g=,o=", "577",}, |
| {"u=x,g=rwx,o=rwx", "600",}, |
| {"u=x,g=rwx,o=rw", "601",}, |
| {"u=x,g=rwx,o=rx", "602",}, |
| {"u=x,g=rwx,o=r", "603",}, |
| {"u=x,g=rwx,o=wx", "604",}, |
| {"u=x,g=rwx,o=w", "605",}, |
| {"u=x,g=rwx,o=x", "606",}, |
| {"u=x,g=rwx,o=", "607",}, |
| {"u=x,g=rw,o=rwx", "610",}, |
| {"u=x,g=rw,o=rw", "611",}, |
| {"u=x,g=rw,o=rx", "612",}, |
| {"u=x,g=rw,o=r", "613",}, |
| {"u=x,g=rw,o=wx", "614",}, |
| {"u=x,g=rw,o=w", "615",}, |
| {"u=x,g=rw,o=x", "616",}, |
| {"u=x,g=rw,o=", "617",}, |
| {"u=x,g=rx,o=rwx", "620",}, |
| {"u=x,g=rx,o=rw", "621",}, |
| {"u=x,g=rx,o=rx", "622",}, |
| {"u=x,g=rx,o=r", "623",}, |
| {"u=x,g=rx,o=wx", "624",}, |
| {"u=x,g=rx,o=w", "625",}, |
| {"u=x,g=rx,o=x", "626",}, |
| {"u=x,g=rx,o=", "627",}, |
| {"u=x,g=r,o=rwx", "630",}, |
| {"u=x,g=r,o=rw", "631",}, |
| {"u=x,g=r,o=rx", "632",}, |
| {"u=x,g=r,o=r", "633",}, |
| {"u=x,g=r,o=wx", "634",}, |
| {"u=x,g=r,o=w", "635",}, |
| {"u=x,g=r,o=x", "636",}, |
| {"u=x,g=r,o=", "637",}, |
| {"u=x,g=wx,o=rwx", "640",}, |
| {"u=x,g=wx,o=rw", "641",}, |
| {"u=x,g=wx,o=rx", "642",}, |
| {"u=x,g=wx,o=r", "643",}, |
| {"u=x,g=wx,o=wx", "644",}, |
| {"u=x,g=wx,o=w", "645",}, |
| {"u=x,g=wx,o=x", "646",}, |
| {"u=x,g=wx,o=", "647",}, |
| {"u=x,g=w,o=rwx", "650",}, |
| {"u=x,g=w,o=rw", "651",}, |
| {"u=x,g=w,o=rx", "652",}, |
| {"u=x,g=w,o=r", "653",}, |
| {"u=x,g=w,o=wx", "654",}, |
| {"u=x,g=w,o=w", "655",}, |
| {"u=x,g=w,o=x", "656",}, |
| {"u=x,g=w,o=", "657",}, |
| {"u=x,g=x,o=rwx", "660",}, |
| {"u=x,g=x,o=rw", "661",}, |
| {"u=x,g=x,o=rx", "662",}, |
| {"u=x,g=x,o=r", "663",}, |
| {"u=x,g=x,o=wx", "664",}, |
| {"u=x,g=x,o=w", "665",}, |
| {"u=x,g=x,o=x", "666",}, |
| {"u=x,g=x,o=", "667",}, |
| {"u=x,g=,o=rwx", "670",}, |
| {"u=x,g=,o=rw", "671",}, |
| {"u=x,g=,o=rx", "672",}, |
| {"u=x,g=,o=r", "673",}, |
| {"u=x,g=,o=wx", "674",}, |
| {"u=x,g=,o=w", "675",}, |
| {"u=x,g=,o=x", "676",}, |
| {"u=x,g=,o=", "677",}, |
| {"u=,g=rwx,o=rwx", "700",}, |
| {"u=,g=rwx,o=rw", "701",}, |
| {"u=,g=rwx,o=rx", "702",}, |
| {"u=,g=rwx,o=r", "703",}, |
| {"u=,g=rwx,o=wx", "704",}, |
| {"u=,g=rwx,o=w", "705",}, |
| {"u=,g=rwx,o=x", "706",}, |
| {"u=,g=rwx,o=", "707",}, |
| {"u=,g=rw,o=rwx", "710",}, |
| {"u=,g=rw,o=rw", "711",}, |
| {"u=,g=rw,o=rx", "712",}, |
| {"u=,g=rw,o=r", "713",}, |
| {"u=,g=rw,o=wx", "714",}, |
| {"u=,g=rw,o=w", "715",}, |
| {"u=,g=rw,o=x", "716",}, |
| {"u=,g=rw,o=", "717",}, |
| {"u=,g=rx,o=rwx", "720",}, |
| {"u=,g=rx,o=rw", "721",}, |
| {"u=,g=rx,o=rx", "722",}, |
| {"u=,g=rx,o=r", "723",}, |
| {"u=,g=rx,o=wx", "724",}, |
| {"u=,g=rx,o=w", "725",}, |
| {"u=,g=rx,o=x", "726",}, |
| {"u=,g=rx,o=", "727",}, |
| {"u=,g=r,o=rwx", "730",}, |
| {"u=,g=r,o=rw", "731",}, |
| {"u=,g=r,o=rx", "732",}, |
| {"u=,g=r,o=r", "733",}, |
| {"u=,g=r,o=wx", "734",}, |
| {"u=,g=r,o=w", "735",}, |
| {"u=,g=r,o=x", "736",}, |
| {"u=,g=r,o=", "737",}, |
| {"u=,g=wx,o=rwx", "740",}, |
| {"u=,g=wx,o=rw", "741",}, |
| {"u=,g=wx,o=rx", "742",}, |
| {"u=,g=wx,o=r", "743",}, |
| {"u=,g=wx,o=wx", "744",}, |
| {"u=,g=wx,o=w", "745",}, |
| {"u=,g=wx,o=x", "746",}, |
| {"u=,g=wx,o=", "747",}, |
| {"u=,g=w,o=rwx", "750",}, |
| {"u=,g=w,o=rw", "751",}, |
| {"u=,g=w,o=rx", "752",}, |
| {"u=,g=w,o=r", "753",}, |
| {"u=,g=w,o=wx", "754",}, |
| {"u=,g=w,o=w", "755",}, |
| {"u=,g=w,o=x", "756",}, |
| {"u=,g=w,o=", "757",}, |
| {"u=,g=x,o=rwx", "760",}, |
| {"u=,g=x,o=rw", "761",}, |
| {"u=,g=x,o=rx", "762",}, |
| {"u=,g=x,o=r", "763",}, |
| {"u=,g=x,o=wx", "764",}, |
| {"u=,g=x,o=w", "765",}, |
| {"u=,g=x,o=x", "766",}, |
| {"u=,g=x,o=", "767",}, |
| {"u=,g=,o=rwx", "770",}, |
| {"u=,g=,o=rw", "771",}, |
| {"u=,g=,o=rx", "772",}, |
| {"u=,g=,o=r", "773",}, |
| {"u=,g=,o=wx", "774",}, |
| {"u=,g=,o=w", "775",}, |
| {"u=,g=,o=x", "776",}, |
| {"u=,g=,o=", "777"} |
| }; |
| |
| for(int i = 0; i < symbolic.length; i += 2) { |
| conf.set(FsPermission.UMASK_LABEL, symbolic[i][0]); |
| short val = Short.valueOf(symbolic[i][1], 8); |
| assertEquals(val, FsPermission.getUMask(conf).toShort()); |
| } |
| } |
| |
| public void testBadUmasks() { |
| Configuration conf = new Configuration(); |
| |
| for(String b : new String [] {"1777", "22", "99", "foo", ""}) { |
| conf.set(FsPermission.UMASK_LABEL, b); |
| try { |
| FsPermission.getUMask(conf); |
| fail("Shouldn't have been able to parse bad umask"); |
| } catch(IllegalArgumentException iae) { |
| assertTrue("Exception should specify parsing error and invalid umask: " |
| + iae.getMessage(), isCorrectExceptionMessage(iae.getMessage(), b)); |
| } |
| } |
| } |
| |
| private boolean isCorrectExceptionMessage(String msg, String umask) { |
| return msg.contains("Unable to parse") && |
| msg.contains(umask) && |
| msg.contains("octal or symbolic"); |
| } |
| |
| // Ensure that when the deprecated decimal umask key is used, it is correctly |
| // parsed as such and converted correctly to an FsPermission value |
| public void testDeprecatedUmask() { |
| Configuration conf = new Configuration(); |
| conf.set(FsPermission.DEPRECATED_UMASK_LABEL, "302"); // 302 = 0456 |
| FsPermission umask = FsPermission.getUMask(conf); |
| |
| assertEquals(0456, umask.toShort()); |
| } |
| } |