From a1755ee2765f3d1c9c26d51a49ad63d133932710 Mon Sep 17 00:00:00 2001 From: Niels de Vos Date: Thu, 1 Jan 2015 13:15:45 +0100 Subject: glusterfsd: add "print-netgroups" and "print-exports" command NFS now has the ability to use a separate file for "netgroups" and "exports". An administrator should have the ability to check the validity of the files before applying the configuration. The "glusterfsd" command now has the following additional arguments that can be used to check the configuration: --print-netgroups: Validate the netgroups file and print it out --print-exports: Validate the exports file and print it out BUG: 1143880 Change-Id: I24c40d50110d49d8290f9fd916742f7e4d0df85f URL: http://www.gluster.org/community/documentation/index.php/Features/Exports_Netgroups_Authentication Original-author: Shreyas Siravara CC: Richard Wareing CC: Jiffin Tony Thottan Signed-off-by: Niels de Vos Reviewed-on: http://review.gluster.org/9365 Reviewed-by: Vijay Bellur Tested-by: Vijay Bellur --- tests/basic/exports_parsing.t | 44 ++++++++++++++++++++++++++++++++++ tests/basic/netgroup_parsing.t | 50 +++++++++++++++++++++++++++++++++++++++ tests/configfiles/bad_exports | 9 +++++++ tests/configfiles/bad_netgroups | 5 ++++ tests/configfiles/big_exports | 10 ++++++++ tests/configfiles/exports | 1 + tests/configfiles/exports_bad_opt | 1 + tests/configfiles/netgroups | 3 +++ 8 files changed, 123 insertions(+) create mode 100644 tests/basic/exports_parsing.t create mode 100644 tests/basic/netgroup_parsing.t create mode 100644 tests/configfiles/bad_exports create mode 100644 tests/configfiles/bad_netgroups create mode 100644 tests/configfiles/big_exports create mode 100644 tests/configfiles/exports create mode 100644 tests/configfiles/exports_bad_opt create mode 100644 tests/configfiles/netgroups (limited to 'tests') diff --git a/tests/basic/exports_parsing.t b/tests/basic/exports_parsing.t new file mode 100644 index 00000000000..fdaf9c2822e --- /dev/null +++ b/tests/basic/exports_parsing.t @@ -0,0 +1,44 @@ +#!/bin/bash + +. $(dirname $0)/../include.rc +. $(dirname $0)/../volume.rc + +EXP_FILES=$(dirname $0)/../configfiles + +cleanup + +function test_good_file () +{ + glusterfsd --print-exports $1 +} + +function test_long_netgroup() +{ + glusterfsd --print-exports $1 2>&1 | sed -n 1p +} + +function test_bad_line () +{ + glusterfsd --print-exports $1 2>&1 | sed -n 1p +} + +function test_big_file () +{ + glusterfsd --print-exports $1 | sed -n 3p +} + +function test_bad_opt () +{ + glusterfsd --print-exports $1 2>&1 | sed -n 1p +} + +EXPECT_KEYWORD "/test @test(rw,anonuid=0,sec=sys,) 10.35.11.31(rw,anonuid=0,sec=sys,)" test_good_file $EXP_FILES/exports + +EXPECT_KEYWORD "Error parsing netgroups for:" test_bad_line $EXP_FILES/bad_exports +EXPECT_KEYWORD "Error parsing netgroups for:" test_long_netgroup $EXP_FILES/bad_exports + +EXPECT_KEYWORD "HDCDTY43SXOAH1TNUKB23MO9DE574W(rw,anonuid=0,sec=sys,)" test_big_file $EXP_FILES/big_exports + +EXPECT_KEYWORD "Could not find any valid options" test_bad_opt $EXP_FILES/exports_bad_opt + +cleanup diff --git a/tests/basic/netgroup_parsing.t b/tests/basic/netgroup_parsing.t new file mode 100644 index 00000000000..73a69c44cea --- /dev/null +++ b/tests/basic/netgroup_parsing.t @@ -0,0 +1,50 @@ +#!/bin/bash + +. $(dirname $0)/../include.rc +. $(dirname $0)/../volume.rc + +NG_FILES=$(dirname $0)/../configfiles +cleanup; + +function test_ng_1 () +{ + glusterfsd --print-netgroups $1 | sed -n 1p +} + +function test_ng_2 () +{ + glusterfsd --print-netgroups $1 | sed -n 2p +} + +function test_ng_3 () +{ + glusterfsd --print-netgroups $1 | sed -n 3p +} + +function test_bad_ng () +{ + glusterfsd --print-netgroups $1 2>&1 | sed -n 1p +} + +function test_large_file () +{ + # The build system needs this path for the test to pass. + # This is an important test because this file is ~1800 lines + # longs and is a "real-world" netgroups file. + glusterfsd --print-netgroups ~/opsfiles/storage/netgroup/netgroup | sed -n 1p +} + +function test_empty_ng () +{ + glusterfsd --print-netgroups $1 2>&1 | sed -n 2p +} + +EXPECT_KEYWORD "ng2 (dev1763.prn2.example.com,,)" test_ng_1 $NG_FILES/netgroups +EXPECT_KEYWORD "ng1 ng2 (dev1763.prn2.example.com,,)" test_ng_2 $NG_FILES/netgroups +EXPECT_KEYWORD "asdf ng1 ng2 (dev1763.prn2.example.com,,)" test_ng_3 $NG_FILES/netgroups +# TODO: get a real-world large netgroup file +#EXPECT_KEYWORD "wikipedia001.07.prn1 (wikipedia003.prn1.example.com,,)(wikipedia002.prn1.example.com,,)(wikipedia001.prn1.example.com,,)" test_large_file +EXPECT_KEYWORD "Parse error" test_bad_ng $NG_FILES/bad_netgroups +EXPECT_KEYWORD "No netgroups were specified except for the parent" test_empty_ng $NG_FILES/bad_netgroups + +cleanup; diff --git a/tests/configfiles/bad_exports b/tests/configfiles/bad_exports new file mode 100644 index 00000000000..6fd18d9415a --- /dev/null +++ b/tests/configfiles/bad_exports @@ -0,0 +1,9 @@ +#$Id$ +#/0838586658093758013308385866580937580133083858665809375801330838586658093758013308385866580937580133083858665809375801330838586658093758013308385866580937580133 @test(sec=sys,rw,anonuid=0) 10.35.11.32(sec=sys,rw,anonuid=0) + +/test @test(sec=sys,rw,anonuid=0) shreyas.facebook.com(sec=sys,rw,anonuid=0) shreyas.s(sec=sys,rw,anonuid=595) +çççßåß僃 +/asdf @ObVyg571RJaorkGbgVerI9esrck8yiVD7NVqqJvj2H9DuPH3SzHnYLIXjd4zZjuuh2N0O0bYYQf7VYNrYHoxc1llgRU1iEsQRy2XaWnUlhTHKVEL8tt1TrbZCi8qXyg0l058rTnW4msvU5hW83ESwyOE4bBSz4VsW0sJaVd8Gv4waZqojemLN8AIlAoChVOfP1yhuAP1298ejkaf2fjhdfa4t4effhgadff342fdddgasdg42gahgdmnui24290hfjdjadgdkjhg2nvncms(sec=sys,rw,anonuid=1) +#/vol/root -sec=sys,rw=@storage.prn1:@storage.ash4:@storage.frc1,anon=0 +#/vol/home107 -sec=sys,rw,nosuid,root=@storage.prn1:@storage.ash4:@storage.frc1:@hr.ash3:@hr.prn1:ldap001.prn1.facebook.com:ldap001.frc1.facebook.com +#/vol/home109 -sec=sys,rw,nosuid,root=@storage.prn1:@storage.ash4:@storage.frc1:@hr.ash3:@hr.prn1:ldap001.prn1.facebook.com:ldap001.frc1.facebook.com diff --git a/tests/configfiles/bad_netgroups b/tests/configfiles/bad_netgroups new file mode 100644 index 00000000000..ea27edfef10 --- /dev/null +++ b/tests/configfiles/bad_netgroups @@ -0,0 +1,5 @@ +asdf ng1 +ng1 ng2 +ng2 (dev1763.prn2.facebook.com, ,) + +emptyng diff --git a/tests/configfiles/big_exports b/tests/configfiles/big_exports new file mode 100644 index 00000000000..9ca5d655664 --- /dev/null +++ b/tests/configfiles/big_exports @@ -0,0 +1,10 @@ +/75213U8JV58PBY7F0VFGJ080MH3K71 @ZXV3UE7WJSCZSPMPAYUBACCZUOD0XY(sec=sys,rw,anonuid=0) 9PAC2KCTKRIH62CPGAMAUAJGLVQNS3(sec=sys,rw,anonuid=0) +/O4DYT8D6QVS9EKEHTYOPTYL6IWU4DN @KLBH3LB3UN5LWDWPPQEQWEHYVL3K0A(sec=sys,rw,anonuid=0) B37PXMCQMY5IQPDGV08XC7ITYT650V(sec=sys,rw,anonuid=0) +/OFHJLTKZMDAN28Q9IQQQIPFUEZ2YAN @UY3K3B8C05OQ4OTX42VXQKJ2CGJ8QX(sec=sys,rw,anonuid=0) AM0ET70HT6YND7D8RKG446LEOW40EC(sec=sys,rw,anonuid=0) +/3VDZ2JHFQ2JGF2GQGYQH38UPAW6A6T @DEPUVDYZOJFCSQ7KD07NVPAFGEG7YJ(sec=sys,rw,anonuid=0) 5HI538NCEYF7KY7HC1F69UBWFVTIGA(sec=sys,rw,anonuid=0) +/4ZI3ZRJUNQM21ZM8VB891X4ZCUHK7E @7U8TNSZ55AWJAOPAIV67OGPWLGM4JV(sec=sys,rw,anonuid=0) 8698JR9V4KKENE7UGYHV3T4XG9K0NH(sec=sys,rw,anonuid=0) +/A4CSZ2FQ3VYPT9R0HYN3QVQ7TK9IHI @G2Z45H649YZ9WNC3OSU7STCLT3VWT9(sec=sys,rw,anonuid=0) 65CA94Z7JXZ0F0JB5EP95I6FBJT673(sec=sys,rw,anonuid=0) +/G91PI0EX5TUYSX91IAH49M1GEMNKSP @O5IFIYJUENNNK16U0FK0QCDE0DK9G2(sec=sys,rw,anonuid=0) A8AZTTWC7BMTV8YW8XE4R57WUOSUMZ(sec=sys,rw,anonuid=0) +/YCZFA0ALYC284R60E7QXQN7AVSILFO @7OGJV2J1NOII7UOGN12SUNRW3XBWWG(sec=sys,rw,anonuid=0) HDCDTY43SXOAH1TNUKB23MO9DE574W(sec=sys,rw,anonuid=0) +/VBGB57O8R87B9N4E8QPGU6D55DVZE5 @F95KY58VAUOUX30QKIN16U987UU9BE(sec=sys,rw,anonuid=0) WGSH35L15FT2IC0IT9PTCU8SCYW9W4(sec=sys,rw,anonuid=0) +/NTHST2FDSP35BKEEIOQIQX38722AN0 @T9BXSDXF2N5HVOM8P1BN0Q5IQ6RC34(sec=sys,rw,anonuid=0) OLJR1KXJRY14UEZNV1LP7RV68KPIW7(sec=sys,rw,anonuid=0) diff --git a/tests/configfiles/exports b/tests/configfiles/exports new file mode 100644 index 00000000000..82ba450403e --- /dev/null +++ b/tests/configfiles/exports @@ -0,0 +1 @@ +/test @test(sec=sys,rw,anonuid=0) 10.35.11.31(sec=sys,rw,anonuid=0) diff --git a/tests/configfiles/exports_bad_opt b/tests/configfiles/exports_bad_opt new file mode 100644 index 00000000000..70a56890e4c --- /dev/null +++ b/tests/configfiles/exports_bad_opt @@ -0,0 +1 @@ +/groot asdf(r) @ngtop(r) diff --git a/tests/configfiles/netgroups b/tests/configfiles/netgroups new file mode 100644 index 00000000000..a4ed2c53df4 --- /dev/null +++ b/tests/configfiles/netgroups @@ -0,0 +1,3 @@ +asdf ng1 +ng1 ng2 +ng2 (dev1763.prn2.example.com,,) -- cgit