1*564eeb7dSRobert Mustacchi#!/usr/bin/ksh 2*564eeb7dSRobert Mustacchi 3*564eeb7dSRobert Mustacchi# 4*564eeb7dSRobert Mustacchi# This file and its contents are supplied under the terms of the 5*564eeb7dSRobert Mustacchi# Common Development and Distribution License ("CDDL"), version 1.0. 6*564eeb7dSRobert Mustacchi# You may only use this file in accordance with the terms of version 7*564eeb7dSRobert Mustacchi# 1.0 of the CDDL. 8*564eeb7dSRobert Mustacchi# 9*564eeb7dSRobert Mustacchi# A full copy of the text of the CDDL should have accompanied this 10*564eeb7dSRobert Mustacchi# source. A copy of the CDDL is also available via the Internet at 11*564eeb7dSRobert Mustacchi# http://www.illumos.org/license/CDDL. 12*564eeb7dSRobert Mustacchi# 13*564eeb7dSRobert Mustacchi 14*564eeb7dSRobert Mustacchi# 15*564eeb7dSRobert Mustacchi# Copyright 2026 Oxide Computer Company 16*564eeb7dSRobert Mustacchi# 17*564eeb7dSRobert Mustacchi 18*564eeb7dSRobert Mustacchi# 19*564eeb7dSRobert Mustacchi# Run tests that can wreak havoc on a device with OCP features (e.g. 20*564eeb7dSRobert Mustacchi# error injection, changing the PLP Health window, etc.) 21*564eeb7dSRobert Mustacchi# 22*564eeb7dSRobert Mustacchi 23*564eeb7dSRobert Mustacchi# 24*564eeb7dSRobert Mustacchi# Environment sanitization. 25*564eeb7dSRobert Mustacchi# 26*564eeb7dSRobert Mustacchiexport LC_ALL=C.UTF-8 27*564eeb7dSRobert Mustacchiexport LD_PRELOAD=libumem.so 28*564eeb7dSRobert Mustacchiexport UMEM_DEBUG=default 29*564eeb7dSRobert Mustacchiunalias -a 30*564eeb7dSRobert Mustacchiset -o pipefail 31*564eeb7dSRobert Mustacchi 32*564eeb7dSRobert Mustacchide_arg0=$(basename $0) 33*564eeb7dSRobert Mustacchide_rundir="$(dirname $0)/../runfiles" 34*564eeb7dSRobert Mustacchide_file="destruct-ocp.run" 35*564eeb7dSRobert Mustacchide_runfile="$de_rundir/$de_file" 36*564eeb7dSRobert Mustacchide_runner="/opt/test-runner/bin/run" 37*564eeb7dSRobert Mustacchide_nvmeadm="/usr/sbin/nvmeadm" 38*564eeb7dSRobert Mustacchi 39*564eeb7dSRobert Mustacchifunction fatal 40*564eeb7dSRobert Mustacchi{ 41*564eeb7dSRobert Mustacchi typeset msg="$*" 42*564eeb7dSRobert Mustacchi [[ -z "$msg" ]] && msg="failed" 43*564eeb7dSRobert Mustacchi echo "$de_arg0: $msg" >&2 44*564eeb7dSRobert Mustacchi exit 1 45*564eeb7dSRobert Mustacchi} 46*564eeb7dSRobert Mustacchi 47*564eeb7dSRobert Mustacchi 48*564eeb7dSRobert Mustacchiif (( $# == 0 )); then 49*564eeb7dSRobert Mustacchi fatal "missing required device name" 50*564eeb7dSRobert Mustacchifi 51*564eeb7dSRobert Mustacchi 52*564eeb7dSRobert Mustacchiif ! $de_nvmeadm list "$1" > /dev/null; then 53*564eeb7dSRobert Mustacchi fatal "failed to find device $1" 54*564eeb7dSRobert Mustacchifi 55*564eeb7dSRobert Mustacchi 56*564eeb7dSRobert Mustacchiexport NVME_TEST_DEVICE=$1 57*564eeb7dSRobert Mustacchi$de_runner -c "$de_runfile" 58