test.py 3.9 KB
Newer Older
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
#!/usr/bin/python
###################################################################
#           Copyright (c) 2016 by TAOS Technologies, Inc.
#                     All rights reserved.
#
#  This file is proprietary and confidential to TAOS Technologies.
#  No part of this file may be reproduced, stored, transmitted,
#  disclosed or used in any form or by any means other than as
#  expressly provided by the written permission from Jianhui Tao
#
###################################################################
# install pip
# pip install src/connector/python/linux/python2/

# -*- coding: utf-8 -*-
import sys
import getopt
18 19 20
import subprocess
from distutils.log import warn as printf

21 22 23 24 25 26 27 28 29 30 31 32
from util.log import *
from util.dnodes import *
from util.cases import *

import taos


if __name__ == "__main__":
    fileName = "all"
    deployPath = ""
    masterIp = ""
    testCluster = False
33
    valgrind = 0
S
Shuduo Sang 已提交
34
    logSql = True
35
    stop = 0
S
Shuduo Sang 已提交
36 37
    opts, args = getopt.gnu_getopt(sys.argv[1:], 'f:p:m:l:scgh', [
        'file=', 'path=', 'master', 'logSql', 'stop', 'cluster', 'valgrind', 'help'])
38 39 40 41 42 43 44
    for key, value in opts:
        if key in ['-h', '--help']:
            tdLog.printNoPrefix(
                'A collection of test cases written using Python')
            tdLog.printNoPrefix('-f Name of test case file written by Python')
            tdLog.printNoPrefix('-p Deploy Path for Simulator')
            tdLog.printNoPrefix('-m Master Ip for Simulator')
S
Shuduo Sang 已提交
45
            tdLog.printNoPrefix('-l <True:False> logSql Flag')
46
            tdLog.printNoPrefix('-s stop All dnodes')
S
Shuduo Sang 已提交
47 48
            tdLog.printNoPrefix('-c Test Cluster Flag')
            tdLog.printNoPrefix('-g valgrind Test Flag')
49
            sys.exit(0)
50

51 52
        if key in ['-f', '--file']:
            fileName = value
53

54 55
        if key in ['-p', '--path']:
            deployPath = value
56

57 58
        if key in ['-m', '--master']:
            masterIp = value
59

S
Shuduo Sang 已提交
60 61 62 63 64 65 66 67 68
        if key in ['-l', '--logSql']:
            if (value.upper() == "TRUE"):
                logSql = True
            elif (value.upper() == "FALSE"):
                logSql = False
            else:
                tdLog.printNoPrefix("logSql value %s is invalid" % logSql)
                sys.exit(0)

69 70
        if key in ['-c', '--cluster']:
            testCluster = True
71 72 73 74

        if key in ['-g', '--valgrind']:
            valgrind = 1

75
        if key in ['-s', '--stop']:
76 77 78 79 80 81 82 83 84 85 86 87 88
            stop = 1

    if (stop != 0):
        if (valgrind == 0):
            toBeKilled = "taosd"
        else:
            toBeKilled = "valgrind.bin"

        killCmd = "ps -ef|grep -w %s| grep -v grep | awk '{print $2}' | xargs kill -HUP " % toBeKilled

        psCmd = "ps -ef|grep -w %s| grep -v grep | awk '{print $2}'" % toBeKilled
        processID = subprocess.check_output(psCmd, shell=True)

89
        while(processID):
90 91 92 93
            os.system(killCmd)
            time.sleep(1)
            processID = subprocess.check_output(psCmd, shell=True)

94
        fuserCmd = "fuser -k -n tcp 6030"
S
Shuduo Sang 已提交
95
        os.system(fuserCmd)
96

S
Shuduo Sang 已提交
97 98
        tdLog.info('stop All dnodes')
        sys.exit(0)
99

100 101 102 103 104 105 106 107
    tdDnodes.init(deployPath)
    tdDnodes.setTestCluster(testCluster)
    tdDnodes.setValgrind(valgrind)

    tdDnodes.stopAll()
    tdDnodes.deploy(1)
    tdDnodes.start(1)

108
    if masterIp == "":
109
        host = '127.0.0.1'
110
    else:
111
        host = masterIp
112

113
    tdLog.info("Procedures for tdengine deployed in %s" % (host))
114

S
Shuduo Sang 已提交
115 116
    tdCases.logSql(logSql)

117
    if testCluster:
118
        tdLog.info("Procedures for testing cluster")
119 120
        if fileName == "all":
            tdCases.runAllCluster()
121
        else:
122
            tdCases.runOneCluster(fileName)
123
    else:
124
        tdLog.info("Procedures for testing self-deployment")
125
        conn = taos.connect(
126 127
            host,
            config=tdDnodes.getSimCfgPath())
128
        if fileName == "all":
129
            tdCases.runAllLinux(conn)
130
        else:
131 132 133
            tdCases.runOneLinux(conn, fileName)

    conn.close()