Пример #1
0
    def get_values(self):
        def process_output(myself, log: Logger, line: str, num: int):
            if '[deprecation]' in line:
                self.hit(re.sub(r'(.*java:)\[\d+,\d+\] \[deprecation\]( .*)', r'\1\2',
                    re.sub(r'\s*\[WARNING\]\s+' , '', line.replace(os.getcwd() + '/', '').replace('[WARNING]', ''))
                ))
                if self.log.is_trace():
                    self.add_to_stats(line)
                return self.verbose or self.log.is_trace()

            return line.startswith("[INFO] Building Atlassian") or line.startswith('[ERROR]') or self.log.is_trace()

        maven = MavenCallable()
        maven.phase('clean').phase('test-compile').profile('jira-metrics').profile('ondemand')
        maven.property('jira.exclude.bundled.plugins')
        maven.option('--no-plugin-updates')
        if self.log.is_trace():
            maven.option('-X')
        self.log.info('Compiling workspace to find deprecated methods usage...')
        maven.process_output = types.MethodType(process_output, maven)

        super().pre_files_scan('irrelevant')
        maven_return_code = self.run_maven(maven)
        super().post_files_scan('irrelevant')

        if maven_return_code != MavenCallable.success:
            raise MavenExecutionException

        self.log.trace(
            json.JSONEncoder(indent=True).encode(sorted(self.deprecated_stats.items(), key=operator.itemgetter(1))))
        self.log.info('Compilation finished.')
        return super().get_values() if maven.returncode == 0 else {}
Пример #2
0
def build_runner(args):
    maven = MavenCallable(args)
    maven.phase('test')
    maven.properties.update({'maven.test.unit.skip': 'true',
                             'maven.test.func.skip': 'true',
                             'maven.test.selenium.skip': 'true'})
    return maven
Пример #3
0
    def __third_party_licensing(self, args):

        licensing_maven_executable = MavenCallable(args)
        licensing_maven_executable.phase('verify').phases.extend(['license:bom', 'license:download'])
        licensing_maven_executable.profiles.extend(['distribution', '!build-source-distribution'])
        licensing_maven_executable.property('maven.test.skip', 'true')
        return licensing_maven_executable
Пример #4
0
    def define_parser(self, parser):
        parser.add_argument(
            '-t',
            '--traceback',
            type=int,
            default=6,
            help=
            'Number of tests (including the failed one) in the run batch (for debugging tests that cause '
            'corruption to instance state).',
            dest='traceback')
        parser.add_argument('-n',
                            '--build-number',
                            type=int,
                            default=0,
                            help='Build number, or 0 for latest',
                            dest='build_number')
        parser.add_argument('type',
                            choices=['func', 'wd'],
                            default='func',
                            help='webdriver or func tests')

        self.sample_usage(
            parser,
            'Find out about failures on latest JBAC func/webdriver test build:',
            ['./jmake ci investigate [func wd]'])
        self.sample_usage(
            parser,
            'Find out about failures on specific build number on JBAC:',
            ['./jmake ci investigate [func wd] --build-number 1234'])
        self.sample_usage(parser,
                          'Replay the failures locally (see more help):',
                          ['./jmake ci replay --help'])

        MavenCallable.add_maven_switches(parser)
Пример #5
0
 def define_parser(self, parser):
     MavenCallable.add_maven_switches(parser)
     parser.add_argument('-nobp',
                         '--skip_bundled_plugins',
                         action='store_true',
                         help='checking bundled plugins will be skipped.',
                         dest='skip_bp')
Пример #6
0
 def define_parser(self, parser):
     MavenCallable.add_maven_switches(parser)
     parser.add_argument(
         '-pc',
         '--pretty-charts',
         action='store_true',
         help='installs those pretty charts your boss likes.')
Пример #7
0
    def __call__(self, args, executor):
        if args.with_workspace:
            executor.append(WorkspaceValidator())
        maven = MavenCallable(args)
        maven.phase('clean').profile('jmake')
        executor.append(maven)

        if args.jirahome:
            self.remove_if_present(args, executor, WorkspaceLayout.JIRA_HOME)
            self.remove_if_present(args, executor,
                                   WorkspaceLayout.JIRA_OD_HOME)
            self.remove_if_present(args, executor,
                                   WorkspaceLayout.JIRA_CLUSTERED_HOME_ROOT)
            self.remove_if_present(args, executor,
                                   WorkspaceLayout.JIRA_SHARED_HOME_ROOT)
        if args.tomcat:
            if self.fileutils.file_exists(WorkspaceLayout.TOMCAT_DOWNLOAD):
                executor.append(
                    SystemCallable(args, 'rm -rf ' +
                                   WorkspaceLayout.TOMCAT_DOWNLOAD))

        if args.deep:
            executor.append(
                SystemCallable(
                    args,
                    'find {0} -type d -name target | xargs rm -rf'.format(
                        self.fileutils.get_parent_dir_path(
                        ) if args.with_workspace else '.')))
        else:
            executor.append(self.generate_jira_core_sources(args))
