1#!/usr/bin/env python3 2import pexpect 3import os 4import sys 5import re 6 7 8def execute_command(cmd, element=None, element_exists=False): 9 child.sendline(cmd) 10 child.expect("/>") 11 if "error response" in child.before.decode(): 12 print("Error in cmd: %s" % cmd) 13 exit(1) 14 ls_tree = cmd.split(" ")[0] 15 if ls_tree and element: 16 child.sendline("ls %s" % ls_tree) 17 child.expect("/>") 18 if element_exists: 19 if element not in child.before.decode(): 20 print("Element %s not in list:\n%s" % (element, child.before.decode())) 21 exit(1) 22 else: 23 if element in child.before.decode(): 24 print("Element %s is in list:\n%s" % (element, child.before.decode())) 25 exit(1) 26 27 28if __name__ == "__main__": 29 socket = "/var/tmp/spdk.sock" 30 if len(sys.argv) == 3: 31 socket = sys.argv[2] 32 testdir = os.path.dirname(os.path.realpath(sys.argv[0])) 33 child = pexpect.spawn(os.path.join(testdir, "../../scripts/spdkcli.py") + " -s %s" % socket) 34 child.expect(">") 35 child.sendline("cd /") 36 child.expect("/>") 37 38 cmd_lines = sys.argv[1].strip().split("\n") 39 for line in cmd_lines: 40 data = line.strip() 41 p = re.compile('\'(.*?)\'') 42 cmd = p.findall(data) 43 if data[-1] != "\'": 44 cmd.append(data.rsplit(" ", 1)[1].strip()) 45 if cmd[-1] == "False": 46 cmd[-1] = False 47 else: 48 cmd[-1] = True 49 else: 50 cmd.append(False) 51 print("Executing command: %s" % cmd) 52 execute_command(*cmd[0:3]) 53