Add tests for database

This commit is contained in:
Jay Graber 2017-07-28 19:44:24 -07:00
parent 94abea7bc2
commit 0cab1f7db3
4 changed files with 36 additions and 24 deletions

View File

@ -6,7 +6,6 @@ import xcat.zcashRPC
import xcat.userInput import xcat.userInput
from xcat.trades import * from xcat.trades import *
from xcat.protocol import * from xcat.protocol import *
import ast
def save_state(trade, tradeid): def save_state(trade, tradeid):
save(trade) save(trade)
@ -53,8 +52,7 @@ def checkBuyStatus(trade):
# Import a trade in hex, and save to db # Import a trade in hex, and save to db
def importtrade(hexstr): def importtrade(hexstr):
trade = x2s(hexstr) trade = instantiate(trade)
trade = instantiateTrade(ast.literal_eval(trade))
save_state(trade) save_state(trade)
# Export a trade by its tradeid # Export a trade by its tradeid
@ -74,8 +72,6 @@ def newtrade(tradeid):
# db.create(trade) # db.create(trade)
save_state(trade, tradeid) save_state(trade, tradeid)
def instantiateTrade(trade):
return Trade(buy=Contract(trade['buy']), sell=Contract(trade['sell']))
def main(): def main():
parser = argparse.ArgumentParser(formatter_class=argparse.RawTextHelpFormatter, parser = argparse.ArgumentParser(formatter_class=argparse.RawTextHelpFormatter,
@ -105,7 +101,7 @@ def main():
exporttrade(tradeid) exporttrade(tradeid)
elif command == 'checktrades': elif command == 'checktrades':
trade = get_trade() trade = get_trade()
trade = instantiateTrade(trade) trade = instantiate(trade)
if find_role(trade.sell) == 'initiator': if find_role(trade.sell) == 'initiator':
role = 'seller' role = 'seller'
checkSellStatus(trade) checkSellStatus(trade)

View File

@ -1,17 +1,11 @@
import plyvel import plyvel
from .utils import * from xcat.utils import *
import binascii import binascii
import sys import sys
import json import json
db = plyvel.DB('/tmp/testdb', create_if_missing=True) db = plyvel.DB('/tmp/testdb', create_if_missing=True)
# trade = get_trade()
# ## txid we retrieve by
# if trade and trade.sell:
# if hasattr(trade.sell, 'fund_tx'):
# txid = trade.sell.fund_tx
# Takes object, saves json as bytes # Takes object, saves json as bytes
def create(trade, tradeid): def create(trade, tradeid):
trade = trade.toJSON() trade = trade.toJSON()
@ -26,14 +20,19 @@ def createByFundtx(trade):
db.put(b(txid), b(trade)) db.put(b(txid), b(trade))
def get(txid): def get(txid):
return db.get(b(txid)) rawtrade = db.get(b(txid))
tradestr = x2s(b2x(rawtrade))
trade = instantiate(tradestr)
return trade
# db.delete(b'hello') # db.delete(b'hello')
db.get(b'test') # testtrade = get('test')
# testtrade = instantiate(testtrade)
# print(testtrade)
# hexstr = get(txid) # hexstr = get(txid)
# print(x2s(hexstr)) # print(x2s(hexstr))
#
def print_entries(): def print_entries():
it = db.iterator() it = db.iterator()
with db.iterator() as it: with db.iterator() as it:

View File

@ -15,7 +15,11 @@ class DatabaseTest(unittest.TestCase):
def test_get(self): def test_get(self):
trade = db.get('test') trade = db.get('test')
print("Trade") tradejson = json.loads(trade.toJSON())
datajson = json.loads(json.dumps(self.data))
self.assertEqual(datajson['sell'], tradejson['sell'])
self.assertEqual(datajson['buy'], tradejson['buy'])
self.assertEqual(datajson['commitment'], tradejson['commitment'])
if __name__ == '__main__': if __name__ == '__main__':
unittest.main() unittest.main()

View File

@ -1,5 +1,5 @@
import hashlib, json, random, binascii import hashlib, json, random, binascii, ast
import xcat.trades import xcat.trades as trades
############################################ ############################################
########### Data conversion utils ########## ########### Data conversion utils ##########
@ -26,8 +26,6 @@ def s2x(string):
def hex2dict(hexstr): def hex2dict(hexstr):
jsonstr = x2s(hexstr) jsonstr = x2s(hexstr)
print(hexstr['fund_tx'])
print(jsonstr)
return json.loads(jsonstr) return json.loads(jsonstr)
def jsonformat(trade): def jsonformat(trade):
@ -84,6 +82,23 @@ def save_secret(secret):
######### xcat.json temp file ############# ######### xcat.json temp file #############
############################################# #############################################
def instantiate(tradedata):
print("tradedata", tradedata)
if type(tradedata) == dict:
string = str(tradedata)
print("STRING", string)
tradedata = json.loads(ast.literal_eval(tradedata))
print("@", tradedata)
elif type(tradedata) == hex:
hexstr = x2s(tradedata)
tradedata = ast.literal_eval(hexstr)
elif type(tradedata) == str:
tradedata = json.loads(tradedata)
sell = trades.Contract(tradedata['sell'])
buy = trades.Contract(tradedata['buy'])
trade = trades.Trade(sell, buy, commitment=tradedata['commitment'])
return trade
def save_trade(trade): def save_trade(trade):
print("Trade in save_trade", trade) print("Trade in save_trade", trade)
with open('xcat.json', 'w+') as outfile: with open('xcat.json', 'w+') as outfile:
@ -93,9 +108,7 @@ def get_trade():
try: try:
with open('xcat.json') as data_file: with open('xcat.json') as data_file:
xcatdb = json.load(data_file) xcatdb = json.load(data_file)
sell = trades.Contract(xcatdb['sell']) trade = instantiate(tradedata)
buy = trades.Contract(xcatdb['buy'])
trade = trades.Trade(sell, buy, commitment=xcatdb['commitment'])
return trade return trade
except: except:
return None return None