#!/usr/bin/env bash
# SPDX-License-Identifier: BSD-3-Clause
# Copyright 2018-2019, Intel Corporation

. ../unittest/unittest.sh

require_test_type short

setup

# without fallocate, creating pool causes writes to each block and
# number of page faults is the same no matter if prefaulting is enabled
require_native_fallocate $DIR/testfile1

# create, don't prefault
expect_normal_exit ./ctl_prefault$EXESUFFIX blk $DIR/testfile1 0 0
pagefault_create_baseline=`cat out$UNITTEST_NUM.log | sed -n '3p'`

# open, don't prefault
expect_normal_exit ./ctl_prefault$EXESUFFIX blk $DIR/testfile1 0 1
pagefault_open_baseline=`cat out$UNITTEST_NUM.log | sed -n '3p'`

rm -f $DIR/testfile1

# create, prefault
expect_normal_exit ./ctl_prefault$EXESUFFIX blk $DIR/testfile1 2 0
pagefault_create_prefault=`cat out$UNITTEST_NUM.log | sed -n '3p'`

# open, prefault
expect_normal_exit ./ctl_prefault$EXESUFFIX blk $DIR/testfile1 1 1
pagefault_open_prefault=`cat out$UNITTEST_NUM.log | sed -n '3p'`

rm -f $DIR/testfile1

if [ ${pagefault_create_baseline} -ge ${pagefault_create_prefault} ]; then
	fatal "create: ${pagefault_create_baseline} >= ${pagefault_create_prefault} "
fi

if [ ${pagefault_open_baseline} -ge ${pagefault_open_prefault} ]; then
	fatal "open: ${pagefault_open_baseline} >= ${pagefault_open_prefault}"
fi

pass
