Changeset View
Changeset View
Standalone View
Standalone View
tests/sys/racct/racct_jail_cpu.sh
- This file was added.
| #- | |||||
| # SPDX-License-Identifier: BSD-2-Clause-FreeBSD | |||||
| # | |||||
| # Copyright (c) 2021 The FreeBSD Foundation | |||||
| # | |||||
| # This software was developed by Cyril Zhang under sponsorship from | |||||
| # the FreeBSD Foundation. | |||||
| # | |||||
| # Redistribution and use in source and binary forms, with or without | |||||
| # modification, are permitted provided that the following conditions are | |||||
| # met: | |||||
| # 1. Redistributions of source code must retain the above copyright | |||||
| # notice, this list of conditions and the following disclaimer. | |||||
| # 2. Redistributions in binary form must reproduce the above copyright | |||||
| # notice, this list of conditions and the following disclaimer in | |||||
| # the documentation and/or other materials provided with the distribution. | |||||
| # | |||||
| # THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND | |||||
| # ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE | |||||
| # IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE | |||||
| # ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE | |||||
| # FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL | |||||
| # DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS | |||||
| # OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) | |||||
| # HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT | |||||
| # LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY | |||||
| # OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF | |||||
| # SUCH DAMAGE. | |||||
| # | |||||
| . $(atf_get_srcdir)/utils.subr | |||||
| atf_test_case racct_cpu cleanup | |||||
| racct_cpu_head() | |||||
| { | |||||
| atf_set "descr" "Tests pcpu and cputime for a jail racct." | |||||
| atf_set "require.user" "root" | |||||
| } | |||||
| racct_cpu_body() | |||||
| { | |||||
| # This test checks pctcpu and cputime at once, | |||||
| # in order to avoid running the 3s loop twice. | |||||
| racct_mkjail myjail | |||||
| jexec myjail $(atf_get_srcdir)/loop & | |||||
| sleep 2 | |||||
| pcpu=$(rctl -u jail:myjail | grep "pcpu" | sed 's/.*=//') | |||||
| sleep 2 | |||||
| cputime=$(rctl -u jail:myjail | grep "cputime" | sed 's/.*=//') | |||||
| # We'll give a very large tolerance for pcpu, | |||||
| # due to the decay factor involved in its calculation. | |||||
| # cputime may be rounded down to 2 but should | |||||
| # not exceed 3. | |||||
| if [ $cputime -lt 2 ] || [ $cputime -gt 3 ] || [ $pcpu -lt 60 ] || [ $pcpu -gt 140 ]; then | |||||
| atf_fail "expected pcpu: ~100, actual: $pcpu | expected cputime: ~3, actual: $cputime" | |||||
| fi | |||||
| } | |||||
| racct_cpu_cleanup() | |||||
| { | |||||
| racct_cleanup | |||||
| } | |||||
| atf_init_test_cases() | |||||
| { | |||||
| atf_add_test_case racct_cpu | |||||
| } | |||||