#!/usr/bin/env bash # # Copyright 2016-2018, Intel Corporation # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # # * Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # # * 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. # # * Neither the name of the copyright holder nor the names of its # contributors may be used to endorse or promote products derived # from this software without specific prior written permission. # # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS 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 COPYRIGHT # OWNER 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. # # # src/test/rpmem_basic/TEST1 -- unit test for rpmem open request # # standard unit test setup . ../unittest/unittest.sh require_test_type medium . setup.sh setup create_poolset $DIR/pool0.set 8M:$PART_DIR/pool0.part0 8M:$PART_DIR/pool0.part1 create_poolset $DIR/pool1.set 16M:$PART_DIR/pool1.part0 create_poolset $DIR/pool2.set 16M:$PART_DIR/pool2.part0 create_poolset $DIR/pool3.set 8M:$PART_DIR/pool3.part0 8M:$PART_DIR/pool3.part1 # Pool set file with duplicated part file create_poolset $DIR/pool4.set 8M:$PART_DIR/pool3.part0 8M:$PART_DIR/pool4.part1 # Pool set file with the SINGLEHDR option create_poolset $DIR/pool5.set 8M:$PART_DIR/pool5.part0 8M:$PART_DIR/pool5.part1 O SINGLEHDR # Pool set file with the NOHDRS option create_poolset $DIR/pool6.set 8M:$PART_DIR/pool6.part0 8M:$PART_DIR/pool6.part1 O NOHDRS cp $DIR/pool0.set $DIR/pool0r.set run_on_node 0 "rm -rf ${NODE_DIR[0]}$POOLS_DIR ${NODE_DIR[0]}$POOLS_PART && mkdir -p ${NODE_DIR[0]}$POOLS_DIR/subdir && mkdir -p ${NODE_DIR[0]}$POOLS_PART" copy_files_to_node 0 ${NODE_DIR[0]}$POOLS_DIR $DIR/{pool0.set,pool0r.set,pool1.set,pool3.set,pool4.set,pool5.set,pool6.set} copy_files_to_node 0 ${NODE_DIR[0]}$POOLS_DIR/subdir/ $DIR/pool2.set # Remove read permission run_on_node 0 chmod a-r ${NODE_DIR[0]}$POOLS_DIR/pool0r.set expect_normal_exit run_on_node 1 ./rpmem_basic$EXESUFFIX\ test_create 0 pool0.set ${NODE_ADDR[0]} mem 8M none test_close 0 expect_normal_exit run_on_node 1 ./rpmem_basic$EXESUFFIX\ test_create 0 pool1.set ${NODE_ADDR[0]} mem 8M none test_close 0 expect_normal_exit run_on_node 1 ./rpmem_basic$EXESUFFIX\ test_create 0 subdir/pool2.set ${NODE_ADDR[0]} mem 8M none test_close 0 expect_normal_exit run_on_node 1 ./rpmem_basic$EXESUFFIX\ test_create 0 pool3.set ${NODE_ADDR[0]} mem 8M none test_close 0 expect_normal_exit run_on_node 1 ./rpmem_basic$EXESUFFIX\ test_create 0 pool5.set ${NODE_ADDR[0]} mem 8M singlehdr test_close 0 expect_normal_exit run_on_node 1 ./rpmem_basic$EXESUFFIX\ test_create 0 pool6.set ${NODE_ADDR[0]} mem 8M noattr test_close 0 # Open pool from non-existing pool set file ARGS="$ARGS test_open 0 poolX.set ${NODE_ADDR[0]} pool 8M init none" # Open pool from pool set file which can't be read ARGS="$ARGS test_open 0 pool0r.set ${NODE_ADDR[0]} pool 8M init none" # Open too big pool ARGS="$ARGS test_open 0 pool0.set ${NODE_ADDR[0]} pool 32M init none" # Open pool and close it - local pool from file ARGS="$ARGS test_open 0 pool0.set ${NODE_ADDR[0]} pool 8M init none test_close 0" # Open pool and close it - local pool from memory ARGS="$ARGS test_open 0 pool1.set ${NODE_ADDR[0]} mem 8M init none test_close 0" # Open pool from pool set with subdirectory ARGS="$ARGS test_open 0 subdir/pool2.set ${NODE_ADDR[0]} pool 8M init none test_close 0" # Open pool but don't close it immediately ARGS="$ARGS test_open 0 pool3.set ${NODE_ADDR[0]} pool 8M init none " # Open already opened and not closed pool ARGS="$ARGS test_open 1 pool3.set ${NODE_ADDR[0]} pool 8M init none" # Open pool from pool set which has duplicated part file ARGS="$ARGS test_open 2 pool4.set ${NODE_ADDR[0]} pool 8M init none" # Close previously created pool ARGS="$ARGS test_close 0" # Open pool with the SINGLEHDR option and close it - local pool from file ARGS="$ARGS test_open 0 pool5.set ${NODE_ADDR[0]} pool 8M init singlehdr test_close 0" # Open pool with the NOHDRS option and close it - local pool from memory ARGS="$ARGS test_open 0 pool6.set ${NODE_ADDR[0]} mem 8M init noattr test_close 0" expect_normal_exit run_on_node 1 ./rpmem_basic$EXESUFFIX $ARGS check pass