Ejemplo n.º 1
0
    def __init__(self, name, description, gerrit, is_parent=False):
        self.description = description
        self.name = name
        self.gerrit = gerrit
        self.observations = OrderedDict()
        self.headings = OrderedDict(date='date')
        self.file_contents = StringIO()
        self.first_commit = gerrit.creation_date
        self.is_parent = is_parent

        self.metrics = ['waiting_first_review', 'waiting_plus2']
        self.suffixes = ['total', 'staff', 'volunteer']

        self.filename = ('%s.csv' % (self.determine_filename()))
        self.csv_directory = self.determine_directory(gerrit.csv_location)
        self.yaml_directory = self.determine_directory(gerrit.yaml_location)
        self.full_csv_path = os.path.join(self.csv_directory, self.filename)
        self.full_yaml_path = os.path.join(self.yaml_directory, self.filename)

        self.create_path()
        self.yesterday = determine_yesterday()

        self.wmf_extension = self.is_wikimedia_extension()
        self.extension = self.is_extension()
        self.parent_repos = self.determine_parent(gerrit)
Ejemplo n.º 2
0
 def calculate_wait_first_review(self):
     values = [-2, -1, 1]
     reviews = {}
     for value in values:
         review = self.get_first_review_by_review_value(value)
         if review:
             reviews[review.granted] = review
     if reviews != {}:
         review = reviews[min(reviews.keys())]
         review.granted = determine_yesterday(review.granted)
     else:
         if self.merged is True:
             review = Review(granted=self.last_updated_on)
             review.granted = determine_yesterday(self.last_updated_on)
         else:
             review = Review(granted=self.yesterday)
     self.waiting_first_review = review
Ejemplo n.º 3
0
def main():
    logging.info('Launching gerrit-stats')

    args = parse_commandline()

    settings = load_settings(args)

    gerrit = Gerrit(args, settings)
    cur = init_db(gerrit.my_cnf)
    gerrit.fetch_repos()

    start_date = settings.get('creation_date')
    yesterday = determine_yesterday()
    changesets = {}

    logging.info(
        'Queries will span timeframe: %s - %s.' % (start_date, yesterday))
    logging.info('Queries will always run up to \'yesterday\', so that we always have counts for full days.')

    changesets = load_commit_data(cur, changesets)
    changesets = load_patch_set_data(cur, changesets)
    changesets = load_review_data(cur, changesets)

    for changeset in changesets.itervalues():
        changeset.is_all_positive_reviews()
        changeset.calculate_wait_first_review()
        changeset.calculate_wait_plus2()
        changeset.is_self_reviewed()

        repo = gerrit.repos.get(changeset.dest_project_name)
        if repo:
            repo.increment(changeset)
        else:
            logging.info('Repo %s does not exist, ignored repos are: %s' % (changeset.dest_project_name, ','.join(gerrit.ignore_repos)))

    logging.info('Successfully parsed changesets data.')
    # create datasets that are collections of repositories
    create_aggregate_dataset(gerrit)

    for repo in gerrit.repos.itervalues():
#        if repo.name == 'mediawiki':
#            change_ids = list(repo.observations[yesterday.date()].changeset_ids)
#            change_ids.sort()
#            fh = open('/Users/diederik/Development/gerrit-stats/gerritstats/tests/backlog_gerrit-stats.txt','w')
#            for change_id in change_ids:
#                print change_id
#                fh.write('%s\n' % change_id)
#            fh.close()
        repo.fill_in_missing_days()
        repo.create_headings()
        repo.prune_observations()
        repo.write_dataset(gerrit)

    # save results for future use.
    successful_exit()
Ejemplo n.º 4
0
    def __init__(self, **kwargs):
        self.created_on = kwargs.get("created_on")
        self.owner_account_id = kwargs.get("owner_account_id")
        self.dest_project_name = kwargs.get("dest_project_name")
        self.dest_branch_name = kwargs.get("dest_branch_name")
        self.change_id = kwargs.get("change_id")
        self.last_updated_on = kwargs.get("last_updated_on")
        self.change_key = kwargs.get("change_key")
        self.subject = kwargs.get("subject")
        self.nbr_patch_sets = kwargs.get("nbr_patch_sets")
        self.status = kwargs.get("status")

        self.patch_sets = OrderedDict()
        self.open = True if kwargs.get("open") == "Y" else False
        self.merged = True if kwargs.get("status") == "M" else False
        self.self_review = False
        self.repo_has_review = True

        self.yesterday = determine_yesterday()
        self.waiting_first_review = self.yesterday  # wait time between creation and first review
        self.waiting_plus2 = self.yesterday  # wait time between first plus 1 and plus 2
        self.merge_review = None  # this will become an instance of Review
        self.all_positive_reviews = None
        self.author = Developer(**kwargs)  # this will become an instance of Developer