1*dfc11533SChris Williamson#!/bin/ksh -p 2*dfc11533SChris Williamson# 3*dfc11533SChris Williamson# This file and its contents are supplied under the terms of the 4*dfc11533SChris Williamson# Common Development and Distribution License ("CDDL"), version 1.0. 5*dfc11533SChris Williamson# You may only use this file in accordance with the terms of version 6*dfc11533SChris Williamson# 1.0 of the CDDL. 7*dfc11533SChris Williamson# 8*dfc11533SChris Williamson# A full copy of the text of the CDDL should have accompanied this 9*dfc11533SChris Williamson# source. A copy of the CDDL is also available via the Internet at 10*dfc11533SChris Williamson# http://www.illumos.org/license/CDDL. 11*dfc11533SChris Williamson# 12*dfc11533SChris Williamson 13*dfc11533SChris Williamson# 14*dfc11533SChris Williamson# Copyright (c) 2016 by Delphix. All rights reserved. 15*dfc11533SChris Williamson# 16*dfc11533SChris Williamson 17*dfc11533SChris Williamson. $STF_SUITE/tests/functional/channel_program/channel_common.kshlib 18*dfc11533SChris Williamson 19*dfc11533SChris Williamson# 20*dfc11533SChris Williamson# DESCRIPTION: 21*dfc11533SChris Williamson# Listing zfs children should work correctly. 22*dfc11533SChris Williamson# 23*dfc11533SChris Williamson 24*dfc11533SChris Williamsonverify_runnable "global" 25*dfc11533SChris Williamson 26*dfc11533SChris Williamsonlog_assert "Listing zfs children should work correctly." 27*dfc11533SChris Williamson 28*dfc11533SChris WilliamsonTESTCHILD=$TESTPOOL/$TESTFS/testchild 29*dfc11533SChris WilliamsonTESTCHILD1=$TESTCHILD-1 30*dfc11533SChris WilliamsonTESTCHILD2=$TESTCHILD-2 31*dfc11533SChris WilliamsonTESTCHILD3=$TESTCHILD-3 32*dfc11533SChris Williamson 33*dfc11533SChris Williamsonfunction cleanup 34*dfc11533SChris Williamson{ 35*dfc11533SChris Williamson datasetexists $TESTCHILD && log_must zfs destroy $TESTCHILD 36*dfc11533SChris Williamson datasetexists $TESTCHILD1 && log_must zfs destroy $TESTCHILD1 37*dfc11533SChris Williamson datasetexists $TESTCHILD2 && log_must zfs destroy $TESTCHILD2 38*dfc11533SChris Williamson datasetexists $TESTCHILD3 && log_must zfs destroy $TESTCHILD3 39*dfc11533SChris Williamson} 40*dfc11533SChris Williamson 41*dfc11533SChris Williamsonlog_onexit cleanup 42*dfc11533SChris Williamson 43*dfc11533SChris Williamson# 0 children handled correctly 44*dfc11533SChris Williamsonlog_must_program $TESTPOOL - <<-EOF 45*dfc11533SChris Williamson n = 0 46*dfc11533SChris Williamson for s in zfs.list.children("$TESTPOOL/$TESTFS") do 47*dfc11533SChris Williamson n = n + 1 48*dfc11533SChris Williamson end 49*dfc11533SChris Williamson assert(n == 0) 50*dfc11533SChris Williamson return 0 51*dfc11533SChris WilliamsonEOF 52*dfc11533SChris Williamson 53*dfc11533SChris Williamsonlog_must_program $TESTPOOL - <<-EOF 54*dfc11533SChris Williamson n = 0 55*dfc11533SChris Williamson for s in zfs.list.children("$TESTPOOL") do 56*dfc11533SChris Williamson assert(s == "$TESTPOOL/$TESTFS") 57*dfc11533SChris Williamson n = n + 1 58*dfc11533SChris Williamson end 59*dfc11533SChris Williamson assert(n == 1) 60*dfc11533SChris Williamson return 0 61*dfc11533SChris WilliamsonEOF 62*dfc11533SChris Williamson 63*dfc11533SChris Williamson# Create a child fs 64*dfc11533SChris Williamsonlog_must zfs create $TESTCHILD 65*dfc11533SChris Williamson 66*dfc11533SChris Williamsonlog_must_program $TESTPOOL - <<-EOF 67*dfc11533SChris Williamson n = 0 68*dfc11533SChris Williamson for s in zfs.list.children("$TESTPOOL/$TESTFS") do 69*dfc11533SChris Williamson assert(s == "$TESTCHILD") 70*dfc11533SChris Williamson n = n + 1 71*dfc11533SChris Williamson end 72*dfc11533SChris Williamson assert(n == 1) 73*dfc11533SChris Williamson return 0 74*dfc11533SChris WilliamsonEOF 75*dfc11533SChris Williamson 76*dfc11533SChris Williamsonlog_must zfs create $TESTCHILD1 77*dfc11533SChris Williamsonlog_must zfs create $TESTCHILD2 78*dfc11533SChris Williamsonlog_must zfs create $TESTCHILD3 79*dfc11533SChris Williamson 80*dfc11533SChris Williamson# All children appear exactly once 81*dfc11533SChris Williamsonlog_must_program $TESTPOOL - <<-EOF 82*dfc11533SChris Williamson a = {} 83*dfc11533SChris Williamson a["$TESTCHILD"] = false 84*dfc11533SChris Williamson a["$TESTCHILD1"] = false 85*dfc11533SChris Williamson a["$TESTCHILD2"] = false 86*dfc11533SChris Williamson a["$TESTCHILD3"] = false 87*dfc11533SChris Williamson n = 0 88*dfc11533SChris Williamson for s in zfs.list.children("$TESTPOOL/$TESTFS") do 89*dfc11533SChris Williamson assert(not a[s]) 90*dfc11533SChris Williamson a[s] = true 91*dfc11533SChris Williamson n = n + 1 92*dfc11533SChris Williamson end 93*dfc11533SChris Williamson assert(n == 4) 94*dfc11533SChris Williamson assert(a["$TESTCHILD"] and 95*dfc11533SChris Williamson a["$TESTCHILD1"] and 96*dfc11533SChris Williamson a["$TESTCHILD2"] and 97*dfc11533SChris Williamson a["$TESTCHILD3"]) 98*dfc11533SChris Williamson return 0 99*dfc11533SChris WilliamsonEOF 100*dfc11533SChris Williamson 101*dfc11533SChris Williamson# Bad input 102*dfc11533SChris Williamsonlog_mustnot_program $TESTPOOL - <<-EOF 103*dfc11533SChris Williamson zfs.list.children("$TESTPOOL/not-a-fs") 104*dfc11533SChris Williamson return 0 105*dfc11533SChris WilliamsonEOF 106*dfc11533SChris Williamson 107*dfc11533SChris Williamsonlog_mustnot_program $TESTPOOL - <<-EOF 108*dfc11533SChris Williamson zfs.list.children("not-a-pool/$TESTFS") 109*dfc11533SChris Williamson return 0 110*dfc11533SChris WilliamsonEOF 111*dfc11533SChris Williamson 112*dfc11533SChris Williamson# Can't look in a different pool than the one specified on command line 113*dfc11533SChris Williamsonlog_mustnot_program $TESTPOOL - <<-EOF 114*dfc11533SChris Williamson zfs.list.children("rpool") 115*dfc11533SChris Williamson return 0 116*dfc11533SChris WilliamsonEOF 117*dfc11533SChris Williamson 118*dfc11533SChris Williamsoncreate_snapshot 119*dfc11533SChris Williamsonlog_mustnot_program $TESTPOOL - <<-EOF 120*dfc11533SChris Williamson zfs.list.children("$TESTPOOL/$TESTFS@$TESTSNAP") 121*dfc11533SChris Williamson return 0 122*dfc11533SChris WilliamsonEOF 123*dfc11533SChris Williamsondestroy_snapshot 124*dfc11533SChris Williamson 125*dfc11533SChris Williamsonlog_pass "Listing zfs children should work correctly." 126