summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJosip Sokcevic <sokcevic@google.com>2024-11-22 00:02:40 +0000
committerLUCI <gerrit-scoped@luci-project-accounts.iam.gserviceaccount.com>2024-11-22 18:39:41 +0000
commitfafd1ec23e8001dc7bdf87f2aa1f59051e33224d (patch)
tree4fb04d40f9f0c389cf7574228f7390653698df78
parentb1613d741e47d4f2a1d4c184daec73c110425385 (diff)
downloadgit-repo-fafd1ec23e8001dc7bdf87f2aa1f59051e33224d.tar.gz
Fix event log command event hierarchy.
command should be cmd_name, to match what git is emitting. This also fixes arguments, so that only relevant arguments are passed instead of the entire sys.args, which will contain wrapper information Change-Id: Id436accfff511292ec2c56798fffb2306dda38fc Reviewed-on: https://gerrit-review.googlesource.com/c/git-repo/+/443741 Commit-Queue: Josip Sokcevic <sokcevic@google.com> Reviewed-by: Gavin Mak <gavinmak@google.com> Tested-by: Josip Sokcevic <sokcevic@google.com>
-rw-r--r--git_trace2_event_log_base.py10
-rwxr-xr-xmain.py2
-rw-r--r--tests/test_git_trace2_event_log.py22
3 files changed, 16 insertions, 18 deletions
diff --git a/git_trace2_event_log_base.py b/git_trace2_event_log_base.py
index 2f1aac76..56db7a8f 100644
--- a/git_trace2_event_log_base.py
+++ b/git_trace2_event_log_base.py
@@ -130,10 +130,10 @@ class BaseEventLog:
130 "time": datetime.datetime.now(datetime.timezone.utc).isoformat(), 130 "time": datetime.datetime.now(datetime.timezone.utc).isoformat(),
131 } 131 }
132 132
133 def StartEvent(self): 133 def StartEvent(self, argv):
134 """Append a 'start' event to the current log.""" 134 """Append a 'start' event to the current log."""
135 start_event = self._CreateEventDict("start") 135 start_event = self._CreateEventDict("start")
136 start_event["argv"] = sys.argv 136 start_event["argv"] = argv
137 self._log.append(start_event) 137 self._log.append(start_event)
138 138
139 def ExitEvent(self, result): 139 def ExitEvent(self, result):
@@ -159,9 +159,11 @@ class BaseEventLog:
159 name: Name of the primary command (ex: repo, git) 159 name: Name of the primary command (ex: repo, git)
160 subcommands: List of the sub-commands (ex: version, init, sync) 160 subcommands: List of the sub-commands (ex: version, init, sync)
161 """ 161 """
162 command_event = self._CreateEventDict("command") 162 command_event = self._CreateEventDict("cmd_name")
163 name = f"{name}-"
164 name += "-".join(subcommands)
163 command_event["name"] = name 165 command_event["name"] = name
164 command_event["subcommands"] = subcommands 166 command_event["hierarchy"] = name
165 self._log.append(command_event) 167 self._log.append(command_event)
166 168
167 def LogConfigEvents(self, config, event_dict_name): 169 def LogConfigEvents(self, config, event_dict_name):
diff --git a/main.py b/main.py
index b00aadbd..9f415e38 100755
--- a/main.py
+++ b/main.py
@@ -357,7 +357,7 @@ class _Repo:
357 start = time.time() 357 start = time.time()
358 cmd_event = cmd.event_log.Add(name, event_log.TASK_COMMAND, start) 358 cmd_event = cmd.event_log.Add(name, event_log.TASK_COMMAND, start)
359 cmd.event_log.SetParent(cmd_event) 359 cmd.event_log.SetParent(cmd_event)
360 git_trace2_event_log.StartEvent() 360 git_trace2_event_log.StartEvent(["repo", name] + argv)
361 git_trace2_event_log.CommandEvent(name="repo", subcommands=[name]) 361 git_trace2_event_log.CommandEvent(name="repo", subcommands=[name])
362 362
363 def execute_command_helper(): 363 def execute_command_helper():
diff --git a/tests/test_git_trace2_event_log.py b/tests/test_git_trace2_event_log.py
index 4658a793..d3214887 100644
--- a/tests/test_git_trace2_event_log.py
+++ b/tests/test_git_trace2_event_log.py
@@ -150,7 +150,7 @@ class EventLogTestCase(unittest.TestCase):
150 <version event> 150 <version event>
151 <start event> 151 <start event>
152 """ 152 """
153 self._event_log_module.StartEvent() 153 self._event_log_module.StartEvent([])
154 with tempfile.TemporaryDirectory(prefix="event_log_tests") as tempdir: 154 with tempfile.TemporaryDirectory(prefix="event_log_tests") as tempdir:
155 log_path = self._event_log_module.Write(path=tempdir) 155 log_path = self._event_log_module.Write(path=tempdir)
156 self._log_data = self.readLog(log_path) 156 self._log_data = self.readLog(log_path)
@@ -213,10 +213,8 @@ class EventLogTestCase(unittest.TestCase):
213 <version event> 213 <version event>
214 <command event> 214 <command event>
215 """ 215 """
216 name = "repo"
217 subcommands = ["init" "this"]
218 self._event_log_module.CommandEvent( 216 self._event_log_module.CommandEvent(
219 name="repo", subcommands=subcommands 217 name="repo", subcommands=["init", "this"]
220 ) 218 )
221 with tempfile.TemporaryDirectory(prefix="event_log_tests") as tempdir: 219 with tempfile.TemporaryDirectory(prefix="event_log_tests") as tempdir:
222 log_path = self._event_log_module.Write(path=tempdir) 220 log_path = self._event_log_module.Write(path=tempdir)
@@ -225,12 +223,10 @@ class EventLogTestCase(unittest.TestCase):
225 self.assertEqual(len(self._log_data), 2) 223 self.assertEqual(len(self._log_data), 2)
226 command_event = self._log_data[1] 224 command_event = self._log_data[1]
227 self.verifyCommonKeys(self._log_data[0], expected_event_name="version") 225 self.verifyCommonKeys(self._log_data[0], expected_event_name="version")
228 self.verifyCommonKeys(command_event, expected_event_name="command") 226 self.verifyCommonKeys(command_event, expected_event_name="cmd_name")
229 # Check for 'command' event specific fields. 227 # Check for 'command' event specific fields.
230 self.assertIn("name", command_event) 228 self.assertIn("name", command_event)
231 self.assertIn("subcommands", command_event) 229 self.assertEqual(command_event["name"], "repo-init-this")
232 self.assertEqual(command_event["name"], name)
233 self.assertEqual(command_event["subcommands"], subcommands)
234 230
235 def test_def_params_event_repo_config(self): 231 def test_def_params_event_repo_config(self):
236 """Test 'def_params' event data outputs only repo config keys. 232 """Test 'def_params' event data outputs only repo config keys.
@@ -382,17 +378,17 @@ class EventLogTestCase(unittest.TestCase):
382 socket_path = os.path.join(tempdir, "server.sock") 378 socket_path = os.path.join(tempdir, "server.sock")
383 server_ready = threading.Condition() 379 server_ready = threading.Condition()
384 # Start "server" listening on Unix domain socket at socket_path. 380 # Start "server" listening on Unix domain socket at socket_path.
381 server_thread = threading.Thread(
382 target=serverLoggingThread,
383 args=(socket_path, server_ready, received_traces),
384 )
385 try: 385 try:
386 server_thread = threading.Thread(
387 target=serverLoggingThread,
388 args=(socket_path, server_ready, received_traces),
389 )
390 server_thread.start() 386 server_thread.start()
391 387
392 with server_ready: 388 with server_ready:
393 server_ready.wait(timeout=120) 389 server_ready.wait(timeout=120)
394 390
395 self._event_log_module.StartEvent() 391 self._event_log_module.StartEvent([])
396 path = self._event_log_module.Write( 392 path = self._event_log_module.Write(
397 path=f"af_unix:{socket_path}" 393 path=f"af_unix:{socket_path}"
398 ) 394 )