]> git.proxmox.com Git - mirror_zfs-debian.git/blame - tests/zfs-tests/tests/functional/cachefile/cachefile_004_pos.ksh
New upstream version 0.7.9
[mirror_zfs-debian.git] / tests / zfs-tests / tests / functional / cachefile / cachefile_004_pos.ksh
CommitLineData
cae5b340
AX
1#!/bin/ksh -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 2009 Sun Microsystems, Inc. All rights reserved.
25# Use is subject to license terms.
26#
27
28#
29# Copyright (c) 2013, 2016 by Delphix. All rights reserved.
30#
31
32. $STF_SUITE/include/libtest.shlib
33. $STF_SUITE/tests/functional/cachefile/cachefile.cfg
34. $STF_SUITE/tests/functional/cachefile/cachefile.kshlib
35
36#
37# DESCRIPTION:
38# Verify set, export and destroy when cachefile is set on pool.
39#
40# STRATEGY:
41# 1. Create two pools with one same cahcefile1.
42# 2. Set cachefile of the two pools to another same cachefile2.
43# 3. Verify cachefile1 not exist.
44# 4. Export the two pools.
45# 5. Verify cachefile2 not exist.
46# 6. Import the two pools and set cachefile to cachefile2.
47# 7. Destroy the two pools.
48# 8. Verify cachefile2 not exist.
49#
50
51verify_runnable "global"
52
53function cleanup
54{
55 poolexists $TESTPOOL1 && destroy_pool $TESTPOOL1
56 poolexists $TESTPOOL2 && destroy_pool $TESTPOOL2
57
58 mntpnt=$(get_prop mountpoint $TESTPOOL)
59 typeset -i i=0
60 while ((i < 2)); do
61 if [[ -e $mntpnt/vdev$i ]]; then
62 log_must rm -f $mntpnt/vdev$i
63 fi
64 ((i += 1))
65 done
66
67 if poolexists $TESTPOOL ; then
68 destroy_pool $TESTPOOL
69 fi
70
71 for file in $CPATH1 $CPATH2 ; do
72 if [[ -f $file ]] ; then
73 log_must rm $file
74 fi
75 done
76}
77
78
79log_assert "Verify set, export and destroy when cachefile is set on pool."
80log_onexit cleanup
81
82log_must zpool create $TESTPOOL $DISKS
83
84mntpnt=$(get_prop mountpoint $TESTPOOL)
85typeset -i i=0
86while ((i < 2)); do
87 log_must mkfile $MINVDEVSIZE $mntpnt/vdev$i
88 eval vdev$i=$mntpnt/vdev$i
89 ((i += 1))
90done
91
92log_must zpool create -o cachefile=$CPATH1 $TESTPOOL1 $vdev0
93log_must pool_in_cache $TESTPOOL1 $CPATH1
94log_must zpool create -o cachefile=$CPATH1 $TESTPOOL2 $vdev1
95log_must pool_in_cache $TESTPOOL2 $CPATH1
96
97log_must zpool set cachefile=$CPATH2 $TESTPOOL1
98log_must pool_in_cache $TESTPOOL1 $CPATH2
99log_must zpool set cachefile=$CPATH2 $TESTPOOL2
100log_must pool_in_cache $TESTPOOL2 $CPATH2
42f7b73b 101if [[ -s $CPATH1 ]]; then
cae5b340
AX
102 log_fail "Verify set when cachefile is set on pool."
103fi
104
105log_must zpool export $TESTPOOL1
106log_must zpool export $TESTPOOL2
42f7b73b 107if [[ -s $CPATH2 ]]; then
cae5b340
AX
108 log_fail "Verify export when cachefile is set on pool."
109fi
110
111log_must zpool import -d $mntpnt $TESTPOOL1
112log_must zpool set cachefile=$CPATH2 $TESTPOOL1
113log_must pool_in_cache $TESTPOOL1 $CPATH2
114log_must zpool import -d $mntpnt $TESTPOOL2
115log_must zpool set cachefile=$CPATH2 $TESTPOOL2
116log_must pool_in_cache $TESTPOOL2 $CPATH2
117
118log_must zpool destroy $TESTPOOL1
119log_must zpool destroy $TESTPOOL2
42f7b73b 120if [[ -s $CPATH2 ]]; then
cae5b340
AX
121 log_fail "Verify destroy when cachefile is set on pool."
122fi
123
124log_pass "Verify set, export and destroy when cachefile is set on pool."