diff options
| author | Josip Sokcevic <sokcevic@google.com> | 2024-11-22 00:02:40 +0000 |
|---|---|---|
| committer | LUCI <gerrit-scoped@luci-project-accounts.iam.gserviceaccount.com> | 2024-11-22 18:39:41 +0000 |
| commit | fafd1ec23e8001dc7bdf87f2aa1f59051e33224d (patch) | |
| tree | 4fb04d40f9f0c389cf7574228f7390653698df78 | |
| parent | b1613d741e47d4f2a1d4c184daec73c110425385 (diff) | |
| download | git-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.py | 10 | ||||
| -rwxr-xr-x | main.py | 2 | ||||
| -rw-r--r-- | tests/test_git_trace2_event_log.py | 22 |
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): |
| @@ -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 | ) |
