1d583b39bSJohn Wren Kennedy#!/bin/ksh -p 2d583b39bSJohn Wren Kennedy# 3d583b39bSJohn Wren Kennedy# CDDL HEADER START 4d583b39bSJohn Wren Kennedy# 5d583b39bSJohn Wren Kennedy# The contents of this file are subject to the terms of the 6d583b39bSJohn Wren Kennedy# Common Development and Distribution License (the "License"). 7d583b39bSJohn Wren Kennedy# You may not use this file except in compliance with the License. 8d583b39bSJohn Wren Kennedy# 9d583b39bSJohn Wren Kennedy# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE 10d583b39bSJohn Wren Kennedy# or http://www.opensolaris.org/os/licensing. 11d583b39bSJohn Wren Kennedy# See the License for the specific language governing permissions 12d583b39bSJohn Wren Kennedy# and limitations under the License. 13d583b39bSJohn Wren Kennedy# 14d583b39bSJohn Wren Kennedy# When distributing Covered Code, include this CDDL HEADER in each 15d583b39bSJohn Wren Kennedy# file and include the License file at usr/src/OPENSOLARIS.LICENSE. 16d583b39bSJohn Wren Kennedy# If applicable, add the following below this CDDL HEADER, with the 17d583b39bSJohn Wren Kennedy# fields enclosed by brackets "[]" replaced with your own identifying 18d583b39bSJohn Wren Kennedy# information: Portions Copyright [yyyy] [name of copyright owner] 19d583b39bSJohn Wren Kennedy# 20d583b39bSJohn Wren Kennedy# CDDL HEADER END 21d583b39bSJohn Wren Kennedy# 22d583b39bSJohn Wren Kennedy 23d583b39bSJohn Wren Kennedy# 24d583b39bSJohn Wren Kennedy# Copyright 2009 Sun Microsystems, Inc. All rights reserved. 25d583b39bSJohn Wren Kennedy# Use is subject to license terms. 26d583b39bSJohn Wren Kennedy# 27d583b39bSJohn Wren Kennedy 281d32ba66SJohn Wren Kennedy# 291d32ba66SJohn Wren Kennedy# Copyright (c) 2016 by Delphix. All rights reserved. 30*99ea293eSMatt Fiddaman# Copyright (c) 2021 Matt Fiddaman 311d32ba66SJohn Wren Kennedy# 321d32ba66SJohn Wren Kennedy 33d583b39bSJohn Wren Kennedy. $STF_SUITE/tests/functional/cli_root/zfs_get/zfs_get_common.kshlib 34d583b39bSJohn Wren Kennedy. $STF_SUITE/tests/functional/cli_root/zfs_get/zfs_get_list_d.kshlib 35d583b39bSJohn Wren Kennedy 36d583b39bSJohn Wren Kennedy# 37d583b39bSJohn Wren Kennedy# DESCRIPTION: 38d583b39bSJohn Wren Kennedy# Setting the valid option and properties, 'zfs get' should return the 39d583b39bSJohn Wren Kennedy# correct property value. 40d583b39bSJohn Wren Kennedy# 41d583b39bSJohn Wren Kennedy# STRATEGY: 42edb901aaSMarcel Telka# 1. Create pool, filesystem, volume, snapshot, and bookmark. 43d583b39bSJohn Wren Kennedy# 2. Setting valid parameter, 'zfs get' should succeed. 44d583b39bSJohn Wren Kennedy# 3. Compare the output property name with the original input property. 45d583b39bSJohn Wren Kennedy# 46d583b39bSJohn Wren Kennedy 47d583b39bSJohn Wren Kennedyverify_runnable "both" 48d583b39bSJohn Wren Kennedy 49d583b39bSJohn Wren Kennedytypeset options=("" "-p" "-r" "-H") 50d583b39bSJohn Wren Kennedy 51d583b39bSJohn Wren Kennedytypeset -i i=${#options[*]} 52d583b39bSJohn Wren Kennedytypeset -i j=0 53d583b39bSJohn Wren Kennedywhile ((j<${#depth_options[*]})); 54d583b39bSJohn Wren Kennedydo 55d583b39bSJohn Wren Kennedy options[$i]=-"${depth_options[$j]}" 56d583b39bSJohn Wren Kennedy ((j+=1)) 57d583b39bSJohn Wren Kennedy ((i+=1)) 58d583b39bSJohn Wren Kennedydone 59d583b39bSJohn Wren Kennedy 60d583b39bSJohn Wren Kennedytypeset zfs_props=("type" used available creation volsize referenced \ 61d583b39bSJohn Wren Kennedy compressratio mounted origin recordsize quota reservation mountpoint \ 62d583b39bSJohn Wren Kennedy sharenfs checksum compression atime devices exec readonly setuid zoned \ 63d583b39bSJohn Wren Kennedy snapdir aclmode aclinherit canmount primarycache secondarycache \ 64d583b39bSJohn Wren Kennedy usedbychildren usedbydataset usedbyrefreservation usedbysnapshots \ 65*99ea293eSMatt Fiddaman version clones) 66d583b39bSJohn Wren Kennedy 67d583b39bSJohn Wren Kennedytypeset userquota_props=(userquota@root groupquota@root userused@root \ 68d583b39bSJohn Wren Kennedy groupused@root) 69d583b39bSJohn Wren Kennedytypeset all_props=("${zfs_props[@]}" "${userquota_props[@]}") 70d583b39bSJohn Wren Kennedytypeset dataset=($TESTPOOL/$TESTCTR $TESTPOOL/$TESTFS $TESTPOOL/$TESTVOL \ 71*99ea293eSMatt Fiddaman $TESTPOOL/$TESTFS@$TESTSNAP $TESTPOOL/$TESTVOL@$TESTSNAP 72*99ea293eSMatt Fiddaman $TESTPOOL/$TESTFS@$TESTSNAP1 $TESTPOOL/$TESTCLONE) 73d583b39bSJohn Wren Kennedy 74edb901aaSMarcel Telkatypeset bookmark_props=(creation) 75edb901aaSMarcel Telkatypeset bookmark=($TESTPOOL/$TESTFS#$TESTBKMARK $TESTPOOL/$TESTVOL#$TESTBKMARK) 76edb901aaSMarcel Telka 77d583b39bSJohn Wren Kennedy# 78d583b39bSJohn Wren Kennedy# According to dataset and option, checking if 'zfs get' return correct 79d583b39bSJohn Wren Kennedy# property information. 80d583b39bSJohn Wren Kennedy# 81d583b39bSJohn Wren Kennedy# $1 dataset 82d583b39bSJohn Wren Kennedy# $2 properties which are expected to output into $TESTDIR/$TESTFILE0 83d583b39bSJohn Wren Kennedy# $3 option 84d583b39bSJohn Wren Kennedy# 85d583b39bSJohn Wren Kennedyfunction check_return_value 86d583b39bSJohn Wren Kennedy{ 87d583b39bSJohn Wren Kennedy typeset dst=$1 88d583b39bSJohn Wren Kennedy typeset props=$2 89d583b39bSJohn Wren Kennedy typeset opt=$3 90d583b39bSJohn Wren Kennedy typeset -i found=0 91d583b39bSJohn Wren Kennedy typeset p 92d583b39bSJohn Wren Kennedy 93d583b39bSJohn Wren Kennedy for p in $props; do 94d583b39bSJohn Wren Kennedy found=0 95d583b39bSJohn Wren Kennedy 96d583b39bSJohn Wren Kennedy while read line; do 97d583b39bSJohn Wren Kennedy typeset item 981d32ba66SJohn Wren Kennedy item=$(echo $line | awk '{print $2}' 2>&1) 99d583b39bSJohn Wren Kennedy 100d583b39bSJohn Wren Kennedy if [[ $item == $p ]]; then 101d583b39bSJohn Wren Kennedy ((found += 1)) 102*99ea293eSMatt Fiddaman cols=$(echo $line | awk '{print NF}') 103d583b39bSJohn Wren Kennedy break 104d583b39bSJohn Wren Kennedy fi 105d583b39bSJohn Wren Kennedy done < $TESTDIR/$TESTFILE0 106d583b39bSJohn Wren Kennedy 107d583b39bSJohn Wren Kennedy if ((found == 0)); then 108d583b39bSJohn Wren Kennedy log_fail "'zfs get $opt $props $dst' return " \ 109d583b39bSJohn Wren Kennedy "error message.'$p' haven't been found." 110*99ea293eSMatt Fiddaman elif [[ "$opt" == "-p" ]] && ((cols != 4)); then 111*99ea293eSMatt Fiddaman log_fail "'zfs get $opt $props $dst' returned " \ 112*99ea293eSMatt Fiddaman "$cols columns instead of 4." 113d583b39bSJohn Wren Kennedy fi 114d583b39bSJohn Wren Kennedy done 115d583b39bSJohn Wren Kennedy 1161d32ba66SJohn Wren Kennedy log_note "SUCCESS: 'zfs get $opt $prop $dst'." 117d583b39bSJohn Wren Kennedy} 118d583b39bSJohn Wren Kennedy 119d583b39bSJohn Wren Kennedylog_assert "Setting the valid options and properties 'zfs get' should return " \ 120d583b39bSJohn Wren Kennedy "the correct property value." 121d583b39bSJohn Wren Kennedylog_onexit cleanup 122d583b39bSJohn Wren Kennedy 123d583b39bSJohn Wren Kennedy# Create filesystem and volume's snapshot 124d583b39bSJohn Wren Kennedycreate_snapshot $TESTPOOL/$TESTFS $TESTSNAP 125d583b39bSJohn Wren Kennedycreate_snapshot $TESTPOOL/$TESTVOL $TESTSNAP 126d583b39bSJohn Wren Kennedy 127*99ea293eSMatt Fiddaman# Create second snapshot and clone it 128*99ea293eSMatt Fiddamancreate_snapshot $TESTPOOL/$TESTFS $TESTSNAP1 129*99ea293eSMatt Fiddamancreate_clone $TESTPOOL/$TESTFS@$TESTSNAP1 $TESTPOOL/$TESTCLONE 130*99ea293eSMatt Fiddaman 131edb901aaSMarcel Telka# Create filesystem and volume's bookmark 132edb901aaSMarcel Telkacreate_bookmark $TESTPOOL/$TESTFS $TESTSNAP $TESTBKMARK 133edb901aaSMarcel Telkacreate_bookmark $TESTPOOL/$TESTVOL $TESTSNAP $TESTBKMARK 134edb901aaSMarcel Telka 135d583b39bSJohn Wren Kennedytypeset -i i=0 136d583b39bSJohn Wren Kennedywhile ((i < ${#dataset[@]})); do 137d583b39bSJohn Wren Kennedy for opt in "${options[@]}"; do 138d583b39bSJohn Wren Kennedy for prop in ${all_props[@]}; do 1391d32ba66SJohn Wren Kennedy eval "zfs get $opt $prop ${dataset[i]} > \ 140d583b39bSJohn Wren Kennedy $TESTDIR/$TESTFILE0" 141d583b39bSJohn Wren Kennedy ret=$? 142d583b39bSJohn Wren Kennedy if [[ $ret != 0 ]]; then 1431d32ba66SJohn Wren Kennedy log_fail "zfs get returned: $ret" 144d583b39bSJohn Wren Kennedy fi 145d583b39bSJohn Wren Kennedy check_return_value ${dataset[i]} "$prop" "$opt" 146d583b39bSJohn Wren Kennedy done 147d583b39bSJohn Wren Kennedy done 148d583b39bSJohn Wren Kennedy ((i += 1)) 149d583b39bSJohn Wren Kennedydone 150d583b39bSJohn Wren Kennedy 151edb901aaSMarcel Telkai=0 152edb901aaSMarcel Telkawhile ((i < ${#bookmark[@]})); do 153edb901aaSMarcel Telka for opt in "${options[@]}"; do 154edb901aaSMarcel Telka for prop in ${bookmark_props[@]}; do 155f5fb56deSJohn Wren Kennedy eval "zfs get $opt $prop ${bookmark[i]} > \ 156edb901aaSMarcel Telka $TESTDIR/$TESTFILE0" 157edb901aaSMarcel Telka ret=$? 158edb901aaSMarcel Telka if [[ $ret != 0 ]]; then 159f5fb56deSJohn Wren Kennedy log_fail "zfs get returned: $ret" 160edb901aaSMarcel Telka fi 161edb901aaSMarcel Telka check_return_value ${bookmark[i]} "$prop" "$opt" 162edb901aaSMarcel Telka done 163edb901aaSMarcel Telka done 164edb901aaSMarcel Telka ((i += 1)) 165edb901aaSMarcel Telkadone 166edb901aaSMarcel Telka 167d583b39bSJohn Wren Kennedylog_pass "Setting the valid options to dataset, it should succeed and return " \ 168d583b39bSJohn Wren Kennedy "valid value. 'zfs get' pass." 169