Re: [openstack-dev] OpenStack and Python 3: python-memcached still the biggest blocker

2014-07-09 Thread Julien Danjou
On Wed, Jul 09 2014, Thomas Goirand wrote:

 The thing is, having a lack of Python 3 support in python-memcached
 prevents from having python-keystoneclient to support Python 3, and as a
 consequence, about everything else in OpenStack.

The main problem I see here is that python-memcached has no unit tests,
so trying to port it to Python 3 is just going to be painful…

For future reference, I've switched to
https://github.com/pinterest/pymemcache for memcache under Python.
Better code, API, have unit tests and supports Python 3. I'd encourage
to migrate to this implementation.

Now that doesn't help you Thomas. But if I had to spend time and energy
helping you, that's more likely what I'd like to propose as a solution
rather than porting python-memcached to Python 3.

Do you know what tests fail exactly with keystoneclient? I'd imagine
it's something from oslo-incubator, I'm not sure keystoneclient uses
memcache directly. Maybe I can try to port that?

-- 
Julien Danjou
-- Free Software hacker
-- http://julien.danjou.info


signature.asc
Description: PGP signature
___
OpenStack-dev mailing list
OpenStack-dev@lists.openstack.org
http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev


Re: [openstack-dev] OpenStack and Python 3: python-memcached still the biggest blocker

2014-07-09 Thread Julien Danjou
On Wed, Jul 09 2014, Thomas Goirand wrote:

 Do you know what tests fail exactly with keystoneclient? I'd imagine
 it's something from oslo-incubator, I'm not sure keystoneclient uses
 memcache directly.

 It's really in the unit tests of keystoneclient. See
 keystoneclient/tests/test_auth_token_middleware.py around line 120. It
 checks if python-memecached is installed. But truth, there's also some
 stuff in keystoneclient/openstack/common/memorycache.py, so it's also in
 oslo-incubator.

It's actually only in oslo-incubator in this case, as everything is tied
to memorycache. I'll take a look at changing/fixing that in some way.

-- 
Julien Danjou
;; Free Software hacker
;; http://julien.danjou.info


signature.asc
Description: PGP signature
___
OpenStack-dev mailing list
OpenStack-dev@lists.openstack.org
http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev


Re: [openstack-dev] OpenStack and Python 3: python-memcached still the biggest blocker

2014-07-09 Thread Thomas Goirand
On 07/09/2014 05:31 PM, Julien Danjou wrote:
 On Wed, Jul 09 2014, Thomas Goirand wrote:
 
 The thing is, having a lack of Python 3 support in python-memcached
 prevents from having python-keystoneclient to support Python 3, and as a
 consequence, about everything else in OpenStack.
 
 The main problem I see here is that python-memcached has no unit tests,
 so trying to port it to Python 3 is just going to be painful…
 
 For future reference, I've switched to
 https://github.com/pinterest/pymemcache for memcache under Python.
 Better code, API, have unit tests and supports Python 3. I'd encourage
 to migrate to this implementation.
 
 Now that doesn't help you Thomas.

Indeed.

 But if I had to spend time and energy
 helping you, that's more likely what I'd like to propose as a solution
 rather than porting python-memcached to Python 3.

There's not only python-keystoneclient, but also nova, keystone,
python-dogpile.cache and swift are using python-memcached. So we'd have
to fix them all. If someone wants to work on that, rather than fixing
python-memcached, I'm fine with it. But I wonder if just fixing the 1500
line memcache.py of python-memcached wouldn't be more efficient.

 Do you know what tests fail exactly with keystoneclient? I'd imagine
 it's something from oslo-incubator, I'm not sure keystoneclient uses
 memcache directly.

It's really in the unit tests of keystoneclient. See
keystoneclient/tests/test_auth_token_middleware.py around line 120. It
checks if python-memecached is installed. But truth, there's also some
stuff in keystoneclient/openstack/common/memorycache.py, so it's also in
oslo-incubator.

 Maybe I can try to port that?

Sorry, I forgot to past it. What fails is importing
keystoneclient.tests.test_auth_token_middleware in testr. You can
reproduce it by starting the Python 3.4 interpreter, and doing:

import keystoneclient.tests.test_auth_token_middleware

Here's the stack dump:

==
FAIL:
unittest.loader.ModuleImportFailure.keystoneclient.tests.test_auth_token_middleware
unittest.loader.ModuleImportFailure.keystoneclient.tests.test_auth_token_middleware
--
_StringException: Traceback (most recent call last):
ImportError: Failed to import test module:
keystoneclient.tests.test_auth_token_middleware
Traceback (most recent call last):
  File /usr/lib/python3.4/unittest/loader.py, line 312, in _find_tests
module = self._get_module_from_name(name)
  File /usr/lib/python3.4/unittest/loader.py, line 290, in
_get_module_from_name
__import__(name)
  File
/home/zigo/sources/openstack/icehouse/python-keystoneclient/build-area/python-keystoneclient-0.9.0/keystoneclient/tests/test_auth_token_middleware.py,
line 425, in
testresources.ResourcedTestCase):
  File
/home/zigo/sources/openstack/icehouse/python-keystoneclient/build-area/python-keystoneclient-0.9.0/keystoneclient/tests/test_auth_token_middleware.py,
line 460, in
@testtools.skipUnless(memcached_available(), 'memcached not available')
  File
/home/zigo/sources/openstack/icehouse/python-keystoneclient/build-area/python-keystoneclient-0.9.0/keystoneclient/tests/test_auth_token_middleware.py,
line 120, in
c.set('ping', 'pong', time=1)
  File /usr/lib/python3/dist-packages/memcache.py, line 651, in set
return self._set(set, key, val, time, min_compress_len)
  File /usr/lib/python3/dist-packages/memcache.py, line 929, in _set
return _unsafe_set()
  File /usr/lib/python3/dist-packages/memcache.py, line 919, in
_unsafe_set
server.send_cmd(fullcmd)
  File /usr/lib/python3/dist-packages/memcache.py, line 1289, in send_cmd
self.socket.sendall(cmd + '\r\n')
TypeError: 'str' does not support the buffer interface


___
OpenStack-dev mailing list
OpenStack-dev@lists.openstack.org
http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev