diff options
author | Christian Schwarz <[email protected]> | 2020-01-16 02:15:05 +0100 |
---|---|---|
committer | Brian Behlendorf <[email protected]> | 2020-02-11 13:19:17 -0800 |
commit | 948f0c44196d2fa254399ec0d716c2ba0bb9ffad (patch) | |
tree | 87307e1d30a2f0601f64bb75603aedeb70f73b54 /tests | |
parent | a73f361fdb2c0a7778e70b482e316054fc2d8630 (diff) |
zcp: add zfs.sync.bookmark
Add support for bookmark creation and cloning.
Reviewed-by: Matt Ahrens <[email protected]>
Reviewed-by: Paul Dagnelie <[email protected]>
Reviewed-by: Brian Behlendorf <[email protected]>
Signed-off-by: Christian Schwarz <[email protected]>
Closes #9571
Diffstat (limited to 'tests')
6 files changed, 152 insertions, 2 deletions
diff --git a/tests/runfiles/common.run b/tests/runfiles/common.run index 691cae9cb..e4593a53e 100644 --- a/tests/runfiles/common.run +++ b/tests/runfiles/common.run @@ -87,7 +87,7 @@ tests = ['tst.destroy_fs', 'tst.destroy_snap', 'tst.get_count_and_limit', 'tst.promote_multiple', 'tst.promote_simple', 'tst.rollback_mult', 'tst.rollback_one', 'tst.snapshot_destroy', 'tst.snapshot_neg', 'tst.snapshot_recursive', 'tst.snapshot_simple', - 'tst.bookmark.create', 'tst.bookmark.clone', + 'tst.bookmark.create', 'tst.bookmark.copy', 'tst.terminate_by_signal' ] tags = ['functional', 'channel_program', 'synctask_core'] diff --git a/tests/zfs-tests/tests/functional/channel_program/synctask_core/Makefile.am b/tests/zfs-tests/tests/functional/channel_program/synctask_core/Makefile.am index 5330edaf2..e74c5223b 100644 --- a/tests/zfs-tests/tests/functional/channel_program/synctask_core/Makefile.am +++ b/tests/zfs-tests/tests/functional/channel_program/synctask_core/Makefile.am @@ -30,6 +30,8 @@ dist_pkgdata_SCRIPTS = \ tst.snapshot_destroy.ksh \ tst.snapshot_neg.ksh \ tst.snapshot_recursive.ksh \ + tst.bookmark.create.ksh \ + tst.bookmark.copy.ksh \ tst.snapshot_simple.ksh \ tst.terminate_by_signal.ksh @@ -44,4 +46,6 @@ dist_pkgdata_DATA = \ tst.snapshot_destroy.zcp \ tst.snapshot_neg.zcp \ tst.snapshot_recursive.zcp \ - tst.snapshot_simple.zcp + tst.snapshot_simple.zcp \ + tst.bookmark.create.zcp \ + tst.bookmark.copy.zcp diff --git a/tests/zfs-tests/tests/functional/channel_program/synctask_core/tst.bookmark.copy.ksh b/tests/zfs-tests/tests/functional/channel_program/synctask_core/tst.bookmark.copy.ksh new file mode 100755 index 000000000..81f570d9e --- /dev/null +++ b/tests/zfs-tests/tests/functional/channel_program/synctask_core/tst.bookmark.copy.ksh @@ -0,0 +1,45 @@ +#!/bin/ksh -p +# +# 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) 2019, 2020 by Christian Schwarz. All rights reserved. +# + +. $STF_SUITE/tests/functional/channel_program/channel_common.kshlib + +# +# DESCRIPTION: Make sure bookmark copying works in channel programs +# + +verify_runnable "global" + +fs=$TESTPOOL/$TESTFS/testchild +snapname=testsnap +bookname=testbookmark +bookcopyname=testbookmark_copy + +function cleanup +{ + destroy_dataset $fs "-R" +} + +log_onexit cleanup + +log_must zfs create $fs + +log_must zfs snapshot $fs@$snapname +log_must zfs bookmark $fs@$snapname "$fs#$bookname" + +log_must_program_sync $TESTPOOL \ + $ZCP_ROOT/synctask_core/tst.bookmark.copy.zcp $fs $bookname $bookcopyname + +log_pass "Simple bookmark copying works" diff --git a/tests/zfs-tests/tests/functional/channel_program/synctask_core/tst.bookmark.copy.zcp b/tests/zfs-tests/tests/functional/channel_program/synctask_core/tst.bookmark.copy.zcp new file mode 100644 index 000000000..9473035f0 --- /dev/null +++ b/tests/zfs-tests/tests/functional/channel_program/synctask_core/tst.bookmark.copy.zcp @@ -0,0 +1,32 @@ +-- +-- 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) 2019, 2020 by Christian Schwarz. All rights reserved. +-- + +-- This program should be invoked as "zfs program <pool> <prog> <fs> <source_book> <new_book>" + +args = ... +argv = args["argv"] +fs = argv[1] +source = fs .. "#" .. argv[2] +new = fs .. "#" .. argv[3] +assert(zfs.sync.bookmark(source, new) == 0) +books = {} +count = 0 +for s in zfs.list.bookmarks(fs) do + count = count + 1 + books[s] = 1 +end +assert(count == 2) +assert(books[source] == 1) +assert(books[new] == 1) diff --git a/tests/zfs-tests/tests/functional/channel_program/synctask_core/tst.bookmark.create.ksh b/tests/zfs-tests/tests/functional/channel_program/synctask_core/tst.bookmark.create.ksh new file mode 100755 index 000000000..05ec9cc67 --- /dev/null +++ b/tests/zfs-tests/tests/functional/channel_program/synctask_core/tst.bookmark.create.ksh @@ -0,0 +1,43 @@ +#!/bin/ksh -p +# +# 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) 2019, 2020 by Christian Schwarz. All rights reserved. +# + +. $STF_SUITE/tests/functional/channel_program/channel_common.kshlib + +# +# DESCRIPTION: Make sure basic bookmark functionality works in channel programs +# + +verify_runnable "global" + +fs=$TESTPOOL/$TESTFS/testchild +snapname=testsnap +bookname=testbookmark + +function cleanup +{ + destroy_dataset $fs "-R" +} + +log_onexit cleanup + +log_must zfs create $fs + +log_must zfs snapshot $fs@$snapname + +log_must_program_sync $TESTPOOL \ + $ZCP_ROOT/synctask_core/tst.bookmark.create.zcp $fs $snapname $bookname + +log_pass "Simple bookmark creation works" diff --git a/tests/zfs-tests/tests/functional/channel_program/synctask_core/tst.bookmark.create.zcp b/tests/zfs-tests/tests/functional/channel_program/synctask_core/tst.bookmark.create.zcp new file mode 100644 index 000000000..eb53fd16c --- /dev/null +++ b/tests/zfs-tests/tests/functional/channel_program/synctask_core/tst.bookmark.create.zcp @@ -0,0 +1,26 @@ +-- +-- 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) 2019, 2020 by Christian Schwarz. All rights reserved. +-- + +-- This program should be invoked as "zfs program <pool> <prog> <fs> <snap> <book>" + +args = ... +argv = args["argv"] +assert(zfs.sync.bookmark(argv[1] .. "@" .. argv[2], argv[1] .. "#" .. argv[3]) == 0) +books = {} +for s in zfs.list.bookmarks(argv[1]) do + table.insert(books, s) +end +assert(#books == 1) +assert(books[1] == (argv[1] .. "#" .. argv[3])) |