RTE测试

app_util_tests

主要测试util.cpp的函数功能性。

uint128_amount_to_string_test

Test Case RTE测试结果
检查uint128_amount_to_string()转换结果 Pass

price_to_string_test

检查price_to_string()转换结果

Test Case RTE测试结果
计算price的base asset为-1,调用price_to_string() Exception
计算price的base asset为0,price_to_string()返回"0" Pass
计算price的base asset不为-1和0,price_to_string()参数base精度和quote精度超过19 Exception

2. authority_tests

simple_single_signature

测试单签功能。创建一个新账户nathan,asset_id_type为db(db为database_fixture的一个全局变量)。

Test Case RTE测试结果
构建一个转账500的交易,并用nathan私钥签名交易,发送交易,检查balance是否减少500 Pass

any_two_of_three

测试2-of-3多签功能。创建3个私钥,用key1对应的公钥创建一个新账户nathan,asset_id_type为db。更新账户信息,设置多签阈值为2,key1、2、3的权重分别为1。

Test Case RTE测试结果
1.构建一个转账500的交易,并用私钥key1签名交易,发送交易 Exception
2.再用key2签名,发送交易,检查balance是否减少500 Pass
3.清空交易签名字段,用key2、key3先后签名,发送交易,检查balance是否再减少500 Pass
4.清空交易签名字段,用key1、key3先后签名,发送交易,检查balance是否再减少500 Pass
5.清空交易签名字段,仅用key3签名,发送交易 Exception
6.检查balance是否没有减少 Pass

recursive_accounts

主要测试多层级账户创建、权限控制等功能。

Test Case RTE测试结果
1. 创建两个私钥parent1_key、parent2_key;创建parent1和parent2账户;
2. 创建child账户,权限策略为active和owner权限都为parent1和parent2共同控制,即阈值为2,parent1和parent2权重均为1;
3. 创建child转账500的交易,发送交易
Exception
4. 仅用parent1私钥签名,发送交易 Exception
5. 清空交易签名字段,仅用parent2私钥签名,发送交易 Exception
6. 再用parent1私钥签名,发送交易,检查balance是否减少500 Pass
7. 为child创建一个私钥,可以重写parents的权限控制策略(?),重设child的active策略为阈值2,parent1权重1、parent2权重1、child权重2;
8. parent1签名交易、parent2签名交易,发送交易,检查child.active.num_auths是否为3
Pass
9. 构造child转账500的交易,发送交易 Exception
10. 仅用parent1私钥签名,发送交易 Exception
11. 清除签名字段,仅用parent2私钥签名,发送交易 Exception
12. 再用parent1私钥签名,发送交易,检查是否balance减少500 Pass
13. 清除签名字段,仅用child私钥签名,发送交易,检查是否balance减少500 Pass
14. 创建grandparent账户,此时parent1需要grandparent授权;
15. 设置parent1的active和owner权限仅受grandparent控制、grandparent的active和owner权限仅受grandparent控制;
16. 用原有策略签名交易,应该失败,即parent1私钥签名、parent2私钥签名,发送交易;
Exception
17. 清除签名字段,用parent2私钥签名、用grandparent私钥签名,发送交易,检查是否balance减少500 Pass
18. 清除交易信息;
19. 更新grandparent权限策略,更新为理事会成员账户,用parent2私钥签名、grandparent私钥签名、init_account_priv_key签名,发送交易
Exception
20. 清除交易签名字段;
21. 用child私钥签名,发送交易,检查是否balance减少500(why?)
Pass
22. 验证多层级的“循环”会失败。即,更新parent1的权限策略为child完全控制 Exception
23. 验证递归深度不满足时签名交易会失败。即,parent2签名交易,发送交易 Exception

proposed_single_account

Test Case RTE测试结果
1. 调用any_two_of_three,nathan受key1、key2、key3中任意2个同时授权控制;
2. 创建新账户moneyman,从db转账1000000到moneyman;
3. moneyman创建提案让Nathan发送100 CORE给moneyman,设置提案交易的必要属性;
4. 检查提案的active、owner授权集合;
Pass
5. 设置提案,检查提案需要获得Nathan授权; Pass
6. 获得Nathan授权,更新提案,用理事会私钥签名交易并发送交易(Nathan还未同意); Exception
7. 重置授权信息,让理事会签名交易并发送(理事会对这个交易没有股权); Exception
8. 重置授权信息,让Nathan的key2和key3签名交易并发送,balance成功减少100; Pass

committee_authority

验证committee_authority不能被普通交易调用。

Test Case RTE测试结果
1. 创建新账户nathan,理事会私钥设置为init_account_priv_key;
2. 产生新区块;
3. 修改理事会提案审核周期为1天;
4. 创建一个转账交易,转账100000 CORE给Nathan,用理事会私钥签署交易并发送(此时该转账交易需被纳入提案才可以被理事会签署发送成功);
Exception
5. Nathan签署交易交易并发送(提案审核周期还未设定); Exception
6. 检查设定的审核周期过短时,签署发送交易; Exception
7. 设定正确的值时,Nathan私钥签署发送交易,检查是否授权成功; Exception
8. 检查提案是否还未被授权执行; Pass
9. 重置交易信息,设置为理事会签署授权提案,发送交易;
10. 检查Nathan账户余额是否未增加;
Pass
11. 检查提案是否还已被授权执行; Pass
12. 清除交易签名信息,重设提案审核周期,理事会重新签署交易并发送(提案正在审核); Exception
13. 重新出块,检查Nathan余额是否增加100000; Pass

fired_committee_members

主要测试被解雇的理事会成员功能。

Test Case RTE测试结果
1. 创建新账户nathan,并从db给Nathan转账5000 CORE;
2. 创建理事会成员列表,共15个理事会成员,所有理事会成员升级为终生会员;
3. 检查Nathan账户余额为5000;
Pass
4. 理事会创建提案,向Nathan转账100000,检查提案是否还未被授权执行; Pass
5. 理事会成员授权提案,检查提案是否已经被授权执行; Pass
6. 在设定的提案审核期间,不断的产生区块,并检查Nathan账户余额是否还未增加100000; Pass
7. 持续2天的审核提案、检查Nathan账户,检查提案是否已经被授权执行; Pass
8. 检查Nathan账户是否还未增加100000; Pass
9. 理事会成员列表需要更新,Nathan需要重新投票选举新的理事会成员;
10. Nathan账户余额是否还未变化;
Pass
11. 持续出块、检查Nathan账户是否还未变化;
12. 到了设定的过期时间,提案过期,转账100000到Nathan账户的提案被作废。
Pass

proposal_two_accounts

Test Case RTE测试结果
1. 创建账户Nathan和dan,分别从db转账100000到账户;
2. 创建一个从Nathan转账500到dan的交易,并将该交易创建成提案,费用池指向Nathan账户,提案过期时间为1天;
3. Nathan签名提案并发送;
4. 检查提案的授权信息;
Pass
5. 检查提案是否还未被授权执行; Pass
6. 更新提案,添加Nathan到提案的授权列表;
7. 添加dan到授权列表;
8. 检查需要Nathan和dan共同签名,提案才能生效;
Pass

proposal_delete

Test Case RTE测试结果
1. 检查删除提案后,提案内容不生效; Pass

proposal_owner_authority_delete

Test Case RTE测试结果
1. Pass

proposal_owner_authority_complete

Test Case RTE测试结果
1. Pass

max_authority_membership

Test Case RTE测试结果
1. 检查删除提案后,提案内容不生效; Pass

3. basic_tests

valid_name_test

Test Case RTE测试结果
1. 检查名字格式是否有效(遵循RFC-1035); Pass

valid_symbol_test

Test Case RTE测试结果
1. 检查符号是否有效; Pass

price_test

Test Case RTE测试结果
1. 检查各种价格换算的结果正确性; Pass

memo_test

Test Case RTE测试结果
1. 检查memo的填充、发送、解析的正确性(如果web socket的格式发生变化,需要更新该测试用例); Pass

scaled_precision

Test Case RTE测试结果
1. 检查精度换算的正确性; Pass

merkle_root

Test Case RTE测试结果
1. 检查merkle树计算的正确性; Pass

4. block_tests

block_database_test

Test Case RTE测试结果
1. 检查block_database的成员函数:open; Pass
2. 检查block_database的成员函数:close; Pass
3. 检查block_database的成员函数:store; Pass
4. 检查block_database的成员函数:fetch_by_number; Pass
5. 检查block_database的成员函数:last; Pass

generate_empty_blocks

Test Case RTE测试结果
1. 检查witness依次产生空块的正确性; Pass

undo_block

检查撤块的正确性

Test Case RTE测试结果
1. 产生5个空块; Pass
2. 从上往下依次撤销3个块,检查head block num的正确性; Pass
3. 在head block num为2时,再次产生5个空块,检查当前head block num是否为7; Pass

fork_blocks

检查区块链分叉、切换的正确性。database有object database和block database的概念。分叉只会出现在LIB以上的区块。

Test Case RTE测试结果
1. 创建两个db实例,制造block分叉的情况,检查区块分叉及切换回最长链的正确性; Pass

undo_pending

Test Case RTE测试结果
1. 创建转账交易,查询db中接收方对象的余额,检查是否转账成功; Pass
2. 撤销pending状态的交易(还未上链)后查询db中该对象的余额,检查是否余额按照预期变化; Pass

