Alpha: some more roll tests after the fix

This commit is contained in:
Pierre Chambart 2018-06-15 01:19:56 +02:00 committed by Benjamin Canou
parent c64698be09
commit b5a6f2f03c
3 changed files with 60 additions and 0 deletions

View File

@ -129,6 +129,9 @@ module Contract = struct
Alpha_services.Contract.manager_key rpc_ctxt ctxt contract >>=? fun (_, res) -> Alpha_services.Contract.manager_key rpc_ctxt ctxt contract >>=? fun (_, res) ->
return (res <> None) return (res <> None)
let delegate_opt ctxt contract =
Alpha_services.Contract.delegate_opt rpc_ctxt ctxt contract
end end
module Delegate = struct module Delegate = struct

View File

@ -42,6 +42,8 @@ module Contract : sig
val manager: t -> Contract.t -> Account.t tzresult Lwt.t val manager: t -> Contract.t -> Account.t tzresult Lwt.t
val is_manager_key_revealed: t -> Contract.t -> bool tzresult Lwt.t val is_manager_key_revealed: t -> Contract.t -> bool tzresult Lwt.t
val delegate_opt: t -> Contract.t -> public_key_hash option tzresult Lwt.t
end end
module Delegate : sig module Delegate : sig

View File

@ -39,6 +39,14 @@ let check_rolls b (account:Account.t) =
get_rolls ctxt account.pkh >>=? fun rolls -> get_rolls ctxt account.pkh >>=? fun rolls ->
Assert.equal_int ~loc:__LOC__ (List.length rolls) (Int64.to_int expected_rolls) Assert.equal_int ~loc:__LOC__ (List.length rolls) (Int64.to_int expected_rolls)
let check_no_rolls (b : Block.t) (account:Account.t) =
Raw_context.prepare b.context
~level:b.header.shell.level
~timestamp:b.header.shell.timestamp
~fitness:b.header.shell.fitness >>= wrap >>=? fun ctxt ->
get_rolls ctxt account.pkh >>=? fun rolls ->
Assert.equal_int ~loc:__LOC__ (List.length rolls) 0
let simple_staking_rights () = let simple_staking_rights () =
Context.init 2 >>=? fun (b,accounts) -> Context.init 2 >>=? fun (b,accounts) ->
let (a1, a2) = account_pair accounts in let (a1, a2) = account_pair accounts in
@ -121,9 +129,56 @@ let deactivation_then_self_delegation () =
Assert.equal_tez ~loc:__LOC__ start_balance balance >>=? fun () -> Assert.equal_tez ~loc:__LOC__ start_balance balance >>=? fun () ->
check_rolls b deactivated_account check_rolls b deactivated_account
let delegation () =
Context.init 2 >>=? fun (b,accounts) ->
let (a1, a2) = account_pair accounts in
let m3 = Account.new_account () in
Account.add_account m3;
Context.Contract.balance (B b) a1 >>=? fun balance ->
Context.Contract.manager (B b) a1 >>=? fun m1 ->
Context.Contract.manager (B b) a2 >>=? fun m2 ->
let a3 = Contract.implicit_contract m3.pkh in
Context.Contract.delegate_opt (B b) a1 >>=? fun delegate ->
begin
match delegate with
| None -> assert false
| Some pkh ->
assert (Signature.Public_key_hash.equal pkh m1.pkh)
end;
Op.transaction (B b) a1 a3 balance >>=? fun transact ->
Block.bake ~policy:(By_account m2.pkh) b ~operation:transact >>=? fun b ->
Context.Contract.delegate_opt (B b) a3 >>=? fun delegate ->
begin
match delegate with
| None -> ()
| Some _ -> assert false
end;
check_no_rolls b m3 >>=? fun () ->
Op.delegation (B b) a3 (Some m3.pkh) >>=? fun delegation ->
Block.bake ~policy:(By_account m2.pkh) b ~operation:delegation >>=? fun b ->
Context.Contract.delegate_opt (B b) a3 >>=? fun delegate ->
begin
match delegate with
| None -> assert false
| Some pkh ->
assert (Signature.Public_key_hash.equal pkh m3.pkh)
end;
check_activate_staking_balance ~loc:__LOC__ ~deactivated:false b (a3,m3) >>=? fun () ->
check_rolls b m3 >>=? fun () ->
check_rolls b m1
let tests = [ let tests = [
Test.tztest "simple staking rights" `Quick (simple_staking_rights) ; Test.tztest "simple staking rights" `Quick (simple_staking_rights) ;
Test.tztest "simple staking rights after baking" `Quick (simple_staking_rights_after_baking) ; Test.tztest "simple staking rights after baking" `Quick (simple_staking_rights_after_baking) ;
Test.tztest "deactivation then bake" `Quick (deactivation_then_bake) ; Test.tztest "deactivation then bake" `Quick (deactivation_then_bake) ;
Test.tztest "deactivation then self delegation" `Quick (deactivation_then_self_delegation) ; Test.tztest "deactivation then self delegation" `Quick (deactivation_then_self_delegation) ;
Test.tztest "delegation" `Quick (delegation) ;
] ]