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 2007 Sun Microsystems, Inc.  All rights reserved.
25# Use is subject to license terms.
26#
27# ident	"@(#)pool_names_001_pos.ksh	1.2	07/01/09 SMI"
28#
29
30. $STF_SUITE/include/libtest.kshlib
31
32###############################################################################
33#
34# __stc_assertion_start
35#
36# ID: pool_names_001_pos
37#
38# DESCRIPTION:
39#
40# Test that a set of valid names can be used to create pools. Further
41# verify that the created pools can be destroyed.
42#
43# STRATEGY:
44# 1) For each valid character in the character set, try to create
45# and destroy the pool.
46# 2) Given a list of valid pool names, try to create and destroy
47# pools with the given names.
48#
49# TESTABILITY: explicit
50#
51# TEST_AUTOMATION_LEVEL: automated
52#
53# CODING_STATUS: COMPLETED (2005-11-21)
54#
55# __stc_assertion_end
56#
57################################################################################
58
59verify_runnable "global"
60
61log_assert "Ensure that pool names can use the ASCII subset of UTF-8"
62
63function cleanup
64{
65	[[ -n "$name" ]] && destroy_pool $name
66
67	if [[ -d $TESTDIR ]]; then
68		log_must $RM -rf $TESTDIR
69	fi
70
71}
72
73log_onexit cleanup
74
75if [[ ! -e $TESTDIR ]]; then
76	log_must $MKDIR $TESTDIR
77fi
78
79log_note "Ensure letters of the alphabet are allowable"
80
81typeset name=""
82
83for name in A B C D E F G H I J K L M \
84    N O P Q R S T U V W X Y Z \
85    a b c d e f g h i j k l m \
86    n o p q r s t u v w x y z
87do
88	log_must $ZPOOL create -m $TESTDIR $name $DISK
89	if ! poolexists $name; then
90		log_fail "Could not create a pool called '$name'"
91	fi
92
93	log_must $ZPOOL destroy $name
94done
95
96log_note "Ensure a variety of unusual names passes"
97
98name=""
99
100for name in "a.............................." "a_" "a-" "a:" \
101    "a." "a123456" "bc0t0d0" "m1rr0r_p00l" "ra1dz_p00l" \
102    "araidz2" "C0t2d0" "cc0t0" "raid2:-_." "mirr_:-." \
103    "m1rr0r-p00l" "ra1dz-p00l" "spar3_p00l" \
104    "spar3-p00l" "hiddenmirrorpool" "hiddenraidzpool" \
105    "hiddensparepool"
106do
107	log_must $ZPOOL create -m $TESTDIR $name $DISK
108	if ! poolexists $name; then
109		log_fail "Could not create a pool called '$name'"
110	fi
111
112	#
113	# Since the naming convention applies to datasets too,
114	# create datasets with the same names as above.
115	#
116	log_must $ZFS create $name/$name
117	log_must $ZFS snapshot $name/$name@$name
118	log_must $ZFS clone $name/$name@$name $name/clone_$name
119	log_must $ZFS create -V 150m $name/$name/$name
120
121	log_must $ZPOOL destroy $name
122done
123
124log_pass "Valid pool names were accepted correctly."
125