#!/bin/sh
# SPDX-License-Identifier: GPL-2.0
# description: Test file and directory owership changes for eventfs

original_group=`stat -c "%g" .`
original_owner=`stat -c "%u" .`

mount_point=`stat -c '%m' .`
mount_options=`mount | grep "$mount_point" | sed -e 's/.*(\(.*\)).*/\1/'`

# find another owner and group that is not the original
other_group=`tac /etc/group | grep -v ":$original_group:" | head -1 | cut -d: -f3`
other_owner=`tac /etc/passwd | grep -v ":$original_owner:" | head -1 | cut -d: -f3`

# Remove any group ownership already
new_options=`echo "$mount_options" | sed -e "s/gid=[0-9]*/gid=$other_group/"`

if [ "$new_options" = "$mount_options" ]; then
	new_options="$mount_options,gid=$other_group"
	mount_options="$mount_options,gid=$original_group"
fi

canary="events/timer events/timer/timer_cancel events/timer/timer_cancel/format"

test() {
	file=$1
	test_group=$2

	owner=`stat -c "%u" $file`
	group=`stat -c "%g" $file`

	echo "testing $file $owner=$original_owner and $group=$test_group"
	if [ $owner -ne $original_owner ]; then
		exit_fail
	fi
	if [ $group -ne $test_group ]; then
		exit_fail
	fi

	# Note, the remount does not update ownership so test going to and from owner
	echo "test owner $file to $other_owner"
	chown $other_owner $file
	owner=`stat -c "%u" $file`
	if [ $owner -ne $other_owner ]; then
		exit_fail
	fi

	chown $original_owner $file
	owner=`stat -c "%u" $file`
	if [ $owner -ne $original_owner ]; then
		exit_fail
	fi

}

run_tests() {
	for d in "." "events" "events/sched" "events/sched/sched_switch" "events/sched/sched_switch/enable" $canary; do
		test "$d" $other_group
	done

	chgrp $original_group events
	test "events" $original_group
	for d in "." "events/sched" "events/sched/sched_switch" "events/sched/sched_switch/enable" $canary; do
		test "$d" $other_group
	done

	chgrp $original_group events/sched
	test "events/sched" $original_group
	for d in "." "events/sched/sched_switch" "events/sched/sched_switch/enable" $canary; do
		test "$d" $other_group
	done

	chgrp $original_group events/sched/sched_switch
	test "events/sched/sched_switch" $original_group
	for d in "." "events/sched/sched_switch/enable" $canary; do
		test "$d" $other_group
	done

	chgrp $original_group events/sched/sched_switch/enable
	test "events/sched/sched_switch/enable" $original_group
	for d in "." $canary; do
		test "$d" $other_group
	done
}

mount -o remount,"$new_options" .

run_tests

mount -o remount,"$mount_options" .

for d in "." "events" "events/sched" "events/sched/sched_switch" "events/sched/sched_switch/enable" $canary; do
	test "$d" $original_group
done

# check instances as well

chgrp $other_group instances

instance="$(mktemp -u test-XXXXXX)"

mkdir instances/$instance

cd instances/$instance

run_tests

cd ../..

rmdir instances/$instance

chgrp $original_group instances

exit 0
