Skip to content

Commit

Permalink
Cosmetic changes, updated value handling and more tests.
Browse files Browse the repository at this point in the history
  • Loading branch information
Toru Maesaka committed Apr 7, 2011
1 parent f07e779 commit 473fdcb
Show file tree
Hide file tree
Showing 2 changed files with 44 additions and 15 deletions.
42 changes: 27 additions & 15 deletions kyototycoon/kt_http.py
Original file line number Diff line number Diff line change
Expand Up @@ -45,8 +45,7 @@ def echo(self):

def get(self, key):
if key is None: return False
key = key.encode('UTF-8')
key = urllib.quote(key)
key = urllib.quote(key.encode('UTF-8'))
self.conn.request('GET', key)
rv = self.conn.getresponse()
body = rv.read()
Expand All @@ -60,8 +59,12 @@ def set(self, key, value, expire):
expire = int(time.time()) + expire;
headers["X-Kt-Xt"] = str(expire)

key = key.encode('UTF-8')
key = urllib.quote(key)
if not isinstance(value, str):
value = str(value)

key = urllib.quote(key.encode('UTF-8'))
value = value.encode('UTF-8')

self.conn.request('PUT', key, value, headers)
rv = self.conn.getresponse()
body = rv.read()
Expand All @@ -74,18 +77,22 @@ def add(self, key, value, expire):
if expire != None:
expire = int(time.time()) + expire;
headers["X-Kt-Xt"] = str(expire)

if not isinstance(value, str):
value = str(value)

key = key.encode('UTF-8')
key = urllib.quote(key)
key = urllib.quote(key.encode('UTF-8'))
value = value.encode('UTF-8')

self.conn.request('PUT', key, value, headers)
rv = self.conn.getresponse()
body = rv.read()
return rv.status == 201;

def remove(self, key):
if key is None: return False
key.encode('UTF-8')
key = urllib.quote(key)

key = urllib.quote(key.encode('UTF-8'))
self.conn.request('DELETE', key)
rv = self.conn.getresponse()
body = rv.read()
Expand All @@ -98,9 +105,13 @@ def replace(self, key, value, expire):
if expire != None:
expire = int(time.time()) + expire;
headers["X-Kt-Xt"] = str(expire)

if not isinstance(value, str):
value = str(value)

key = key.encode('UTF-8')
key = urllib.quote(key)
key = urllib.quote(key.encode('UTF-8'))
value = value.encode('UTF-8')

self.conn.request('PUT', key, value, headers)
rv = self.conn.getresponse()
body = rv.read()
Expand All @@ -109,11 +120,13 @@ def replace(self, key, value, expire):
def append(self, key, value, expire):
if key is None: return False

key = key.encode('UTF-8')
key = urllib.quote(key)
if not isinstance(value, str):
value = str(value)

key = urllib.quote(key.encode('UTF-8'))
value = urllib.quote(value)
request_body = 'key\t%s\nvalue\t%s\n' % (key, value)

request_body = 'key\t%s\nvalue\t%s\n' % (key, value)
self.conn.request('POST', '/rpc/append', body=request_body,
headers=KT_HTTP_HEADER)

Expand All @@ -124,8 +137,7 @@ def append(self, key, value, expire):
def increment(self, key, delta, expire):
if key is None: return False

key = key.encode('UTF-8')
key = urllib.quote(key)
key = urllib.quote(key.encode('UTF-8'))
delta = int(delta)

request_body = 'key\t%s\nnum\t%d\n' % (key, delta)
Expand Down
17 changes: 17 additions & 0 deletions tests/t_simple.py
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,12 @@ def test_set(self):
self.assertFalse(self.kt_handle.set(None, 'value'))
self.assertFalse(self.kt_handle.get(None))

self.assertTrue(self.kt_handle.set('cb', 1791))
self.assertEqual(self.kt_handle.get('cb'), '1791')

self.assertTrue(self.kt_handle.set('cb', 1791.1226))
self.assertEqual(self.kt_handle.get('cb'), '1791.1226')

def test_remove(self):
self.assertTrue(self.kt_handle.clear())
self.assertFalse(self.kt_handle.remove('must fail key'))
Expand All @@ -54,6 +60,11 @@ def test_replace(self):
self.assertEqual(self.kt_handle.get('apple'), 'apfel')
self.assertFalse(self.kt_handle.replace(None, 'value'))

self.assertTrue(self.kt_handle.replace('apple', 212))
self.assertEqual(self.kt_handle.get('apple'), '212')
self.assertTrue(self.kt_handle.replace('apple', 121))
self.assertEqual(self.kt_handle.get('apple'), '121')

def test_append(self):
self.assertTrue(self.kt_handle.clear())

Expand All @@ -68,6 +79,9 @@ def test_append(self):
self.assertEqual(self.kt_handle.get('key'), 'abcdefghi')
self.assertFalse(self.kt_handle.append(None, 'value'))

self.assertTrue(self.kt_handle.append('key', 123))
self.assertEqual(self.kt_handle.get('key'), 'abcdefghi123')

def test_increment(self):
self.assertTrue(self.kt_handle.clear())

Expand Down Expand Up @@ -97,6 +111,9 @@ def test_add(self):
self.assertTrue(self.kt_handle.add('nyc', 'new york city'))
self.assertFalse(self.kt_handle.add(None, 'value'))

self.assertTrue(self.kt_handle.add('number', 111))
self.assertEqual(self.kt_handle.get('number'), '111')

def test_large_key(self):
large_key = 'x' * self.LARGE_KEY_LEN
self.assertTrue(self.kt_handle.set(large_key, 'value'))
Expand Down

0 comments on commit 473fdcb

Please sign in to comment.