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 print("child: %s" % child.before.decode()) 19 if element_exists: 20 if element not in child.before.decode(): 21 print("Element %s not in list" % element) 22 exit(1) 23 else: 24 if element in child.before.decode(): 25 print("Element %s is in list" % element) 26 exit(1) 27 28 29if __name__ == "__main__": 30 socket = "/var/tmp/spdk.sock" 31 if len(sys.argv) == 3: 32 socket = sys.argv[2] 33 testdir = os.path.dirname(os.path.realpath(sys.argv[0])) 34 child = pexpect.spawn(os.path.join(testdir, "../../scripts/spdkcli.py") + " -s %s" % socket) 35 child.expect(">") 36 child.sendline("cd /") 37 child.expect("/>") 38 39 cmd_lines = sys.argv[1].strip().split("\n") 40 for line in cmd_lines: 41 data = line.strip() 42 p = re.compile('\'(.*?)\'') 43 cmd = p.findall(data) 44 if data[-1] != "\'": 45 cmd.append(data.rsplit(" ", 1)[1].strip()) 46 if cmd[-1] == "False": 47 cmd[-1] = False 48 else: 49 cmd[-1] = True 50 else: 51 cmd.append(False) 52 print("Executing command: %s" % cmd) 53 execute_command(*cmd[0:3]) 54