%pylab inline
# Database access
from vizgrimoire.metrics.query_builder import SCMQuery, ITSQuery
# Filters to apply
from vizgrimoire.metrics.metrics_filter import MetricFilters
# Let's start playing with git activity metrics
import vizgrimoire.metrics.scm_metrics as scm
# Instantiate database access
# Playing with OpenStack source code database (MySQL) at
# http://activity.openstack.org/dash/browser/data/db/source_code.mysql.7z
# Database named as openstack_source_code_fosdem2015
user = "root"
password = ""
source_code_db = "openstack_source_code_fosdem2015"
identities_db = "openstack_source_code_fosdem2015"
dbcon = SCMQuery(user, password, source_code_db, identities_db)
# Instantiate some filters to play with
period = MetricFilters.PERIOD_MONTH
startdate = "'2014-01-01'"
enddate = "'2015-01-01'"
# basic filter
filters = MetricFilters(period, startdate, enddate)
# company filter
filters_company = MetricFilters(period, startdate, enddate)
filters_company.add_filter(MetricFilters.COMPANY, "Red Hat")
# company and repo filter
filters_repo_com = MetricFilters(period, startdate, enddate)
filters_repo_com.add_filter(MetricFilters.COMPANY, "Red Hat")
filters_repo_com.add_filter(MetricFilters.REPOSITORY, "nova.git")
# Retrieving data for each filter.
# Let's start with commits
commits = scm.Commits(dbcon, filters)
commits.get_agg()
commits.get_ts()
plot(commits.get_ts()["commits"])
# Let's use another filter
commits_redhat = scm.Commits(dbcon, filters_company)
commits_redhat.get_agg()
plot(commits_redhat.get_ts()["commits"])
# Let's focus on an organization and a repository
commits_redhat_nova = scm.Commits(dbcon, filters_repo_com)
filters_repo_com.type_analysis
#Example of sql
commits_redhat_nova._get_sql(True)
plot(commits_redhat_nova.get_ts()["commits"])
authors = scm.Authors(dbcon, filters)
authors.get_agg()
plot(authors.get_ts()["authors"])
# let's list top 10 authors
authors.get_list()
# Let's remove some bots
filters.people_out = ["Jenkins","OpenStack Jenkins", "OpenStack Project Creator"]
authors = scm.Authors(dbcon, filters)
authors.get_list()
# This community structure analysis characterizes developers
# by their activity.
# Core developers are those committing the 80% of the changes
# Regular developers are those committing the next 15% of the changes
# And occasional ones are those committing the rest 5%
from vizgrimoire.analysis.onion_model import CommunityStructure
onion = CommunityStructure(dbcon, filters)
print onion.result()
import vizgrimoire.metrics.its_metrics as its
# Instantiate database access
# Playing with OpenStack tickets database (MySQL) at
# http://activity.openstack.org/dash/browser/data/db/tickets.mysql.7z
# Database named as openstack_tickets_fosdem2015
user = "root"
password = ""
source_code_db = "openstack_tickets_fosdem2015"
identities_db = "openstack_source_code_fosdem2015"
dbcon = ITSQuery(user, password, source_code_db, identities_db)
# Instantiate some filters to play with
period = MetricFilters.PERIOD_MONTH
startdate = "'2010-01-01'"
enddate = "'2012-01-01'"
# basic filter
filters = MetricFilters(period, startdate, enddate)
from vizgrimoire.ITS import ITS
ITS.set_backend("lp")
closed_tickets = its.Closed(dbcon, filters)
opened_tickets = its.Opened(dbcon, filters)
closed_tickets.get_agg()
opened_tickets.get_agg()
# Let's see the efficienciy of the community closing tickets (BMI index)
# This is calculated as the percentage of tickets closed out of the
# opened ones. Values over 100, indicates that the community is closing
# more tickets than opening.
bmi = its.BMIIndex(dbcon, filters)
plot(bmi.get_ts()["bmitickets"])
# Let's look for a specific project: all integrated projects in OpenStack
filters.add_filter(filters.PROJECT, "integrated")
bmi = its.BMIIndex(dbcon, filters)
plot(bmi.get_ts()["bmitickets"])