[yocto] [PATCH] qa-tools: Add suport for current format of templates

Aníbal Limón anibal.limon at linux.intel.com
Thu Feb 16 14:48:39 PST 2017


Resend it with [qa-tools] and see comments below,


On 02/16/2017 04:37 PM, jose.perez.carranza at linux.intel.com wrote:
> From: Jose Perez Carranza <jose.perez.carranza at linux.intel.com>
> 
> Currently the tempates has a format as below:
> 
> TRTEMP_<RELEASE>_<MANUAL/AUTO>_<COMPONENT>_<OPTIONAL>
> 
> Hence the logic was adapted to follow above structure and also a
> commit paramater was added to follow the format of build as follows:
> 
> RELEASE MILESTONE_rc#
> 
> Signed-off-by: Jose Perez Carranza <jose.perez.carranza at linux.intel.com>
> ---
>  testopia_update.py                  | 30 ++++++++++++++++------------
>  testopia_update/product/__init__.py | 39 +++++++++++++++++++++----------------
>  2 files changed, 40 insertions(+), 29 deletions(-)
> 
> diff --git a/testopia_update.py b/testopia_update.py
> index 249d163..af281c9 100755
> --- a/testopia_update.py
> +++ b/testopia_update.py
> @@ -15,7 +15,7 @@ DEFAULT_STORE_LOCATION = "/tmp/testopia_update"
>  
>  ACTIONS = ('create', 'update')
>  BRANCHES = ('master', 'jethro', 'dizzy', 'daisy', 'noexists')
> -CATEGORIES = ('Full pass', 'Weekly')
> +CATEGORIES = ('AUTO', 'MANUAL')
>  
>  class Options(object):
>      pass
> @@ -60,6 +60,9 @@ def get_args():
>      parser.add_argument('--project-date', required=False,
>          dest="project_date", help='SCM version/revision date of the project.')
>  
> +    parser.add_argument('--commit', required=False,
> +        dest="commit", help='Poky commit')
> +
>      parser.add_argument('--results-log', required=False,
>          dest="results_log", help='Results log.')
>  
> @@ -68,6 +71,7 @@ def get_args():
>      parser.add_argument('--debug', required=False, action="store_true",
>          dest="debug", default=False, help='Enable debug mode.')
>  
> +
>      return parser.parse_args()
>  
>  if __name__ == '__main__':
> @@ -86,8 +90,8 @@ if __name__ == '__main__':
>      testopia_config = ['url', 'username', 'password', 'store_location']
>      testopia_opts = testopia_config + ['action', 'product_name', 'category_name',
>          'project_version', 'project_milestone', 'project_revision',
> -        'project_date']
> - 
> +        'project_date','commit']

We already have a commit as a name of project-revision if you want to
change the template name order use this field.

> +
>      config = None
>      if not args.config and os.path.exists(DEFAULT_CONFIG_FILE):
>          args.config = DEFAULT_CONFIG_FILE
> @@ -103,10 +107,10 @@ if __name__ == '__main__':
>              arg = getattr(args, to)
>              if arg:
>                  setattr(opts, to, arg)
> -        if not hasattr(opts, to):
> -            logger.error("%s: Requires testopia %s in arguments or config." % \
> -                (sys.argv[0], to))
> -            sys.exit(1)
> +#        if not hasattr(opts, to):
> +#            logger.error("%s: Requires testopia %s in arguments or config." % \
> +#                (sys.argv[0], to))
> +#            sys.exit(1)

Uncomment these lines, there uis a need to make --list-products as an
option without action but this needs to be made in other commit.

	alimon

