async def test_instruments_with_partial_timings(self) -> None: self.client_mock.run_instruments = AsyncMock() template_name = "System Trace" trace_path = "trace.trace" launch_retry_timeout, terminate_timeout = ("200.0", "200.0") await cli_main(cmd_input=[ "instruments", "--output", trace_path, "--template", template_name, "--app-args", "perfLab", "--launch-retry-timeout", launch_retry_timeout, "--terminate-timeout", terminate_timeout, ]) self.client_mock.run_instruments.assert_called_once_with( stop=ANY, trace_basename="trace", template_name=template_name, app_bundle_id=None, app_environment={}, app_arguments=["perfLab"], tool_arguments=None, timings=InstrumentsTimings( launch_error_timeout=None, launch_retry_timeout=float(launch_retry_timeout), terminate_timeout=float(terminate_timeout), operation_duration=None, ), post_process_arguments=[], )
async def run_with_client(self, args: Namespace, client: Client) -> None: app_arguments = args.app_args app_environment = args.app_env # merge in special environment variables prefixed with 'IDB_' app_environment.update(get_env_with_idb_prefix()) post_process_arguments = args.post_args timings = ( InstrumentsTimings( terminate_timeout=args.terminate_timeout, launch_retry_timeout=args.launch_retry_timeout, launch_error_timeout=args.launch_error_timeout, operation_duration=args.operation_duration, ) if ( args.terminate_timeout or args.launch_retry_timeout or args.launch_error_timeout or args.operation_duration ) else None ) trace_extensions = ["trace"] trace_basename = args.output if trace_basename: if os.path.isdir(trace_basename): trace_basename = find_next_file_prefix( os.path.join(trace_basename, "trace"), trace_extensions ) else: # remove any user-specified file extension (e.g. 'foo.trace') trace_basename = os.path.splitext(trace_basename)[0] else: trace_basename = find_next_file_prefix("trace", trace_extensions) result = await client.run_instruments( stop=signal_handler_event("instruments"), trace_basename=trace_basename, template_name=args.template, app_bundle_id=args.app_bundle_id, app_environment=app_environment, app_arguments=app_arguments, tool_arguments=None, timings=timings, post_process_arguments=post_process_arguments, ) print(result)
async def test_instruments_with_all_timings(self) -> None: self.client_mock().run_instruments = AsyncMock() template_name = "System Trace" trace_path = template_name + ".trace" ( launch_error_timeout, launch_retry_timeout, terminate_timeout, operation_duration, ) = ("10.0", "200.0", "200.0", "30") await cli_main( cmd_input=[ "instruments", template_name, "--app-args", "perfLab", "--operation-duration", operation_duration, "--launch-retry-timeout", launch_retry_timeout, "--terminate-timeout", terminate_timeout, "--launch-error-timeout", launch_error_timeout, ] ) self.client_mock().run_instruments.assert_called_once_with( stop=ANY, template=template_name, app_bundle_id=None, post_process_arguments=None, trace_path=trace_path, env={}, app_args=["perfLab"], timings=InstrumentsTimings( launch_error_timeout=float(launch_error_timeout), launch_retry_timeout=float(launch_retry_timeout), terminate_timeout=float(terminate_timeout), operation_duration=float(operation_duration), ), )