/tests/sys/cddl/zfs/tests/cli_root/zpool_upgrade/zpool_upgrade_008_pos.ksh

https://bitbucket.org/freebsd/freebsd-base · Korn Shell · 99 lines · 29 code · 11 blank · 59 comment · 2 complexity · a88d264bd3bfe1550d7cba21cf4ce970 MD5 · raw file

  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. # $FreeBSD$
  23. #
  24. # Copyright 2009 Sun Microsystems, Inc. All rights reserved.
  25. # Use is subject to license terms.
  26. #
  27. # ident "@(#)zpool_upgrade_008_pos.ksh 1.5 09/06/22 SMI"
  28. #
  29. . $STF_SUITE/include/libtest.kshlib
  30. . $STF_SUITE/tests/cli_root/zpool_upgrade/zpool_upgrade.kshlib
  31. ################################################################################
  32. #
  33. # __stc_assertion_start
  34. #
  35. # ID: zpool_upgrade_008_pos
  36. #
  37. # DESCRIPTION:
  38. #
  39. # Zpool upgrade should be able to upgrade pools to a given version using -V
  40. #
  41. # STRATEGY:
  42. # 1. For all versions pools that can be upgraded on a given OS version
  43. # (latest pool version - 1)
  44. # 2. Pick a version that's a random number, greater than the version
  45. # we're running.
  46. # 3. Attempt to upgrade that pool to the given version
  47. # 4. Check the pool was upgraded correctly.
  48. #
  49. # TESTABILITY: explicit
  50. #
  51. # TEST_AUTOMATION_LEVEL: automated
  52. #
  53. # CODING_STATUS: COMPLETED (2007-09-27)
  54. #
  55. # __stc_assertion_end
  56. #
  57. ################################################################################
  58. verify_runnable "global"
  59. function cleanup
  60. {
  61. destroy_upgraded_pool $config
  62. }
  63. log_assert \
  64. "Zpool upgrade should be able to upgrade pools to a given version using -V"
  65. $ZPOOL upgrade --help 2>&1 | $GREP "V version" > /dev/null
  66. if [ $? -ne 0 ]
  67. then
  68. log_unsupported "Zpool upgrade -V not supported on this release."
  69. fi
  70. log_onexit cleanup
  71. # We're just using the single disk version of the pool, which should be
  72. # enough to determine if upgrade works correctly. Also set a MAX_VER
  73. # variable, which specifies the highest version that we should expect
  74. # a zpool upgrade operation to succeed from. (latest version - 1)
  75. CONFIGS="1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 28"
  76. MAX_VER=28
  77. for config in $CONFIGS
  78. do
  79. create_old_pool $config
  80. pool=$($ENV| $GREP "ZPOOL_VERSION_${config}_NAME" \
  81. | $AWK -F= '{print $2}')
  82. NEXT=$(random $config $MAX_VER)
  83. log_must $ZPOOL upgrade -V $NEXT $pool
  84. check_poolversion $pool $NEXT
  85. destroy_upgraded_pool $config
  86. done
  87. log_pass \
  88. "Zpool upgrade should be able to upgrade pools to a given version using -V"