1#!/usr/local/bin/ksh93 -p 2# 3# CDDL HEADER START 4# 5# The contents of this file are subject to the terms of the 6# Common Development and Distribution License (the "License"). 7# You may not use this file except in compliance with the License. 8# 9# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE 10# or http://www.opensolaris.org/os/licensing. 11# See the License for the specific language governing permissions 12# and limitations under the License. 13# 14# When distributing Covered Code, include this CDDL HEADER in each 15# file and include the License file at usr/src/OPENSOLARIS.LICENSE. 16# If applicable, add the following below this CDDL HEADER, with the 17# fields enclosed by brackets "[]" replaced with your own identifying 18# information: Portions Copyright [yyyy] [name of copyright owner] 19# 20# CDDL HEADER END 21# 22 23# 24# Copyright 2008 Sun Microsystems, Inc. All rights reserved. 25# Use is subject to license terms. 26 27. $STF_SUITE/tests/rsend/rsend.kshlib 28 29################################################################################# 30# 31# __stc_assertion_start 32# 33# ID: rsend_005_pos 34# 35# DESCRIPTION: 36# zfs send -R -I send all the incremental between fs@init with fs@final 37# 38# STRATEGY: 39# 1. Setup test model 40# 2. Send -R -I @init @final on pool 41# 3. Destroy all the snapshots which is later than @init 42# 4. Verify receive can restore all the snapshots and data 43# 5. Do the same test on filesystem and volume 44# 45# TESTABILITY: explicit 46# 47# TEST_AUTOMATION_LEVEL: automated 48# 49# CODING_STATUS: COMPLETED (2007-08-27) 50# 51# __stc_assertion_end 52# 53################################################################################ 54 55verify_runnable "both" 56 57log_assert "zfs send -R -I send all the incremental between @init with @final" 58log_onexit cleanup_pool $POOL2 59 60# 61# Duplicate POOL2 for testing 62# 63log_must eval "$ZFS send -R $POOL@final > $BACKDIR/pool-final-R" 64log_must eval "$ZFS receive -d -F $POOL2 < $BACKDIR/pool-final-R" 65 66if is_global_zone ; then 67 # 68 # Testing send -R -I from pool 69 # 70 log_must eval "$ZFS send -R -I @init $POOL2@final > " \ 71 "$BACKDIR/pool-init-final-IR" 72 list=$(getds_with_suffix $POOL2 @snapA) 73 list="$list $(getds_with_suffix $POOL2 @snapB)" 74 list="$list $(getds_with_suffix $POOL2 @snapC)" 75 list="$list $(getds_with_suffix $POOL2 @final)" 76 log_must destroy_tree $list 77 log_must eval "$ZFS receive -d -F $POOL2 < $BACKDIR/pool-init-final-IR" 78 log_must cmp_ds_cont $POOL $POOL2 79fi 80 81dstds=$(get_dst_ds $POOL $POOL2) 82# 83# Testing send -R -I from filesystem 84# 85log_must eval "$ZFS send -R -I @init $dstds/$FS@final > " \ 86 "$BACKDIR/fs-init-final-IR" 87list=$(getds_with_suffix $dstds/$FS @snapA) 88list="$list $(getds_with_suffix $dstds/$FS @snapB)" 89list="$list $(getds_with_suffix $dstds/$FS @snapC)" 90list="$list $(getds_with_suffix $dstds/$FS @final)" 91log_must destroy_tree $list 92if is_global_zone ; then 93 log_must eval "$ZFS receive -d -F $dstds < $BACKDIR/fs-init-final-IR" 94else 95 $ZFS receive -d -F $dstds < $BACKDIR/fs-init-final-IR 96fi 97log_must cmp_ds_subs $POOL $dstds 98log_must cmp_ds_cont $POOL $dstds 99 100if is_global_zone ; then 101 # 102 # Testing send -I -R for volume 103 # 104 vol=$POOL2/$FS/vol 105 log_must eval "$ZFS send -R -I @init $vol@final > " \ 106 "$BACKDIR/vol-init-final-IR" 107 log_must destroy_tree $vol@snapB $vol@snapC $vol@final 108 log_must eval "$ZFS receive -d -F $POOL2 < $BACKDIR/vol-init-final-IR" 109 log_must cmp_ds_subs $POOL $POOL2 110 log_must cmp_ds_cont $POOL $POOL2 111fi 112 113log_pass "zfs send -R -I send all the incremental between @init with @final" 114