#
# This file and its contents are supplied under the terms of the
# Common Development and Distribution License ("CDDL"), version 1.0.
# You may only use this file in accordance with the terms of version
# 1.0 of the CDDL.
#
# A full copy of the text of the CDDL should have accompanied this
# source. A copy of the CDDL is also available via the Internet at
#
#
# Copyright (c) 2012, 2016 by Delphix. All rights reserved.
#
# DESCRIPTION
# Verify zfs destroy test for range of snapshots by giving a list
# of valid and invalid arguments.
# STRATEGY
# 1. Create a list of valid and invalid arguments for range snapshot
# destroy.
# 2. Set up a filesystem and a volume with multiple snapshots
# 3. Run zfs destroy for all the arguments and verify existence of snapshots
# 4. Verify the destroy for snapshots with clones and hold
function cleanup
{
}
function setup_snapshots
{
datasetexists $TESTPOOL/$TESTFS1@snap$i && \
datasetexists $TESTPOOL/$TESTVOL@snap$i && \
done
}
function verify_snapshots
{
typeset snap_exists=${1:-0}
if [[ $snap_exists == 1 ]]; then
snapexists $TESTPOOL/$TESTFS1@snap$i || \
snapexists $TESTPOOL/$TESTVOL@snap$i || \
done
else
snapexists $TESTPOOL/$TESTFS1@snap$i && \
snapexists $TESTPOOL/$TESTVOL@snap$i && \
done
fi
}
invalid_args="@snap0%snap5 @snap1%snap6 @snap0%snap6 @snap5%snap1 \
@@snap1%snap5 snap1%snap5 snap1%snap3%snap5"
valid_args="@snap1%snap5 @%"
log_assert "zfs destroy deletes ranges of snapshots"
snaps="1 2 3 4 5"
log_note "Verify the valid arguments"
range="1 2 3 4 5"
done
log_note "Verify invalid arguements"
done
log_note "Destroy the begining range"
range="1 2 3"
range="4 5"
log_note "Destroy the mid range"
range="2 3 4"
range="1 5"
log_note "Destroy the end range"
range="1 2"
range="3 4 5"
log_note "Destroy a simple list"
range="2 4"
range="1 3 5"
log_note "Destroy a list and range together"
range="1 2 3 5"
range=4
snaps="1 2 3 5 6 7 8 9 10"
log_note "Destroy a list of ranges"
range="1 2 3 5"
range=4
snaps="1 2 3 4 5"
log_note "Snapshot destory with hold"
range="1 2 3 4 5"
done
done
log_note "Range destroy for snapshots having clones"
done
log_pass "'zfs destroy' successfully destroys ranges of snapshots"