#!/bin/ksh -p # # This file and its contents are supplied under the terms of the # Common Development and Distribution License ("CDDL"), version 1.0. # You may only use this file in accordance with the terms of version # 1.0 of the CDDL. # # A full copy of the text of the CDDL should have accompanied this # source. A copy of the CDDL is also available via the Internet at # http://www.illumos.org/license/CDDL. # # # Copyright 2018, loli10K . All rights reserved. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/cli_root/zpool_split/zpool_split.cfg # # DESCRIPTION: # 'zpool split' should only work with supported options and parameters. # # STRATEGY: # 1. Verify every supported option is accepted # 2. Verify other unsupported options raise an error # 3. Verify we cannot split a pool if the destination already exists # verify_runnable "both" function cleanup { destroy_pool $TESTPOOL destroy_pool $TESTPOOL2 rm -f $DEVICE1 $DEVICE2 $DEVICE3 } function setup_mirror { truncate -s $SPA_MINDEVSIZE $DEVICE1 truncate -s $SPA_MINDEVSIZE $DEVICE2 log_must zpool create -f $TESTPOOL mirror $DEVICE1 $DEVICE2 } log_assert "'zpool split' should only work with supported options and parameters." log_onexit cleanup typeset goodopts=( "" "-g" "-L" "-n" "-P" "-o comment=ok" "-o ro -R /mnt" "-l -R /mnt" "-gLnP") typeset badopts=( "-f" "-h" "-x" "-Pp" "-l" "-G" "-o" "-o ro" "-o comment" "-R" "-R dir" "=") DEVICE1="$TEST_BASE_DIR/device-1" DEVICE2="$TEST_BASE_DIR/device-2" DEVICE3="$TEST_BASE_DIR/device-3" # 1. Verify every supported option and/or parameter is accepted for opt in "${goodopts[@]}" do setup_mirror log_must zpool split $opt $TESTPOOL $TESTPOOL2 cleanup done # 2. Verify other unsupported options and/or parameters raise an error setup_mirror for opt in "${badopts[@]}" do log_mustnot zpool split $opt $TESTPOOL $TESTPOOL2 done cleanup # 3. Verify we cannot split a pool if the destination already exists setup_mirror truncate -s $SPA_MINDEVSIZE $DEVICE3 log_must zpool create $TESTPOOL2 $DEVICE3 log_mustnot zpool split $TESTPOOL $TESTPOOL2 log_pass "'zpool split' only works with supported options and parameters."