switch_forks_undo_create

Test Case RTE测试结果
1. 制造链的分叉,在db1创建新账户,检查db1上能否找到该账户; Pass
2. 切换分叉(db2更长);在db1上撤回创建账户的操作,检查db1上是否不能找到该账户; Pass
3. 同步两个分叉后,在db1和db2上查找该账户,检查是否能找到; Pass

duplicate_transactions

Test Case RTE测试结果
1. 打开2个db实例,创建一个转账交易,并用db1打包进block;
2. 在
Pass

wallet_tests

derive_owner_keys_from_brain_key

  1. 检查derived keys长度为3
  2. 检查derived keys唯一,没有重复
  3. 检查public keys前三位为CYB

uia_tests

create_advanced_uia

  1. 发行新资产
  2. 验证symbol,symbol_id, rate, flag, max_supply,market_fee,current_supply, accumulated_fees,fee_pool

override_transfer

  1. sam发行资产,注意设置override_authority flag
  2. sam给dan发1000个token
  3. 生成override_transfer订单,from为dan, to为eric, value为100
  4. 没有签名,直接push应该报错
  5. 使用dan签名,然后push会报错
  6. 使用sam签名,push应该正常
  7. 最终结果dan 900余额, eric 100余额

override_transfer_test2

  1. sam发行资产
  2. sam给dan发1000个token
  3. 生成override_transfer订单,from为dan, to为eric, value为100
  4. 没有签名,直接push应该报错
  5. 使用dan签名,然后push会报错
  6. 使用sam签名,push失败,因为override_auth flag没设置
  7. 最终结果dan 1000余额, eric 0余额

issue_whitelist_uia

  1. 创建账户izzy并发行资产
  2. 创建账户nathan,vikram
  3. izzy issue 1000个token给nathan
  4. nathan balance涨了1000
  5. 将izzy加入发行资产whitelist_authorities
  6. izzy issue 1000个token给nathan
  7. 步骤6失败,因为izzy账号下的whitelisting_accounts没有nathan
  8. 将vikram加入izzy账号下的whitelisting_accounts,重复步骤6
  9. 步骤8应该失败,因为izzy账号下的whitelisting_accounts没有nathan
  10. 将nathan加入izzy账号下的whitelisting_accounts,重复步骤6
  11. nathan账号应该增加1000个token

transfer_whitelist_uia

  1. 重复issue_whitelist_uia 测试用例
  2. 创建dan账号, 并升级为终身会员
  3. 尝试nathan给dan转账
  4. 步骤3会失败,因为dan不在izzy的whitelisting_accounts中
  5. izzy将dan加入本账号的whitelisting_accounts,重复步骤3
  6. dan会收到nathan发送过来的token

transfer_blacklist_uia

  1. 类似transfer_whitelist_uia的逻辑,尝试blacklist_accounts场景

transfer_restricted_test

  1. sam发行资产
  2. alice issue sam发行的资产
  3. 步骤2成功
  4. sam调整发行资产的flag为transfer_restricted
  5. 重复步骤2会失败,因为资产已经被禁止transfer了

asset_name_test

  1. 测试发行的asset的名称
  2. 发行过的资产不允许重现发行
  3. 资产ABC与ABC.DEF为不同的资产

swan_tests

BM黑天鹅解释
bitcny理解

serialization_tests

序列化测试,略过

operation_tests

feed_limit_logic_test

  1. 喂价单测试,cybex未涉及,暂时跳过

margin_call_limit_test

  1. margin call, cybex未涉及,暂时跳过

prediction_market

  1. PMA, cybex未涉及,暂时跳过

create_account_test

  1. 测试创建账号时账号的限制, 源码
  2. 验证账号长度限制,账号包含特殊符号(!.-)等

update_account

  1. 更新memo_key, 验证是否更新正确
  2. 更新active/owner key threshold, 验证更新是否正确
  3. 投票,验证更新是否正确
  4. 升级会员,验证更新是否正确

transfer_core_asset

  1. committee_account给某账户转账,验证转账金额已经fee是否对的上
  2. nathan给某账户转账,验证转账金额已经fee是否对的上

create_committee_member

  1. 创建董事会成员,验证是否创建成功

create_mia, update_mia

  1. 创建MIA, cybex未涉及,暂时跳过

create_uia

  1. 用户发行资产,验证发行的资产是否和当初发行时参数一直
  2. 需要验证issuer, fee, symbol, max_supply, precision, market_fee_percent, issuer_permissions, flags, core_exchange_rate, current_supply, accumulated_fees, fee_pool

update_uia

  1. 更新core exchange rate
  2. 更新设置flag
  3. 更新设置黑白名单

