Exemplo n.º 1
0
 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=[],
     )
Exemplo n.º 2
0
    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)
Exemplo n.º 3
0
 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),
         ),
     )