xref: /spdk/test/spdkcli/spdkcli_job.py (revision b30d57cdad6d2bc75cc1e4e2ebbcebcb0d98dcfa)
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