Пример #8
0
    def define_parser(self, parser):
        parser.add_argument(
            'replay_file',
            type=str,
            metavar='replay-file',
            help=
            'Replay file produced with jmake CI investigate, or absolute path to a custom file.'
        )
        parser.add_argument('--build-as-func',
                            action='store_true',
                            help='Force run as func test',
                            dest='force_func')
        parser.add_argument('--build-as-wd',
                            action='store_true',
                            help='Force run as wd test',
                            dest='force_wd')
        parser.add_argument(
            '-q',
            '--quick',
            action='store_true',
            help='Do not compile the tests - attempt to run only',
            dest='quick')

        self.sample_usage(
            parser,
            'Replay a test batch locally using files produced by "ci investigate" (using autocomplete):',
            ['./jmake ci replay [tab]'])
        self.sample_usage(
            parser,
            'Replay a custom prepared batch as func (webdriver) in /tmp/mybatch:',
            ['./jmake ci replay --run-as-func (--run-as-wd) /tmp/mybatch'])

        MavenCallable.add_maven_switches(parser)
        parser.autocomplete_contributor = lambda: os.listdir(
            os.sep.join(['target', 'replays']))
Пример #9
0
 def define_parser(self, parser):
     parser.add_argument('-bf',
                         '--func-batch-number',
                         type=int,
                         default=20,
                         help='Number of batches',
                         dest='func_batches')
     MavenCallable.add_maven_switches(parser)
Пример #10
0
 def define_parser(self, parser):
     MavenCallable.add_maven_switches(parser)
     parser.add_argument('template',
                         help='template you need to pick.',
                         choices=[
                             'great-success', 'morale-booster',
                             'five-years-from-now-plan', 'health-and-safety'
                         ])
Пример #11
0
    def define_parser(self, parser):
        MavenCallable.add_maven_switches(parser)

        parser.add_argument('room', help='the room to book.')
        parser.add_argument('from', help='start time.')
        parser.add_argument('till', help='finish time. obviously it will take longer so this will add extra 20 minutes')
        parser.add_argument('-f', '--force', action='store_true',
            help='cancels existing appointments in the conf room selected.')
Пример #12
0
 def define_parser(self, parser):
     MavenCallable.add_maven_switches(parser)
     parser.add_argument('deploy_host', help='host to deploy the fireball to')
     parser.add_argument('-r', '--resolve-artifacts',
                         help='the deploying script will attempt to build your ondemand webapp '
                              'in offline mode, but you local repo might not have some artifacts, like the scala maven plugin; '
                              'if you need to run this option your need to run it once - if the deployment script fails on missing artifacts.',
                         action='store_true', dest='resolve_artifacts')
Пример #13
0
 def define_parser(self, parser):
     parser.add_argument('job_name', nargs='+', help='Job names to run')
     parser.add_argument('-bf',
                         '--func-batch-number',
                         type=int,
                         default=20,
                         help='Total number of func batches',
                         dest='func_batches')
     MavenCallable.add_maven_switches(parser)
Пример #14
0
def build_runner(args):
    maven = MavenCallable(args)
    maven.phase('test')
    maven.properties.update({
        'maven.test.unit.skip': 'true',
        'maven.test.func.skip': 'true',
        'maven.test.selenium.skip': 'true'
    })
    return maven
Пример #15
0
 def test_information_about_maven_and_java_is_logged(self):
     utils = Mock().default_check_output("Maven:3.3.2\nJava home:jdk_home\n:Java version 1.2.3_123".encode())
     maven = MavenCallable(process_utils=utils)
     maven.require_mvn3()
     maven.maven_version.command(self.logger)
     self.assertIn(
         'mvn_cmd: "mvn3", mvn_ver: "3.3.2", java_ver: "1.2.3_123", java_home: "jdk_home"',
         self.logger.info.made_calls[0],
     )
Пример #16
0
 def test_information_about_maven_and_java_is_logged(self):
     utils = Mock().default_check_output(
         'Maven:3.3.2\nJava home:jdk_home\n:Java version 1.2.3_123'.encode(
         ))
     maven = MavenCallable(process_utils=utils)
     maven.require_mvn3()
     maven.maven_version.command(self.logger)
     self.assertIn(
         'mvn_cmd: "mvn3", mvn_ver: "3.3.2", java_ver: "1.2.3_123", java_home: "jdk_home"',
         self.logger.info.made_calls[0])
Пример #17
0
 def define_parser(self, parser):
     MavenCallable.add_maven_switches(parser)
     parser.add_argument('-fb', '--findbugs', action='store_true',
         help='include findbugs check (requires maven 3).')
     parser.add_argument('-vd', '--verify-deps-only', action='store_true',
         help='only verify dependencies, without running tests.', dest='vdep')
     parser.add_argument('--skip-bundled-plugins', action='store_true',
         help='skips unit tests from bundled plugins.', dest='skip_bp')
     parser.add_argument('--skip-legacy-tests', action='store_true',
         help='skips legacy (integration) unit tests.', dest='skip_legacy')
Пример #18
0
def general_func_test_runner(args, additional_options=None):
    if not additional_options: additional_options = {}
    maven = MavenCallable(args)
    maven.projects = ['jira-distribution/jira-func-tests-runner']
    maven.option('-am')
    maven.profile('distribution')
    maven.phase('verify')
    maven.properties.update(additional_options)
    maven.property('system.bamboo.agent.home', os.path.abspath(os.sep.join(['jira-distribution', 'jira-func-tests-runner', 'target'])))
    return maven
Пример #19
0
    def define_parser(self, parser):
        MavenCallable.add_maven_switches(parser)

        parser.add_argument('room', help='the room to book.')
        parser.add_argument('from', help='start time.')
        parser.add_argument(
            'till',
            help=
            'finish time. obviously it will take longer so this will add extra 20 minutes'
        )
        parser.add_argument(
            '-f',
            '--force',
            action='store_true',
            help='cancels existing appointments in the conf room selected.')
Пример #20
0
    def define_parser(self, parser):
        parser.add_argument('replay_file', type=str, metavar='replay-file',
                            help='Replay file produced with jmake CI investigate, or absolute path to a custom file.')
        parser.add_argument('--build-as-func', action='store_true', help='Force run as func test', dest='force_func')
        parser.add_argument('--build-as-wd', action='store_true', help='Force run as wd test', dest='force_wd')
        parser.add_argument('-q', '--quick', action='store_true', help='Do not compile the tests - attempt to run only',
                            dest='quick')

        self.sample_usage(parser, 'Replay a test batch locally using files produced by "ci investigate" (using autocomplete):',
                          ['./jmake ci replay [tab]'])
        self.sample_usage(parser, 'Replay a custom prepared batch as func (webdriver) in /tmp/mybatch:',
                          ['./jmake ci replay --run-as-func (--run-as-wd) /tmp/mybatch'])


        MavenCallable.add_maven_switches(parser)
        parser.autocomplete_contributor = lambda : os.listdir(os.sep.join(['target', 'replays']))
Пример #21
0
 def __call__(self, args, executor):
     maven = MavenCallable(args, process_utils=self.process_utils)
     try:
         maven.require_mvn3()
         maven.project('jira-components/jira-core').option('-am').phase('process-classes').profile('findbugs')
         if not args.skip_bp: maven.project('jira-components/jira-plugins/jira-bundled-plugins')
         executor.append(maven)
     except MavenVersionInaccessibleException as e:
         executor.append(maven.mvn3_inaccessible_msg_callable('findbugs', e))
Пример #22
0
 def __call__(self, args, executor):
     maven = MavenCallable(args, process_utils=self.process_utils)
     try:
         maven.require_mvn3()
         maven.project('jira-components/jira-core').option('-am').phase(
             'process-classes').profile('findbugs')
         if not args.skip_bp:
             maven.project(
                 'jira-components/jira-plugins/jira-bundled-plugins')
         executor.append(maven)
     except MavenVersionInaccessibleException as e:
         executor.append(maven.mvn3_inaccessible_msg_callable(
             'findbugs', e))
Пример #23
0
    def define_parser(self, parser):
        parser.add_argument('-t', '--traceback', type=int, default=6,
            help='Number of tests (including the failed one) in the run batch (for debugging tests that cause '
                 'corruption to instance state).',
            dest='traceback')
        parser.add_argument('-n', '--build-number', type=int, default=0, help='Build number, or 0 for latest',
            dest='build_number')
        parser.add_argument('type', choices=['func', 'wd'], default='func', help='webdriver or func tests')

        self.sample_usage(parser, 'Find out about failures on latest JBAC func/webdriver test build:',
                          ['./jmake ci investigate [func wd]'])
        self.sample_usage(parser, 'Find out about failures on specific build number on JBAC:',
                          ['./jmake ci investigate [func wd] --build-number 1234'])
        self.sample_usage(parser, 'Replay the failures locally (see more help):',
                          ['./jmake ci replay --help'])

        MavenCallable.add_maven_switches(parser)
Пример #24
0
def idea_templates(executor, args, fileutils=FileUtils()):

    executor.append(
        lambda logger: logger.info('Setting up code style templates...') or 0)
    executor.append(
        MavenCallable(args).project('jira-ide-support').profile('ide-setup').
        profile('idea-templates').option('-am').phase('generate-sources'))

    executor.append(process_project_local_settings(args))
Пример #25
0
def ual_int_func_test_runner(args):
    maven = MavenCallable(args)
    maven.projects = ['jira-distribution/jira-webapp-dist', 'jira-distribution/jira-integration-tests']
    maven.option('-am')
    maven.profile('distribution')
    maven.phase('verify')
    maven.properties.update({'maven.test.unit.skip': 'true',
                             'jira.security.disabled': 'true',
                             'java.awt.headless': 'true',
                             'jira.minify.skip': 'true',
                             'func.mode.plugins': 'true'})
    return maven
Пример #26
0
        def generate_jira_core_sources_closure(log: Logger):
            workspace_args = DataBean()
            workspace_args.with_workspace = args.with_workspace

            # attempt to compile jira-core in offline mode - assume jira-api is installed.
            jira_core_gen_src = MavenCallable(workspace_args).phase('generate-sources').skip_tests().project('jira-components/jira-core').option('-o')
            jira_core_gen_src(log)
            if jira_core_gen_src.returncode == Callable.success:
                return jira_core_gen_src.returncode
            else:
                # something failed: maybe jira-api was not actually installed? fix this:
                log.warn('Generate sources failed for jira-core. Will attempt to compile and install jira-api before giving up.')
                jira_api_install = MavenCallable(workspace_args).phase('install').skip_tests().project('jira-components/jira-api')
                jira_api_install(log)
                if jira_api_install.returncode != Callable.success:
                    return jira_api_install.returncode
                jira_core_gen_src.returncode = None
                jira_core_gen_src(log)
                return jira_core_gen_src.returncode
Пример #27
0
    def define_parser(self, parser):
        MavenCallable.add_maven_switches(parser)
        parser.add_argument(
            "--skip-idea-templates",
            action="store_true",
            help="installs the code style and comment " "templates into your IDEA config directory (global).",
            dest="skip_idea_templates",
        )
        parser.add_argument(
            "--skip-compiler", action="store_true", help="updates IDEA compiler settings.", dest="skip_compiler"
        )
        parser.add_argument(
            "--skip-run-configurations",
            action="store_true",
            help="injects JIRA run configurations " "into your workspace.",
            dest="skip_run_configurations",
        )
        parser.add_argument(
            "--skip-target-exclusions",
            action="store_true",
            help="excludes targets from ondemand and distribution projects ",
            dest="skip_target_exclusions",
        )
        parser.add_argument(
            "--skip-jmake-module",
            action="store_true",
            help="sets up jmake development module.",
            dest="skip_jmake_module",
        )
        parser.add_argument(
            "--skip-dev-profiles",
            action="store_true",
            help="enables development profiles in IDEA.",
            dest="skip_dev_profiles",
        )

        parser.add_argument(
            "-f",
            "--force",
            action="store_true",
            help="jmake will not blindly rewrite stuff " "in your workspace, unless you really want to.",
            dest="force",
        )
Пример #28
0
    def __call__(self, args, executor):
        maven = MavenCallable(args)
        maven.project('jira-distribution/jira-standalone-distribution').option('-am')
        maven.phase('package').profile('distribution')
        maven.property('maven.test.unit.skip', 'true').property('maven.test.func.skip', 'true').property(
            'maven.test.selenium.skip', 'true')
        executor.append(maven)

        executor.append(SystemCallable(args, 'bin/unpackStandalone' + (' run' if args.run else '')))
Пример #29
0
    def __call__(self, args, executor):
        maven = MavenCallable(args)
        maven.project('jira-distribution/jira-standalone-distribution').option(
            '-am')
        maven.phase('package').profile('distribution')
        maven.property('maven.test.unit.skip', 'true').property(
            'maven.test.func.skip',
            'true').property('maven.test.selenium.skip', 'true')
        executor.append(maven)

        executor.append(
            SystemCallable(
                args, 'bin/unpackStandalone' + (' run' if args.run else '')))
Пример #30
0
    def __call__(self, args, executor):
        executor.append(ensure_project_was_opened)
        if args.mvn_clean:
            executor.append(exit_idea)
            executor.append(process_clean)
        if not args.skip_idea_templates: idea_templates(executor, args)
        if not args.skip_compiler:
            executor.append(process_compiler_settings(args))
        if not args.skip_run_configurations:
            executor.append(process_run_configs(args))
        if not args.skip_target_exclusions:
            executor.append(process_target_exclusions(args))
        if not args.skip_jmake_module:
            executor.append(process_jmake_module(args))
        if not args.skip_dev_profiles: executor.append(process_dev_profiles())

        executor.append(MavenCallable().phase('install').skip_tests().project(
            'jira-components/jira-api').option('-am'))
        executor.append(MavenCallable().phase('generate-sources').project(
            'jira-components/jira-core'))
Пример #31
0
def webdriver_test_runner(args):
    maven = MavenCallable(args)
    maven.projects = ['jira-webdriver-tests']
    maven.option('-am')
    maven.profile('jmake-webdriver-tests')
    maven.phase('test')
    maven.properties.update({'failIfNoTests': 'false',
                             'maven.test.unit.skip': 'true',
                             'system.bamboo.agent.home': os.path.abspath(os.sep.join(['jira-distribution', 'jira-webdriver-tests-runner', 'target']))
    })
    if args.tests is not None:
        maven.properties.update({'test': args.tests})
    return maven
Пример #32
0
def ual_int_func_test_runner(args):
    maven = MavenCallable(args)
    maven.projects = [
        'jira-distribution/jira-webapp-dist',
        'jira-distribution/jira-integration-tests'
    ]
    maven.option('-am')
    maven.profile('distribution')
    maven.phase('verify')
    maven.properties.update({
        'maven.test.unit.skip': 'true',
        'jira.security.disabled': 'true',
        'java.awt.headless': 'true',
        'jira.minify.skip': 'true',
        'func.mode.plugins': 'true'
    })
    return maven
Пример #33
0
    def __call__(self, args, executor):
        if args.with_workspace:
            executor.append(WorkspaceValidator())
        maven = MavenCallable(args)
        maven.phase('clean').profile('jmake')
        executor.append(maven)

        if args.jirahome:
            self.remove_if_present(args, executor, WorkspaceLayout.JIRA_HOME)
            self.remove_if_present(args, executor, WorkspaceLayout.JIRA_OD_HOME)
            self.remove_if_present(args, executor, WorkspaceLayout.JIRA_CLUSTERED_HOME_ROOT)
            self.remove_if_present(args, executor, WorkspaceLayout.JIRA_SHARED_HOME_ROOT)
        if args.tomcat:
            if self.fileutils.file_exists(WorkspaceLayout.TOMCAT_DOWNLOAD):
                executor.append(SystemCallable(args, 'rm -rf ' + WorkspaceLayout.TOMCAT_DOWNLOAD))

        if args.deep:
            executor.append(SystemCallable(args, 'find {0} -type d -name target | xargs rm -rf'
                    .format(self.fileutils.get_parent_dir_path() if args.with_workspace else '.')))
        else:
            executor.append(self.generate_jira_core_sources(args))
Пример #34
0
    def __call__(self, args, executor):
        maven = MavenCallable(args)
        try:
            maven.require_mvn3()
            maven.project('jira-components/jira-api').option('-am').phase(
                'verify').property('performApiCheck')
            executor.append(maven)

        except MavenVersionInaccessibleException as e:
            executor.append(
                maven.mvn3_inaccessible_msg_callable('api-check', e))
Пример #35
0
    def __third_party_licensing(self, args):

        licensing_maven_executable = MavenCallable(args)
        licensing_maven_executable.phase('verify').phases.extend(
            ['license:bom', 'license:download'])
        licensing_maven_executable.profiles.extend(
            ['distribution', '!build-source-distribution'])
        licensing_maven_executable.property('maven.test.skip', 'true')
        return licensing_maven_executable
Пример #36
0
    def define_parser(self, parser):
        MavenCallable.add_maven_switches(parser)
        parser.add_argument(
            '--skip-idea-templates',
            action='store_true',
            help='installs the code style and comment '
            'templates into your IDEA config directory (global).',
            dest='skip_idea_templates')
        parser.add_argument('--skip-compiler',
                            action='store_true',
                            help='updates IDEA compiler settings.',
                            dest='skip_compiler')
        parser.add_argument('--skip-run-configurations',
                            action='store_true',
                            help='injects JIRA run configurations '
                            'into your workspace.',
                            dest='skip_run_configurations')
        parser.add_argument(
            '--skip-target-exclusions',
            action='store_true',
            help='excludes targets from ondemand and distribution projects ',
            dest='skip_target_exclusions')
        parser.add_argument('--skip-jmake-module',
                            action='store_true',
                            help='sets up jmake development module.',
                            dest='skip_jmake_module')
        parser.add_argument('--skip-dev-profiles',
                            action='store_true',
                            help='enables development profiles in IDEA.',
                            dest='skip_dev_profiles')

        parser.add_argument('-f',
                            '--force',
                            action='store_true',
                            help='jmake will not blindly rewrite stuff '
                            'in your workspace, unless you really want to.',
                            dest='force')
Пример #37
0
    def __call__(self, args, executor):
        maven = MavenCallable(args)
        try:
            maven.require_mvn3()
            maven.project('jira-components/jira-api').option('-am').phase('verify').property('performApiCheck')
            executor.append(maven)

        except MavenVersionInaccessibleException as e:
            executor.append(maven.mvn3_inaccessible_msg_callable('api-check', e))
Пример #38
0
def webdriver_test_runner(args):
    maven = MavenCallable(args)
    maven.projects = ['jira-webdriver-tests']
    maven.option('-am')
    maven.profile('jmake-webdriver-tests')
    maven.phase('test')
    maven.properties.update({
        'failIfNoTests':
        'false',
        'maven.test.unit.skip':
        'true',
        'system.bamboo.agent.home':
        os.path.abspath(
            os.sep.join(
                ['jira-distribution', 'jira-webdriver-tests-runner',
                 'target']))
    })
    if args.tests is not None:
        maven.properties.update({'test': args.tests})
    return maven
Пример #39
0
    def __call__(self, logger):

        try:
            MavenCallable().require_mvn3()
        except MavenVersionInaccessibleException:
            if os.getenv('JMAKE_STFU') is None:
                logger.warn('jmake was not able to find your Maven 3. But it tried:')
                logger.warn(' * M3_HOME is not set,')
                logger.warn(' * running mvn3 just like that did not work - if you have Maven 3 installed, you might also create a symlink on your path called "mvn3" for jmake to find.')
                logger.warn(' * running mvn just like that ended up in maven 2 or failed (however it is NOT recommended to put mvn 3 on your path as "mvn")')
                logger.warn('Download and install latest maven 3.0.x (3.0.5 or later, but not 3.1.y):')
                logger.warn(' * manually from http://maven.apache.org/download.cgi, then set your M3_HOME acordingly.')


        return Callable.success
Пример #40
0
        def generate_jira_core_sources_closure(log: Logger):
            workspace_args = DataBean()
            workspace_args.with_workspace = args.with_workspace

            # attempt to compile jira-core in offline mode - assume jira-api is installed.
            jira_core_gen_src = MavenCallable(workspace_args).phase(
                'generate-sources').skip_tests().project(
                    'jira-components/jira-core').option('-o')
            jira_core_gen_src(log)
            if jira_core_gen_src.returncode == Callable.success:
                return jira_core_gen_src.returncode
            else:
                # something failed: maybe jira-api was not actually installed? fix this:
                log.warn(
                    'Generate sources failed for jira-core. Will attempt to compile and install jira-api before giving up.'
                )
                jira_api_install = MavenCallable(workspace_args).phase(
                    'install').skip_tests().project('jira-components/jira-api')
                jira_api_install(log)
                if jira_api_install.returncode != Callable.success:
                    return jira_api_install.returncode
                jira_core_gen_src.returncode = None
                jira_core_gen_src(log)
                return jira_core_gen_src.returncode
