summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Zhuoyao Zhang <zhuoyao@google.com> 2024-10-17 17:40:34 +0000
committer Zhuoyao Zhang <zhuoyao@google.com> 2024-10-24 16:36:10 +0000
commit7f22db8fc1fcff100e6916d4e7b09149c8b6b6b1 (patch)
treefd4cb20a9cd67e11d2a2f2bfb6cc2f40f2cf54d5
parentba64f31b5698b3c7440f1b6f4df1bfb202a208b0 (diff)
Support --dry_run option in edit monitor
If --dry_run option is set, edit monitor runs without actually sending the edit logs to clearcut Test: atest edit_monitor_test bug: 365617369 Change-Id: I793d9b0a2e16ffa70fe03d1d3f53d676a1d86cf3
-rw-r--r--tools/edit_monitor/edit_monitor.py9
-rw-r--r--tools/edit_monitor/edit_monitor_test.py2
-rw-r--r--tools/edit_monitor/main.py11
3 files changed, 19 insertions, 3 deletions
diff --git a/tools/edit_monitor/edit_monitor.py b/tools/edit_monitor/edit_monitor.py
index 31115d4cb4..ab528e870f 100644
--- a/tools/edit_monitor/edit_monitor.py
+++ b/tools/edit_monitor/edit_monitor.py
@@ -43,6 +43,7 @@ class ClearcutEventHandler(PatternMatchingEventHandler):
path: str,
flush_interval_sec: int,
single_events_size_threshold: int,
+ is_dry_run: bool = False,
cclient: clearcut_client.Clearcut | None = None,
):
@@ -50,6 +51,7 @@ class ClearcutEventHandler(PatternMatchingEventHandler):
self.root_monitoring_path = path
self.flush_interval_sec = flush_interval_sec
self.single_events_size_threshold = single_events_size_threshold
+ self.is_dry_run = is_dry_run
self.cclient = cclient or clearcut_client.Clearcut(LOG_SOURCE)
self.user_name = getpass.getuser()
@@ -164,6 +166,10 @@ class ClearcutEventHandler(PatternMatchingEventHandler):
)
edit_events = [(aggregated_event_proto, aggregated_event_time)]
+ if self.is_dry_run:
+ logging.info("Sent %d edit events in dry run.", len(edit_events))
+ return
+
for event_proto, event_time in edit_events:
log_event = clientanalytics_pb2.LogEvent(
event_time_ms=int(event_time * 1000),
@@ -176,6 +182,7 @@ class ClearcutEventHandler(PatternMatchingEventHandler):
def start(
path: str,
+ is_dry_run: bool = False,
flush_interval_sec: int = DEFAULT_FLUSH_INTERVAL_SECONDS,
single_events_size_threshold: int = DEFAULT_SINGLE_EVENTS_SIZE_THRESHOLD,
cclient: clearcut_client.Clearcut | None = None,
@@ -192,7 +199,7 @@ def start(
conn: the sender of the pipe to communicate with the deamon manager.
"""
event_handler = ClearcutEventHandler(
- path, flush_interval_sec, single_events_size_threshold, cclient)
+ path, flush_interval_sec, single_events_size_threshold, is_dry_run, cclient)
observer = Observer()
logging.info("Starting observer on path %s.", path)
diff --git a/tools/edit_monitor/edit_monitor_test.py b/tools/edit_monitor/edit_monitor_test.py
index 4ec3284e6a..64a3871b22 100644
--- a/tools/edit_monitor/edit_monitor_test.py
+++ b/tools/edit_monitor/edit_monitor_test.py
@@ -253,7 +253,7 @@ class EditMonitorTest(unittest.TestCase):
# Start edit monitor in a subprocess.
p = multiprocessing.Process(
target=edit_monitor.start,
- args=(str(self.root_monitoring_path.resolve()), 0.5, 5, cclient, sender),
+ args=(str(self.root_monitoring_path.resolve()), False, 0.5, 5, cclient, sender),
)
p.daemon = True
p.start()
diff --git a/tools/edit_monitor/main.py b/tools/edit_monitor/main.py
index 9086ac839a..6af421b1f3 100644
--- a/tools/edit_monitor/main.py
+++ b/tools/edit_monitor/main.py
@@ -42,6 +42,12 @@ def create_arg_parser():
)
parser.add_argument(
+ '--dry_run',
+ action='store_true',
+ help='Dry run the edit monitor. This starts the edit monitor process without actually send the edit logs to clearcut.',
+ )
+
+ parser.add_argument(
'--force_cleanup',
action='store_true',
help=(
@@ -76,11 +82,14 @@ def term_signal_handler(_signal_number, _frame):
def main(argv: list[str]):
args = create_arg_parser().parse_args(argv[1:])
+ if args.dry_run:
+ logging.info('This is a dry run.')
dm = daemon_manager.DaemonManager(
binary_path=argv[0],
daemon_target=edit_monitor.start,
- daemon_args=(args.path,),
+ daemon_args=(args.path, args.dry_run),
)
+
if args.force_cleanup:
dm.cleanup()