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 2009 Sun Microsystems, Inc. All rights reserved.
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy# Use is subject to license terms.
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy#
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy
52244c0958bdf281ca42932b449f644b4decfdc2John Wren Kennedy#
1d32ba663e202c24a5a1f2e5aef83fffb447cb7fJohn Wren Kennedy# Copyright (c) 2014, 2016 by Delphix. All rights reserved.
52244c0958bdf281ca42932b449f644b4decfdc2John Wren Kennedy#
52244c0958bdf281ca42932b449f644b4decfdc2John Wren Kennedy
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy. $STF_SUITE/include/libtest.shlib
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedyset -A VALID_NAME_CHAR a b c d e f g h i j k l m n o p q r s t u v w x y z \
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy 0 1 2 3 4 5 6 7 8 9 ':' '-' '.' '_'
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedyset -A INVALID_NAME_CHAR A B C D E F G H I J K L M N O P Q R S T U V W X Y Z \
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy '`' '~' '!' '@' '#' '$' '%' '^' '&' '(' ')' '+' '=' '|' "\\" '{' '[' ']' \
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy '}' ';' '"' '<' ',' '>' '?' '/' ' '
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedyset -A ALL_CHAR ${VALID_NAME_CHAR[*]} ${INVALID_NAME_CHAR[*]}
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy#
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy# Firstly, set the property value to dataset. Then checking if the property
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy# value is equal with the expected value, according to the expected result.
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy#
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy# $1 property value
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy# $2 property name
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy# $3 dataset
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy# $4 expected result
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy#
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedyfunction set_n_check_prop
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy{
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy typeset expect_value=$1
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy typeset prop=$2
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy typeset dataset=$3
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy typeset expect_result=${4:-true}
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy typeset old_value=""
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy typeset cur_value=""
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy [[ -n $prop ]] && old_value=$(get_prop $prop $dataset)
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy if [[ $expect_result == true ]]; then
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy [[ -z $prop || -z $dataset ]] && \
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy log_fail "property or dataset isn't defined."
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy
1d32ba663e202c24a5a1f2e5aef83fffb447cb7fJohn Wren Kennedy log_must zfs set $prop=$expect_value $dataset
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy if [[ $expect_value == "gzip-6" ]]; then
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy expect_value="gzip"
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy fi
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy [[ -n $prop ]] && cur_value=$(get_prop $prop $dataset)
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy case $prop in
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy reservation|reserv|quota )
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy if [[ $expect_value == "none" ]]; then
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy [[ $cur_value != "0" ]] && \
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy log_fail "The '$dataset' '$prop' value \
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy '$cur_value' is not expected."
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy elif [[ $cur_value != $expect_value ]]; then
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy log_fail "The '$dataset' '$prop' value '$cur_value' \
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy does not equal the expected value '$expect_value'."
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy fi
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy ;;
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy * )
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy if [[ $cur_value != $expect_value ]]; then
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy log_fail "The '$dataset' '$prop' value '$cur_value' \
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy does not equal the expected value '$expect_value'."
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy fi
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy ;;
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy esac
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy else
1d32ba663e202c24a5a1f2e5aef83fffb447cb7fJohn Wren Kennedy log_mustnot zfs set $prop=$expect_value $dataset
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy [[ -n $prop ]] && cur_value=$(get_prop $prop $dataset)
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy if [[ "$expect_value" != "" && "$cur_value" != "$old_value" ]];
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy then
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy log_fail "The '$dataset' '$prop' value '$cur_value' \
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy should equal with '$old_value'."
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy fi
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy fi
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy}
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy#
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy# Cleanup all the user properties of the pool and the dataset reside it.
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy#
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy# $1 pool name
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy#
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedyfunction cleanup_user_prop
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy{
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy typeset pool=$1
1d32ba663e202c24a5a1f2e5aef83fffb447cb7fJohn Wren Kennedy typeset dtst=$(zfs list -H -r -o name -t filesystem,volume $pool)
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy typeset user_prop
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy for dt in $dtst; do
1d32ba663e202c24a5a1f2e5aef83fffb447cb7fJohn Wren Kennedy user_prop=$(zfs get -H -o property all $dtst | grep ":")
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy typeset prop
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy for prop in $user_prop; do
1d32ba663e202c24a5a1f2e5aef83fffb447cb7fJohn Wren Kennedy zfs inherit $prop $dt
1d32ba663e202c24a5a1f2e5aef83fffb447cb7fJohn Wren Kennedy (($? != 0)) && log_must zfs inherit $prop $dt
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy done
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy done
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy}
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy#
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy# Random select charactor from the specified charactor set and combine into a
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy# random string
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy#
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy# $1 character set name
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy# $2 String length
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy#
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedyfunction random_string
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy{
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy typeset char_set=${1:-VALID_NAME_CHAR}
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy typeset -i len=${2:-5}
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy eval typeset -i count=\${#$char_set[@]}
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy
52244c0958bdf281ca42932b449f644b4decfdc2John Wren Kennedy # No consumers want an empty string.
52244c0958bdf281ca42932b449f644b4decfdc2John Wren Kennedy ((len == 0)) && len=3
52244c0958bdf281ca42932b449f644b4decfdc2John Wren Kennedy
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy typeset str
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy typeset -i i=0
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy while ((i < len)); do
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy typeset -i ind
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy ((ind = RANDOM % count))
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy eval str=\${str}\${$char_set[\$ind]}
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy ((i += 1))
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy done
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy
1d32ba663e202c24a5a1f2e5aef83fffb447cb7fJohn Wren Kennedy echo "$str"
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy}
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy#
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy# Get vaild user defined property name
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy#
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy# $1 user defined property name length
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy#
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedyfunction valid_user_property
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy{
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy typeset -i sumlen=${1:-10}
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy ((sumlen < 2 )) && sumlen=2
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy typeset -i len
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy ((len = RANDOM % sumlen))
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy typeset part1 part2
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy while true; do
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy part1="$(random_string VALID_NAME_CHAR $len)"
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy if [[ "$part1" == "-"* ]]; then
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy continue
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy fi
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy break
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy done
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy ((len = sumlen - (len + 1)))
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy while true; do
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy part2="$(random_string VALID_NAME_CHAR $len)"
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy if [[ -z $part1 && -z $part2 ]]; then
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy continue
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy fi
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy break
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy done
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy
1d32ba663e202c24a5a1f2e5aef83fffb447cb7fJohn Wren Kennedy echo "${part1}:${part2}"
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy}
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy#
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy# Get invaild user defined property name
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy#
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy# $1 user defined property name length
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy#
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedyfunction invalid_user_property
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy{
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy typeset -i sumlen=${1:-10}
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy ((sumlen == 0)) && sumlen=1
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy typeset -i len
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy ((len = RANDOM % sumlen))
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy typeset part1 part2
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy while true; do
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy part1="$(random_string VALID_NAME_CHAR $len)"
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy ((len = sumlen - len))
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy part2="$(random_string INVALID_NAME_CHAR $len)"
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy # Avoid $part1 is *:* and $part2 is "=*"
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy if [[ "$part1" == *":"* && "$part2" == "="* ]]; then
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy continue
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy fi
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy break
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy done
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy
1d32ba663e202c24a5a1f2e5aef83fffb447cb7fJohn Wren Kennedy echo "${part1}${part2}"
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy}
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy#
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy# Get user property value
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy#
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy# $1 user defined property name length
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy#
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedyfunction user_property_value
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy{
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy typeset -i len=${1:-100}
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy typeset value=$(random_string ALL_CHAR $len)
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy
1d32ba663e202c24a5a1f2e5aef83fffb447cb7fJohn Wren Kennedy echo "$value"
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy}
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy#
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy# Check if the user property is identical to the expected value.
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy#
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy# $1 dataset
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy# $2 user property
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy# $3 expected value
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy#
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedyfunction check_user_prop
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy{
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy typeset dtst=$1
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy typeset user_prop="$2"
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy typeset expect_value="$3"
1d32ba663e202c24a5a1f2e5aef83fffb447cb7fJohn Wren Kennedy typeset value=$(zfs get -p -H -o value "$user_prop" $dtst 2>&1)
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy if [[ "$expect_value" == "$value" ]]; then
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy return 0
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy else
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy return 1
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy fi
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy}
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy#
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy# Get source of the dataset
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy#
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedyfunction get_source
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy{
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy typeset prop=$1
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy typeset dataset=$2
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy typeset source
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy
1d32ba663e202c24a5a1f2e5aef83fffb447cb7fJohn Wren Kennedy source=$(zfs get -H -o source $prop $dataset)
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy if (($? != 0)); then
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy log_fail "Unable to get $prop source for dataset $dataset"
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy fi
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy
1d32ba663e202c24a5a1f2e5aef83fffb447cb7fJohn Wren Kennedy echo "$source"
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy}