Home | History | Annotate | Download | only in health
      1 #!/usr/bin/python
      2 #
      3 # Copyright (c) 2013 The Chromium OS Authors. All rights reserved.
      4 # Use of this source code is governed by a BSD-style license that can be
      5 # found in the LICENSE file.
      6 
      7 import argparse, datetime, sys
      8 
      9 import common
     10 # This must come before the import of complete_failures in order to use the
     11 # in memory database.
     12 from autotest_lib.frontend import setup_django_readonly_environment
     13 from autotest_lib.frontend import setup_test_environment
     14 from autotest_lib.frontend.afe import models as afe_models
     15 from autotest_lib.frontend.health import passing_experimental
     16 from autotest_lib.frontend.tko import models as tko_models
     17 
     18 GOOD_STATUS_IDX = 6
     19 
     20 
     21 def parse_options(args):
     22     """Parse the command line options."""
     23     description = ('Sets up a fake database and then runs '
     24                    'passing_experimental.py main() function to simulate '
     25                    'running the script to test bug filing. Manually checking '
     26                    'will be required to verify that bugs have been submitted '
     27                    'correctly. Remember to set up the shadow_config.ini file '
     28                    'to point to the autotest-bug-filing-test dummy project.')
     29     parser = argparse.ArgumentParser(description=description)
     30     parser.parse_args(args)
     31 
     32 
     33 def main(args):
     34     """
     35     Run passing_experimental.py to check bug filing for it.
     36 
     37     This sets the fake database up so a bug is guranteed to be filed. However,
     38     it requires manually verifying that the bug was filed and deduped.
     39 
     40     @param args: The arguments passed in from the commandline.
     41 
     42     """
     43     args = [] if args is None else args
     44     parse_options(args)
     45 
     46     setup_test_environment.set_up()
     47 
     48     afe_models.Test(name='test_dedupe', test_type=0, path='test_dedupe',
     49                     experimental=True).save()
     50 
     51     tko_models.Status(status_idx=6, word='GOOD').save()
     52 
     53     job = tko_models.Job(job_idx=1)
     54     kernel = tko_models.Kernel(kernel_idx=1)
     55     machine = tko_models.Machine(machine_idx=1)
     56     success_status = tko_models.Status(status_idx=GOOD_STATUS_IDX)
     57 
     58     tko_dedupe = tko_models.Test(job=job, status=success_status,
     59                                  kernel=kernel, machine=machine,
     60                                  test='test_dedupe',
     61                                  started_time=datetime.datetime.today())
     62     tko_dedupe.save()
     63 
     64     passing_experimental.main()
     65 
     66     # We assume that the user is using the dummy tracker when using this script.
     67     print ('Now check the bug tracker to make sure this was properly deduped.\n'
     68            'https://code.google.com/p/autotest-bug-filing-test/issues/list?'
     69            'q=PassingExperimental')
     70 
     71 
     72 if __name__ == '__main__':
     73     sys.exit(main(sys.argv[1:]))
     74