d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy#
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy# CDDL HEADER START
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy#
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy# The contents of this file are subject to the terms of the
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy# Common Development and Distribution License (the "License").
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy# You may not use this file except in compliance with the License.
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy#
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy# or http://www.opensolaris.org/os/licensing.
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy# See the License for the specific language governing permissions
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy# and limitations under the License.
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy#
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy# When distributing Covered Code, include this CDDL HEADER in each
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy# If applicable, add the following below this CDDL HEADER, with the
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy# fields enclosed by brackets "[]" replaced with your own identifying
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy# information: Portions Copyright [yyyy] [name of copyright owner]
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy#
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy# CDDL HEADER END
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy#
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy#
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy# Copyright 2007 Sun Microsystems, Inc. All rights reserved.
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy# Use is subject to license terms.
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy#
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy
1d32ba663e202c24a5a1f2e5aef83fffb447cb7fJohn Wren Kennedy#
1d32ba663e202c24a5a1f2e5aef83fffb447cb7fJohn Wren Kennedy# Copyright (c) 2016 by Delphix. All rights reserved.
1d32ba663e202c24a5a1f2e5aef83fffb447cb7fJohn Wren Kennedy#
1d32ba663e202c24a5a1f2e5aef83fffb447cb7fJohn Wren Kennedy
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy. $STF_SUITE/include/libtest.shlib
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy#
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy# According to $elements, $prefix and $separator, the function random produce
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy# the number of $counter combination.
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy#
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy# $1 elements which is used to get the combination.
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy# $2 prefix is appended to the combination
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy# $3 separator between the combination, such as ' ' or ','
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy# $4 counter is the number of combination which you want to get.
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy#
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedyfunction gen_option_str # $elements $prefix $separator $counter
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy{
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy typeset elements=""
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy typeset prefix=${2}
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy typeset separator=${3}
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy typeset -i counter=${4:-0}
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy typeset -i i=0
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy typeset comb_str=""
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy for e in $1; do
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy elements[i]="$e"
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy (( i += 1 ))
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy done
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy (( ${#elements[@]} == 0 )) && log_fail "The elements can't be empty."
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy typeset -i item=0
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy typeset -i j=0
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy typeset -i numb_item=0
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy # Loop and get the specified number combination strings.
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy i=0
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy while (( i < counter )); do
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy j=0
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy numb_item=0
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy comb_str=""
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy # Get random number items for each combinations.
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy (( numb_item = ($RANDOM % ${#elements[@]}) + 1 ))
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy while (( j < numb_item )); do
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy # Random select elements from the array
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy (( item = $RANDOM % ${#elements[@]} ))
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy if (( ${#comb_str} == 0 )); then
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy comb_str=${elements[item]}
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy else
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy comb_str=$comb_str$separator${elements[item]}
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy fi
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy (( j += 1 ))
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy done
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy echo "$prefix$comb_str"
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy (( i += 1 ))
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy done
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy}
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy#
edb901aab9c738b5eb15aa55933e82b0f2f9d9a2Marcel Telka# Cleanup the volume snapshot, filesystem snapshot, volume bookmark, and
edb901aab9c738b5eb15aa55933e82b0f2f9d9a2Marcel Telka# filesystem bookmark that were created for this test case.
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy#
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedyfunction cleanup
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy{
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy datasetexists $TESTPOOL/$TESTVOL@$TESTSNAP && \
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy destroy_snapshot $TESTPOOL/$TESTVOL@$TESTSNAP
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy datasetexists $TESTPOOL/$TESTFS@$TESTSNAP && \
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy destroy_snapshot $TESTPOOL/$TESTFS@$TESTSNAP
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy
edb901aab9c738b5eb15aa55933e82b0f2f9d9a2Marcel Telka bkmarkexists $TESTPOOL/$TESTVOL#$TESTBKMARK && \
edb901aab9c738b5eb15aa55933e82b0f2f9d9a2Marcel Telka destroy_bookmark $TESTPOOL/$TESTVOL#$TESTBKMARK
edb901aab9c738b5eb15aa55933e82b0f2f9d9a2Marcel Telka bkmarkexists $TESTPOOL/$TESTFS#$TESTBKMARK && \
edb901aab9c738b5eb15aa55933e82b0f2f9d9a2Marcel Telka destroy_bookmark $TESTPOOL/$TESTFS#$TESTBKMARK
edb901aab9c738b5eb15aa55933e82b0f2f9d9a2Marcel Telka
1d32ba663e202c24a5a1f2e5aef83fffb447cb7fJohn Wren Kennedy [[ -e $TESTFILE0 ]] && log_must rm $TESTFILE0
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy}