#!/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. # # # pmempool_transform/TEST1 -- test for checking pmempool transform; # adding a replica # . ../unittest/unittest.sh require_test_type medium require_fs_type any setup LOG=out${UNITTEST_NUM}.log LOG_TEMP=out${UNITTEST_NUM}_part.log rm -f $LOG && touch $LOG rm -f $LOG_TEMP && touch $LOG_TEMP LAYOUT=OBJ_LAYOUT$SUFFIX POOLSET_IN=$DIR/poolset.in POOLSET_OUT=$DIR/poolset.out # Create poolset files create_poolset $POOLSET_IN \ 20M:$DIR/testfile0:x \ 10M:$DIR/testfile1:x \ R \ 10M:$DIR/testfile2:x \ 10M:$DIR/testfile3:x \ 10M:$DIR/testfile4:x create_poolset $POOLSET_OUT \ 20M:$DIR/testfile0:x \ 10M:$DIR/testfile1:x \ R \ 10M:$DIR/testfile2:x \ 10M:$DIR/testfile3:x \ 10M:$DIR/testfile4:x \ R \ 10M:$DIR/testfile5:x \ 20M:$DIR/testfile6:x # CLI script for writing some data hitting all the parts WRITE_SCRIPT=$DIR/write_data cat << EOF > $WRITE_SCRIPT pr 22M srcp 0 TestOK111 srcp 20M TestOK222 EOF # CLI script for reading 9 characters from all the parts READ_SCRIPT=$DIR/read_data cat << EOF > $READ_SCRIPT srpr 0 9 srpr 20M 9 EOF # Create a pool expect_normal_exit $PMEMPOOL$EXESUFFIX create --layout=$LAYOUT\ obj $POOLSET_IN cat $LOG >> $LOG_TEMP # Write some data into the pool, hitting two part files expect_normal_exit $PMEMOBJCLI$EXESUFFIX -s $WRITE_SCRIPT $POOLSET_IN >> \ $LOG_TEMP # Check if correctly written expect_normal_exit $PMEMOBJCLI$EXESUFFIX -s $READ_SCRIPT $POOLSET_IN >> \ $LOG_TEMP # Transform poolset FLAGS=0 expect_normal_exit $PMEMPOOL$EXESUFFIX transform \ $POOLSET_IN $POOLSET_OUT $FLAGS >> $LOG cat $LOG >> $LOG_TEMP # Check if correctly copied expect_normal_exit $PMEMOBJCLI$EXESUFFIX -s $READ_SCRIPT $POOLSET_OUT >> \ $LOG_TEMP # Check metadata by pmempool info for i in `seq 0 6` do dump_pool_info $DIR/testfile$i >> $LOG_TEMP done mv $LOG_TEMP $LOG check pass