1*dfc11533SChris Williamson-- 2*dfc11533SChris Williamson-- This file and its contents are supplied under the terms of the 3*dfc11533SChris Williamson-- Common Development and Distribution License ("CDDL"), version 1.0. 4*dfc11533SChris Williamson-- You may only use this file in accordance with the terms of version 5*dfc11533SChris Williamson-- 1.0 of the CDDL. 6*dfc11533SChris Williamson-- 7*dfc11533SChris Williamson-- A full copy of the text of the CDDL should have accompanied this 8*dfc11533SChris Williamson-- source. A copy of the CDDL is also available via the Internet at 9*dfc11533SChris Williamson-- http://www.illumos.org/license/CDDL. 10*dfc11533SChris Williamson-- 11*dfc11533SChris Williamson 12*dfc11533SChris Williamson-- 13*dfc11533SChris Williamson-- Copyright (c) 2016 by Delphix. All rights reserved. 14*dfc11533SChris Williamson-- 15*dfc11533SChris Williamson 16*dfc11533SChris Williamsonarg = ... 17*dfc11533SChris Williamsonfs = arg["argv"][1] 18*dfc11533SChris Williamsonsnap = arg["argv"][2] 19*dfc11533SChris Williamsonclone = arg["argv"][3] 20*dfc11533SChris Williamson 21*dfc11533SChris Williamsonprops = {} 22*dfc11533SChris Williamson 23*dfc11533SChris Williamson-- prop filesystem snapshot clone 24*dfc11533SChris Williamsonprops['origin'] = {{nil, nil}, {nil, nil}, {snap, nil}} 25*dfc11533SChris Williamsonprops['clones'] = {{nil, nil}, {{clone}, nil}, {nil, nil}} 26*dfc11533SChris Williamsonprops['mountpoint'] = {{'/' .. fs, 'default'}, {nil, nil}, {'/' .. clone, 'default'}} 27*dfc11533SChris Williamsonprops['sharenfs'] = {{'off', 'default'}, {nil, nil}, {'off', 'default'}} 28*dfc11533SChris Williamsonprops['type'] = {{'filesystem', nil}, {'snapshot', nil}, {'filesystem', nil}} 29*dfc11533SChris Williamsonprops['sharesmb'] = {{'off', 'default'}, {nil, nil}, {'off', 'default'}} 30*dfc11533SChris Williamsonprops['mlslabel'] = {{'none', 'default'}, {'none', 'default'}, {'none', 'default'}} 31*dfc11533SChris Williamsonprops['receive_resume_token'] = {{nil, nil}, {nil, nil}, {nil, nil}} 32*dfc11533SChris Williamson-- hidden props 33*dfc11533SChris Williamsonprops['name'] = {{fs, nil}, {snap, nil}, {clone, nil}} 34*dfc11533SChris Williamsonprops['iscsioptions'] = {{nil, nil}, {nil, nil}, {nil, nil}} 35*dfc11533SChris Williamsonprops['prevsnap'] = {{snap, nil}, {nil, nil}, {snap, nil}} 36*dfc11533SChris Williamson 37*dfc11533SChris Williamson 38*dfc11533SChris Williamsonfs_fails = {} 39*dfc11533SChris Williamsonsnap_fails = {} 40*dfc11533SChris Williamsonclone_fails = {} 41*dfc11533SChris Williamson 42*dfc11533SChris Williamson 43*dfc11533SChris Williamsonfunction list_match(t1, t2) 44*dfc11533SChris Williamson if t1 == t2 then return true end 45*dfc11533SChris Williamson return (t1[1] == t2[1]) 46*dfc11533SChris Williamsonend 47*dfc11533SChris Williamson 48*dfc11533SChris Williamsonfunction match(n, prop, ans, src, expected) 49*dfc11533SChris Williamson if ((prop == 'clones') or (prop == 'redact_snaps')) then 50*dfc11533SChris Williamson return (list_match(ans, expected[n][1]) and (src == expected[n][2])) 51*dfc11533SChris Williamson else 52*dfc11533SChris Williamson return ((ans == expected[n][1]) and (src == expected[n][2])) 53*dfc11533SChris Williamson end 54*dfc11533SChris Williamsonend 55*dfc11533SChris Williamson 56*dfc11533SChris Williamsonfor prop, expected in pairs(props) do 57*dfc11533SChris Williamson ans, src = zfs.get_prop(fs, prop) 58*dfc11533SChris Williamson if not (match(1, prop, ans, src, expected)) then 59*dfc11533SChris Williamson fs_fails[prop] = {ans, src} 60*dfc11533SChris Williamson end 61*dfc11533SChris Williamson 62*dfc11533SChris Williamson ans, src = zfs.get_prop(snap, prop) 63*dfc11533SChris Williamson if not (match(2, prop, ans, src, expected)) then 64*dfc11533SChris Williamson snap_fails[prop] = {ans, src} 65*dfc11533SChris Williamson end 66*dfc11533SChris Williamson 67*dfc11533SChris Williamson ans, src = zfs.get_prop(clone, prop) 68*dfc11533SChris Williamson if not (match(3, prop, ans, src, expected)) then 69*dfc11533SChris Williamson clone_fails[prop] = {ans, src} 70*dfc11533SChris Williamson end 71*dfc11533SChris Williamsonend 72*dfc11533SChris Williamson 73*dfc11533SChris Williamsonreturn {fs_fails, snap_fails, clone_fails} 74