[openstack-dev] [Cinder] Getting `ValueError: Field `volume_id' cannot be None`

Deepak Shetty dpkshetty at gmail.com
Thu Jun 4 08:36:38 UTC 2015


I was able to narrow down to the scenario where it fails only when i do:

./run_tests.sh -N cinder.tests.unit.test_remotefs
cinder.tests.unit.test_volume.VolumeTestCase

and fails with:
{0}
cinder.tests.unit.test_volume.VolumeTestCase.test_can_delete_errored_snapshot
[0.507361s] ... FAILED

Captured traceback:
~~~~~~~~~~~~~~~~~~~
    Traceback (most recent call last):
      File "cinder/tests/unit/test_volume.py", line 3029, in
test_can_delete_errored_snapshot
        snapshot_obj = objects.Snapshot.get_by_id(self.context, snapshot_id)
      File
"/usr/lib/python2.7/site-packages/oslo_versionedobjects/base.py", line 169,
in wrapper
        result = fn(cls, context, *args, **kwargs)
      File "cinder/objects/snapshot.py", line 130, in get_by_id
        expected_attrs=['metadata'])
      File "cinder/objects/snapshot.py", line 112, in _from_db_object
        snapshot[name] = value
      File
"/usr/lib/python2.7/site-packages/oslo_versionedobjects/base.py", line 691,
in __setitem__
        setattr(self, name, value)
      File
"/usr/lib/python2.7/site-packages/oslo_versionedobjects/base.py", line 70,
in setter
        field_value = field.coerce(self, name, value)
      File
"/usr/lib/python2.7/site-packages/oslo_versionedobjects/fields.py", line
183, in coerce
        return self._null(obj, attr)
      File
"/usr/lib/python2.7/site-packages/oslo_versionedobjects/fields.py", line
161, in _null
        raise ValueError(_("Field `%s' cannot be None") % attr)
    ValueError: Field `volume_id' cannot be None

Both the testsuites run fine when i run them individually, as in the below
is success:

./run_tests.sh -N cinder.tests.unit.test_remotefs - no errors

./run_tests.sh -N cinder.tests.unit.test_volume.VolumeTestCase - no errors

So i modified my patch @ https://review.openstack.org/#/c/172808/ (Patch
set 6) and
removed all testcase i added in test_remotefs.py except one, so that we
have lesser code to debug/deal with!

See
https://review.openstack.org/#/c/172808/6/cinder/tests/unit/test_remotefs.py

Now when i disable test_create_snapshot_online_success then running both
the suites work,
but when i enable test_create_snapshot_online_success then it fails as
above.

I am unable to figure whats the connection between
test_create_snapshot_online_success
in test_remotefs.py
and VolumeTestCase.test_can_delete_errored_snapshot in test_volume.py
failure

Can someone help here ?

thanx,
deepak



On Thu, Jun 4, 2015 at 1:37 PM, Deepak Shetty <dpkshetty at gmail.com> wrote:

> Hi Thang,
>   Since you are working on Snapshot Objects, any idea on why the testcase
> when run all by itself, works, but when run as part of the overall suite,
> fails ?
> This seems to be related to the Snapshot Objects, hence Ccing you.
>
> On Wed, Jun 3, 2015 at 9:54 PM, Deepak Shetty <dpkshetty at gmail.com> wrote:
>
>> Hi All,
>>   I am hitting a strange issue when running Cinder unit tests against my
>> patch @
>> https://review.openstack.org/#/c/172808/5
>>
>> I have spent 1 day and haven't been successfull at figuring how/why my
>> patch is causing it!
>>
>> All tests failing are part of VolumeTestCase suite and from the error
>> (see below) it seems
>> the Snapshot Object is complaining that 'volume_id' field is null (while
>> it shouldn't be)
>>
>> An example error from the associated Jenkins run can be seen @
>>
>> http://logs.openstack.org/08/172808/5/check/gate-cinder-python27/0abd15e/console.html.gz#_2015-05-22_13_28_47_140
>>
>> I am seeing a total of 21 such errors.
>>
>> Its strange because, when I try to reproduce it locally in my devstack
>> env, I see the below:
>>
>> 1) When i just run: ./run_tests.sh -N cinder.tests.unit.test_volume.
>> VolumeTestCase
>> all testcases pass
>>
>> 2) When i run 1 individual testcase: ./run_tests.sh -N
>> cinder.tests.unit.test_volume.VolumeTestCase.test_delete_busy_snapshot
>> that passes too
>>
>> 3) When i run : ./run_tests.sh -N
>> I see 21 tests failing and all are failing with error similar to the below
>>
>> {0} cinder.tests.unit.test_volume.VolumeTestCase.test_delete_busy_snapshot
>> [0.537366s] ... FAILED
>>
>> Captured traceback:
>> ~~~~~~~~~~~~~~~~~~~
>>     Traceback (most recent call last):
>>       File "cinder/tests/unit/test_volume.py", line 3219, in
>> test_delete_busy_snapshot
>>         snapshot_obj = objects.Snapshot.get_by_id(self.context,
>> snapshot_id)
>>       File "/usr/lib/python2.7/site-packages/oslo_versionedobjects/base.py",
>> line 163, in wrapper
>>         result = fn(cls, context, *args, **kwargs)
>>       File "cinder/objects/snapshot.py", line 130, in get_by_id
>>         expected_attrs=['metadata'])
>>       File "cinder/objects/snapshot.py", line 112, in _from_db_object
>>         snapshot[name] = value
>>       File "/usr/lib/python2.7/site-packages/oslo_versionedobjects/base.py",
>> line 675, in __setitem__
>>         setattr(self, name, value)
>>       File "/usr/lib/python2.7/site-packages/oslo_versionedobjects/base.py",
>> line 70, in setter
>>         field_value = field.coerce(self, name, value)
>>       File "/usr/lib/python2.7/site-packages/oslo_versionedobjects/fields.py",
>> line 182, in coerce
>>         return self._null(obj, attr)
>>       File "/usr/lib/python2.7/site-packages/oslo_versionedobjects/fields.py",
>> line 160, in _null
>>         raise ValueError(_("Field `%s' cannot be None") % attr)
>>     ValueError: Field `volume_id' cannot be None
>>
>> Any suggestions / thoughts on why this could be happening ?
>>
>> thanx,
>> deepak
>>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.openstack.org/pipermail/openstack-dev/attachments/20150604/d35b158b/attachment.html>


More information about the OpenStack-dev mailing list