RTE测试

作者: Sarcy | 来源:发表于2018-08-22 15:04 被阅读0次

    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. 推荐人奖励机制

    相关文章

      网友评论

          本文标题:RTE测试

          本文链接:https://www.haomeiwen.com/subject/legibftx.html