@@ -4,7 +4,7 @@ use sp_std::prelude::*;
44#[ cfg( test) ]
55use crate :: {
66 CommitmentInfo , CommitmentOf , Config , Data , Error , Event , MaxSpace , Pallet , RateLimit ,
7- Registration , RevealedCommitments , TimelockedIndex ,
7+ Registration , RevealedCommitments , TimelockedIndex , UsedSpaceOf ,
88 mock:: {
99 Balances , DRAND_QUICKNET_SIG_2000_HEX , DRAND_QUICKNET_SIG_HEX , RuntimeEvent , RuntimeOrigin ,
1010 Test , TestMaxFields , insert_drand_pulse, new_test_ext, produce_ciphertext,
@@ -887,7 +887,7 @@ fn tempo_based_space_limit_accumulates_in_same_window() {
887887 new_test_ext ( ) . execute_with ( || {
888888 let netuid = 1 ;
889889 let who = 100 ;
890- let space_limit = 50 ;
890+ let space_limit = 150 ;
891891 MaxSpace :: < Test > :: set ( space_limit) ;
892892 System :: < Test > :: set_block_number ( 0 ) ;
893893
@@ -921,7 +921,7 @@ fn tempo_based_space_limit_resets_after_tempo() {
921921 let netuid = 2 ;
922922 let who = 101 ;
923923
924- MaxSpace :: < Test > :: set ( 40 ) ;
924+ MaxSpace :: < Test > :: set ( 250 ) ;
925925 System :: < Test > :: set_block_number ( 1 ) ;
926926
927927 let commit_small = Box :: new ( CommitmentInfo {
@@ -979,7 +979,7 @@ fn tempo_based_space_limit_does_not_affect_different_netuid() {
979979 let netuid_a = 10 ;
980980 let netuid_b = 20 ;
981981 let who = 111 ;
982- let space_limit = 50 ;
982+ let space_limit = 199 ;
983983 MaxSpace :: < Test > :: set ( space_limit) ;
984984
985985 let commit_large = Box :: new ( CommitmentInfo {
@@ -1029,7 +1029,7 @@ fn tempo_based_space_limit_does_not_affect_different_user() {
10291029 let netuid = 10 ;
10301030 let user1 = 123 ;
10311031 let user2 = 456 ;
1032- let space_limit = 50 ;
1032+ let space_limit = 199 ;
10331033 MaxSpace :: < Test > :: set ( space_limit) ;
10341034
10351035 let commit_large = Box :: new ( CommitmentInfo {
@@ -1078,7 +1078,7 @@ fn tempo_based_space_limit_sudo_set_max_space() {
10781078 new_test_ext ( ) . execute_with ( || {
10791079 let netuid = 3 ;
10801080 let who = 15 ;
1081- MaxSpace :: < Test > :: set ( 30 ) ;
1081+ MaxSpace :: < Test > :: set ( 100 ) ;
10821082
10831083 System :: < Test > :: set_block_number ( 1 ) ;
10841084 let commit_25 = Box :: new ( CommitmentInfo {
@@ -1098,7 +1098,7 @@ fn tempo_based_space_limit_sudo_set_max_space() {
10981098 Error :: <Test >:: SpaceLimitExceeded
10991099 ) ;
11001100
1101- assert_ok ! ( Pallet :: <Test >:: set_max_space( RuntimeOrigin :: root( ) , 100 ) ) ;
1101+ assert_ok ! ( Pallet :: <Test >:: set_max_space( RuntimeOrigin :: root( ) , 300 ) ) ;
11021102
11031103 assert_ok ! ( Pallet :: <Test >:: set_commitment(
11041104 RuntimeOrigin :: signed( who) ,
@@ -1716,3 +1716,78 @@ fn revealed_commitments_keeps_only_10_newest_with_individual_single_field_commit
17161716 }
17171717 } ) ;
17181718}
1719+
1720+ #[ test]
1721+ fn usage_respects_minimum_of_100_bytes ( ) {
1722+ new_test_ext ( ) . execute_with ( || {
1723+ MaxSpace :: < Test > :: set ( 1000 ) ;
1724+
1725+ let netuid = 1 ;
1726+ let who = 99 ;
1727+
1728+ System :: < Test > :: set_block_number ( 1 ) ;
1729+
1730+ let small_data = Data :: Raw ( vec ! [ 0u8 ; 50 ] . try_into ( ) . expect ( "<=128 bytes for Raw" ) ) ;
1731+ let info_small = Box :: new ( CommitmentInfo {
1732+ fields : BoundedVec :: try_from ( vec ! [ small_data] ) . expect ( "Must not exceed MaxFields" ) ,
1733+ } ) ;
1734+
1735+ let usage_before = UsedSpaceOf :: < Test > :: get ( netuid, who) . unwrap_or_default ( ) ;
1736+ assert_eq ! ( usage_before. used_space, 0 ) ;
1737+
1738+ assert_ok ! ( Pallet :: <Test >:: set_commitment(
1739+ RuntimeOrigin :: signed( who) ,
1740+ netuid,
1741+ info_small
1742+ ) ) ;
1743+
1744+ let usage_after_small =
1745+ UsedSpaceOf :: < Test > :: get ( netuid, who) . expect ( "expected to not panic" ) ;
1746+ assert_eq ! (
1747+ usage_after_small. used_space, 100 ,
1748+ "Usage must jump to 100 even though we only used 50 bytes"
1749+ ) ;
1750+
1751+ let big_data = Data :: Raw ( vec ! [ 0u8 ; 110 ] . try_into ( ) . expect ( "<=128 bytes for Raw" ) ) ;
1752+ let info_big = Box :: new ( CommitmentInfo {
1753+ fields : BoundedVec :: try_from ( vec ! [ big_data] ) . expect ( "Must not exceed MaxFields" ) ,
1754+ } ) ;
1755+
1756+ assert_ok ! ( Pallet :: <Test >:: set_commitment(
1757+ RuntimeOrigin :: signed( who) ,
1758+ netuid,
1759+ info_big
1760+ ) ) ;
1761+
1762+ let usage_after_big = UsedSpaceOf :: < Test > :: get ( netuid, who) . expect ( "expected to not panic" ) ;
1763+ assert_eq ! (
1764+ usage_after_big. used_space, 210 ,
1765+ "Usage should be 100 + 110 = 210 in this epoch"
1766+ ) ;
1767+
1768+ UsedSpaceOf :: < Test > :: remove ( netuid, who) ;
1769+ let usage_after_wipe = UsedSpaceOf :: < Test > :: get ( netuid, who) ;
1770+ assert ! (
1771+ usage_after_wipe. is_none( ) ,
1772+ "Expected `UsedSpaceOf` entry to be removed"
1773+ ) ;
1774+
1775+ let bigger_data = Data :: Raw ( vec ! [ 0u8 ; 120 ] . try_into ( ) . expect ( "<=128 bytes for Raw" ) ) ;
1776+ let info_bigger = Box :: new ( CommitmentInfo {
1777+ fields : BoundedVec :: try_from ( vec ! [ bigger_data] ) . expect ( "Must not exceed MaxFields" ) ,
1778+ } ) ;
1779+
1780+ assert_ok ! ( Pallet :: <Test >:: set_commitment(
1781+ RuntimeOrigin :: signed( who) ,
1782+ netuid,
1783+ info_bigger
1784+ ) ) ;
1785+
1786+ let usage_after_reset =
1787+ UsedSpaceOf :: < Test > :: get ( netuid, who) . expect ( "expected to not panic" ) ;
1788+ assert_eq ! (
1789+ usage_after_reset. used_space, 120 ,
1790+ "After wiping old usage, the new usage should be exactly 120"
1791+ ) ;
1792+ } ) ;
1793+ }
0 commit comments