1#!/usr/local/bin/ksh93 -p 2# 3# CDDL HEADER START 4# 5# The contents of this file are subject to the terms of the 6# Common Development and Distribution License (the "License"). 7# You may not use this file except in compliance with the License. 8# 9# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE 10# or http://www.opensolaris.org/os/licensing. 11# See the License for the specific language governing permissions 12# and limitations under the License. 13# 14# When distributing Covered Code, include this CDDL HEADER in each 15# file and include the License file at usr/src/OPENSOLARIS.LICENSE. 16# If applicable, add the following below this CDDL HEADER, with the 17# fields enclosed by brackets "[]" replaced with your own identifying 18# information: Portions Copyright [yyyy] [name of copyright owner] 19# 20# CDDL HEADER END 21# 22 23# 24# Copyright 2009 Sun Microsystems, Inc. All rights reserved. 25# Use is subject to license terms. 26# 27# ident "@(#)hotspare_remove_002_neg.ksh 1.3 09/06/22 SMI" 28# 29. $STF_SUITE/tests/hotspare/hotspare.kshlib 30 31################################################################################ 32# 33# __stc_assertion_start 34# 35# ID: hotspare_remove_002_neg 36# 37# DESCRIPTION: 38# 'zpool remove <pool> <vdev> ...' should return fail if 39# - notexist device 40# - not within the hot spares of this pool 41# - hot spares that currently spared in 42# 43# STRATEGY: 44# 1. Create a storage pool 45# 2. Add hot spare devices to the pool 46# 3. For each scenario, try to remove the hot spares 47# 4. Verify the the remove operation get failed 48# 49# TESTABILITY: explicit 50# 51# TEST_AUTOMATION_LEVEL: automated 52# 53# CODING STATUS: COMPLETED (2005-09-27) 54# 55# __stc_assertion_end 56# 57############################################################################### 58 59verify_runnable "global" 60 61function cleanup 62{ 63 poolexists $TESTPOOL && \ 64 destroy_pool $TESTPOOL 65 66 partition_cleanup 67} 68 69function verify_assertion # dev 70{ 71 typeset dev=$1 72 typeset odev=${pooldevs[0]} 73 74 log_must $ZPOOL replace $TESTPOOL $odev $dev 75 log_mustnot $ZPOOL remove $TESTPOOL $dev 76 log_must $ZPOOL detach $TESTPOOL $dev 77} 78 79log_assert "'zpool remove <pool> <vdev> ...' should fail with inapplicable scenarios." 80 81log_onexit cleanup 82 83typeset dev_nonexist dev_notinlist 84 85case $DISK_ARRAY_NUM in 860|1) 87 dev_nonexist=/dev/${disk}sbad_slice_num 88 dev_notinlist=${disk} 89 ;; 902|*) 91 dev_nonexist=/dev/${DISK0}sbad_slice_num 92 dev_notinlist="${DISK0} ${DISK1}" 93 ;; 94esac 95 96set_devs 97 98for keyword in "${keywords[@]}" ; do 99 setup_hotspares "$keyword" 100 101 for dev in $dev_nonexist ; do 102 log_mustnot $ZPOOL remove $TESTPOOL $dev 103 done 104 105 for dev in $dev_notinlist ; do 106 log_mustnot $ZPOOL remove $TESTPOOL $dev 107 done 108 109 iterate_over_hotspares verify_assertion 110 111 destroy_pool "$TESTPOOL" 112done 113 114log_pass "'zpool remove <pool> <vdev> ...' fail with inapplicable scenarios." 115