#!/bin/bash
#
# This file is part of util-linux.
#
# This file is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# This file 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.
#

TS_TOPDIR="${0%/*}/../.."
TS_DESC="chrt"

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

ts_check_test_command "$TS_CMD_CHRT"
ts_skip_nonroot

# TODO: drone.io does not like FIFO and RR (container restriction?)
TS_KNOWN_FAIL="yes"

function do_chrt {
	$TS_CMD_CHRT $* $TS_CMD_CHRT --pid 0 | sed 's/.* policy: //; s/.* priority: //' >> $TS_OUTPUT 2>&1
}

function skip_policy {
	$TS_CMD_CHRT --max | grep $1 | grep 'priority' &> /dev/null
	if [ $? == 1 ]; then
		ts_skip_subtest "unsupported"
		return 1
	fi
	return 0
}

function cleanup_output {
	sed -i -e 's/pid [0-9]*/<removed>/' $TS_OUTPUT
}


ts_init_subtest "fifo"
skip_policy SCHED_FIFO
if [ $? == 0 ]; then
	do_chrt --fifo 1
	do_chrt --fifo 99
	cleanup_output
	ts_finalize_subtest
fi


ts_init_subtest "batch"
skip_policy SCHED_BATCH
if [ $? == 0 ]; then
	do_chrt --batch 0
	cleanup_output
	ts_finalize_subtest
fi


ts_init_subtest "other"
skip_policy SCHED_OTHER
if [ $? == 0 ]; then
	do_chrt --other 0
	cleanup_output
	ts_finalize_subtest
fi


ts_init_subtest "rr"
skip_policy SCHED_RR
if [ $? == 0 ]; then
	do_chrt --rr 1
	do_chrt --rr 99
	cleanup_output
	ts_finalize_subtest
fi


ts_init_subtest "idle"
skip_policy SCHED_IDLE
if [ $? == 0 ]; then
	do_chrt --idle 0
	cleanup_output
	ts_finalize_subtest
fi


ts_init_subtest "deadline"
skip_policy SCHED_DEADLINE
if [ $? == 0 ]; then
	do_chrt --deadline --sched-period 13000 0
	do_chrt --deadline --sched-period 13000 --sched-deadline 12000 0
	do_chrt --deadline --sched-period 13000 --sched-deadline 12000 --sched-runtime 10000 0
	cleanup_output
	ts_finalize_subtest
fi

# failed -- let's report kernel limits
#
if [ $TS_NSUBFAILED -ne 0 ]; then
	echo "Supported policies:"
	$TS_CMD_CHRT --max
fi

ts_finalize
