88 lines
3.2 KiB
Bash
Executable File
88 lines
3.2 KiB
Bash
Executable File
#!/bin/ksh
|
|
|
|
#
|
|
# 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
|
|
# http://www.illumos.org/license/CDDL.
|
|
#
|
|
|
|
#
|
|
# Copyright (c) 2018 by Delphix. All rights reserved.
|
|
#
|
|
|
|
. $STF_SUITE/include/libtest.shlib
|
|
. $STF_SUITE/tests/functional/redacted_send/redacted.kshlib
|
|
|
|
#
|
|
# Description:
|
|
# Test that receiving sends from redaction bookmarks and redacted datasets
|
|
# works correctly in certain edge cases.
|
|
# 1. Send A(B,C,D) to pool2.
|
|
# 2. Verify send from A(B, C, D) can be received onto it.
|
|
# 3. Verify send from A(B, C) can be received onto it.
|
|
# 4. Verify send from A() can be received onto it.
|
|
# 5. Verify send from A(E) cannot be received onto it.
|
|
# 6. Verify send from redaction bookmark for A(B, C) can be received onto it.
|
|
# 7. Verify send from redaction bookmark for A() can be received onto it.
|
|
# 8. Verify send from redaction bookmark for A(E) cannot be received onto it.
|
|
#
|
|
|
|
typeset ds_name="origin"
|
|
typeset sendfs="$POOL/$ds_name"
|
|
typeset tmpdir="$(get_prop mountpoint $POOL)/tmp"
|
|
typeset stream=$(mktemp $tmpdir/stream.XXXX)
|
|
setup_dataset $ds_name '' setup_incrementals
|
|
typeset dsA=$sendfs@snap0
|
|
typeset dsB=$POOL/hole@snap
|
|
typeset dsC=$POOL/rm@snap
|
|
typeset dsD=$POOL/write@snap
|
|
typeset dsE=$POOL/stride3@snap
|
|
typeset dsF=$POOL/stride5@snap
|
|
typeset targ=$POOL2/targfs@snap
|
|
|
|
log_onexit redacted_cleanup $sendfs $POOL2/rBCD $POOL2/targfs \
|
|
$POOL2/rBC $POOL2/rE
|
|
|
|
# Set up all the filesystems and clones.
|
|
log_must zfs redact $dsA BCD $dsB $dsC $dsD
|
|
log_must eval "zfs send --redact BCD $dsA >$stream"
|
|
log_must eval "zfs receive $POOL2/rBCD <$stream"
|
|
log_must eval "zfs receive $targ <$stream"
|
|
|
|
log_must zfs redact $dsA BC $dsB $dsC
|
|
log_must eval "zfs send --redact BC $dsA >$stream"
|
|
log_must eval "zfs receive $POOL2/rBC <$stream"
|
|
|
|
log_must zfs redact $dsA E $dsE
|
|
log_must eval "zfs send --redact E $dsA >$stream"
|
|
log_must eval "zfs receive $POOL2/rE <$stream"
|
|
|
|
log_must eval "zfs send $dsF >$stream"
|
|
log_must eval "zfs receive -o origin=$POOL2/rBCD@snap0 $POOL2/BCDrF <$stream"
|
|
log_must eval "zfs receive -o origin=$POOL2/rBC@snap0 $POOL2/BCrF <$stream"
|
|
log_must eval "zfs receive -o origin=$POOL2/rE@snap0 $POOL2/ErF <$stream"
|
|
|
|
# Run tests from redacted datasets.
|
|
log_must eval "zfs send -i $POOL2/rBCD@snap0 $POOL2/BCDrF@snap >$stream"
|
|
log_must eval "zfs receive -o origin=$targ $POOL2/tdBCD <$stream"
|
|
|
|
log_must eval "zfs send -i $POOL2/rBC@snap0 $POOL2/BCrF@snap >$stream"
|
|
log_must eval "zfs receive -o origin=$targ $POOL2/tdBC <$stream"
|
|
|
|
log_must eval "zfs send -i $POOL2/rE@snap0 $POOL2/ErF@snap >$stream"
|
|
log_mustnot eval "zfs receive -o origin=$targ $POOL2/tdE <$stream"
|
|
|
|
# Run tests from redaction bookmarks.
|
|
log_must eval "zfs send -i $sendfs#BC $dsF >$stream"
|
|
log_must eval "zfs receive -o origin=$targ $POOL2/tbBC <$stream"
|
|
|
|
log_must eval "zfs send -i $sendfs#E $dsF >$stream"
|
|
log_mustnot eval "zfs receive -o origin=$targ $POOL2/tbE <$stream"
|
|
|
|
log_pass "Verify sends from redacted datasets and bookmarks work correctly."
|