#!/bin/bash

# Copyright (C) 2010 Karel Zak <kzak@redhat.com>

TS_TOPDIR="${0%/*}/../.."
TS_DESC="context (utab)"

. $TS_TOPDIR/functions.sh
ts_init "$*"

ts_check_test_command "$TS_CMD_FDISK"
ts_check_test_command "$TS_CMD_FINDMNT"
ts_check_test_command "$TS_CMD_MOUNT"
ts_check_test_command "$TS_CMD_UMOUNT"
ts_check_test_command "$TS_CMD_WIPEFS"
ts_check_test_command "$TS_CMD_UUIDGEN"

ts_skip_nonroot
ts_check_prog "mkfs.ext4"

TESTPROG="$TS_HELPER_LIBMOUNT_CONTEXT"
LABEL=libmount-test
UUID=$($TS_CMD_UUIDGEN)
MOUNTPOINT="$TS_MOUNTPOINT"

[ -x $TESTPROG ] || ts_skip "test not compiled"

# set global variable TS_DEVICE
ts_scsi_debug_init dev_size_mb=257
DEVNAME=$(basename $TS_DEVICE)

ts_log "Create partitions"
$TS_CMD_FDISK ${TS_DEVICE} &> /dev/null <<EOF
n
p
1


w
q
EOF

DEVICE="${TS_DEVICE}1"

udevadm settle

grep -q $DEVNAME /proc/partitions
if [ $? -ne 0 ]; then
	ts_skip "no partition!"
fi

ts_log "Create filesystem"
mkfs.ext4 -L "$LABEL" -U "$UUID" $DEVICE &> /dev/null

ts_log "Do tests..."

export LIBMOUNT_MTAB=$TS_OUTPUT.mtab
rm -f $LIBMOUNT_MTAB
ln -s /proc/mounts $LIBMOUNT_MTAB

export LIBMOUNT_UTAB=$TS_OUTPUT.utab
rm -f $LIBMOUNT_UTAB
> $LIBMOUNT_UTAB

udevadm settle

ts_init_subtest "mount-by-devname"
mkdir -p $MOUNTPOINT &>  /dev/null
ts_valgrind $TESTPROG --mount $DEVICE $MOUNTPOINT >> $TS_OUTPUT 2>&1
grep -q $DEVICE /proc/mounts || \
	echo "(by device) cannot find $DEVICE in /proc/mounts" >> $TS_OUTPUT 2>&1
ts_finalize_subtest


ts_init_subtest "umount-by-devname"
ts_valgrind $TESTPROG --umount $DEVICE >> $TS_OUTPUT 2>&1
grep -q $DEVICE /proc/mounts &&
	echo "umount (device) failed: found $DEVICE in /proc/mounts" >> $TS_OUTPUT 2>&1
ts_finalize_subtest


ts_init_subtest "mount-uhelper"
mkdir -p $MOUNTPOINT &>  /dev/null
ts_valgrind $TESTPROG --mount -o uhelper=foo,rw LABEL="$LABEL" $MOUNTPOINT >> $TS_OUTPUT 2>&1
grep -q $DEVICE $LIBMOUNT_UTAB || \
	echo "(by label) cannot find $DEVICE in $LIBMOUNT_UTAB" >> $TS_OUTPUT 2>&1
ts_finalize_subtest


ts_init_subtest "umount"
ts_valgrind $TESTPROG --umount $MOUNTPOINT >> $TS_OUTPUT 2>&1
grep -q $DEVICE $LIBMOUNT_UTAB && \
	echo "umount (mountpoint) failed: found $DEVICE in $LIBMOUNT_UTAB" >> $TS_OUTPUT 2>&1
ts_finalize_subtest


if type "mkfs.btrfs" &>/dev/null && mkfs.btrfs --version &>/dev/null; then
	$TS_CMD_WIPEFS -a  $DEVICE &> /dev/null
	#ts_log "Create filesystem [btrfs]"
	mkfs.btrfs -L "$LABEL" $DEVICE &> /dev/null
	udevadm settle

	$TS_CMD_MOUNT -t btrfs $DEVICE $MOUNTPOINT &> /dev/null
	btrfs subvolume create $MOUNTPOINT/sub &> /dev/null
	$TS_CMD_UMOUNT $MOUNTPOINT &> /dev/null

	udevadm settle

	ts_init_subtest "mount-uhelper-subvol"
	mkdir -p $MOUNTPOINT &>  /dev/null
	ts_valgrind $TESTPROG --mount -o uhelper=foo,rw,subvol=sub $DEVICE  $MOUNTPOINT >> $TS_OUTPUT 2>&1
	grep -q $DEVICE $LIBMOUNT_UTAB || \
		echo "cannot find $DEVICE in $LIBMOUNT_UTAB" >> $TS_OUTPUT 2>&1
	ts_finalize_subtest

	# Don't temporary write btrfs mount options to the test output,
	# the options depend on kernel version (since 4.2 it contains
	# subvol= and subvolid=).
	#
	#ts_log "All mount options (btrfs subvolume + utab) ---"
	#$TS_CMD_FINDMNT --mtab $MOUNTPOINT -o OPTIONS -n >> $TS_OUTPUT 2>&1
	#ts_log "---"

	ts_init_subtest "umount-subvol"
	ts_valgrind $TESTPROG --umount $MOUNTPOINT >> $TS_OUTPUT 2>&1
	grep -q $DEVICE $LIBMOUNT_UTAB && \
		echo "umount (mountpoint) failed: found $DEVICE in $LIBMOUNT_UTAB" >> $TS_OUTPUT 2>&1
	ts_finalize_subtest
fi

ts_log "...done."
ts_finalize