Пример #41
0
    def __call__(self, args, executor):
        maven = MavenCallable(args)
        maven.project('jira-distribution/jira-webdriver-tests-runner').option('-am')
        maven.phase('integration-test').profile('distribution')
        maven.property('maven.test.unit.skip', 'true').property('maven.test.func.skip', 'true').property(
            'jira.security.disabled', 'true').property('dev.mode.plugins').property(
            'jira.functest.single.testclass', 'com.atlassian.jira.webtest.webdriver.qunit.TestQunit').property(
            'jira.minify.skip', 'true').property('func.mode.plugins').property('java.awt.headless', 'true')

        self.surefire.set_roots(maven.projects)
        executor.append(self.surefire.clean_executable())
        executor.append(maven)
        # because the qunit suite contains just the runner it will always be successful, unless the tests
        # cannot be ran. Thus, the report has to provide exit code (while it should run in post_commands):
        executor.append(self.surefire.report_executable())
Пример #42
0
    def __call__(self, args, executor):
        maven = MavenCallable(args)
        maven.project('jira-distribution/jira-webdriver-tests-runner').option(
            '-am')
        maven.phase('integration-test').profile('distribution')
        maven.property('maven.test.unit.skip', 'true').property(
            'maven.test.func.skip', 'true').property(
                'jira.security.disabled',
                'true').property('dev.mode.plugins').property(
                    'jira.functest.single.testclass',
                    'com.atlassian.jira.webtest.webdriver.qunit.TestQunit'
                ).property('jira.minify.skip',
                           'true').property('func.mode.plugins').property(
                               'java.awt.headless', 'true')

        self.surefire.set_roots(maven.projects)
        executor.append(self.surefire.clean_executable())
        executor.append(maven)
        # because the qunit suite contains just the runner it will always be successful, unless the tests
        # cannot be ran. Thus, the report has to provide exit code (while it should run in post_commands):
        executor.append(self.surefire.report_executable())
Пример #43
0
 def define_parser(self, parser):
     MavenCallable.add_maven_switches(parser)
Пример #44
0
 def __call__(self, args, executor):
     maven = MavenCallable(args)
     maven.phase('install')
     maven.property('skipTests', 'true')
     executor.append(maven)
Пример #45
0
    def __call__(self, args, executor):

        if self.fileutils.file_exists(dependencies_tmp):
            executor.append(lambda logger: self.fileutils.remove(dependencies_tmp) or 0)

        maven = MavenCallable(args, process_utils=self.process_utils)
        maven.projects = ['jira-components/jira-tests-parent/jira-tests',
                          'jira-components/jira-tests-parent/jira-tests-unit']
        if not args.skip_legacy:
            maven.project('jira-components/jira-tests-parent/jira-tests-legacy')
        maven.option('-am')
        maven.phase('compile' if args.vdep else 'test')
        maven.property('verifyDependencies').property('jira.minify.skip', 'true').property('performApiCheck').property(
            'ajEnforcer')

        maven.property('maven.test.func.skip', 'true').property('maven.test.selenium.skip', 'true')
        if not args.skip_bp:
            report_projects = ['jira-components/jira-tests-parent',
                               'jira-func-tests',
                               'jira-components/jira-plugins']
            maven.project('jira-components/jira-plugins/jira-bundled-plugins')
        else:
            report_projects = ['jira-components/jira-tests-parent',
                               'jira-func-tests']
            maven.project('jira-func-tests')

        try:
            maven.require_mvn3().can_run_in_parallel()
        except MavenVersionInaccessibleException:
            pass

        self.surefire.set_roots(report_projects)
        executor.append(self.surefire.clean_executable())

        if args.findbugs:
            try:
                executor.append(maven.phase('test').profile('findbugs').require_mvn3())
            except MavenVersionInaccessibleException as e:
                executor.append(maven.mvn3_inaccessible_msg_callable('unit tests with findbugs', e))
        else:
            if args.vdep:
                executor.append(maven.phase('compile'))
            else:
                executor.append(maven.phase('test').option('--fail-at-end'))
                executor.append_post(self.surefire.report_executable())

        executor.append_post(DependenciesReport(args))
Пример #46
0
    def process_functest(args, executor, fileutils=FileUtils()):

        #probably this can be improved somehow - ask Min'an.

        runner_dir = os.sep.join(
            ['jira-distribution', 'jira-func-tests-runner', 'target'])
        if not args.quick:
            maven = MavenCallable()
            maven.phase('package').project(
                'jira-distribution/jira-func-tests-runner').option('-am')
            maven.profile('distribution')
            maven.property('maven.test.skip', 'true').property(
                'jira.minify.skip', 'true').property('func.mode.plugins')
            maven.property('reference.plugins').property(
                'jira.func.tests.runner.create').property(
                    'obrRepository', 'NONE')
            maven.property('skipSources')
            executor.append(maven.can_run_in_parallel())

            unpack_script = os.path.abspath(
                os.sep.join([
                    'jira-distribution', 'jira-func-tests-runner', 'src',
                    'main', 'dist', 'prepare-runner.sh'
                ]))
            executor.append(SystemCallable(args, unpack_script,
                                           cwd=runner_dir))

        maven = MavenCallable(path=runner_dir)
        maven.phase('verify').profile('hallelujahClient').property(
            'jira.security.disabled', 'true')

        if fileutils.file_exists(args.replay_file):
            replay_file = os.path.abspath(args.replay_file)
        else:
            replay_file = os.path.abspath(
                os.sep.join(['target', 'replays', args.replay_file]))
        maven.property('hallelujah.local.test.list', replay_file)

        maven.property('system.bamboo.agent.home', os.path.abspath(runner_dir))
        executor.append(maven)
