diff --git a/tests/definig-the-set-of-files-to-transfer/Makefile b/tests/definig-the-set-of-files-to-transfer/Makefile deleted file mode 100644 index f5f86ce..0000000 --- a/tests/definig-the-set-of-files-to-transfer/Makefile +++ /dev/null @@ -1,64 +0,0 @@ -# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -# -# Makefile of /CoreOS/rsync/Sanity/definig-the-set-of-files-to-transfer -# Description: Tests the options which modifie the list of files to be transfered -# Author: Michal Trunecka -# -# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -# -# Copyright (c) 2013 Red Hat, Inc. All rights reserved. -# -# This copyrighted material is made available to anyone wishing -# to use, modify, copy, or redistribute it subject to the terms -# and conditions of the GNU General Public License version 2. -# -# This program is distributed in the hope that it will be -# useful, but WITHOUT ANY WARRANTY; without even the implied -# warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR -# PURPOSE. See the GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public -# License along with this program; if not, write to the Free -# Software Foundation, Inc., 51 Franklin Street, Fifth Floor, -# Boston, MA 02110-1301, USA. -# -# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -export TEST=/CoreOS/rsync/Sanity/definig-the-set-of-files-to-transfer -export TESTVERSION=1.0 - -BUILT_FILES= - -FILES=$(METADATA) runtest.sh Makefile PURPOSE rsyncd@.service - -.PHONY: all install download clean - -run: $(FILES) build - ./runtest.sh - -build: $(BUILT_FILES) - test -x runtest.sh || chmod a+x runtest.sh - -clean: - rm -f *~ $(BUILT_FILES) - - -include /usr/share/rhts/lib/rhts-make.include - -$(METADATA): Makefile - @echo "Owner: Michal Trunecka " > $(METADATA) - @echo "Name: $(TEST)" >> $(METADATA) - @echo "TestVersion: $(TESTVERSION)" >> $(METADATA) - @echo "Path: $(TEST_DIR)" >> $(METADATA) - @echo "Description: Tests the options which modifie the list of files to be transfered" >> $(METADATA) - @echo "Type: Sanity" >> $(METADATA) - @echo "TestTime: 60m" >> $(METADATA) - @echo "RunFor: rsync" >> $(METADATA) - @echo "Requires: rsync rsync-daemon" >> $(METADATA) - @echo "Requires: xinetd" >> $(METADATA) - @echo "Priority: Normal" >> $(METADATA) - @echo "License: GPLv2" >> $(METADATA) - @echo "Confidential: no" >> $(METADATA) - @echo "Destructive: no" >> $(METADATA) - - rhts-lint $(METADATA) diff --git a/tests/definig-the-set-of-files-to-transfer/PURPOSE b/tests/definig-the-set-of-files-to-transfer/PURPOSE deleted file mode 100644 index 4d33fe4..0000000 --- a/tests/definig-the-set-of-files-to-transfer/PURPOSE +++ /dev/null @@ -1,16 +0,0 @@ -PURPOSE of /CoreOS/rsync/Sanity/definig-the-set-of-files-to-transfer -Description: Tests the options which modifie the list of files to be transfered -Author: Michal Trunecka -Author: Karel Srot - -Testing the sanity of following options: - -c --checksum - --ignore-existing - --max-size --min-size - --size-only - --include --exclude - --include-from --exclude-from - -Not yet implemented: - -0, --from0 - -f --filter, -F diff --git a/tests/definig-the-set-of-files-to-transfer/rsyncd@.service b/tests/definig-the-set-of-files-to-transfer/rsyncd@.service deleted file mode 100644 index 89f9621..0000000 --- a/tests/definig-the-set-of-files-to-transfer/rsyncd@.service +++ /dev/null @@ -1,8 +0,0 @@ -[Unit] -Description=fast remote file copy program daemon -ConditionPathExists=/etc/rsyncd.conf - -[Service] -EnvironmentFile=/etc/sysconfig/rsyncd -ExecStart=/usr/bin/rsync --daemon --no-detach "$OPTIONS" -StandardInput=socket diff --git a/tests/definig-the-set-of-files-to-transfer/runtest.sh b/tests/definig-the-set-of-files-to-transfer/runtest.sh deleted file mode 100755 index d58f366..0000000 --- a/tests/definig-the-set-of-files-to-transfer/runtest.sh +++ /dev/null @@ -1,361 +0,0 @@ -#!/bin/bash -# vim: dict=/usr/share/beakerlib/dictionary.vim cpt=.,w,b,u,t,i,k -# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -# -# runtest.sh of /CoreOS/rsync/Sanity/definig-the-set-of-files-to-transfer -# Description: Tests the options which modifie the list of files to be transfered -# Author: Michal Trunecka -# Author: Karel Srot -# -# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -# -# Copyright (c) 2013 Red Hat, Inc. All rights reserved. -# -# This copyrighted material is made available to anyone wishing -# to use, modify, copy, or redistribute it subject to the terms -# and conditions of the GNU General Public License version 2. -# -# This program is distributed in the hope that it will be -# useful, but WITHOUT ANY WARRANTY; without even the implied -# warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR -# PURPOSE. See the GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public -# License along with this program; if not, write to the Free -# Software Foundation, Inc., 51 Franklin Street, Fifth Floor, -# Boston, MA 02110-1301, USA. -# -# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -# Include Beaker environment -. /usr/bin/rhts-environment.sh || exit 1 -. /usr/share/beakerlib/beakerlib.sh || exit 1 - -PACKAGE="rsync" - -rlJournalStart - rlPhaseStartSetup - rlAssertRpm $PACKAGE - - rlFileBackup --clean /etc/rsyncd.conf - START_DATE_TIME=`date "+%m/%d/%Y %T"` - - REMOTE="/tmp/remote" - LOCAL="/tmp/local" - LOCAL_2="/root/another_local" - TMP_FILE=`mktemp` - TMP_FILE_2=`mktemp` - SERVER_LOG_FILE=`mktemp` - rlRun "chcon -t rsync_log_t $SERVER_LOG_FILE" - LOG_FILE=`mktemp` - rlRun "chcon -t rsync_log_t $LOG_FILE" - - rlRun "mkdir $REMOTE" - rlRun "chcon -t rsync_tmp_t $REMOTE" - rlRun "mkdir $LOCAL" - rlRun "chcon -t rsync_tmp_t $LOCAL" - - rlRun "dd if=/dev/zero of=${LOCAL}/bigfile bs=1000 count=20000" - rlRun "dd if=/dev/zero of=${LOCAL}/smallfile bs=1000 count=2" - rlRun "echo 'First file' > ${LOCAL}/first" - rlRun "echo 'Second file' > ${LOCAL}/second" - rlRun "echo 'Third file' > ${LOCAL}/third" - if ! rlIsRHEL 5 6; then - if ! ls /usr/lib/systemd/system/rsyncd@.service - then - WORKAROUNDED=true - rlFail "The /usr/lib/systemd/system/rsyncd@.service file is missing (bz#1082496), will be workarounded for now" - rlRun "cp rsyncd@.service /usr/lib/systemd/system/" - else - rlPass "The bz#1082496 is probably fixed, no workaround needed." - fi - fi - - rlRun "cat > /etc/rsyncd.conf < ${REMOTE}/first" - # set the same dates to both local and remote file - rlRun "touch -d \"$MODIF_DATE\" ${REMOTE}/first" - rlRun "touch -d \"$MODIF_DATE\" ${LOCAL}/first" - rlRun "rsync -av -i ${LOCAL}/first localhost::remote | grep first" 1 - rlRun "rsync -av -i -c ${LOCAL}/first localhost::remote | grep first" - - rlPhaseEnd - - rlPhaseStartTest "--ignore-existing" - -# --ignore-existing -# This tells rsync to skip updating files that already exist on the destina- -# tion (this does not ignore existing directories, or nothing would get done). -# See also --existing. -# -# This option is a transfer rule, not an exclude, so it doesn’t affect the -# data that goes into the file-lists, and thus it doesn’t affect deletions. -# It just limits the files that the receiver requests to be transferred. -# -# This option can be useful for those doing backups using the --link-dest -# option when they need to continue a backup run that got interrupted. Since -# a --link-dest run is copied into a new directory hierarchy (when it is used -# properly), using --ignore existing will ensure that the already-handled -# files don’t get tweaked (which avoids a change in permissions on the hard- -# linked files). This does mean that this option is only looking at the -# existing files in the destination hierarchy itself. - - rlRun "echo 'lorem ipsum' > ${REMOTE}/first" - rlRun "echo 'dolor sit amet' > ${REMOTE}/second" - rlRun "echo 'consectetur adipiscing elit' > ${REMOTE}/third" - rlRun "echo 'lorem ipsum' > ${REMOTE}/smallfile" - rlRun "echo 'dolor sit amet' > ${REMOTE}/bigfile" - - rlRun "rsync -avv -i -c --ignore-existing ${LOCAL}/ localhost::remote | egrep 'first|second|third|smallfile|bigfile'" 1 - rlRun "rsync -avv -i --size-only --ignore-existing ${LOCAL}/ localhost::remote | egrep 'first|second|third|smallfile|bigfile'" 1 - rlRun "rsync -avv -i -I --ignore-existing ${LOCAL}/ localhost::remote | egrep 'first|second|third|smallfile|bigfile'" 1 - rlRun "rsync -avv -i ${LOCAL}/ localhost::remote | egrep 'first|second|third|smallfile|bigfile'" - - rlRun "rm -rf ${REMOTE}/*" - - rlPhaseEnd - - rlPhaseStartTest "--max-size --min-size" - -# --max-size=SIZE -# This tells rsync to avoid transferring any file that is larger than the -# specified SIZE. The SIZE value can be suffixed with a string to indicate a -# size multiplier, and may be a fractional value (e.g. “--max-size=1.5m”). -# -# This option is a transfer rule, not an exclude, so it doesn’t affect the -# data that goes into the file-lists, and thus it doesn’t affect deletions. -# It just limits the files that the receiver requests to be transferred. -# -# The suffixes are as follows: “K” (or “KiB”) is a kibibyte (1024), “M” (or -# “MiB”) is a mebibyte (1024*1024), and “G” (or “GiB”) is a gibibyte -# (1024*1024*1024). If you want the multiplier to be 1000 instead of 1024, -# use “KB”, “MB”, or “GB”. (Note: lower-case is also accepted for all val- -# ues.) Finally, if the suffix ends in either “+1” or “-1”, the value will be -# offset by one byte in the indicated direction. -# -# Examples: --max-size=1.5mb-1 is 1499999 bytes, and --max-size=2g+1 is -# 2147483649 bytes. -# -# --min-size=SIZE -# This tells rsync to avoid transferring any file that is smaller than the -# specified SIZE, which can help in not transferring small, junk files. See -# the --max-size option for a description of SIZE and other information. - - for SIZE in 1K 1M 1KB 1MB; do - rlRun "dd if=/dev/zero of=${LOCAL}/testfile bs=1 count=${SIZE}" - rlRun "rsync -avh --max-size ${SIZE}-1 ${LOCAL}/testfile localhost::remote | grep testfile" 1 - rlRun "rsync -avh --min-size ${SIZE}+1 ${LOCAL}/testfile localhost::remote | grep testfile" 1 - rlRun "rsync -avh --max-size ${SIZE} ${LOCAL}/testfile localhost::remote | grep testfile" - rlRun "rm -f ${REMOTE}/testfile" - rlRun "rsync -avh --max-size ${SIZE} ${LOCAL}/testfile localhost::remote | grep testfile" - rlRun "rm -f ${REMOTE}/testfile" - done - - rlPhaseEnd - - rlPhaseStartTest "--size-only" - -# --size-only -# This modifies rsync’s “quick check” algorithm for finding files that need to -# be transferred, changing it from the default of transferring files with -# either a changed size or a changed last-modified time to just looking for -# files that have changed in size. This is useful when starting to use rsync -# after using another mirroring system which may not preserve timestamps -# exactly. - - rlRun "sleep 2" - # Modified content, but preserved the size of the destionation - rlRun "echo 'Xirst file' > ${REMOTE}/first" - - rlLog "The file would be transfered with only -a option" - rlRun "rsync -avv -n ${LOCAL}/ localhost::remote | grep first" - - rlLog "only the time be updated with --size-only option" - rlRun "rsync -avvv -i --size-only ${LOCAL}/ localhost::remote | grep '.f..t...... first'" - rlRun "grep 'Xirst' ${REMOTE}/first" - - rlLog "The file won't be tranferred with -a option because of the updated time" - rlRun "rsync -avv -i ${LOCAL}/ localhost::remote | grep first" 1 - - rlLog "..and finaly, the file will be transfered with -c option" - rlRun "rsync -avv -i -c ${LOCAL}/ localhost::remote" - rlRun "grep 'First' ${REMOTE}/first" - - rlPhaseEnd - - #rlPhaseStartTest "-f --filter, -F" - -# -f, --filter=RULE -# This option allows you to add rules to selectively exclude certain files -# from the list of files to be transferred. This is most useful in combination -# with a recursive transfer. -# -# You may use as many --filter options on the command line as you like to -# build up the list of files to exclude. If the filter contains whitespace, -# be sure to quote it so that the shell gives the rule to rsync as a single -# argument. The text below also mentions that you can use an underscore to -# replace the space that separates a rule from its arg. -# -# See the FILTER RULES section for detailed information on this option. -# -# -F The -F option is a shorthand for adding two --filter rules to your command. -# The first time it is used is a shorthand for this rule: -# -# --filter=’dir-merge /.rsync-filter’ -# -# This tells rsync to look for per-directory .rsync-filter files that have -# been sprinkled through the hierarchy and use their rules to filter the files -# in the transfer. If -F is repeated, it is a shorthand for this rule: -# -# --filter=’exclude .rsync-filter’ -# -# This filters out the .rsync-filter files themselves from the transfer. -# -# See the FILTER RULES section for detailed information on how these options -# work. - - #rlPhaseEnd - - rlPhaseStartTest "--include --exclude" - -# --include=PATTERN -# This option is a simplified form of the --filter option that defaults to an -# include rule and does not allow the full rule-parsing syntax of normal fil- -# ter rules. -# -# See the FILTER RULES section for detailed information on this option. -# - rlLogInfo "prepare test files" - rlRun "mkdir ${LOCAL}/include-test" - for F in "a.c" "a.log" "b.c" "b.log" "c.c" "c.log" "d.txt"; do - rlRun "echo $F$F$F > ${LOCAL}/include-test/$F" 0 "Creating ${LOCAL}/include-test/$F file" - done - - rlLogInfo "execute rsync command and verify results" - rlRun "rsync -avv -i --include='*.c' --include='b*' --exclude='*.log' ${LOCAL}/include-test localhost::remote" - # note: rsync checks each name to be transferred against the list of include/exclude patterns in turn, and the first matching pattern is acted on - for F in "a.c" "b.c" "c.c" "b.log" "d.txt"; do - rlAssertExists ${REMOTE}/include-test/$F - done - rlAssertNotExists ${REMOTE}/include-test/a.log - rlAssertNotExists ${REMOTE}/include-test/c.log - rlRun "rm -rf ${REMOTE}/include-test ${LOCAL}/include-test" - - rlPhaseEnd - - rlPhaseStartTest "--include-from --exclude-from" - - -# --include-from=FILE -# This option is related to the --include option, but it specifies a FILE that -# contains include patterns (one per line). Blank lines in the file and lines -# starting with ‘;’ or ‘#’ are ignored. If FILE is -, the list will be read -# from standard input. - - rlLogInfo "prepare test files" - rlRun "mkdir ${LOCAL}/include-from-test" - for F in "a.c" "a.log" "b.c" "b.log" "c.c" "c.log" "d.txt"; do - rlRun "echo $F$F$F > ${LOCAL}/include-from-test/$F" 0 "Creating ${LOCAL}/include-from-test/$F file" - done - rlRun "echo -e '*.c\nb*' > list-include" - rlRun "echo -e '*.log' > list-exclude" - - rlLogInfo "execute rsync command and verify results" - rlRun "rsync -avv -i --include-from=list-include --exclude-from=list-exclude ${LOCAL}/include-from-test localhost::remote" - # note: rsync checks each name to be transferred against the list of include/exclude patterns in turn, and the first matching pattern is acted on - for F in "a.c" "b.c" "c.c" "b.log" "d.txt"; do - rlAssertExists ${REMOTE}/include-from-test/$F - done - rlAssertNotExists ${REMOTE}/include-from-test/a.log - rlAssertNotExists ${REMOTE}/include-from-test/c.log - rlRun "rm -rf ${REMOTE}/include-from-test ${LOCAL}/include-from-test list-include list-exclude" - - rlPhaseEnd - - #rlPhaseStartTest "-0, --from0" -# -# -0, --from0 -# This tells rsync that the rules/filenames it reads from a file are termi- -# nated by a null (’\0’) character, not a NL, CR, or CR+LF. This affects -# --exclude-from, --include-from, --files-from, and any merged files specified -# in a --filter rule. It does not affect --cvs-exclude (since all names read -# from a .cvsignore file are split on whitespace). -# -# If the --iconv and --protect-args options are specified and the --files-from -# filenames are being sent from one host to another, the filenames will be -# translated from the sending host’s charset to the receiving host’s charset. - - #rlPhaseEnd - - rlPhaseStartCleanup - rlRun "rm -rf $REMOTE" - rlRun "rm -rf $LOCAL" - rlRun "rm -rf $SERVER_LOG_FILE" - rlRun "rm -rf $LOG_FILE" - rlFileRestore - if rlIsRHEL 5 6; then - rlRun "chkconfig rsync off" - rlServiceRestore xinetd - else - rlRun "systemctl stop rsyncd.socket" - rlServiceRestore rsyncd - $STOPPED || rlRun "systemctl start rsyncd.socket" - fi - if [ -n "$WORKAROUNDED" ]; then - rlLog "Cleanup of the workaround for bz#1082496" - rlRun "rm -rf /usr/lib/systemd/system/rsyncd@.service" - fi - sleep 2 - rlRun "ausearch -m AVC -m SELINUX_ERR -ts ${START_DATE_TIME} > ${TMP_FILE}" 0,1 - LINE_COUNT=`wc -l < ${TMP_FILE}` - rlRun "cat ${TMP_FILE}" - rlAssert0 "number of lines in ${TMP_FILE} should be 0" ${LINE_COUNT} - - rlPhaseEnd - -rlJournalPrintText -rlJournalEnd diff --git a/tests/ignore_tests.yml b/tests/ignore_tests.yml deleted file mode 100644 index 99d5462..0000000 --- a/tests/ignore_tests.yml +++ /dev/null @@ -1,23 +0,0 @@ ---- -# Tests that run in classic context -- hosts: localhost - roles: - - role: standard-test-beakerlib - tags: - - classic - tests: - - definig-the-set-of-files-to-transfer - - setting-group-acls - required_packages: - - rsync # all tests require rsync - - rsync-daemon # definig-the-set-of-files-to-transfer requires rsync-daemon - - acl # setting-group-acls requires acl - -# Tests that run against Atomic Host -- hosts: localhost - roles: - - role: standard-test-beakerlib - tags: - - atomic - tests: - - setting-group-acls diff --git a/tests/setting-group-acls/Makefile b/tests/setting-group-acls/Makefile deleted file mode 100644 index 8249c90..0000000 --- a/tests/setting-group-acls/Makefile +++ /dev/null @@ -1,64 +0,0 @@ -# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -# -# Makefile of setting-group-acls -# Description: If you are using the -A/--acls option and you are not running as root and are not using the --numeric-ids option then if you have an ACL that includes a group entry for a group you are not a member of on the receiving side, then acl_set_file will return EINVAL, b/c rsync mistakenly maps the group name to gid GID_NONE (-1), which (fortunately) fails. -# Author: Ales Marecek -# -# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -# -# Copyright (c) 2011 Red Hat, Inc. All rights reserved. -# -# This copyrighted material is made available to anyone wishing -# to use, modify, copy, or redistribute it subject to the terms -# and conditions of the GNU General Public License version 2. -# -# This program is distributed in the hope that it will be -# useful, but WITHOUT ANY WARRANTY; without even the implied -# warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR -# PURPOSE. See the GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public -# License along with this program; if not, write to the Free -# Software Foundation, Inc., 51 Franklin Street, Fifth Floor, -# Boston, MA 02110-1301, USA. -# -# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -export TEST=setting-group-acls -export TESTVERSION=1.0 - -BUILT_FILES= - -FILES=$(METADATA) runtest.sh Makefile PURPOSE - -.PHONY: all install download clean - -run: $(FILES) build - ./runtest.sh - -build: $(BUILT_FILES) - chmod a+x runtest.sh - -clean: - rm -f *~ $(BUILT_FILES) - - -include /usr/share/rhts/lib/rhts-make.include - -$(METADATA): Makefile - @echo "Owner: Ales Marecek " > $(METADATA) - @echo "Name: $(TEST)" >> $(METADATA) - @echo "TestVersion: $(TESTVERSION)" >> $(METADATA) - @echo "Path: $(TEST_DIR)" >> $(METADATA) - @echo "Description: If you are using the -A/--acls option and you are not running as root and are not using the --numeric-ids option then if you have an ACL that includes a group entry for a group you are not a member of on the receiving side, then acl_set_file will return EINVAL, b/c rsync mistakenly maps the group name to gid GID_NONE (-1), which (fortunately) fails." >> $(METADATA) - @echo "Type: Regression" >> $(METADATA) - @echo "TestTime: 5m" >> $(METADATA) - @echo "RunFor: rsync" >> $(METADATA) - @echo "Requires: rsync" >> $(METADATA) - @echo "Requires: acl" >> $(METADATA) - @echo "Priority: Normal" >> $(METADATA) - @echo "License: GPLv2" >> $(METADATA) - @echo "Confidential: no" >> $(METADATA) - @echo "Destructive: no" >> $(METADATA) - - rhts-lint $(METADATA) diff --git a/tests/setting-group-acls/PURPOSE b/tests/setting-group-acls/PURPOSE deleted file mode 100644 index b8aa3d6..0000000 --- a/tests/setting-group-acls/PURPOSE +++ /dev/null @@ -1,3 +0,0 @@ -PURPOSE of setting-group-acls -Description: If you are using the -A/--acls option and you are not running as root and are not using the --numeric-ids option then if you have an ACL that includes a group entry for a group you are not a member of on the receiving side, then acl_set_file will return EINVAL, b/c rsync mistakenly maps the group name to gid GID_NONE (-1), which (fortunately) fails. -Author: Ales Marecek diff --git a/tests/setting-group-acls/runtest.sh b/tests/setting-group-acls/runtest.sh deleted file mode 100644 index 5b18c8c..0000000 --- a/tests/setting-group-acls/runtest.sh +++ /dev/null @@ -1,71 +0,0 @@ -#!/bin/bash -# vim: dict=/usr/share/beakerlib/dictionary.vim cpt=.,w,b,u,t,i,k -# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -# -# runtest.sh of setting-group-acls -# Description: If you are using the -A/--acls option and you are not running as root and are not using the --numeric-ids option then if you have an ACL that includes a group entry for a group you are not a member of on the receiving side, then acl_set_file will return EINVAL, b/c rsync mistakenly maps the group name to gid GID_NONE (-1), which (fortunately) fails. -# Author: Ales Marecek -# -# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -# -# Copyright (c) 2011 Red Hat, Inc. All rights reserved. -# -# This copyrighted material is made available to anyone wishing -# to use, modify, copy, or redistribute it subject to the terms -# and conditions of the GNU General Public License version 2. -# -# This program is distributed in the hope that it will be -# useful, but WITHOUT ANY WARRANTY; without even the implied -# warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR -# PURPOSE. See the GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public -# License along with this program; if not, write to the Free -# Software Foundation, Inc., 51 Franklin Street, Fifth Floor, -# Boston, MA 02110-1301, USA. -# -# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -# Include rhts environment -. /usr/bin/rhts-environment.sh -. /usr/share/beakerlib/beakerlib.sh - -PACKAGE="rsync" -_TEST_USER="rsynctestuser" -_TEST_USER_PASSWORD="redhat" -_TEST_USER_HOME_DIR="/home/${_TEST_USER}" -_TEST_USER_SRC_TEST_DIR="${_TEST_USER_HOME_DIR}/src_rsync" -_TEST_USER_DST_TEST_DIR="${_TEST_USER_HOME_DIR}/dst_rsync" -_TEST_RAND_FILENAME="random.data" -_TEST_TEXT_FILENAME="hello_world.txt" -_TEST_RAND_FILE="${_TEST_USER_SRC_TEST_DIR}/${_TEST_RAND_FILENAME}" -_TEST_TEXT_FILE="${_TEST_USER_SRC_TEST_DIR}/${_TEST_TEXT_FILENAME}" -_TEST_RAND_FILE_SIZE=10 - -rlJournalStart - rlPhaseStartSetup - rlAssertRpm $PACKAGE - id ${_TEST_USER} >/dev/null 2>&1 || rlRun "useradd -d ${_TEST_USER_HOME_DIR} -m ${_TEST_USER}" 0 "Creating a test user" - rlRun "echo \"${_TEST_USER_PASSWORD}\" | passwd --stdin ${_TEST_USER} >/dev/null 2>&1" 0 "Setting user's password" - rlRun "su - ${_TEST_USER} -c \"mkdir -p ${_TEST_USER_SRC_TEST_DIR} ${_TEST_USER_DST_TEST_DIR}\"" 0 "Creating directories for test data" - rlRun "su ${_TEST_USER} -c \"dd if=/dev/urandom of=${_TEST_RAND_FILE} bs=1M count=${_TEST_RAND_FILE_SIZE}\"" 0 "Generating random data file" - rlRun "su ${_TEST_USER} -c \"echo 'Hello world' >${_TEST_TEXT_FILE}\"" 0 "Generating text data file" - rlRun "setfacl -m g:root:--- ${_TEST_RAND_FILE}" 0 "Setting ACL for random data file" - rlRun "setfacl -m g:root:--- ${_TEST_TEXT_FILE}" 0 "Setting ACL for text data file" - rlPhaseEnd - - rlPhaseStartTest - rlRun "su - ${_TEST_USER} -c \"rsync -A ${_TEST_RAND_FILE} ${_TEST_USER_DST_TEST_DIR}\"" 0 "Syncing random data file" - rlRun "su - ${_TEST_USER} -c \"rsync -A ${_TEST_TEXT_FILE} ${_TEST_USER_DST_TEST_DIR}\"" 0 "Syncing text data file" - getfacl ${_TEST_USER_DST_TEST_DIR}/${_TEST_RAND_FILENAME} - rlRun "getfacl ${_TEST_USER_DST_TEST_DIR}/${_TEST_RAND_FILENAME} | grep 'group:root:---'" 0 "Verify that ACL was properly set" - getfacl ${_TEST_USER_DST_TEST_DIR}/${_TEST_TEXT_FILENAME} - rlRun "getfacl ${_TEST_USER_DST_TEST_DIR}/${_TEST_TEXT_FILENAME} | grep 'group:root:---'" 0 "Verify that ACL was properly set" - rlPhaseEnd - - rlPhaseStartCleanup - rlRun "userdel -r ${_TEST_USER}" 0 "Deleting test user" - rlPhaseEnd -rlJournalPrintText -rlJournalEnd -