[openstack-dev] [trove] trove unit tests failing on stable/kilo

Matt Riedemann mriedem at linux.vnet.ibm.com
Wed Nov 18 19:53:37 UTC 2015



On 11/18/2015 9:23 AM, Matt Riedemann wrote:
>
>
> On 11/17/2015 10:37 PM, Nikhil Manchanda wrote:
>> Thanks for putting up that fix Matt.
>>
>> The dependency on trunk python-troveclient (for stable/kilo) definitely
>> seems
>> screwy-- but I'm wondering if this was done for backwards compatibility
>> reasons?
>> (i.e. to ensure the latest version of python-troveclient should be able
>> to work
>> correctly against all previous releases of trove.)
>
> If that was the plan, https://review.openstack.org/#/c/210004/ totally
> blows that up since it's a backward incompatible change and was released
> in a minor version rather than a major version.  That change is really
> what's breaking stable/kilo trove unit tests.
>
>>
>> Either way, I think we should be honoring the requirements specified for
>> the respective
>> releases in g-r, so I think that this is the right fix.
>>
>> Cheers,
>> Nikhil
>>
>>
>>
>> On Tue, Nov 17, 2015 at 7:42 PM, Matt Riedemann
>> <mriedem at linux.vnet.ibm.com <mailto:mriedem at linux.vnet.ibm.com>> wrote:
>>
>>
>>
>>     On 11/17/2015 9:27 PM, Matt Riedemann wrote:
>>
>>
>>
>>         On 11/17/2015 9:22 PM, Matt Riedemann wrote:
>>
>>             I noticed this failing today:
>>
>>
>> http://logs.openstack.org/81/206681/3/check/gate-trove-python27/45d645d/console.html#_2015-11-17_17_07_28_061
>>
>>
>>
>>
>>             Looks like https://review.openstack.org/#/c/218701/ and
>>             maybe the
>>             dependent python-troveclient change would need to be
>>             backported to
>>             stable/kilo (neither are clean backports), or we can just
>>             skip the test
>>             on stable/kilo if there is a good reason why it won't work.
>>
>>
>>         I also see that the unit test job on stable/kilo is pulling in
>> trunk
>>         python-troveclient:
>>
>>
>> http://logs.openstack.org/81/206681/3/check/gate-trove-python27/45d645d/console.html#_2015-11-17_17_07_28_393
>>
>>
>>
>>         Even though we have troveclient capped at 1.1.0 in kilo g-r:
>>
>>
>> https://github.com/openstack/requirements/blob/stable/kilo/global-requirements.txt#L136
>>
>>
>>
>>         So how is that happening?
>>
>>         Oh, because of this:
>>
>>
>> https://github.com/openstack/trove/blob/stable/kilo/test-requirements.txt#L17
>>
>>
>>
>>         And that's terrible....why are we doing that?
>>
>>
>>     Attempting to fix here: https://review.openstack.org/#/c/246735/
>>
>>
>>     --
>>
>>     Thanks,
>>
>>     Matt Riedemann
>>
>>
>>
>> __________________________________________________________________________
>>
>>     OpenStack Development Mailing List (not for usage questions)
>>     Unsubscribe:
>>     OpenStack-dev-request at lists.openstack.org?subject:unsubscribe
>>
>> <http://OpenStack-dev-request@lists.openstack.org?subject:unsubscribe>
>>     http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev
>>
>>
>>
>>
>> __________________________________________________________________________
>>
>> OpenStack Development Mailing List (not for usage questions)
>> Unsubscribe:
>> OpenStack-dev-request at lists.openstack.org?subject:unsubscribe
>> http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev
>>
>

Getting back to root causes, I discussed with a couple of people in IRC 
and wanted to take notes here.

The root issue was the backward incompatible troveclient change:

https://review.openstack.org/#/c/210004/

That was released in 1.3.0 and 1.4.0.  A server side change was made in 
liberty that requires that:

https://review.openstack.org/#/c/218701/

The troveclient change is breaking stable/kilo since the server side 
change isn't in stable/kilo. We could backport that, but given 
global-requirements on troveclient in stable/kilo, it's technically invalid:

https://github.com/openstack/requirements/blob/stable/kilo/global-requirements.txt#L136

python-troveclient>=1.0.7,<1.1.0

Since it's unit tests only and stable/kilo trove is testing against 
trunk troveclient, maybe we don't care - we just hack the fix and go 
about our merry way.

I have little stake in trove as a project so it's ultimately up to the 
project drivers.

The right thing to do, IMO, is revert that backward incompatible 
troveclient change, release that as 1.4.1, restore the change and then 
release that as 2.0. We'd also blacklist 1.3.0 and 1.4.0 in 
global-requirements.

Unit tests on trove master and stable/liberty would break once the 
revert on troveclient landed because the trove unit tests require that 
code in troveclient, but that'd be fixed once you revert the revert 
(since the trove unit tests run trunk troveclient, not from released 
versions). This could be short term pain though and it's controllable 
within the trove core team.

I think long-term trove should not be unit testing against trunk 
troveclient, since it's a false sense of functionality as we've seen 
here. Trove should really be requiring the same versions of troveclient 
that are specified in global-requirements. Doing that would make this 
unit test thing a bit messier though, but not unmanageable.

So, I guess the question is, what does the trove team want to do here?

-- 

Thanks,

Matt Riedemann




More information about the OpenStack-dev mailing list