From 61a3cb832d5e1436c9a479dae4cf5ef2f1479d47 Mon Sep 17 00:00:00 2001 From: Chenxiong Qi Date: Jan 03 2018 05:51:00 +0000 Subject: Add unique index on Compose.odcs_compose_id Signed-off-by: Chenxiong Qi --- diff --git a/freshmaker/migrations/versions/e06434b3ef5e_add_unique_constraint_to_compose_odcs_.py b/freshmaker/migrations/versions/e06434b3ef5e_add_unique_constraint_to_compose_odcs_.py new file mode 100644 index 0000000..73e7bc6 --- /dev/null +++ b/freshmaker/migrations/versions/e06434b3ef5e_add_unique_constraint_to_compose_odcs_.py @@ -0,0 +1,26 @@ +"""Add unique constraint to Compose.odcs_compose_id + +Revision ID: e06434b3ef5e +Revises: b17231ee8220 +Create Date: 2017-12-27 14:53:42.321947 + +""" + +# revision identifiers, used by Alembic. +revision = 'e06434b3ef5e' +down_revision = 'b17231ee8220' + +from alembic import op +import sqlalchemy as sa + + +def upgrade(): + # ### commands auto generated by Alembic - please adjust! ### + op.create_index('idx_odcs_compose_id', 'composes', ['odcs_compose_id'], unique=True) + # ### end Alembic commands ### + + +def downgrade(): + # ### commands auto generated by Alembic - please adjust! ### + op.drop_index('idx_odcs_compose_id', table_name='composes') + # ### end Alembic commands ### diff --git a/freshmaker/models.py b/freshmaker/models.py index e775793..1bf7ac9 100644 --- a/freshmaker/models.py +++ b/freshmaker/models.py @@ -28,6 +28,7 @@ import json from datetime import datetime from sqlalchemy.orm import (validates, relationship) +from sqlalchemy.schema import Index from sqlalchemy.sql.expression import false from flask_login import UserMixin @@ -542,6 +543,9 @@ class Compose(FreshmakerBase): self.odcs_compose_id)['state_name'] +Index('idx_odcs_compose_id', Compose.odcs_compose_id, unique=True) + + class ArtifactBuildCompose(FreshmakerBase): __tablename__ = 'artifact_build_composes' diff --git a/tests/test_errata_advisory_rpms_signed_handler.py b/tests/test_errata_advisory_rpms_signed_handler.py index 31e3ce1..b5583ea 100644 --- a/tests/test_errata_advisory_rpms_signed_handler.py +++ b/tests/test_errata_advisory_rpms_signed_handler.py @@ -62,10 +62,13 @@ class TestErrataAdvisoryRPMsSignedHandler(unittest.TestCase): '_find_images_to_rebuild') self.mock_find_images_to_rebuild = self.find_images_patcher.start() + # boot.iso composes IDs should be different from pulp composes IDs as + # when each time to request a compose from ODCS, new compose ID will + # be returned along with new comopse. self.request_boot_iso_compose_patcher = patch( 'freshmaker.handlers.errata.ErrataAdvisoryRPMsSignedHandler.' '_request_boot_iso_compose', - side_effect=[{'id': 1}, {'id': 2}]) + side_effect=[{'id': 100}, {'id': 101}]) self.mock_request_boot_iso_compose = \ self.request_boot_iso_compose_patcher.start() diff --git a/tests/test_errata_advisory_state_changed.py b/tests/test_errata_advisory_state_changed.py index 82fa0e3..23059d6 100644 --- a/tests/test_errata_advisory_state_changed.py +++ b/tests/test_errata_advisory_state_changed.py @@ -296,11 +296,15 @@ class TestBatches(unittest.TestCase): """ Tests that batches are properly recorded in DB. """ - - compose = {'id': 2, 'result_repofile': 'http://localhost/2.repo', - 'state_name': 'done'} - new_compose.return_value = compose - get_compose.return_value = compose + # There are 8 mock builds below and each of them requires one pulp + # compose. + composes = [{ + 'id': compose_id, + 'result_repofile': 'http://localhost/{}.repo'.format(compose_id), + 'state_name': 'done' + } for compose_id in range(1, 9)] + new_compose.side_effect = composes + get_compose.side_effect = composes # Creates following tree: # shared_parent