1*dfc11533SChris Williamson#!/bin/ksh -p 2*dfc11533SChris Williamson# 3*dfc11533SChris Williamson# This file and its contents are supplied under the terms of the 4*dfc11533SChris Williamson# Common Development and Distribution License ("CDDL"), version 1.0. 5*dfc11533SChris Williamson# You may only use this file in accordance with the terms of version 6*dfc11533SChris Williamson# 1.0 of the CDDL. 7*dfc11533SChris Williamson# 8*dfc11533SChris Williamson# A full copy of the text of the CDDL should have accompanied this 9*dfc11533SChris Williamson# source. A copy of the CDDL is also available via the Internet at 10*dfc11533SChris Williamson# http://www.illumos.org/license/CDDL. 11*dfc11533SChris Williamson# 12*dfc11533SChris Williamson 13*dfc11533SChris Williamson# 14*dfc11533SChris Williamson# Copyright (c) 2016 by Delphix. All rights reserved. 15*dfc11533SChris Williamson# 16*dfc11533SChris Williamson 17*dfc11533SChris Williamson. $STF_SUITE/tests/functional/channel_program/channel_common.kshlib 18*dfc11533SChris Williamson 19*dfc11533SChris Williamson 20*dfc11533SChris Williamson# 21*dfc11533SChris Williamson# DESCRIPTION: 22*dfc11533SChris Williamson# Passing memory limit options to channel programs should work correctly. 23*dfc11533SChris Williamson# Programs that exceed these limits should fail gracefully. 24*dfc11533SChris Williamson 25*dfc11533SChris Williamson 26*dfc11533SChris Williamsonverify_runnable "global" 27*dfc11533SChris Williamson 28*dfc11533SChris Williamsonlog_mustnot_checkerror_program "Memory limit exhausted" \ 29*dfc11533SChris Williamson -t 100000000 $TESTPOOL - <<-EOF 30*dfc11533SChris Williamson a = {}; 31*dfc11533SChris Williamson i = 0; 32*dfc11533SChris Williamson while true do 33*dfc11533SChris Williamson i = i + 1 34*dfc11533SChris Williamson a[i] = "Here is the " .. i .. "th entry of a" 35*dfc11533SChris Williamson end; 36*dfc11533SChris Williamson return a 37*dfc11533SChris WilliamsonEOF 38*dfc11533SChris Williamson 39*dfc11533SChris Williamsonlog_assert "memory limit options work" 40*dfc11533SChris Williamsonlog_mustnot_checkerror_program "Memory limit exhausted" \ 41*dfc11533SChris Williamson -m 100000 -t 100000000 $TESTPOOL - <<-EOF 42*dfc11533SChris Williamson a = {}; 43*dfc11533SChris Williamson i = 0; 44*dfc11533SChris Williamson while true do 45*dfc11533SChris Williamson i = i + 1 46*dfc11533SChris Williamson a[i] = "Here is the " .. i .. "th entry of a" 47*dfc11533SChris Williamson end; 48*dfc11533SChris Williamson return a 49*dfc11533SChris WilliamsonEOF 50*dfc11533SChris Williamson 51*dfc11533SChris Williamsonlog_must_program -m 100000 $TESTPOOL - <<-EOF 52*dfc11533SChris Williamson s = "teststring" 53*dfc11533SChris Williamson s = s .. s .. s .. s 54*dfc11533SChris Williamson return s 55*dfc11533SChris WilliamsonEOF 56*dfc11533SChris Williamson 57*dfc11533SChris Williamsonlog_assert "very small memory limits fail correctly" 58*dfc11533SChris Williamsonlog_mustnot_checkerror_program "Memory limit exhausted" -m 1 $TESTPOOL - <<-EOF 59*dfc11533SChris Williamson s = "teststring" 60*dfc11533SChris Williamson s = s .. s .. s .. s 61*dfc11533SChris Williamson return s 62*dfc11533SChris WilliamsonEOF 63*dfc11533SChris Williamson 64*dfc11533SChris Williamsonlog_mustnot_checkerror_program "Invalid memory limit" \ 65*dfc11533SChris Williamson -m 1000000000000 $TESTPOOL - <<-EOF 66*dfc11533SChris Williamson return 1; 67*dfc11533SChris WilliamsonEOF 68*dfc11533SChris Williamson 69*dfc11533SChris Williamsonlog_mustnot_checkerror_program "Invalid memory limit" \ 70*dfc11533SChris Williamson -m 9223372036854775808 $TESTPOOL - <<-EOF 71*dfc11533SChris Williamson return 1; 72*dfc11533SChris WilliamsonEOF 73*dfc11533SChris Williamson 74*dfc11533SChris Williamsonlog_pass "Memory limits work correctly." 75