diff --git a/repoapi/migrations/0007_auto_20160718_1136.py b/repoapi/migrations/0007_auto_20160718_1136.py new file mode 100644 index 0000000..6f6a222 --- /dev/null +++ b/repoapi/migrations/0007_auto_20160718_1136.py @@ -0,0 +1,26 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.9 on 2016-07-18 11:36 +from __future__ import unicode_literals + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('repoapi', '0006_auto_20160714_1359'), + ] + + operations = [ + migrations.AddField( + model_name='workfrontnoteinfo', + name='eventtype', + field=models.CharField(default='patchset-created', max_length=50), + preserve_default=False, + ), + migrations.AlterUniqueTogether( + name='workfrontnoteinfo', + unique_together=set( + [('workfront_id', 'gerrit_change', 'eventtype')]), + ), + ] diff --git a/repoapi/models.py b/repoapi/models.py index fa97008..44be59a 100644 --- a/repoapi/models.py +++ b/repoapi/models.py @@ -160,9 +160,10 @@ signals.post_save.connect(gerrit_repo_manage, sender=JenkinsBuildInfo) class WorkfrontNoteInfo(models.Model): workfront_id = models.CharField(max_length=50, null=False) gerrit_change = models.CharField(max_length=50, null=False) + eventtype = models.CharField(max_length=50, null=False) class Meta: - unique_together = ["workfront_id", "gerrit_change"] + unique_together = ["workfront_id", "gerrit_change", "eventtype"] @staticmethod def getIds(git_comment): @@ -198,12 +199,15 @@ def workfront_note_add(instance, message): if not instance.gerrit_eventtype: change = WorkfrontNoteInfo.getCommit(instance.git_commit_msg) url = settings.GITWEB_URL.format(instance.projectname, change) + eventtype = 'git-commit' else: change = instance.gerrit_change url = settings.GERRIT_URL.format(instance.gerrit_change) + eventtype = instance.gerrit_eventtype note, created = wni.get_or_create( workfront_id=wid, - gerrit_change=change) + gerrit_change=change, + eventtype=eventtype) if created: if not utils.workfront_note_send(wid, "%s %s" % (message, url)): logger.error("remove releated WorkfrontNoteInfo") diff --git a/repoapi/test/test_workfrontnote.py b/repoapi/test/test_workfrontnote.py index 23f2f91..c074139 100644 --- a/repoapi/test/test_workfrontnote.py +++ b/repoapi/test/test_workfrontnote.py @@ -37,45 +37,46 @@ class WorkfrontNoteTestCase(TestCase): res = WorkfrontNoteInfo.getCommit("1234567 TT#67676 whatever") self.assertEquals(res, "1234567") + def get_defaults(self): + defaults = { + 'tag': "edc90cd9-37f3-4613-9748-ed05a32031c2", + 'projectname': "kamailio", + 'jobname': "kamailio-gerrit", + 'buildnumber': 897, + 'result': "SUCCESS", + 'job_url': "https://jenkins.mgm.sipwise.com/job/kamailio-gerrit/", + 'gerrit_patchset': "1", + 'gerrit_change': "2054", + 'gerrit_eventtype': "patchset-created", + 'param_tag': "none", + 'param_branch': "master", + 'param_release': "none", + 'param_distribution': "wheezy", + 'param_ppa': "gerrit_MT10339_review2054", + 'git_commit_msg': "7fg4567 TT#0001 whatever", + } + return defaults + + def get_non_gerrit_defaults(self): + defaults = self.get_defaults() + del defaults['gerrit_patchset'] + del defaults['gerrit_change'] + del defaults['gerrit_eventtype'] + return defaults + @patch('repoapi.utils.workfront_note_send') def test_note_gerrit(self, utils): - JenkinsBuildInfo.objects.create( - tag="edc90cd9-37f3-4613-9748-ed05a32031c2", - projectname="kamailio", - jobname="kamailio-gerrit", - buildnumber=897, - result="SUCCESS", - job_url="https://jenkins.mgm.sipwise.com/job/kamailio-gerrit/", - gerrit_patchset="1", - gerrit_change="2054", - gerrit_eventtype="patchset-created", - param_tag="none", - param_branch="master", - param_release="none", - param_distribution="wheezy", - param_ppa="gerrit_MT10339_review2054") + param = self.get_defaults() + JenkinsBuildInfo.objects.create(**param) gri = WorkfrontNoteInfo.objects.filter( workfront_id="0001", gerrit_change="2054") self.assertEquals(gri.count(), 0) - JenkinsBuildInfo.objects.create( - tag="edc90cd9-37f3-4613-9748-ed05a32031c2", - projectname="kamailio", - jobname="kamailio-get-code", - buildnumber=897, - result="SUCCESS", - job_url="https://jenkins.mgm.sipwise.com/job/kamailio-get-code/", - gerrit_patchset="1", - gerrit_change="2054", - gerrit_eventtype="patchset-created", - param_tag="none", - param_branch="master", - param_release="none", - param_distribution="wheezy", - param_ppa="gerrit_MT10339_review2054", - git_commit_msg="7fg4567 TT#0001 whatever") + param['jobname'] = "kamailio-get-code" + param['buildnumber'] = 897 + JenkinsBuildInfo.objects.create(**param) gri = WorkfrontNoteInfo.objects.filter( workfront_id="0001", @@ -86,83 +87,61 @@ class WorkfrontNoteTestCase(TestCase): @patch('repoapi.utils.workfront_note_send') def test_note_merge(self, utils): - JenkinsBuildInfo.objects.create( - tag="edc90cd9-37f3-4613-9748-ed05a32031c2", - projectname="kamailio", - jobname="kamailio-gerrit", - buildnumber=897, - result="SUCCESS", - job_url="https://jenkins.mgm.sipwise.com/job/kamailio-gerrit/", - gerrit_patchset="1", - gerrit_change="2054", - gerrit_eventtype="change-merged", - param_tag="none", - param_branch="master", - param_release="none", - param_distribution="wheezy", - param_ppa="gerrit_MT10339_review2054") + param = self.get_defaults() + JenkinsBuildInfo.objects.create(**param) gri = WorkfrontNoteInfo.objects.filter( workfront_id="0001", gerrit_change="2054") self.assertEquals(gri.count(), 0) - JenkinsBuildInfo.objects.create( - tag="edc90cd9-37f3-4613-9748-ed05a32031c2", - projectname="kamailio", - jobname="kamailio-get-code", - buildnumber=897, - result="SUCCESS", - job_url="https://jenkins.mgm.sipwise.com/job/kamailio-get-code/", - gerrit_patchset="1", + param['jobname'] = "kamailio-get-code" + param['buildnumber'] = 897 + JenkinsBuildInfo.objects.create(**param) + + gri = WorkfrontNoteInfo.objects.filter( + workfront_id="0001", gerrit_change="2054", - gerrit_eventtype="change-merged", - param_tag="none", - param_branch="master", - param_release="none", - param_distribution="wheezy", - param_ppa="gerrit_MT10339_review2054", - git_commit_msg="7fg456 TT#0001 whatever") + eventtype='patchset-created') + self.assertEquals(gri.count(), 1) + gri = WorkfrontNoteInfo.objects.filter( + workfront_id="0001", + gerrit_change="7fg4567") + self.assertEquals(gri.count(), 0) + msg = "review created %s" % settings.GERRIT_URL.format("2054") + utils.assert_called_once_with("0001", msg) + + param['jobname'] = "kamailio-get-code" + param['buildnumber'] = 898 + param['gerrit_eventtype'] = "change-merged" + JenkinsBuildInfo.objects.create(**param) gri = WorkfrontNoteInfo.objects.filter( workfront_id="0001", - gerrit_change="2054") + gerrit_change="2054", + eventtype='change-merged') self.assertEquals(gri.count(), 1) + gri = WorkfrontNoteInfo.objects.filter( + workfront_id="0001", + gerrit_change="2054") + self.assertEquals(gri.count(), 2) msg = "review merged %s" % settings.GERRIT_URL.format("2054") - utils.assert_called_once_with("0001", msg) + utils.assert_called_with("0001", msg) @patch('repoapi.utils.workfront_note_send') def test_note_commit(self, utils): - JenkinsBuildInfo.objects.create( - tag="edc90cd9-37f3-4613-9748-ed05a32031c2", - projectname="kamailio", - jobname="kamailio-get-code", - buildnumber=897, - result="SUCCESS", - job_url="https://jenkins.mgm.sipwise.com/job/kamailio-get-code/", - param_tag="none", - param_branch="master", - param_release="none", - param_distribution="wheezy", - git_commit_msg="7fg4567 TT#0001 whatever") + param = self.get_non_gerrit_defaults() + param['jobname'] = 'kamailio-get-code' + JenkinsBuildInfo.objects.create(**param) gri = WorkfrontNoteInfo.objects.filter( workfront_id="0001", gerrit_change="7fg4567") self.assertEquals(gri.count(), 1) - JenkinsBuildInfo.objects.create( - tag="edc90cd9-37f3-4613-9748-ed05a32031c2", - projectname="kamailio", - jobname="kamailio-binaries", - buildnumber=897, - result="SUCCESS", - job_url="https://jenkins.mgm.sipwise.com/job/kamailio-binaries/", - param_tag="none", - param_branch="master", - param_release="none", - param_distribution="wheezy", - git_commit_msg="7fg4567 TT#0001 whatever") + param['jobname'] = "kamailio-binaries" + param['buildnumber'] = 897 + JenkinsBuildInfo.objects.create(**param) gri = WorkfrontNoteInfo.objects.filter( workfront_id="0001", diff --git a/t/Dockerfile b/t/Dockerfile index dbb5aa2..32503e7 100644 --- a/t/Dockerfile +++ b/t/Dockerfile @@ -5,7 +5,7 @@ FROM docker.mgm.sipwise.com/sipwise-jessie:latest # is updated with the current date. It will force refresh of all # of the base images and things like `apt-get update` won't be using # old cached versions when the Dockerfile is built. -ENV REFRESHED_AT 2016-07-16 +ENV REFRESHED_AT 2016-07-18 RUN apt-get update RUN apt-get install --assume-yes python2.7 python2.7-dev python-distribute python-pip git @@ -16,7 +16,7 @@ RUN pip install -r /tmp/test.txt RUN echo './t/testrunner' >>/root/.bash_history -WORKDIR /repoapi/ +WORKDIR /code/ ################################################################################ # Instructions for usage