issue_uia

  1. issue的asset不能不存在
  2. fee不能为负数
  3. asset to accout必须存在
  4. 转账后current_supply不能变
  5. accumulated_fees和fee_pool均为0

transfer_uia

  1. nathan创建uia, 给committee转账
  2. 双方账对的上

create_buy_uia_multiple_match_new

  1. 创建UIA token
  2. 创建账号nathan, seller, buyer
  3. buyer挂三笔限价单 100UIA - 100CYB, 100UIA - 200CYB, 100UIA - 300 CYB, 此时seller的UIA balance应该减少300
  4. seller挂一笔限价单 300CYB - 150 UIA, 此时seller CYB balance减少300
  5. 最终结果seller 有200 UIA, buyer有297个CYB, 手续费3CYB

create_buy_exact_match_uia

  1. 创建UIA token
  2. 创建账号nathan, seller, buyer
  3. buyer挂三笔限价单 100UIA - 100CYB, 100UIA - 200CYB, 100UIA - 300 CYB
  4. seller挂一笔限价单 100CYB - 100 UIA
  5. 最终结果seller 有99 UIA, buyer有100 CYB, 手续费1 CYB

create_buy_uia_multiple_match_new_reverse

  1. 创建UIA token
  2. 创建账号nathan, seller, buyer
  3. seller挂一笔限价单 100CYB - 150 UIA
  4. buyer挂三笔限价单 100UIA - 100CYB, 100UIA - 200CYB, 100UIA - 300 CYB, 此时seller的UIA balance应该减少300
  5. 最终结果seller 有198 UIA, buyer有300 CYB, 手续费2 CYB

create_buy_uia_multiple_match_new_reverse_fract

  1. 创建UIA token
  2. 创建账号nathan, seller, buyer
  3. buyer挂三笔限价单 100UIA - 10CYB, 100UIA - 20CYB, 100UIA - 30 CYB, 此时seller的UIA balance应该减少300
  4. seller挂一笔限价单 30CYB - 150 UIA, 此时seller CYB balance减少300
  5. 最终结果seller 有198 UIA和0 CYB,buyer有30个CYB, 手续费2 CYB

uia_fees

  1. 发行资产时,fee的10%进入fee_pool
  2. committee 向fee_pool入账,入账金额应该对的上
  3. nathan向committee做一笔转账, fee id应该为CYB, fee amount应该大于0
  4. committee_account收到转账金额, accumulated_fees, fee_pool相应增加
  5. 重复步骤3,4

cancel_limit_order_test

  1. 发一笔限价单
  2. 取消限价单

trade_amount_equals_zero

  1. buyer限价单 3 TEST - 1CYB
  2. seller挂两笔相同的限价单 1 CYB - 2 TEST
  3. 最终结果seller 有3 TEST,buyer有1个CYB

limit_order_fill_or_kill

  1. 发一笔fill or kill 限价单
  2. 要么立即成交,要么立即销毁

reserve_asset_test

  1. 验证收回资产
  2. 验证摧毁资产

worker_create_test

  1. 创建worker
  2. 检查daily_pay, work_begin_date, work_end_date, vote_for, vote_against
  3. 检查worker_pay
  4. 删除worker

transfer_with_memo

  1. transfer时加memo, 检查transfer是否正确执行, memo是否正确

history_api_tests

get_account_history

  1. nathan做三笔op,查看其最近的account history 是否有这三笔
  2. 查看account history时限制返回limit, 看是否生效

get_account_history_additional

  1. 新链 get account history 长度为0
  2. 相互转账,双方共享一条相关的history

fee_tests

nonzero_fee_test

  1. fee不够时转账报错

asset_claim_fees_test

  1. Izzy issues asset to Alice
  2. Jill issues asset to Bob
  3. Alice and Bob trade in the market and pay fees
  4. Verify that Izzy and Jill can claim the fees

cashback_test

  1. 推荐人奖励机制
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,456评论 5 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,370评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,337评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,583评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,596评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,572评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,936评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,595评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,850评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,601评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,685评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,371评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,951评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,934评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,167评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 43,636评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,411评论 2 342

推荐阅读更多精彩内容

  • 上高中的时候,一个人会边写作业边听广播,有时候是《荣俊钟情》,有时候是《一些事一些情》,在这部电影里,是一个叫《从...
    BinGoChiu阅读 254评论 0 0
  • 感赏自己,又平静的的度过了一天! 感赏宝贝,这么冷的天,每天起早按时上学。好辛苦,宝贝加油! 感赏自己爱自己,舍得...
    郝桐阅读 97评论 0 0
  • 1.早起+喝水(起晚了,不过今天来也推荐的话很有感触啊,知易行难) 2.日常工作: 继续调试中 3.运动 跳绳5分...
    lrb2017阅读 114评论 0 0
  • 菜问妈妈阅读 60评论 0 0