Skip to content

Commit

Permalink
Merge pull request pycassa#218 from kurtjx/master
Browse files Browse the repository at this point in the history
hacky pass at uuid sorting
  • Loading branch information
thobbs committed Feb 4, 2014
2 parents e22f411 + 0fddc32 commit 7fbb698
Show file tree
Hide file tree
Showing 2 changed files with 29 additions and 3 deletions.
18 changes: 16 additions & 2 deletions pycassa/contrib/stubs.py
Expand Up @@ -7,6 +7,8 @@
"""

import operator
import datetime
from uuid import UUID

from collections import MutableMapping
from pycassa import NotFoundException
Expand Down Expand Up @@ -110,7 +112,7 @@ def describe_schema_versions(self):

return {self._schema(): ['1.1.1.1']}


class ColumnFamilyStub(object):
"""Functional ColumnFamily stub object.
Expand Down Expand Up @@ -148,9 +150,21 @@ def get(self, key, columns=None, column_start=None, column_finish=None,
if not my_columns:
raise NotFoundException()


items = my_columns.items()
items.sort()
if isinstance(items[0], UUID) and items[0].version==1:
items.sort(key=lambda uuid: uuid.time)
elif isinstance(items[0], tuple) and any([isinstance(x, UUID) for x in items[0]]):
isuid = [isinstance(x, UUID) and x.version==1 for x in items[0]]
def sortuuid(tup):
return [x.time if y else x for x, y in zip(tup, isuid)]
items.sort(key=sortuuid)
else:
items.sort()




if column_reversed:
items.reverse()

Expand Down
14 changes: 13 additions & 1 deletion tests/contrib/stubs.py
@@ -1,4 +1,5 @@
import unittest
import time

from nose.tools import assert_raises, assert_equal, assert_true

Expand All @@ -8,7 +9,7 @@
from pycassa.contrib.stubs import ColumnFamilyStub, ConnectionPoolStub, \
SystemManagerStub

from pycassa.util import OrderedDict
from pycassa.util import OrderedDict, convert_time_to_uuid

pool = cf = None
pool_stub = cf_stub = None
Expand Down Expand Up @@ -227,3 +228,14 @@ def test_remove(self):

test_cf.remove(key)
assert_raises(NotFoundException, test_cf.get, key)

def test_insert_get_tuuids(self):
key = 'TestColumnFamily.test_insert_get'
columns = ( (convert_time_to_uuid(time.time()-1000, randomize=True), 'val1'),
(convert_time_to_uuid(time.time(), randomize=True), 'val2') )
for test_cf in (cf, cf_stub):
assert_raises(NotFoundException, test_cf.get, key)
ts = test_cf.insert(key, dict(columns))
assert_true(isinstance(ts, (int, long)))
assert_equal(test_cf.get(key).keys(), [x[0] for x in columns])

0 comments on commit 7fbb698

Please sign in to comment.