Exemplo n.º 1
0
def add_arguments(parser: ArgumentParser) -> ArgumentParser:
    '''Adds new arguments to the specified ArgumentParser object.'''

    if not isinstance(parser, ArgumentParser):
        raise TypeError('Invalid parser.')

    # Download DotNet Cli
    dotnet.add_arguments(parser)

    # Restore/Build/Run functionality for MicroBenchmarks.csproj
    micro_benchmarks.add_arguments(parser)

    PRODUCT_INFO = [
        'init-tools',  # Default
        'repo',
        'cli',
        'args',
    ]
    parser.add_argument(
        '--cli-source-info',
        dest='cli_source_info',
        required=False,
        default=PRODUCT_INFO[0],
        choices=PRODUCT_INFO,
        help='Specifies where the product information comes from.',
    )
    parser.add_argument('--cli-branch',
                        dest='cli_branch',
                        required=False,
                        type=str,
                        help='Product branch.')
    parser.add_argument('--cli-commit-sha',
                        dest='cli_commit_sha',
                        required=False,
                        type=str,
                        help='Product commit sha.')
    parser.add_argument('--cli-repository',
                        dest='cli_repository',
                        required=False,
                        type=str,
                        help='Product repository.')

    def __is_valid_datetime(dt: str) -> str:
        try:
            datetime.strptime(dt, '%Y-%m-%dT%H:%M:%SZ')
            return dt
        except ValueError:
            raise ArgumentTypeError(
                'Datetime "{}" is in the wrong format.'.format(dt))

    parser.add_argument(
        '--cli-source-timestamp',
        dest='cli_source_timestamp',
        required=False,
        type=__is_valid_datetime,
        help='''Product timestamp of the soruces used to generate this build
            (date-time from RFC 3339, Section 5.6.
            "%%Y-%%m-%%dT%%H:%%M:%%SZ").''')

    parser.add_argument(
        '--upload-to-perflab-container',
        dest="upload_to_perflab_container",
        required=False,
        help="Causes results files to be uploaded to perf container",
        action='store_true')

    # Generic arguments.
    parser.add_argument(
        '-q',
        '--quiet',
        required=False,
        default=False,
        action='store_true',
        help='Turns off verbosity.',
    )
    parser.add_argument(
        '--build-only',
        dest='build_only',
        required=False,
        default=False,
        action='store_true',
        help='Builds the benchmarks but does not run them.',
    )
    parser.add_argument(
        '--run-only',
        dest='run_only',
        required=False,
        default=False,
        action='store_true',
        help='Attempts to run the benchmarks without building.',
    )

    return parser
Exemplo n.º 2
0
def add_arguments(parser: ArgumentParser) -> ArgumentParser:
    '''Adds new arguments to the specified ArgumentParser object.'''

    if not isinstance(parser, ArgumentParser):
        raise TypeError('Invalid parser.')

    # Download DotNet Cli
    dotnet.add_arguments(parser)
    micro_benchmarks.add_arguments(parser)

    parser.add_argument('--channel',
                        dest='channel',
                        required=True,
                        choices=ChannelMap.get_supported_channels(),
                        type=str,
                        help='Channel to download product from')
    parser.add_argument('--no-pgo',
                        dest='pgo_status',
                        required=False,
                        action='store_const',
                        const='nopgo')
    parser.add_argument('--dynamic-pgo',
                        dest='pgo_status',
                        required=False,
                        action='store_const',
                        const='dynamicpgo')
    parser.add_argument('--full-pgo',
                        dest='pgo_status',
                        required=False,
                        action='store_const',
                        const='fullpgo')
    parser.add_argument('--branch',
                        dest='branch',
                        required=False,
                        type=str,
                        help='Product branch.')
    parser.add_argument('--commit-sha',
                        dest='commit_sha',
                        required=False,
                        type=str,
                        help='Product commit sha.')
    parser.add_argument('--repository',
                        dest='repository',
                        required=False,
                        type=str,
                        help='Product repository.')
    parser.add_argument('--queue',
                        dest='queue',
                        default='testQueue',
                        required=False,
                        type=str,
                        help='Test queue')
    parser.add_argument('--build-number',
                        dest='build_number',
                        default='1234.1',
                        required=False,
                        type=str,
                        help='Build number')

    parser.add_argument('--locale',
                        dest='locale',
                        default='en-US',
                        required=False,
                        type=str,
                        help='Locale')
    parser.add_argument('--perf-hash',
                        dest='perf_hash',
                        default='testSha',
                        required=False,
                        type=str,
                        help='Sha of the performance repo')

    parser.add_argument('--get-perf-hash',
                        dest="get_perf_hash",
                        required=False,
                        action='store_true',
                        default=False,
                        help='Discover the hash of the performance repository')

    parser.add_argument('--output-file',
                        dest='output_file',
                        required=False,
                        default=os.path.join(
                            get_tools_directory(),
                            'machine-setup' + global_extension),
                        type=str,
                        help='Filename to write the setup script to')

    parser.add_argument('--install-dir',
                        dest='install_dir',
                        required=False,
                        type=str,
                        help='Directory to install dotnet to')

    parser.add_argument('--not-in-lab',
                        dest='not_in_lab',
                        required=False,
                        action='store_true',
                        default=False,
                        help='Indicates that this is not running in perflab')

    def __is_valid_dotnet_path(dp: str) -> str:
        if not os.path.isdir(dp):
            raise ArgumentTypeError('Path {} does not exist'.format(dp))
        if not os.path.isfile(os.path.join(dp, 'dotnet')):
            raise ArgumentTypeError('Could not find dotnet in {}'.format(dp))
        return dp

    parser.add_argument('--dotnet-path',
                        dest='dotnet_path',
                        required=False,
                        type=__is_valid_dotnet_path,
                        help='Path to a custom dotnet')

    # Generic arguments.
    parser.add_argument(
        '-q',
        '--quiet',
        required=False,
        default=False,
        action='store_true',
        help='Turns off verbosity.',
    )

    parser.add_argument(
        '--build-configs',
        dest="build_configs",
        required=False,
        nargs='+',
        default=[],
        help='Configurations used in the build in key=value format')

    parser.add_argument('--maui-version',
                        dest='maui_version',
                        default='',
                        required=False,
                        type=str,
                        help='Version of Maui used to build app packages')
    return parser
Exemplo n.º 3
0
def add_arguments(parser: ArgumentParser) -> ArgumentParser:
    '''Adds new arguments to the specified ArgumentParser object.'''

    if not isinstance(parser, ArgumentParser):
        raise TypeError('Invalid parser.')

    # Download DotNet Cli
    dotnet.add_arguments(parser)
    micro_benchmarks.add_arguments(parser)

    parser.add_argument('--branch',
                        dest='branch',
                        required=False,
                        type=str,
                        help='Product branch.')
    parser.add_argument('--commit-sha',
                        dest='commit_sha',
                        required=False,
                        type=str,
                        help='Product commit sha.')
    parser.add_argument('--repository',
                        dest='repository',
                        required=False,
                        type=str,
                        help='Product repository.')
    parser.add_argument('--queue',
                        dest='queue',
                        default='testQueue',
                        required=False,
                        type=str,
                        help='Test queue')
    parser.add_argument('--build-number',
                        dest='build_number',
                        default='1234.1',
                        required=False,
                        type=str,
                        help='Build number')

    parser.add_argument('--locale',
                        dest='locale',
                        default='en-US',
                        required=False,
                        type=str,
                        help='Locale')
    parser.add_argument('--perf-hash',
                        dest='perf_hash',
                        default='testSha',
                        required=False,
                        type=str,
                        help='Sha of the performance repo')

    parser.add_argument('--get-perf-hash',
                        dest="get_perf_hash",
                        required=False,
                        action='store_true',
                        default=False,
                        help='Discover the hash of the performance repository')

    parser.add_argument('--output-file',
                        dest='output_file',
                        required=False,
                        default=os.path.join(
                            get_tools_directory(),
                            'machine-setup' + global_extension),
                        type=str,
                        help='Filename to write the setup script to')

    # Generic arguments.
    parser.add_argument(
        '-q',
        '--quiet',
        required=False,
        default=False,
        action='store_true',
        help='Turns off verbosity.',
    )

    parser.add_argument(
        '--build-configs',
        dest="build_configs",
        required=False,
        nargs='+',
        default=[],
        help='Configurations used in the build in key=value format')

    return parser
Exemplo n.º 4
0
def add_arguments(parser: ArgumentParser) -> ArgumentParser:
    '''Adds new arguments to the specified ArgumentParser object.'''

    if not isinstance(parser, ArgumentParser):
        raise TypeError('Invalid parser.')

    # Download DotNet Cli
    dotnet.add_arguments(parser)

    # Restore/Build/Run functionality for MicroBenchmarks.csproj
    micro_benchmarks.add_arguments(parser)

    # .NET Runtime Options.
    parser.add_argument(
        '--optimization-level',
        dest='optimization_level',
        required=False,
        default='tiered',
        choices=['tiered', 'full_opt', 'min_opt']
    )

    PRODUCT_INFO = [
        'init-tools',  # Default
        'repo',
        'cli',
    ]
    parser.add_argument(
        '--cli-source-info',
        dest='cli_source_info',
        required=False,
        default=PRODUCT_INFO[0],
        choices=PRODUCT_INFO,
        help='Specifies where the product information comes from.',
    )
    parser.add_argument(
        '--cli-branch',
        dest='cli_branch',
        required=False,
        type=str,
        help='Product branch.'
    )
    parser.add_argument(
        '--cli-commit-sha',
        dest='cli_commit_sha',
        required=False,
        type=str,
        help='Product commit sha.'
    )
    parser.add_argument(
        '--cli-repository',
        dest='cli_repository',
        required=False,
        type=str,
        help='Product repository.'
    )

    def __is_valid_datetime(dt: str) -> str:
        try:
            datetime.strptime(dt, '%Y-%m-%dT%H:%M:%SZ')
            return dt
        except ValueError:
            raise ArgumentTypeError(
                'Datetime "{}" is in the wrong format.'.format(dt))

    parser.add_argument(
        '--cli-source-timestamp',
        dest='cli_source_timestamp',
        required=False,
        type=__is_valid_datetime,
        help='''Product timestamp of the soruces used to generate this build
            (date-time from RFC 3339, Section 5.6.
            "%%Y-%%m-%%dT%%H:%%M:%%SZ").'''
    )

    # BenchView acquisition, and fuctionality
    parser.add_argument(
        '--generate-benchview-data',
        dest='generate_benchview_data',
        action='store_true',
        default=False,
        help='Flags indicating whether BenchView data should be generated.'
    )

    parser.add_argument(
        '--upload-to-benchview-container',
        dest='upload_to_benchview_container',
        required=False,
        type=str,
        help='Name of the Azure Storage Container to upload to.'
    )

    # TODO: Make these arguments dependent on `generate_benchview_data`?
    is_benchview_commit_name_defined = 'BenchviewCommitName' in os.environ
    default_submission_name = os.environ['BenchviewCommitName'] \
        if is_benchview_commit_name_defined else None
    parser.add_argument(
        '--benchview-submission-name',
        dest='benchview_submission_name',
        default=default_submission_name,
        required=False,
        type=str,
        help='BenchView submission name.'
    )
    parser.add_argument(
        '--benchview-run-type',
        dest='benchview_run_type',
        default='local',
        choices=['rolling', 'private', 'local'],
        type=str.lower,
        help='BenchView submission type.'
    )
    parser.add_argument(
        '--benchview-config-name',
        dest='benchview_config_name',  # Uses as default args.configuration
        required=False,
        type=str,
        help="BenchView's (user facing) configuration display name."
    )
    parser.add_argument(
        '--benchview-machinepool',
        dest='benchview_machinepool',
        default=platform.platform(),
        required=False,
        type=str,
        help="A logical name that groups test results into a single *machine*."
    )
    parser.add_argument(
        '--benchview-config',
        dest='benchview_config',
        metavar=('key', 'value'),
        action='append',
        required=False,
        nargs=2,
        help='''A configuration property defined as a {key:value} pair.
        This is used to describe the benchmark results. For example, some
        types of configurations can be: optimization level (tiered, full opt,
        min opt), configuration (debug/release), profile (on/off), etc.'''
    )

    # Generic arguments.
    parser.add_argument(
        '-q', '--quiet',
        required=False,
        default=False,
        action='store_true',
        help='Turns off verbosity.',
    )
    parser.add_argument(
        '--build-only',
        dest='build_only',
        required=False,
        default=False,
        action='store_true',
        help='Builds the benchmarks but does not run them.',
    )
    parser.add_argument(
        '--run-only',
        dest='run_only',
        required=False,
        default=False,
        action='store_true',
        help='Attempts to run the benchmarks without building.',
    )

    return parser