d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy# This file and its contents are supplied under the terms of the
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy# Common Development and Distribution License ("CDDL"), version 1.0.
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy# You may only use this file in accordance with the terms of version
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy# 1.0 of the CDDL.
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy# A full copy of the text of the CDDL should have accompanied this
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy# source. A copy of the CDDL is also available via the Internet at
1d32ba663e202c24a5a1f2e5aef83fffb447cb7fJohn Wren Kennedy# Copyright (c) 2012, 2016 by Delphix. All rights reserved.
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy# Verify zfs destroy test for range of snapshots by giving a list
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy# of valid and invalid arguments.
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy# 1. Create a list of valid and invalid arguments for range snapshot
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy# 2. Set up a filesystem and a volume with multiple snapshots
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy# 3. Run zfs destroy for all the arguments and verify existence of snapshots
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy# 4. Verify the destroy for snapshots with clones and hold
1d32ba663e202c24a5a1f2e5aef83fffb447cb7fJohn Wren Kennedy log_must zfs destroy -R $TESTPOOL/$TESTFS1
1d32ba663e202c24a5a1f2e5aef83fffb447cb7fJohn Wren Kennedy log_must zfs destroy -Rf $TESTPOOL/$TESTVOL
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy datasetexists $TESTPOOL/$TESTFS1@snap$i && \
1d32ba663e202c24a5a1f2e5aef83fffb447cb7fJohn Wren Kennedy log_must zfs destroy $TESTPOOL/$TESTFS1@snap$i
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy datasetexists $TESTPOOL/$TESTVOL@snap$i && \
1d32ba663e202c24a5a1f2e5aef83fffb447cb7fJohn Wren Kennedy log_must zfs destroy $TESTPOOL/$TESTVOL@snap$i
1d32ba663e202c24a5a1f2e5aef83fffb447cb7fJohn Wren Kennedy log_must zfs snapshot $TESTPOOL/$TESTFS1@snap$i
1d32ba663e202c24a5a1f2e5aef83fffb447cb7fJohn Wren Kennedy log_must zfs snapshot $TESTPOOL/$TESTVOL@snap$i
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy typeset snap_exists=${1:-0}
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy if [[ $snap_exists == 1 ]]; then
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy log_fail "zfs destroy should not have destroyed" \
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy log_fail "zfs destroy should not have destroyed" \
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy log_fail "zfs destroy should have destroyed" \
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy log_fail "zfs destroy should have destroyed" \
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedyinvalid_args="@snap0%snap5 @snap1%snap6 @snap0%snap6 @snap5%snap1 \
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy @snap1%$TESTPOOL/$TESTFS1@snap5 @snap1%%snap5 @snap1%@snap5 \
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy @@snap1%snap5 snap1%snap5 snap1%snap3%snap5"
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedylog_assert "zfs destroy deletes ranges of snapshots"
1d32ba663e202c24a5a1f2e5aef83fffb447cb7fJohn Wren Kennedylog_must zfs create -V $VOLSIZE $TESTPOOL/$TESTVOL
1d32ba663e202c24a5a1f2e5aef83fffb447cb7fJohn Wren Kennedy log_must zfs destroy $TESTPOOL/$TESTFS1$args
1d32ba663e202c24a5a1f2e5aef83fffb447cb7fJohn Wren Kennedy log_must zfs destroy $TESTPOOL/$TESTVOL$args
1d32ba663e202c24a5a1f2e5aef83fffb447cb7fJohn Wren Kennedy log_mustnot zfs destroy $TESTPOOL/$TESTFS1$args
1d32ba663e202c24a5a1f2e5aef83fffb447cb7fJohn Wren Kennedy log_mustnot zfs destroy $TESTPOOL/$TESTVOL$args
1d32ba663e202c24a5a1f2e5aef83fffb447cb7fJohn Wren Kennedylog_must zfs destroy $TESTPOOL/$TESTFS1@%snap3
1d32ba663e202c24a5a1f2e5aef83fffb447cb7fJohn Wren Kennedylog_must zfs destroy $TESTPOOL/$TESTVOL@%snap3
1d32ba663e202c24a5a1f2e5aef83fffb447cb7fJohn Wren Kennedylog_must zfs destroy $TESTPOOL/$TESTFS1@snap2%snap4
1d32ba663e202c24a5a1f2e5aef83fffb447cb7fJohn Wren Kennedylog_must zfs destroy $TESTPOOL/$TESTVOL@snap2%snap4
1d32ba663e202c24a5a1f2e5aef83fffb447cb7fJohn Wren Kennedylog_must zfs destroy $TESTPOOL/$TESTFS1@snap1%snap5
1d32ba663e202c24a5a1f2e5aef83fffb447cb7fJohn Wren Kennedylog_must zfs destroy $TESTPOOL/$TESTVOL@snap1%snap5
1d32ba663e202c24a5a1f2e5aef83fffb447cb7fJohn Wren Kennedylog_must zfs destroy $TESTPOOL/$TESTFS1@snap3%
1d32ba663e202c24a5a1f2e5aef83fffb447cb7fJohn Wren Kennedylog_must zfs destroy $TESTPOOL/$TESTVOL@snap3%
1d32ba663e202c24a5a1f2e5aef83fffb447cb7fJohn Wren Kennedylog_must zfs destroy $TESTPOOL/$TESTFS1@snap2,snap4
1d32ba663e202c24a5a1f2e5aef83fffb447cb7fJohn Wren Kennedylog_must zfs destroy $TESTPOOL/$TESTVOL@snap2,snap4
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedylog_note "Destroy a list and range together"
1d32ba663e202c24a5a1f2e5aef83fffb447cb7fJohn Wren Kennedylog_must zfs destroy $TESTPOOL/$TESTFS1@snap1%snap3,snap5
1d32ba663e202c24a5a1f2e5aef83fffb447cb7fJohn Wren Kennedylog_must zfs destroy $TESTPOOL/$TESTVOL@snap1%snap3,snap5
1d32ba663e202c24a5a1f2e5aef83fffb447cb7fJohn Wren Kennedylog_must zfs destroy $TESTPOOL/$TESTFS1@snap1%snap3,snap5
1d32ba663e202c24a5a1f2e5aef83fffb447cb7fJohn Wren Kennedylog_must zfs destroy $TESTPOOL/$TESTVOL@snap1%snap3,snap5
1d32ba663e202c24a5a1f2e5aef83fffb447cb7fJohn Wren Kennedy log_must zfs hold keep $TESTPOOL/$TESTFS1@snap$i
1d32ba663e202c24a5a1f2e5aef83fffb447cb7fJohn Wren Kennedy log_must zfs hold keep $TESTPOOL/$TESTVOL@snap$i
1d32ba663e202c24a5a1f2e5aef83fffb447cb7fJohn Wren Kennedylog_mustnot zfs destroy $TESTPOOL/$TESTFS1@snap1%snap5
1d32ba663e202c24a5a1f2e5aef83fffb447cb7fJohn Wren Kennedylog_mustnot zfs destroy $TESTPOOL/$TESTVOL@snap1%snap5
1d32ba663e202c24a5a1f2e5aef83fffb447cb7fJohn Wren Kennedy log_must zfs release keep $TESTPOOL/$TESTFS1@snap$i
1d32ba663e202c24a5a1f2e5aef83fffb447cb7fJohn Wren Kennedy log_must zfs release keep $TESTPOOL/$TESTVOL@snap$i
1d32ba663e202c24a5a1f2e5aef83fffb447cb7fJohn Wren Kennedylog_must zfs destroy $TESTPOOL/$TESTFS1@snap1%snap5
1d32ba663e202c24a5a1f2e5aef83fffb447cb7fJohn Wren Kennedylog_must zfs destroy $TESTPOOL/$TESTVOL@snap1%snap5
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedylog_note "Range destroy for snapshots having clones"
1d32ba663e202c24a5a1f2e5aef83fffb447cb7fJohn Wren Kennedy log_must zfs clone $TESTPOOL/$TESTFS1@snap$i $TESTPOOL/$TESTFS1/clone$i
1d32ba663e202c24a5a1f2e5aef83fffb447cb7fJohn Wren Kennedylog_must zfs destroy -R $TESTPOOL/$TESTFS1@snap1%snap5
1d32ba663e202c24a5a1f2e5aef83fffb447cb7fJohn Wren Kennedylog_must zfs destroy $TESTPOOL/$TESTVOL@snap1%snap5
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedylog_pass "'zfs destroy' successfully destroys ranges of snapshots"