blob: 64db6be14aadd52052e055a497446c22d9e8f01c [file] [log] [blame]
#!/usr/bin/env python3
# coding:utf-8
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements. See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership. The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied. See the License for the
# specific language governing permissions and limitations
# under the License.
from pypegasus.pgclient import Pegasus
from pypegasus.utils.tools import ScanOptions
from twisted.internet import reactor
from twisted.internet.defer import inlineCallbacks, Deferred
@inlineCallbacks
def basic_test():
# init
c = Pegasus(['127.0.0.1:34601', '127.0.0.1:34602', '127.0.0.1:34603'], 'temp')
suc = yield c.init()
if not suc:
reactor.stop()
print('ERROR: connect pegasus server failed')
return
# set
try:
ret = yield c.set('hkey1', 'skey1', 'value', 0, 500)
print('set ret: ', ret)
except Exception as e:
print(e)
# exist
ret = yield c.exist('hkey1', 'skey1')
print('exist ret: ', ret)
ret = yield c.exist('hkey1', 'skey2')
print('exist ret: ', ret)
# get
ret = yield c.get('hkey1', 'skey1')
print('get ret: ', ret)
ret = yield c.get('hkey1', 'skey2')
print('get ret: ', ret)
# ttl
yield c.set('hkey2', 'skey1', 'value', 123)
d = Deferred()
reactor.callLater(2, d.callback, 'ok') # 2 seconds later
yield d
ret = yield c.ttl('hkey2', 'skey1')
print('ttl ret: ', ret)
# remove
ret = yield c.remove('hkey2', 'skey1')
print('remove ret: ', ret)
# multi_set
kvs = {'skey1': 'value1', 'skey2': 'value2', 'skey3': 'value3'}
ret = yield c.multi_set('hkey3', kvs, 999)
print('multi_set ret: ', ret)
# multi_get
ks = set(kvs.keys())
ret = yield c.multi_get('hkey3', ks)
print('multi_get ret: ', ret)
ret = yield c.multi_get('hkey3', ks, 1)
print('multi_get ret: ', ret)
while ret[0] == 7: # has more data
ks.remove(ret[1].keys()[0])
ret = yield c.multi_get('hkey3', ks, 1)
print('multi_get ret: ', ret)
ret = yield c.multi_get('hkey3', ks, 100, 10000, True)
print('multi_get ret: ', ret)
# sort_key_count
ret = yield c.sort_key_count('hkey3')
print('sort_key_count ret: ', ret)
# get_sort_keys
ret = yield c.get_sort_keys('hkey3', 100, 10000)
print('get_sort_keys ret: ', ret)
# multi_del
ret = yield c.multi_del('hkey3', ks)
print('multi_del ret: ', ret)
# scan
o = ScanOptions()
o.batch_size = 1
s = c.get_scanner('hkey3', '1', '7', o)
while True:
try:
ret = yield s.get_next()
print('get_next ret: ', ret)
except Exception as e:
print(e)
break
if not ret:
break
s.close()
# scan all
yield c.multi_set('0', kvs, 999)
yield c.multi_set('1', kvs, 999)
yield c.multi_set('2', kvs, 999)
yield c.multi_set('3', kvs, 999)
yield c.multi_set('4', kvs, 999)
yield c.multi_set('5', kvs, 999)
yield c.multi_set('6', kvs, 999)
ss = c.get_unordered_scanners(3, o)
for s in ss:
while True:
try:
ret = yield s.get_next()
print('get_next ret: ', ret)
except Exception as e:
print(e)
break
if not ret:
break
s.close()
reactor.stop()
if __name__ == "__main__":
reactor.callWhenRunning(basic_test)
reactor.run()