Merge "Update SQL reporter to store results" into feature/zuulv3
This commit is contained in:
commit
f5cdd49fc3
|
@ -27,18 +27,3 @@ database.
|
|||
|
||||
The SQL reporter does nothing on "start" or "merge-failure"; it only
|
||||
acts on "success" or "failure" reporting stages.
|
||||
|
||||
**score**
|
||||
A score to store for the result of the build. eg: -1 might indicate a failed
|
||||
build.
|
||||
|
||||
For example ::
|
||||
|
||||
- pipeline:
|
||||
name: post-merge
|
||||
success:
|
||||
mydb_conn:
|
||||
score: 1
|
||||
failure:
|
||||
mydb_conn:
|
||||
score: -1
|
||||
|
|
|
@ -86,7 +86,7 @@ class TestSQLConnection(ZuulDBTestCase):
|
|||
self.fake_gerrit.addEvent(A.getPatchsetCreatedEvent(1))
|
||||
self.waitUntilSettled()
|
||||
|
||||
# Add a failed result for a negative score
|
||||
# Add a failed result
|
||||
B = self.fake_gerrit.addFakeChange('org/project', 'master', 'B')
|
||||
|
||||
self.executor_server.failJob('project-test1', B)
|
||||
|
@ -106,7 +106,7 @@ class TestSQLConnection(ZuulDBTestCase):
|
|||
self.assertEqual('org/project', buildset0['project'])
|
||||
self.assertEqual(1, buildset0['change'])
|
||||
self.assertEqual(1, buildset0['patchset'])
|
||||
self.assertEqual(1, buildset0['score'])
|
||||
self.assertEqual('SUCCESS', buildset0['result'])
|
||||
self.assertEqual('Build succeeded.', buildset0['message'])
|
||||
self.assertEqual('tenant-one', buildset0['tenant'])
|
||||
|
||||
|
@ -130,7 +130,7 @@ class TestSQLConnection(ZuulDBTestCase):
|
|||
self.assertEqual('org/project', buildset1['project'])
|
||||
self.assertEqual(2, buildset1['change'])
|
||||
self.assertEqual(1, buildset1['patchset'])
|
||||
self.assertEqual(-1, buildset1['score'])
|
||||
self.assertEqual('FAILURE', buildset1['result'])
|
||||
self.assertEqual('Build failed.', buildset1['message'])
|
||||
|
||||
buildset1_builds = conn.execute(
|
||||
|
@ -183,7 +183,7 @@ class TestSQLConnection(ZuulDBTestCase):
|
|||
self.assertEqual('org/project', buildsets_resultsdb[0]['project'])
|
||||
self.assertEqual(1, buildsets_resultsdb[0]['change'])
|
||||
self.assertEqual(1, buildsets_resultsdb[0]['patchset'])
|
||||
self.assertEqual(1, buildsets_resultsdb[0]['score'])
|
||||
self.assertEqual('SUCCESS', buildsets_resultsdb[0]['result'])
|
||||
self.assertEqual('Build succeeded.', buildsets_resultsdb[0]['message'])
|
||||
|
||||
# Grab the sa tables for resultsdb_failures
|
||||
|
@ -204,7 +204,7 @@ class TestSQLConnection(ZuulDBTestCase):
|
|||
'org/project', buildsets_resultsdb_failures[0]['project'])
|
||||
self.assertEqual(2, buildsets_resultsdb_failures[0]['change'])
|
||||
self.assertEqual(1, buildsets_resultsdb_failures[0]['patchset'])
|
||||
self.assertEqual(-1, buildsets_resultsdb_failures[0]['score'])
|
||||
self.assertEqual('FAILURE', buildsets_resultsdb_failures[0]['result'])
|
||||
self.assertEqual(
|
||||
'Build failed.', buildsets_resultsdb_failures[0]['message'])
|
||||
|
||||
|
|
|
@ -0,0 +1,49 @@
|
|||
"""Use build_set results
|
||||
|
||||
Revision ID: 60c119eb1e3f
|
||||
Revises: f86c9871ee67
|
||||
Create Date: 2017-07-27 17:09:20.374782
|
||||
|
||||
"""
|
||||
|
||||
# revision identifiers, used by Alembic.
|
||||
revision = '60c119eb1e3f'
|
||||
down_revision = 'f86c9871ee67'
|
||||
branch_labels = None
|
||||
depends_on = None
|
||||
|
||||
from alembic import op
|
||||
import sqlalchemy as sa
|
||||
|
||||
BUILDSET_TABLE = 'zuul_buildset'
|
||||
|
||||
|
||||
def upgrade():
|
||||
op.add_column(BUILDSET_TABLE, sa.Column('result', sa.String(255)))
|
||||
|
||||
connection = op.get_bind()
|
||||
connection.execute(
|
||||
"""
|
||||
UPDATE {buildset_table}
|
||||
SET result=(
|
||||
SELECT CASE score
|
||||
WHEN 1 THEN 'SUCCESS'
|
||||
ELSE 'FAILURE' END)
|
||||
""".format(buildset_table=BUILDSET_TABLE))
|
||||
|
||||
op.drop_column(BUILDSET_TABLE, 'score')
|
||||
|
||||
|
||||
def downgrade():
|
||||
op.add_column(BUILDSET_TABLE, sa.Column('score', sa.Integer))
|
||||
|
||||
connection = op.get_bind()
|
||||
connection.execute(
|
||||
"""
|
||||
UPDATE {buildset_table}
|
||||
SET score=(
|
||||
SELECT CASE result
|
||||
WHEN 'SUCCESS' THEN 1
|
||||
ELSE -1 END)
|
||||
""".format(buildset_table=BUILDSET_TABLE))
|
||||
op.drop_column(BUILDSET_TABLE, 'result')
|
|
@ -83,7 +83,7 @@ class SQLConnection(BaseConnection):
|
|||
sa.Column('change', sa.Integer, nullable=True),
|
||||
sa.Column('patchset', sa.Integer, nullable=True),
|
||||
sa.Column('ref', sa.String(255)),
|
||||
sa.Column('score', sa.Integer, nullable=True),
|
||||
sa.Column('result', sa.String(255)),
|
||||
sa.Column('message', sa.TEXT()),
|
||||
sa.Column('tenant', sa.String(255)),
|
||||
)
|
||||
|
|
|
@ -25,12 +25,6 @@ class SQLReporter(BaseReporter):
|
|||
name = 'sql'
|
||||
log = logging.getLogger("zuul.reporter.mysql.SQLReporter")
|
||||
|
||||
def __init__(self, driver, connection, config={}):
|
||||
super(SQLReporter, self).__init__(
|
||||
driver, connection, config)
|
||||
# TODO(jeblair): document this is stored as NULL if unspecified
|
||||
self.result_score = config.get('score', None)
|
||||
|
||||
def report(self, item):
|
||||
"""Create an entry into a database."""
|
||||
|
||||
|
@ -49,7 +43,7 @@ class SQLReporter(BaseReporter):
|
|||
change=change,
|
||||
patchset=patchset,
|
||||
ref=ref,
|
||||
score=self.result_score,
|
||||
result=item.current_build_set.result,
|
||||
message=self._formatItemReport(
|
||||
item, with_jobs=False),
|
||||
tenant=item.pipeline.layout.tenant.name,
|
||||
|
|
Loading…
Reference in New Issue