1#!/bin/sh 2# test groupmap code tridge@samba.org September 2006 3# note that this needs root access to add unix groups, 4# so this cannot be run on the build farm 5 6testone() { 7 echo $* 8 $VALGRIND bin/net groupmap $* 9} 10 11tstart() { 12 TBASE=`date '+%s'` 13} 14 15treport() { 16 TNOW=`date '+%s'` 17 echo "Took `expr $TNOW - $TBASE` seconds" 18 TBASE=$TNOW 19} 20 21rm -f $PREFIX_ABS/var/locks/group_mapping.?db 22 23NLOCAL=12 24NGROUP=11 25NBUILTIN=10 26DOMSID=`bin/net getlocalsid | awk '{print $6}'` 27FORSID="S-1-2-3-4-5" 28 29echo "DOMSID $DOMSID" 30echo "FORSID $FORSID" 31 32tstart 33echo "Creating unix groups" 34for i in `seq 1 1 $NLOCAL`; do 35 unixgroup=testlocal$i; 36 gid=`expr 30000 + $i`; 37 groupdel $unixgroup 2> /dev/null 38 groupadd -g $gid $unixgroup || exit 1 39done 40for i in `seq 1 1 $NGROUP`; do 41 unixgroup=testgrp$i; 42 gid=`expr 40000 + $i`; 43 groupdel $unixgroup 2> /dev/null 44 groupadd -g $gid $unixgroup || exit 1 45done 46for i in `seq 1 1 $NBUILTIN`; do 47 unixgroup=testb$i; 48 gid=`expr 50000 + $i`; 49 groupdel $unixgroup 2> /dev/null 50 groupadd -g $gid $unixgroup || exit 1 51done 52date 53 54treport 55 56echo "Creating local groups" 57for i in `seq 1 1 $NLOCAL`; do 58 unixgroup=testlocal$i; 59 ntgroup=ntlgrp$i; 60 rid=`expr 10000 + $i`; 61 testone add rid=$rid unixgroup=$unixgroup ntgroup=$ntgroup type=local || exit 1 62done 63 64echo "trying a duplicate add" 65testone add rid=10001 unixgroup=testlocal1 ntgroup=foo type=local && exit 1 66 67treport 68 69echo "Creating domain groups" 70for i in `seq 1 1 $NGROUP`; do 71 unixgroup=testgrp$i; 72 ntgroup=ntgrp$i; 73 rid=`expr 20000 + $i`; 74 testone add rid=$rid unixgroup=$unixgroup ntgroup=$ntgroup type=domain || exit 1 75done 76 77treport 78 79echo "Creating builtin groups" 80for i in `seq 1 1 $NBUILTIN`; do 81 unixgroup=testb$i; 82 ntgroup=ntbgrp$i; 83 rid=`expr 30000 + $i`; 84 testone add rid=$rid unixgroup=$unixgroup ntgroup=$ntgroup type=builtin || exit 1 85done 86 87treport 88 89echo "Adding domain groups to local groups" 90for i in `seq 1 1 $NLOCAL`; do 91 for j in `seq 1 1 $i`; do 92 93 lrid=`expr 10000 + $i`; 94 drid=`expr 20000 + $j`; 95 96 testone addmem $DOMSID-$lrid $DOMSID-$drid || exit 1 97 ( testone listmem $DOMSID-$lrid | sort -r ) || exit 1 98 done 99done 100 101echo "trying a duplicate addmem" 102testone addmem $DOMSID-10001 $DOMSID-20001 && exit 1 103 104echo "Adding foreign SIDs to local groups" 105for i in `seq 1 1 $NLOCAL`; do 106 for j in `seq 1 1 $i`; do 107 108 lrid=`expr 10000 + $i`; 109 frid=`expr 70000 + $j`; 110 111 testone addmem $DOMSID-$lrid $FORSID-$frid || exit 1 112 ( testone listmem $DOMSID-$lrid | sort -r ) || exit 1 113 done 114done 115 116echo "trying a duplicate foreign addmem" 117testone addmem $DOMSID-10001 $FORSID-70001 && exit 1 118 119treport 120 121echo "Listing local group memberships of domain groups" 122for i in `seq 1 1 $NGROUP`; do 123 rid=`expr 20000 + $i`; 124 ( testone memberships $DOMSID-$rid | sort -r ) || exit 1 125done 126 127echo "Trying memberships on bogus sid" 128testone memberships $DOMSID-999999 || exit 1 129 130treport 131 132testone list | sort 133 134echo "Deleting some domain groups" 135for i in `seq 2 2 $NGROUP`; do 136 drid=`expr 20000 + $i`; 137 testone delete sid=$DOMSID-$drid || exit 1 138done 139 140echo "Trying duplicate domain group delete" 141testone delete sid=$DOMSID-20002 && exit 1 142 143treport 144 145echo "Deleting some local groups" 146for i in `seq 2 4 $NLOCAL`; do 147 lrid=`expr 10000 + $i`; 148 testone delete sid=$DOMSID-$lrid || exit 1 149done 150 151echo "Trying duplicate local group delete" 152testone delete sid=$DOMSID-10002 && exit 1 153 154treport 155 156echo "Modifying some domain groups" 157for i in `seq 3 2 $NGROUP`; do 158 drid=`expr 20000 + $i`; 159 testone modify sid=$DOMSID-$drid comment="newcomment-$i" type=domain || exit 1 160done 161 162treport 163 164testone list | sort 165 166echo "Listing local group memberships" 167for i in `seq 1 1 $NLOCAL`; do 168 rid=`expr 20000 + $i`; 169 ( testone memberships $DOMSID-$rid | sort -r ) || exit 1 170done 171 172treport 173 174echo "Removing some domain groups from local groups" 175for i in `seq 1 2 $NLOCAL`; do 176 for j in `seq 1 3 $i`; do 177 178 lrid=`expr 10000 + $i`; 179 drid=`expr 20000 + $j`; 180 181 testone delmem $DOMSID-$lrid $DOMSID-$drid || exit 1 182 done 183done 184 185echo "Trying duplicate delmem" 186testone delmem $DOMSID-10001 $DOMSID-20001 && exit 1 187 188treport 189 190echo "Listing local group memberships" 191for i in `seq 1 1 $NLOCAL`; do 192 rid=`expr 20000 + $i`; 193 ( testone memberships $DOMSID-$rid | sort -r ) || exit 1 194done 195 196treport 197 198echo "Deleting unix groups" 199for i in `seq 1 1 $NLOCAL`; do 200 unixgroup=testlocal$i; 201 groupdel $unixgroup 2> /dev/null 202done 203for i in `seq 1 1 $NGROUP`; do 204 unixgroup=testgrp$i; 205 groupdel $unixgroup 2> /dev/null 206done 207for i in `seq 1 1 $NBUILTIN`; do 208 unixgroup=testb$i; 209 groupdel $unixgroup 2> /dev/null 210done 211 212treport 213 214echo "ALL DONE" 215