Пример #47
0
 def define_parser(self, parser):
     MavenCallable.add_maven_switches(parser)
Пример #48
0
 def define_parser(self, parser):
     MavenCallable.add_maven_switches(parser)
     parser.add_argument('template', help='template you need to pick.', choices=['great-success', 'morale-booster',
                                                                                 'five-years-from-now-plan',
                                                                                 'health-and-safety'])
Пример #49
0
    def define_parser(self, parser):
        parser.add_argument('-p', '--jira-port', type=int, default=DEFAULT_HTTP_PORT, help='The tomcat port for JIRA', dest='port')
        parser.add_argument('-sp', '--jira-shutdown-port', default='auto',
                            help='The tomcat shutdown port for JIRA (default is "auto" and will be scanned for, starting from %s)' % DEFAULT_SHUTDOWN_PORT,
                            dest='sh_port')
        parser.add_argument('-j', '--jira-home', default=WorkspaceLayout.JIRA_HOME_DEFAULT_MARKER,
                            help='JIRA home directory',
                            dest='jira_home')
        parser.add_argument('-c', '--jira-context', default='/jira', help='JIRA web application context',
                            dest='jira_context')
        parser.add_argument('-w', '--jira-webapp', default=WorkspaceLayout.JIRA_WEBAPP,
                            help='JIRA web application directory', dest='jira_webapp_dir')
        parser.add_argument('-d', '--tomcat-dir', default=WorkspaceLayout.TOMCAT_DOWNLOAD,
                            help='Directory where tomcat will be downloaded', dest='tomcat_dir')
        parser.add_argument('-v', '--tomcat-version', default=WorkspaceBuilder.TOMCAT7,
                            choices=[WorkspaceBuilder.TOMCAT6, WorkspaceBuilder.TOMCAT7],
                            help='Version of tomcat to start',
                            dest='tomcat_version')
        parser.add_argument('-bp', '--bundled-plugins', action='store_true',
                            help='If this flag is set bundled plugins will be added to jira exploded directory and used',
                            dest='bundled_plugins')
        parser.add_argument('-bw', '--build-war', action='store_true',
                            help='If this flag is set jira.war will be produced otherwise only exploded directory is assembled',
                            dest='build_war')
        parser.add_argument('-ws', '--with-workspace', action='store_true',
                            help='If this flag is set - build in workspace mode. '
                                 'Maven will be run in parent of jira directory. '
                                 'It is assumed there is some pom.xml there.',
                            dest='with_workspace')
        parser.add_argument('-as', '--attach-sources', action='store_true',
                            help='If this flag is set build will generate sources jar', dest='attach_sources')
        parser.add_argument('-jr', '--jrebel', action='store_true',
                            help='If this flag is set tomcat will be started with jrebel agent', dest='jrebel')
        parser.add_argument('-rp', '--ref-plugin', action='store_true',
                            help='If this flag is set reference plugins will be deployed with JIRA', dest='ref_plugins')
        parser.add_argument('-tp', '--third-party-licensing', action='store_true',
                            help='If this flag is set, the LGPL list in the about page will be created',
                            dest='third_party_licensing')
        parser.add_argument('-in', '--instance-name',
                            help='this will name your instance, which means you will be able to '
                                 'run and maintain multiple ones on different ports', dest='instance_name',
                            default='work')
        parser.add_argument('control', choices=['shutdown', 'restart', 'quickstart', ''], default='', nargs='?',
                            help='Controls the instance:\n' +
                                 'shutdown shuts the running instance, respects instance names.'
                                 'restart restarts the running instance.' +
                                 'quickstart starts the instance without building it.')
        parser.add_argument('--override-dev-mode', dest='override_dev_mode', action='store_true',
                            help='JIRA will be started in dev mode by default. this overrides the dev_mode setting.')
        parser.add_argument('-J', dest='extra_jvm_flags', action='append',
                            help='Pass flag directly to the tomcat JVM. ' +
                                 'Flags are appended to the end of other JVM args, so you can (for example) '
                                 'override memory settings with -J-Xmx2g .')
        parser.add_argument('--max-perm-size', dest='max_perm_size', type=str, default='384m',
                            help='Amount of PermGen memory for the tomcat process')
        parser.add_argument('--xmx', dest='xmx', type=str, default='1024m',
            help='Maximum memory setting.')

        parser.add_argument('--plugin-resources', dest='plugin_resources', type=str, default='',
            help='Add all resource sub-folders for the plugin to resources scanned for changes by JIRA')

        parser.add_argument('--disable-plugin-resources', dest='disable_plugin_resources', action='store_true',
            help='Do not use reloadable plugin resources (good for standalone-like testing)')

        parser.add_argument('--enable-mail', dest='enable_mail', action='store_true',
                            help='Start JIRA with the mail handlers enabled even if in dev mode.')
        parser.add_argument('-sh', '--setup-home', dest='setup_home', action='store_true',
                            help='Setup JIRA home directory so you can directly login as admin:admin. '
                                 'If current JIRA home directory is not empty this parameter has no effect')

        parser.add_argument('--postgres', dest='postgres', action='store_true',
                            help='Sets up JIRA with local postgresql db. See ./jmake postgres --help.')

        parser.add_argument('--mysql', dest='mysql', action='store_true',
                            help='Sets up JIRA with local mysql db. See ./jmake mysql --help.')

        parser.add_argument('--ssl', dest='ssl', action='store_true',
                            help='Sets up JIRA with ssl. You also need a key produced with java keytool. Bother lukasz w. to '
                                 'add more how-to here.')

        self.sample_usage(parser, 'To pass more than one argument with -J use:', [
            './jmake run -J-Dfoo=bar -J-Dfee=baz',
            './jmake run -J "-Dfoo=bar -Dfee=baz"'])

        self.sample_usage(parser, 'To skip the setup steps on clean jirahome using hsqldb (will not work with real db):', [
            './jmake run --setup-home',
            './jmake debug --setup-home'
        ])

        MavenCallable.add_maven_switches(parser)
