Skip to content

Commit 05ba822

Browse files
Enabled specifying the user group of perf-daemon (#239)
* Fixed perf daemon artifacts generation * Enabled specifying the user group of perf-daemon
1 parent afc9b8d commit 05ba822

File tree

3 files changed

+38
-18
lines changed

3 files changed

+38
-18
lines changed

pyproject.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[tool.poetry]
22
name = "redisbench-admin"
3-
version = "0.5.15"
3+
version = "0.5.16"
44
description = "Redis benchmark run helper. A wrapper around Redis and Redis Modules benchmark tools ( ftsb_redisearch, memtier_benchmark, redis-benchmark, aibench, etc... )."
55
authors = ["filipecosta90 <[email protected]>","Redis Performance Group <[email protected]>"]
66
readme = "README.md"

redisbench_admin/profilers/daemon.py

Lines changed: 36 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -7,12 +7,14 @@
77
# !/usr/bin/env python3
88
import logging
99

10+
import argparse
1011
from flask import Flask, request
1112
import daemonize
1213
import json
1314
import sys
1415
import os
1516

17+
from redisbench_admin.cli import populate_with_poetry_data
1618
from redisbench_admin.run.args import S3_BUCKET_NAME
1719
from redisbench_admin.run.s3 import get_test_s3_bucket_path
1820
from redisbench_admin.utils.remote import extract_git_vars
@@ -34,8 +36,9 @@
3436

3537

3638
class PerfDaemon:
37-
def __init__(self):
38-
pass
39+
def __init__(self, user=None, group=None):
40+
self.user = user
41+
self.group = group
3942

4043
def main(self):
4144
app = Flask(__name__)
@@ -257,25 +260,44 @@ def profile_stop(profiler_name, pid):
257260
return json.dumps(status_dict)
258261

259262

260-
d = PerfDaemon()
261-
262-
263263
def main():
264-
global d
265264

265+
_, project_description, project_version = populate_with_poetry_data()
266+
project_name = "perf-daemon"
267+
parser = argparse.ArgumentParser(
268+
description=project_description,
269+
formatter_class=argparse.ArgumentDefaultsHelpFormatter,
270+
)
271+
if len(sys.argv) < 2:
272+
print(
273+
"A minimum of 2 arguments is required: perf-daemon <mode> <arguments>."
274+
" Use perf-daemon --help if you need further assistance."
275+
)
276+
sys.exit(1)
277+
requested_tool = sys.argv[1]
278+
# common arguments to all tools
279+
parser.add_argument("--user", default=None)
280+
parser.add_argument("--group", default=None)
281+
argv = sys.argv[2:]
282+
args = parser.parse_args(args=argv)
283+
d = PerfDaemon(args.user, args.group)
266284
def start(foreground=False):
267285
current_path = os.path.abspath(os.getcwd())
268286
print(
269-
"Starting perfdaemon. PID file {}. Daemon workdir: {}".format(
270-
PID_FILE, current_path
287+
"Starting {}. PID file {}. Daemon workdir: {}".format(
288+
project_name, PID_FILE, current_path
271289
)
272290
)
291+
if d.user is not None:
292+
print("Specifying user {}. group {}.".format(d.user, d.group))
273293
daemonize.Daemonize(
274-
app="perfdaemon",
294+
app=project_name,
275295
pid=PID_FILE,
276296
action=d.main,
277297
chdir=current_path,
278298
foreground=foreground,
299+
user=d.user,
300+
group=d.group,
279301
).start()
280302

281303
def stop():
@@ -292,19 +314,17 @@ def usage():
292314
print("usage: start|stop|restart|foreground")
293315
sys.exit(1)
294316

295-
if len(sys.argv) < 2:
296-
usage()
297-
if sys.argv[1] == "start":
317+
if requested_tool == "start":
298318
start()
299-
elif sys.argv[1] == "stop":
319+
elif requested_tool == "stop":
300320
stop()
301-
elif sys.argv[1] == "restart":
321+
elif requested_tool == "restart":
302322
stop()
303323
start()
304-
elif sys.argv[1] == "foreground":
324+
elif requested_tool == "foreground":
305325
foreground()
306326
else:
307-
sys.exit(1)
327+
usage()
308328

309329

310330
if __name__ == "__main__":

redisbench_admin/utils/redisgraph_benchmark_go.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ def setup_remote_benchmark_agent(
1515
commands = [
1616
"apt install python3-pip -y",
1717
"pip3 install redisbench-admin>=0.5.12",
18-
"/usr/local/bin/perf-daemon start",
18+
"/usr/local/bin/perf-daemon start --user root --group root",
1919
]
2020
execute_remote_commands(
2121
client_public_ip, username, private_key, commands, client_ssh_port

0 commit comments

Comments
 (0)