>  
>      if not os.path.exists(opts.store_location):
>          os.makedirs(opts.store_location)
> @@ -155,11 +159,13 @@ if __name__ == '__main__':
>              sys.exit(1)
>  
>      build = product.get_build(test_plan, args.project_version,
> -        args.project_milestone, args.project_revision, args.project_date)
> +        args.project_milestone, args.project_revision, args.project_date,
> +        args.commit)
>      if not build:
>          if args.action == "create":
>              build = product.create_build(test_plan, args.project_version,
> -                args.project_milestone, args.project_revision, args.project_date)
> +                args.project_milestone, args.project_revision, args.project_date,
> +                args.commit)
>              logger.info("%s: Create build for product %s with: "\
>                  "%s, %s, %s, %s." % (sys.argv[0], args.product_name,
>                  args.project_version, args.project_milestone,
> @@ -172,8 +178,8 @@ if __name__ == '__main__':
>              sys.exit(1)
>  
>      if args.action == "create":
> -        template_test_run = product.get_template_test_run(test_plan, args.project_version,
> -                args.category_name, args.optional)
> +        template_test_run = product.get_template_test_run(test_plan,
> +                args.project_version, args.category_name, args.optional)
>          if not template_test_run:
>              logger.error("%s: Product %s can't find test run with: "\
>                  "%s, %s, %s." % (sys.argv[0], args.product_name,
> @@ -189,7 +195,7 @@ if __name__ == '__main__':
>                  args.optional))
>              sys.exit(1)
>          logger.info("%s: Test run was created with Template (%d), Summary (%s)"\
> -                " and ID (%s)." % (sys.argv[0], template_test_run['run_id'], 
> +                " and ID (%s)." % (sys.argv[0], template_test_run['run_id'],
>                  test_run['summary'], test_run['run_id']))
>      elif args.action == "update":
>          if not args.results_log:
> diff --git a/testopia_update/product/__init__.py b/testopia_update/product/__init__.py
> index 04f9dac..02c6447 100644
> --- a/testopia_update/product/__init__.py
> +++ b/testopia_update/product/__init__.py
> @@ -1,5 +1,6 @@
>  import re
>  
> +
>  class Product(object):
>      def __init__(self, testopia, opts, logger, config):
>          self.testopia = testopia
> @@ -42,13 +43,15 @@ class Product(object):
>          tp_envs = self.testopia.product_get_environments(tp['product_id'])
>          return [tp_env['name'] for tp_env in tp_envs]
>  
> -    def _format_build_name(self, project_version, project_revision):
> -        return "%s: %s" % (project_version, project_revision)
> +    def _format_build_name(self, project_version, project_revision, project_commit):
> +        return "%s_%s: %s" % (project_version, project_revision, project_commit)
>  
> -    def get_build(self, tp, project_version, project_milestone,
> -            project_revision, project_date):
> +    def get_build(self, tp, project_version, project_milestone, project_revision,
> +                  project_date, project_commit):
>          builds = self.testopia.product_get_builds(tp['product_id'])
> -        build_name = self._format_build_name(project_milestone, project_revision)
> +        build_name = self._format_build_name(project_milestone, project_revision,
> +                                             project_commit)
> +        exit
>          for b in builds:
>              if build_name == b['name'] and project_date == b['description'] \
>                      and project_milestone == str(b['milestone']):
> @@ -56,8 +59,9 @@ class Product(object):
>          return None
>  
>      def create_build(self, tp, project_version, project_milestone,
> -            project_revision, project_date):
> -        build_name = self._format_build_name(project_milestone, project_revision)
> +            project_revision, project_date, project_commit):
> +        build_name = self._format_build_name(project_milestone, project_revision,
> +                                             project_commit)
>  
>          return self.testopia.build_create(build_name, tp['product_id'],
>                  description=project_date, milestone=project_milestone,
> @@ -66,14 +70,14 @@ class Product(object):
>      def _get_test_run_summary_alternatives(self, ttype, project_version,
>              category_name, optional):
>          summary_alts = []
> -        summary_alts.append('%s - %s - %s - %s' % (ttype, self.name,
> -            project_version, category_name))
> -        summary_alts.append('%s - %s - %s' % (ttype, project_version,
> +        summary_alts.append('%s_%s_%s_%s' % (ttype, project_version,
> +            category_name, self.name))
> +        summary_alts.append('%s_%s_%s' % (ttype, project_version,
>              category_name))
> -        summary_alts.append('%s - %s' % (ttype, category_name))
> -        if optional: 
> +        summary_alts.append('%s_%s' % (ttype, category_name))
> +        if optional:
>              for idx, sa in enumerate(summary_alts):
> -                summary_alts[idx] = sa + " - %s" % optional
> +                summary_alts[idx] = sa + "_%s" % optional
>          return summary_alts
>  
>      def get_template_test_run(self, tp, project_version, category_name,
> @@ -85,7 +89,7 @@ class Product(object):
>              first match of summary in test runs.
>          """
>  
> -        summary_alts = self._get_test_run_summary_alternatives("TEMPLATE", 
> +        summary_alts = self._get_test_run_summary_alternatives("TRTEMP",
>              project_version, category_name, optional)
>          tp_test_runs = self.testopia.testplan_get_test_runs(tp['plan_id'])
>  
> @@ -100,7 +104,7 @@ class Product(object):
>  
>      def get_test_run(self, tp, env, build, project_date, project_version,
>              category_name, optional):
> -        summary_alts = self._get_test_run_summary_alternatives(project_date, 
> +        summary_alts = self._get_test_run_summary_alternatives(project_date,
>              project_version, category_name, optional)
>          tp_test_runs = self.testopia.testplan_get_test_runs(tp['plan_id'])
>  
> @@ -133,8 +137,9 @@ class Product(object):
>  
>          return project_version
>  
> -    def create_test_run(self, tp, env, build, template_tr, project_version, project_date):
> -        summary = template_tr['summary'].replace('TEMPLATE', project_date)
> +    def create_test_run(self, tp, env, build, template_tr, project_version,
> +                        project_date):
> +        summary = template_tr['summary'].replace('TRTEMP', project_date)
>  
>          test_case_ids = self._get_test_case_ids(template_tr)
>          new_test_run = self.testopia.testrun_create(build['build_id'],
> 

-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 819 bytes
Desc: OpenPGP digital signature
URL: <http://lists.yoctoproject.org/pipermail/yocto/attachments/20170216/64b3802d/attachment.pgp>


More information about the yocto mailing list