diff --git a/doc/source/data_model.rst b/doc/source/data_model.rst index 9bbbcbe..c9169d5 100644 --- a/doc/source/data_model.rst +++ b/doc/source/data_model.rst @@ -65,3 +65,15 @@ Properties: * **stop_time**: The timestamp when the test finished executing * **stop_time_microsecond**: The microsecond component of the timestamp when test execution finished + +Attachments +----------- +Attachemnts represent the file attachemnts in the subunit stream for a +particular test_run. + +Properties: + +* **test_run_id**: The uuid representing the test_run the attachment is + associated with. +* **label**: The label for the attachment +* **attachment**: The actual attachment diff --git a/subunit2sql/db/models.py b/subunit2sql/db/models.py index c06c227..9671a4e 100644 --- a/subunit2sql/db/models.py +++ b/subunit2sql/db/models.py @@ -125,3 +125,14 @@ class TestMetadata(BASE, SubunitBase): key = sa.Column(sa.String(255)) value = sa.Column(sa.String(255)) test_id = sa.Column(sa.String(36), sa.ForeignKey('tests.id')) + + +class Attachments(BASE, SubunitBase): + __tablename__ = 'attachments' + __table_args__ = (sa.Index('ix_attachemnts_id', + 'test_run_id'),) + id = sa.Column(sa.String(36), primary_key=True, + default=lambda: str(uuid.uuid4())) + test_run_id = sa.Column(sa.String(36)) + label = sa.Column(sa.String(255)) + attachment = sa.Column(sa.LargeBinary()) diff --git a/subunit2sql/migrations/versions/487f279b8c78_add_attachments_table.py b/subunit2sql/migrations/versions/487f279b8c78_add_attachments_table.py new file mode 100644 index 0000000..b50f0d6 --- /dev/null +++ b/subunit2sql/migrations/versions/487f279b8c78_add_attachments_table.py @@ -0,0 +1,44 @@ +# Copyright (c) 2015 Hewlett-Packard Development Company, L.P. +# +# 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 Attachments Table + +Revision ID: 487f279b8c78 +Revises: 1679b5bc102c +Create Date: 2015-05-27 15:18:21.653867 + +""" + +# revision identifiers, used by Alembic. +revision = '487f279b8c78' +down_revision = '1679b5bc102c' + +from alembic import op +import sqlalchemy as sa + + +def upgrade(): + op.create_table('attachments', + sa.Column('id', sa.String(36), primary_key=True, + nullable=False), + sa.Column('test_run_id', sa.String(36), + sa.ForeignKey('test_runs.id'), nullable=False), + sa.Column('label', sa.String(255)), + sa.Column('attachment', sa.LargeBinary()), + mysql_engine='InnoDB') + + +def downgrade(): + op.drop_table('attachments')