Cannot unit test the uniqueness constraint in share and group types models

Bug #1843498 reported by Goutham Pacha Ravi on 2019-09-10
8
This bug affects 1 person
Affects Status Importance Assigned to Milestone
Manila
Low
Unassigned

Bug Description

This bug is a result of the code review iterations on https://review.opendev.org/#/c/669651/.

There was a unit test added to check that, when a share type with name "ABC" exists, another share type's name cannot be updated to be "ABC". This collision in names is guarded by uniqueness constraints in the "share_types" and "share_group_types" tables [1][2][3][4].

However, unit tests run on Sqlite, and this constraint isn't holding.

The unit test that failed: https://review.opendev.org/#/c/669651/27/manila/tests/db/sqlalchemy/test_api.py@3278

 manila/tests/db/sqlalchemy/test_api.py

     def test_share_type_update_name_exist(self):
        db_utils.create_share_type(
            name='exist_name', extra_specs={'somekey': 'someval'})
        share_type = db_utils.create_share_type(name='regalia')
        values = {"name": "exist_name"}
        self.assertRaises(exception.ShareTypeExists,
                          db_api.share_type_update,
                          self.ctxt, share_type['id'], values)

Failure observed in the unit tests:

    Captured traceback:
    ~~~~~~~~~~~~~~~~~~~
    Traceback (most recent call last):
      File "manila/tests/db/sqlalchemy/test_api.py", line 3285, in test_share_type_update_name_exist
        self.ctxt, share_type['id'], values)
      File "/home/zuul/src/opendev.org/openstack/manila/.tox/py27/local/lib/python2.7/site-packages/testtools/testcase.py", line 485, in assertRaises
        self.assertThat(our_callable, matcher)
      File "/home/zuul/src/opendev.org/openstack/manila/.tox/py27/local/lib/python2.7/site-packages/testtools/testcase.py", line 498, in assertThat
        raise mismatch_error
    testtools.matchers._impl.MismatchError: <function share_type_update at 0x7f8d9c0fd938> returned None

[1] https://opendev.org/openstack/manila/src/branch/master/manila/db/migrations/alembic/versions/162a3e673105_manila_init.py#L367
[2] https://opendev.org/openstack/manila/src/branch/master/manila/db/migrations/alembic/versions/38e632621e5a_change_volume_type_to_share_type.py#L47
[3] https://opendev.org/openstack/manila/src/commit/f1e10ec2ff44445a7a6e10eba3f270e1dbd3a889/manila/db/migrations/alembic/versions/e1949a93157a_add_share_group_types_table.py#L49-L51
[4] https://opendev.org/openstack/manila/src/commit/f1e10ec2ff44445a7a6e10eba3f270e1dbd3a889/manila/db/sqlalchemy/models.py#L1068-L1070

tags: added: low-hanging-fruit tests unit
Changed in manila:
importance: Undecided → Low
description: updated
To post a comment you must log in.
This report contains Public information  Edit
Everyone can see this information.

Other bug subscribers