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 port = None 31 if len(sys.argv) == 3: 32 socket = sys.argv[2] 33 elif len(sys.argv) == 4: 34 port = sys.argv[3] 35 testdir = os.path.dirname(os.path.realpath(sys.argv[0])) 36 37 if port is None: 38 child = pexpect.spawn(os.path.join(testdir, "../../scripts/spdkcli.py") + " -s %s" % socket) 39 else: 40 child = pexpect.spawn(os.path.join(testdir, "../../scripts/spdkcli.py") + " -s %s -p %s" % (socket, port)) 41 child.expect(">") 42 child.sendline("cd /") 43 child.expect("/>") 44 45 cmd_lines = sys.argv[1].strip().split("\n") 46 for line in cmd_lines: 47 data = line.strip() 48 p = re.compile('\'(.*?)\'') 49 cmd = p.findall(data) 50 if data[-1] != "\'": 51 cmd.append(data.rsplit(" ", 1)[1].strip()) 52 if cmd[-1] == "False": 53 cmd[-1] = False 54 else: 55 cmd[-1] = True 56 else: 57 cmd.append(False) 58 print("Executing command: %s" % cmd) 59 execute_command(*cmd[0:3]) 60