Пример #50
0
    def get_tasks_to_build_jira(self, args, workspace_utils=WorkspaceUtils()):
        #for workspace build maven must be executed from parent directory
        maven = MavenCallable(args)
        maven.phase('package')

        if not args.build_war:
            maven.property('jira.do.not.prepare.war')

        maven.project('jira-components/jira-webapp').option('-am')
        maven.property('jira.home', args.layout.jira_home())

        maven.projects.extend(workspace_utils.get_workspace_projects_without_jira(args))
        self.add_plugins_maven_goals(args, maven)
        if not args.attach_sources:
            maven.property('skipSources')
        maven.skip_tests()
        if args.third_party_licensing:
            maven.profiles.extend(['third-party-licensing'])

        # return builder and the bundled plugins
        return [maven, lambda logger: self.stale_plugins.remember_plugins_profiles(maven.profiles) or 0]
Пример #51
0
 def define_parser(self, parser):
     parser.add_argument('-t', '--tests', help='Run only given webdriver tests', dest='tests')
     MavenCallable.add_maven_switches(parser)
Пример #52
0
 def define_parser(self, parser):
     MavenCallable.add_maven_switches(parser)
     parser.add_argument('-r',
                         '--run',
                         action='store_true',
                         help='runs the unpacked JIRA package.')
Пример #53
0
 def run_maven(self, maven: MavenCallable):
     self.maven_runs.append(maven)
     maven.returncode = self.return_code
     return self.return_code
Пример #54
0
    def get_tasks_to_build_jira(self, args, workspace_utils=WorkspaceUtils()):
        #for workspace build maven must be executed from parent directory
        maven = MavenCallable(args)
        maven.phase('package')

        if not args.build_war:
            maven.property('jira.do.not.prepare.war')

        maven.project('jira-components/jira-webapp').option('-am')
        maven.property('jira.home', args.layout.jira_home())

        maven.projects.extend(
            workspace_utils.get_workspace_projects_without_jira(args))
        self.add_plugins_maven_goals(args, maven)
        if not args.attach_sources:
            maven.property('skipSources')
        maven.skip_tests()
        if args.third_party_licensing:
            maven.profiles.extend(['third-party-licensing'])

        # return builder and the bundled plugins
        return [
            maven, lambda logger: self.stale_plugins.remember_plugins_profiles(
                maven.profiles) or 0
        ]
Пример #55
0
 def define_parser(self, parser):
     parser.add_argument('-bf', '--func-batch-number', type=int, default=20, help='Number of batches',
         dest='func_batches')
     MavenCallable.add_maven_switches(parser)
Пример #56
0
 def define_parser(self, parser):
     parser.add_argument('job_name', nargs='+', help='Job names to run')
     parser.add_argument('-bf', '--func-batch-number', type=int, default=20, help='Total number of func batches',
         dest='func_batches')
     MavenCallable.add_maven_switches(parser)
Пример #57
0
 def define_parser(self, parser):
     parser.add_argument('test_class', nargs='+', help='Test class to run')
     MavenCallable.add_maven_switches(parser)
Пример #58
0
 def define_parser(self, parser):
     MavenCallable.add_maven_switches(parser)
     parser.add_argument('-r', '--run', action='store_true', help='runs the unpacked JIRA package.')
Пример #59
0
    def process_webdriver(args, executor, fileutils=FileUtils()):

        maven = MavenCallable()
        maven.project('jira-distribution/jira-webdriver-tests-runner').option(
            '-am')
        maven.phase('verify').profile('hallelujahClient').profile(
            'distribution')
        maven.property('maven.test.unit.skip', 'true')

        if fileutils.file_exists(args.replay_file):
            replay_file = os.path.abspath(args.replay_file)
        else:
            replay_file = os.path.abspath(
                os.sep.join(['target', 'replays', args.replay_file]))
        maven.property('jira.user.extra.jvmargs',
                       '"-Dhallelujah.local.test.list=%s"' % replay_file)
        maven.property('func.mode.plugins').property('reference.plugins')

        maven.property(
            'system.bamboo.agent.home',
            os.path.abspath(
                os.sep.join([
                    'jira-distribution', 'jira-webdriver-tests-runner',
                    'target'
                ])))
        executor.append(maven.can_run_in_parallel())