Add metadata column to coverage table
This commit adds metadata column to the coverage table. This should be useful to filter results in the future. Change-Id: I224d340b70ddd2c3cf7923f517281020470a9e45
This commit is contained in:
parent
4704d56363
commit
52c7cfde08
@ -71,7 +71,8 @@ def get_session(autocommit=True, expire_on_commit=False):
|
|||||||
|
|
||||||
|
|
||||||
def create_coverage(project_name, coverage_rate=0.0, rates=[],
|
def create_coverage(project_name, coverage_rate=0.0, rates=[],
|
||||||
report_time=None, test_type='py27', session=None):
|
report_time=None, test_type='py27',
|
||||||
|
coverage_metadata=None, session=None):
|
||||||
"""Create a new coverage record in the database.
|
"""Create a new coverage record in the database.
|
||||||
|
|
||||||
This method is used to add a new coverage in the database.
|
This method is used to add a new coverage in the database.
|
||||||
@ -82,6 +83,7 @@ def create_coverage(project_name, coverage_rate=0.0, rates=[],
|
|||||||
:param datetime.Datetime report_time: when the coverage was collected
|
:param datetime.Datetime report_time: when the coverage was collected
|
||||||
defaults to None
|
defaults to None
|
||||||
:param str test_type: test_type like a task name of tox e.g. py27
|
:param str test_type: test_type like a task name of tox e.g. py27
|
||||||
|
:param str coverage_metadata: metadata for more additional data
|
||||||
:param session: optional session object if one isn't provided a new session
|
:param session: optional session object if one isn't provided a new session
|
||||||
will be acquired for the duration of this operation
|
will be acquired for the duration of this operation
|
||||||
:return: The coverage object stored in the DB
|
:return: The coverage object stored in the DB
|
||||||
@ -91,6 +93,7 @@ def create_coverage(project_name, coverage_rate=0.0, rates=[],
|
|||||||
coverage.project_name = project_name
|
coverage.project_name = project_name
|
||||||
coverage.coverage_rate = coverage_rate
|
coverage.coverage_rate = coverage_rate
|
||||||
coverage.test_type = test_type
|
coverage.test_type = test_type
|
||||||
|
coverage.coverage_metadata = coverage_metadata
|
||||||
if report_time:
|
if report_time:
|
||||||
report_time = report_time.replace(tzinfo=None)
|
report_time = report_time.replace(tzinfo=None)
|
||||||
report_time_microsecond = report_time.microsecond
|
report_time_microsecond = report_time.microsecond
|
||||||
@ -98,6 +101,7 @@ def create_coverage(project_name, coverage_rate=0.0, rates=[],
|
|||||||
report_time_microsecond = None
|
report_time_microsecond = None
|
||||||
coverage.report_time = report_time
|
coverage.report_time = report_time
|
||||||
coverage.report_time_microsecond = report_time_microsecond
|
coverage.report_time_microsecond = report_time_microsecond
|
||||||
|
coverage.coverage_metadata = coverage_metadata
|
||||||
|
|
||||||
session = session or get_session()
|
session = session or get_session()
|
||||||
with session.begin():
|
with session.begin():
|
||||||
|
@ -46,7 +46,8 @@ class CoverageBase(object):
|
|||||||
|
|
||||||
class Coverage(BASE, CoverageBase):
|
class Coverage(BASE, CoverageBase):
|
||||||
__tablename__ = 'coverages'
|
__tablename__ = 'coverages'
|
||||||
__table_args__ = (sa.Index('ix_project_name', 'project_name'), )
|
__table_args__ = (sa.Index('ix_project_name', 'project_name'),
|
||||||
|
sa.Index('ix_coverage_metadata', 'coverage_metadata'))
|
||||||
id = sa.Column(sa.BigInteger, primary_key=True)
|
id = sa.Column(sa.BigInteger, primary_key=True)
|
||||||
project_name = sa.Column(sa.String(256),
|
project_name = sa.Column(sa.String(256),
|
||||||
nullable=False)
|
nullable=False)
|
||||||
@ -54,6 +55,7 @@ class Coverage(BASE, CoverageBase):
|
|||||||
test_type = sa.Column(sa.String(256), nullable=False, default='py27')
|
test_type = sa.Column(sa.String(256), nullable=False, default='py27')
|
||||||
report_time = sa.Column(sa.DateTime(), default=datetime.datetime.utcnow())
|
report_time = sa.Column(sa.DateTime(), default=datetime.datetime.utcnow())
|
||||||
report_time_microsecond = sa.Column(sa.Integer(), default=0)
|
report_time_microsecond = sa.Column(sa.Integer(), default=0)
|
||||||
|
coverage_metadata = sa.Column(sa.String(256))
|
||||||
|
|
||||||
|
|
||||||
class File(BASE, CoverageBase):
|
class File(BASE, CoverageBase):
|
||||||
|
@ -0,0 +1,41 @@
|
|||||||
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
# you may not use this file except in compliance with the License.
|
||||||
|
# You may obtain a copy of the License at
|
||||||
|
#
|
||||||
|
# http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
#
|
||||||
|
# Unless required by applicable law or agreed to in writing, software
|
||||||
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
|
||||||
|
# implied.
|
||||||
|
# See the License for the specific language governing permissions and
|
||||||
|
# limitations under the License.
|
||||||
|
|
||||||
|
"""Add metadata column
|
||||||
|
|
||||||
|
Revision ID: 8857b04071a2
|
||||||
|
Revises: 79dead6f7c26
|
||||||
|
Create Date: 2019-04-18 12:12:34.776240
|
||||||
|
|
||||||
|
"""
|
||||||
|
|
||||||
|
# revision identifiers, used by Alembic.
|
||||||
|
revision = '8857b04071a2'
|
||||||
|
down_revision = '79dead6f7c26'
|
||||||
|
branch_labels = None
|
||||||
|
depends_on = None
|
||||||
|
|
||||||
|
from alembic import op
|
||||||
|
import sqlalchemy as sa
|
||||||
|
|
||||||
|
|
||||||
|
def upgrade():
|
||||||
|
op.add_column('coverages', sa.Column('coverage_metadata', sa.String(256),
|
||||||
|
nullable=True))
|
||||||
|
op.create_index('ix_coverage_metadata', 'coverages',
|
||||||
|
['coverage_metadata'])
|
||||||
|
|
||||||
|
|
||||||
|
def downgrade():
|
||||||
|
op.drop_index('ix_coverage_metadata', 'coverage_metadata')
|
||||||
|
op.drop_column('coverages', 'coverage_metadata')
|
@ -66,6 +66,15 @@ class TestDatabaseAPI(base.TestCase):
|
|||||||
self.assertEqual(len(covs), 1)
|
self.assertEqual(len(covs), 1)
|
||||||
self.assertEqual(covs[0].project_name, 'foo1_project')
|
self.assertEqual(covs[0].project_name, 'foo1_project')
|
||||||
|
|
||||||
|
def test_get_coverage_with_metadata(self):
|
||||||
|
api.create_coverage('foo1_project', coverage_metadata="foo,bar")
|
||||||
|
api.create_coverage('foo2_project', coverage_metadata="bar,foo")
|
||||||
|
covs = api.get_coverage(project_name='foo1_project')
|
||||||
|
self.assertTrue(covs is not None)
|
||||||
|
self.assertEqual(len(covs), 1)
|
||||||
|
self.assertEqual(covs[0].project_name, 'foo1_project')
|
||||||
|
self.assertEqual(covs[0].coverage_metadata, 'foo,bar')
|
||||||
|
|
||||||
def test_add_file_rates(self):
|
def test_add_file_rates(self):
|
||||||
rates = []
|
rates = []
|
||||||
rates.append({'filename': 'foo/bar0', 'line-rate': '0'})
|
rates.append({'filename': 'foo/bar0', 'line-rate': '0'})
|
||||||
|
Loading…
Reference in New Issue
Block a user