Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions libmc/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -33,8 +33,8 @@
__file__ as _libmc_so_file
)

__VERSION__ = "1.4.11"
__version__ = "1.4.11"
__VERSION__ = "1.4.12"
__version__ = "1.4.12"
__author__ = "mckelvin"
__email__ = "[email protected]"
__date__ = "Fri Jun 7 06:16:00 2024 +0800"
Expand Down
6 changes: 1 addition & 5 deletions libmc/_client.pyx
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,6 @@ from cpython cimport (
PyBytes_AsString as PyString_AsString,
PyUnicode_AsUTF8String,
)
from ctypes import c_long as long

import os
import sys
Expand Down Expand Up @@ -299,9 +298,6 @@ cdef bytes _encode_value(object val, int comp_threshold, flags_t *flags):
flags[0] = _FLAG_BOOL
enc_val = b'1' if val else b'0'
elif type_ is int:
flags[0] = _FLAG_INTEGER
enc_val = str(val).encode('ascii')
elif type_ is long:
flags[0] = _FLAG_LONG
enc_val = str(val).encode('ascii')
elif type_.__module__ == 'numpy':
Expand Down Expand Up @@ -346,7 +342,7 @@ cpdef object decode_value(bytes val, flags_t flags):
elif flags & _FLAG_INTEGER:
dec_val = int(dec_val.decode('ascii'))
elif flags & _FLAG_LONG:
dec_val = long(dec_val.decode('ascii'))
dec_val = int(dec_val.decode('ascii'))
elif flags & _FLAG_MARSHAL:
try:
dec_val = marshal.loads(dec_val)
Expand Down
2 changes: 1 addition & 1 deletion src/version.go
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package golibmc

const _Version = "1.4.11"
const _Version = "1.4.12"
const _Author = "mckelvin"
const _Email = "[email protected]"
const _Date = "Fri Jun 7 06:16:00 2024 +0800"
Expand Down
36 changes: 27 additions & 9 deletions tests/test_client.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
# coding: utf-8

import sys
import time
import pytest
import unittest
Expand Down Expand Up @@ -31,13 +30,24 @@ def __eq__(self, other):
class MiscCase(unittest.TestCase):

def test_encode_value(self):
expect = (b'(\x02\x00\x00\x00s\x06\x00\x00\x00doubani\x00\x00\x00\x00',
32)
data = (b'douban', 0)
# FIXME
vi = sys.version_info
if vi.major == 2 and vi.micro == 7 and vi.minor < 9:
assert encode_value(data, 0) == expect
for expect, flag, data in [
(
b'(\x02\x00\x00\x00s\x06\x00\x00\x00doubani\x00\x00\x00\x00',
32,
(b'douban', 0)
),
(
b'1234567890',
4,
123_456_789_0,
),
(
b'12345678901234567890',
4,
123_456_7890_123_456_7890,
),
]:
assert encode_value(data, 0) == (expect, flag)

def test_decode_value(self):
dataset = [
Expand All @@ -50,13 +60,21 @@ def test_decode_value(self):
"scubadiving",
b'haha',
('douban', 0),
123_456_789,
]
for d in dataset:
new_d = decode_value(*encode_value(d, 0))
assert new_d == d
if isinstance(d, DiveMaster):
assert d is not new_d

for data, flag, expected in [
(b'123', 2, 123),
(b'123456789', 2, 123_456_789),
(b'12345678901234567890', 4, 123_456_7890_123_456_7890),
]:
assert decode_value(data, flag) == expected


class SingleServerCase(unittest.TestCase):
def setUp(self):
Expand Down Expand Up @@ -195,7 +213,7 @@ def test_maxiov(self):

def test_get_set_raw(self):
self.mc.set('foo', 233)
assert self.mc.get_raw('foo') == (b'233', 2)
assert self.mc.get_raw('foo') == (b'233', 4)
self.mc.set_raw('foo', b'2335', 0, 2)
assert self.mc.get('foo') == 2335

Expand Down