File: run_client_server_tests.py

package info (click to toggle)
lcm 1.3.1%2Brepack1-9
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 2,848 kB
  • sloc: ansic: 16,186; java: 6,843; cs: 2,266; cpp: 1,594; python: 989; makefile: 352; xml: 252; sh: 59
file content (63 lines) | stat: -rwxr-xr-x 1,641 bytes parent folder | download | duplicates (5)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
#!/usr/bin/env python
import os
import sys
import subprocess

def usage():
    print("Usage:  %s [options] [client]" % sys.argv[0])
    print("")
    print("Options:")
    print("  -h, --help    Show this help text")
    print("")

def main():
    to_test = {
        "C" : os.path.join("c", "client"),
        "Python" : "python " + os.path.join("python", "client.py"),
        "C++" : os.path.join("cpp", "client"),
        "Lua" : "cd lua; lua client.lua",
        "Java" : "cd java; java -cp lcmtest.jar LcmTestClient"
    }

    test_passed = {}

    # Start the test server
    serverName = os.path.join("c", "server")
    if os.name == "nt":
        serverName += ".exe"

    if not os.path.exists(serverName):
        print("Can't find test server %s" % serverName)
        print("Try running 'make' first")
        return 1

    print("Starting test server")
    server_proc = subprocess.Popen(serverName)

    # Run the client tests while the test server is running
    for name, prog in to_test.items():
        client_status = subprocess.Popen(prog, shell=True).wait()
        if client_status == 0:
            test_passed[name] = "     OK"
        else:
            test_passed[name] = " FAIL  "

    # Stop the test server
    print("Stopping test server")
    server_proc.terminate()
    server_status = server_proc.wait()
    print("Test server stopped")

    # Report
    print("")
    print("Test results:")
    for name, status in test_passed.items():
        print("%s  %s" % (status, name))

    if all(test_passed.values()):
        return 0
    else:
        return 1

if __name__ == "__main__":
    sys.exit(main())