Skip to content

Commit

Permalink
Also skip range tests if using Murmur3Partitioner
Browse files Browse the repository at this point in the history
  • Loading branch information
thobbs committed Oct 17, 2012
1 parent faf27ab commit ce6f532
Show file tree
Hide file tree
Showing 3 changed files with 37 additions and 19 deletions.
30 changes: 16 additions & 14 deletions tests/test_columnfamily.py
@@ -1,11 +1,12 @@
import unittest

from nose.tools import assert_raises, assert_equal, assert_true

from pycassa import index, ColumnFamily, ConnectionPool,\
NotFoundException, SystemManager
from pycassa.util import OrderedDict

from nose.tools import assert_raises, assert_equal, assert_true
from nose.plugins.skip import SkipTest

import unittest
from tests.util import requireOPP

pool = cf = scf = indexed_cf = counter_cf = counter_scf = sys_man = None

Expand All @@ -28,11 +29,16 @@ def teardown_module():
counter_scf.truncate()
pool.dispose()


class TestDict(dict):
pass


class TestColumnFamily(unittest.TestCase):

def setUp(self):
self.sys_man = sys_man

def tearDown(self):
for key, columns in cf.get_range():
cf.remove(key)
Expand Down Expand Up @@ -128,10 +134,8 @@ def test_insert_multiget_count(self):
result = cf.multiget_count(keys, column_start='1', column_reversed=True)
assert_equal([result[k] for k in keys], [1 for key in keys])

@requireOPP
def test_insert_get_range(self):
if sys_man.describe_partitioner() == 'RandomPartitioner':
raise SkipTest('Cannot use RandomPartitioner for this test')

keys = ['TestColumnFamily.test_insert_get_range%s' % i for i in xrange(5)]
columns = {'1': 'val1', '2': 'val2'}
for key in keys:
Expand All @@ -143,10 +147,8 @@ def test_insert_get_range(self):
assert_equal(k, keys[i])
assert_equal(c, columns)

@requireOPP
def test_get_range_batching(self):
if sys_man.describe_partitioner() == 'RandomPartitioner':
raise SkipTest('Cannot use RandomPartitioner for this test')

cf.truncate()

keys = []
Expand Down Expand Up @@ -561,8 +563,8 @@ def test_get_count_super_columns(self):
assert_equal(scf.get_count(key, column_finish='1'), 1)

def test_multiget_count_super_column(self):
key1 = 'TestSuperColumnFamily.test_multiget_count_super_column'
key2 = 'TestSuperColumnFamily.test_multiget_count_super_column'
key1 = 'TestSuperColumnFamily.test_multiget_count_super_column1'
key2 = 'TestSuperColumnFamily.test_multiget_count_super_column2'
keys = [key1, key2]
subcolumns = {'sub1': 'val1', 'sub2': 'val2', 'sub3': 'val3'}
columns = {'1': subcolumns}
Expand All @@ -574,8 +576,8 @@ def test_multiget_count_super_column(self):
assert_equal(scf.multiget_count(keys, super_column='1', column_finish='sub1'), {key1: 1, key2: 1})

def test_multiget_count_super_columns(self):
key1 = 'TestSuperColumnFamily.test_multiget_count_super_columns'
key2 = 'TestSuperColumnFamily.test_multiget_count_super_columns'
key1 = 'TestSuperColumnFamily.test_multiget_count_super_columns1'
key2 = 'TestSuperColumnFamily.test_multiget_count_super_columns2'
keys = [key1, key2]
columns = {'1': {'sub1': 'val1'}, '2': {'sub2': 'val2'}, '3': {'sub3': 'val3'}}
scf.insert(key1, columns)
Expand Down
11 changes: 6 additions & 5 deletions tests/test_columnfamilymap.py
Expand Up @@ -2,12 +2,14 @@
import unittest
import uuid

from nose.tools import assert_raises, assert_equal, assert_true
from nose.plugins.skip import SkipTest

import pycassa.types as types
from pycassa import index, ColumnFamily, ConnectionPool, \
ColumnFamilyMap, NotFoundException, SystemManager
from nose.tools import assert_raises, assert_equal, assert_true
from nose.plugins.skip import SkipTest

from tests.util import requireOPP

CF = 'Standard1'
SCF = 'Super1'
Expand Down Expand Up @@ -60,6 +62,7 @@ class TestEmpty(object):
class TestColumnFamilyMap(unittest.TestCase):

def setUp(self):
self.sys_man = sys_man
self.map = ColumnFamilyMap(TestUTF8, pool, CF)
self.indexed_map = ColumnFamilyMap(TestIndex, pool, INDEXED_CF)
self.empty_map = ColumnFamilyMap(TestEmpty, pool, CF, raw_columns=True)
Expand Down Expand Up @@ -155,10 +158,8 @@ def test_insert_multiget(self):
assert_equal(rows[instance2.key], instance2)
assert_true(missing_key not in rows)

@requireOPP
def test_insert_get_range(self):
if sys_man.describe_partitioner() == 'RandomPartitioner':
raise SkipTest('Cannot use RandomPartitioner for this test')

instances = [self.instance() for i in range(5)]
instances = sorted(instances, key=lambda instance: instance.key)
for instance in instances:
Expand Down
15 changes: 15 additions & 0 deletions tests/util.py
@@ -0,0 +1,15 @@
from functools import wraps

from nose.plugins.skip import SkipTest

def requireOPP(f):
""" Decorator to require an order-preserving partitioner """

@wraps(f)
def wrapper(self, *args, **kwargs):
partitioner = self.sys_man.describe_partitioner()
if partitioner in ('RandomPartitioner', 'Murmur3Partitioner'):
raise SkipTest('Must use order preserving partitioner for this test')
return f(*args, **kwargs)

return wrapper

0 comments on commit ce6f532

Please sign in to comment.