Skip to content

Commit 2353767

Browse files
committed
Fix super-block decrease test, add super-block increase test
1 parent 452390d commit 2353767

File tree

2 files changed

+35
-8
lines changed

2 files changed

+35
-8
lines changed

pallets/subtensor/src/subnets/subsubnet.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -124,8 +124,8 @@ impl<T: Config> Pallet<T> {
124124
// Run once per super-block
125125
let super_block_tempos = u64::from(SuperBlockTempos::<T>::get());
126126
Self::get_all_subnet_netuids().iter().for_each(|netuid| {
127-
let epoch_index = Self::get_epoch_index(*netuid, current_block);
128-
if let Some(rem) = epoch_index.checked_rem(super_block_tempos) {
127+
let super_block = super_block_tempos.saturating_mul(u64::from(Tempo::<T>::get(netuid)));
128+
if let Some(rem) = current_block.saturating_add(u16::from(*netuid) as u64).checked_rem(super_block) {
129129
if rem == 0 {
130130
let old_count = u8::from(SubsubnetCountCurrent::<T>::get(netuid));
131131
let desired_count = u8::from(SubsubnetCountDesired::<T>::get(netuid));

pallets/subtensor/src/tests/subsubnet.rs

Lines changed: 33 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -287,17 +287,17 @@ fn update_subsubnet_counts_decreases_and_cleans_on_superblock() {
287287
let netuid = NetUid::from(42u16);
288288
NetworksAdded::<Test>::insert(NetUid::from(42u16), true);
289289

290-
// super_block = SuperBlockTempos() * Tempo(netuid)
291-
Tempo::<Test>::insert(netuid, 1u16);
290+
// super_block = SuperBlockTempos() * Tempo(netuid) - netuid
291+
Tempo::<Test>::insert(netuid, 360u16);
292292
let super_block =
293-
u64::from(SuperBlockTempos::<Test>::get()) * u64::from(Tempo::<Test>::get(netuid));
293+
u64::from(SuperBlockTempos::<Test>::get()) * u64::from(Tempo::<Test>::get(netuid)) - u16::from(netuid) as u64;
294294

295295
// Choose counts so result is deterministic for ANY decrease-per-superblock.
296296
// Let dec = GlobalSubsubnetDecreasePerSuperblock(); set old = dec + 3.
297297
let dec: u8 = u8::from(GlobalSubsubnetDecreasePerSuperblock::<Test>::get());
298-
let old = SubId::from(dec.saturating_add(3)); // ≥3
298+
let old = SubId::from(dec.saturating_add(3));
299299
let desired = SubId::from(1u8);
300-
// min_possible = max(old - dec, 1) = 3 new_count = 3
300+
// min_capped = max(old - dec, 1) = 3 => new_count = 3
301301
SubsubnetCountCurrent::<Test>::insert(netuid, old);
302302
SubsubnetCountDesired::<Test>::insert(netuid, desired);
303303

@@ -336,7 +336,7 @@ fn update_subsubnet_counts_decreases_and_cleans_on_superblock() {
336336
);
337337

338338
// Act exactly on a super-block boundary
339-
SubtensorModule::update_subsubnet_counts_if_needed(2 * super_block);
339+
SubtensorModule::update_subsubnet_counts_if_needed(super_block);
340340

341341
// New count is 3
342342
assert_eq!(SubsubnetCountCurrent::<Test>::get(netuid), SubId::from(3u8));
@@ -363,6 +363,33 @@ fn update_subsubnet_counts_decreases_and_cleans_on_superblock() {
363363
});
364364
}
365365

366+
#[test]
367+
fn update_subsubnet_counts_increases_on_superblock() {
368+
new_test_ext(1).execute_with(|| {
369+
// Base subnet exists
370+
let netuid = NetUid::from(42u16);
371+
NetworksAdded::<Test>::insert(NetUid::from(42u16), true);
372+
373+
// super_block = SuperBlockTempos() * Tempo(netuid) - netuid
374+
Tempo::<Test>::insert(netuid, 360u16);
375+
let super_block =
376+
u64::from(SuperBlockTempos::<Test>::get()) * u64::from(Tempo::<Test>::get(netuid)) - u16::from(netuid) as u64;
377+
378+
// Choose counts so result is deterministic for ANY increase-per-superblock.
379+
let inc: u8 = u8::from(GlobalSubsubnetDecreasePerSuperblock::<Test>::get());
380+
let old = SubId::from(1u8);
381+
let desired = SubId::from(5u8);
382+
SubsubnetCountCurrent::<Test>::insert(netuid, old);
383+
SubsubnetCountDesired::<Test>::insert(netuid, desired);
384+
385+
// Act exactly on a super-block boundary
386+
SubtensorModule::update_subsubnet_counts_if_needed(super_block);
387+
388+
// New count is old + inc
389+
assert_eq!(SubsubnetCountCurrent::<Test>::get(netuid), SubId::from(1 + inc));
390+
});
391+
}
392+
366393
#[test]
367394
fn update_subsubnet_counts_no_change_when_not_superblock() {
368395
new_test_ext(1).execute_with(|| {

0 commit comments

Comments
 (0)