mirror of
https://github.com/taosdata/TDengine
synced 2026-05-24 10:09:01 +00:00
212 lines
No EOL
6.1 KiB
Python
212 lines
No EOL
6.1 KiB
Python
###################################################################
|
|
# Copyright (c) 2023 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
|
|
#
|
|
###################################################################
|
|
|
|
# -*- coding: utf-8 -*-
|
|
|
|
#
|
|
# about system funciton extension
|
|
#
|
|
|
|
import sys
|
|
import os
|
|
import time
|
|
import datetime
|
|
from .epath import *
|
|
from .eos import *
|
|
from .log import *
|
|
from .sql import tdSql
|
|
|
|
TAOS = "taos"
|
|
TAOSDUMP = "taosdump"
|
|
TAOSBENCHMARK = "taosBenchmark"
|
|
TAOSADAPTER = "taosAdapter"
|
|
|
|
# taos
|
|
def taosFile():
|
|
"""Get the path to the `taos` binary file.
|
|
|
|
Returns:
|
|
str: The full path to the `taos` binary file, with `.exe` appended if on Windows.
|
|
"""
|
|
|
|
bmFile = binFile(TAOS)
|
|
if isWin():
|
|
bmFile += ".exe"
|
|
return bmFile
|
|
|
|
# taosdump
|
|
def taosDumpFile():
|
|
"""Get the path to the `taosdump` binary file.
|
|
|
|
Returns:
|
|
str: The full path to the `taosdump` binary file, with `.exe` appended if on Windows.
|
|
"""
|
|
bmFile = binFile(TAOSDUMP)
|
|
if isWin():
|
|
bmFile += ".exe"
|
|
return bmFile
|
|
|
|
# taosBenchmark
|
|
def benchMarkFile():
|
|
"""Get the path to the `taosBenchmark` binary file.
|
|
|
|
Args:
|
|
None
|
|
|
|
Returns:
|
|
str: The full path to the `taosBenchmark` binary file, with `.exe` appended if on Windows.
|
|
"""
|
|
bmFile = binFile(TAOSBENCHMARK)
|
|
if isWin():
|
|
bmFile += ".exe"
|
|
return bmFile
|
|
|
|
# taosAdapter
|
|
def taosAdapterFile():
|
|
"""Get the path to the `taosAdapter` binary file.
|
|
|
|
Args:
|
|
None
|
|
|
|
Returns:
|
|
str: The full path to the `taosAdapter` binary file, with `.exe` appended if on Windows.
|
|
"""
|
|
bmFile = binFile(TAOSADAPTER)
|
|
if isWin():
|
|
bmFile += ".exe"
|
|
return bmFile
|
|
|
|
# run taosBenchmark with command or json file mode
|
|
def benchMark(command = "", json = "") :
|
|
"""Run the `taosBenchmark` binary with a command or JSON file.
|
|
|
|
Args:
|
|
command (str, optional): The command to execute. Defaults to an empty string.
|
|
json (str, optional): The path to a JSON file for execution. Defaults to an empty string.
|
|
|
|
Raises:
|
|
SystemExit: If the execution of the JSON file fails.
|
|
"""
|
|
# get taosBenchmark path
|
|
bmFile = benchMarkFile()
|
|
|
|
# run
|
|
if command != "":
|
|
if "-a" in command or "--replica" in command:
|
|
exe(bmFile + " " + command + " -y")
|
|
else:
|
|
exe(bmFile + " " + command + f" -y -a {tdSql.replica}")
|
|
if json != "":
|
|
cmd = f"{bmFile} -f {json}"
|
|
print(cmd)
|
|
status = exe(cmd)
|
|
if status !=0:
|
|
tdLog.exit(f"run failed {cmd} status={status}")
|
|
|
|
|
|
# get current directory file name
|
|
def curFile(fullPath, filename):
|
|
"""Get the full path to a file in the current directory.
|
|
|
|
Args:
|
|
fullPath (str): The full path to the current directory.
|
|
filename (str): The name of the file.
|
|
|
|
Returns:
|
|
str: The full path to the file in the current directory.
|
|
"""
|
|
return os.path.join(os.path.dirname(fullPath), filename)
|
|
|
|
|
|
# run build/bin file
|
|
def runBinFile(fname, command, show = True, checkRun = False, retFail = False ):
|
|
"""Run a binary file with the specified command.
|
|
|
|
Args:
|
|
fname (str): The name of the binary file.
|
|
command (str): The command to execute.
|
|
show (bool, optional): Whether to log the command. Defaults to True.
|
|
|
|
Returns:
|
|
list: The output of the command as a list of strings.
|
|
"""
|
|
bin_file = binFile(fname)
|
|
if isWin():
|
|
bin_file += ".exe"
|
|
|
|
cmd = f"{bin_file} {command}"
|
|
if show:
|
|
tdLog.info(cmd)
|
|
return runRetList(cmd, checkRun=checkRun, retFail=retFail, show=show)
|
|
|
|
# exe build/bin file
|
|
def exeBinFile(fname, command, wait=True, show=True):
|
|
"""Execute a binary file with the specified command.
|
|
|
|
This method uses `utils.army.frame.eos.exe` or `utils.army.frame.eos.exeNoWait`
|
|
to execute the binary file. The `exe` function waits for the command to finish,
|
|
while `exeNoWait` runs the command in the background and returns immediately.
|
|
|
|
Args:
|
|
fname (str): The name of the binary file.
|
|
command (str): The command to execute.
|
|
wait (bool, optional): Whether to wait for the command to finish. Defaults to True.
|
|
- If True, uses `utils.army.frame.eos.exe`.
|
|
- If False, uses `utils.army.frame.eos.exeNoWait`.
|
|
show (bool, optional): Whether to log the command. Defaults to True.
|
|
|
|
Returns:
|
|
int: The exit status of the command execution. A return value of `0` indicates success,
|
|
while a non-zero value indicates failure.
|
|
- If `wait` is False, the return value is the exit status of the `nohup` or `mintty` command.
|
|
"""
|
|
bin_file = binFile(fname)
|
|
if isWin():
|
|
bin_file += ".exe"
|
|
|
|
cmd = f"{bin_file} {command}"
|
|
if wait:
|
|
if show:
|
|
tdLog.info("wait exe:" + cmd)
|
|
return exe(f"{bin_file} {command}")
|
|
else:
|
|
if show:
|
|
tdLog.info("no wait exe:" + cmd)
|
|
return exeNoWait(cmd)
|
|
|
|
#
|
|
# run bin file
|
|
#
|
|
|
|
# taos
|
|
def taos(command, show = True, checkRun = False):
|
|
return runBinFile(TAOS, command, show, checkRun)
|
|
|
|
def taosdump(command, show = True, checkRun = True, retFail = True):
|
|
return runBinFile(TAOSDUMP, command, show, checkRun, retFail)
|
|
|
|
def benchmark(command, show = True, checkRun = True, retFail = True):
|
|
return runBinFile(TAOSBENCHMARK, command, show, checkRun, retFail)
|
|
|
|
def getFilePath(base_dir, *parts):
|
|
"""
|
|
Get the full path to a file, ensuring compatibility with Windows paths.
|
|
|
|
Args:
|
|
*parts (str): The parts of the file path.
|
|
|
|
Returns:
|
|
str: The full path to the file.
|
|
"""
|
|
file_path = os.path.join(os.path.dirname(base_dir), *parts)
|
|
if platform.system().lower() == 'windows':
|
|
file_path = file_path.replace("\\", "\\\\")
|
|
return file_path |