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

View File

@ -1,17 +1,11 @@
import plyvel
from .utils import *
from xcat.utils import *
import binascii
import sys
import json
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
def create(trade, tradeid):
trade = trade.toJSON()
@ -26,14 +20,19 @@ def createByFundtx(trade):
db.put(b(txid), b(trade))
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.get(b'test')
# testtrade = get('test')
# testtrade = instantiate(testtrade)
# print(testtrade)
# hexstr = get(txid)
# print(x2s(hexstr))
#
def print_entries():
it = db.iterator()
with db.iterator() as it:

View File

@ -15,7 +15,11 @@ class DatabaseTest(unittest.TestCase):
def test_get(self):
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__':
unittest.main()

View File

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