Skip to content

Commit 1019ad0

Browse files
committed
add tests using SubnetOwnerHotkey
1 parent e375915 commit 1019ad0

File tree

1 file changed

+6
-210
lines changed

1 file changed

+6
-210
lines changed

pallets/subtensor/src/tests/uids.rs

Lines changed: 6 additions & 210 deletions
Original file line numberDiff line numberDiff line change
@@ -281,7 +281,7 @@ fn test_replace_neuron_subnet_owner_not_replaced() {
281281
}
282282

283283
#[test]
284-
fn test_replace_neuron_subnet_owner_not_replaced_if_top_stake_owner_hotkey() {
284+
fn test_replace_neuron_subnet_owner_not_replaced_if_in_sn_owner_hotkey_map() {
285285
new_test_ext(1).execute_with(|| {
286286
let owner_hotkey = U256::from(123);
287287
let owner_coldkey = U256::from(999);
@@ -335,108 +335,8 @@ fn test_replace_neuron_subnet_owner_not_replaced_if_top_stake_owner_hotkey() {
335335
SubtensorModule::get_uid_for_net_and_hotkey(netuid, &other_owner_hotkey)
336336
.expect("Should be registered");
337337

338-
// Give the owner's other hotkey some stake
339-
SubtensorModule::increase_stake_for_hotkey_and_coldkey_on_subnet(
340-
&other_owner_hotkey,
341-
&owner_coldkey,
342-
netuid,
343-
1000,
344-
);
345-
346-
SubtensorModule::replace_neuron(netuid, owner_uid, &additional_hotkey_2, current_block);
347-
348-
// The owner's first hotkey should be replaceable; it's not the top-stake owner hotkey
349-
let still_uid = SubtensorModule::get_uid_for_net_and_hotkey(netuid, &owner_hotkey);
350-
assert_err!(still_uid, Error::<Test>::HotKeyNotRegisteredInSubNet,);
351-
352-
let new_key_uid = SubtensorModule::get_uid_for_net_and_hotkey(netuid, &additional_hotkey_2);
353-
assert_ok!(new_key_uid);
354-
});
355-
}
356-
357-
#[test]
358-
fn test_replace_neuron_subnet_owner_not_replaced_if_top_stake_owner_hotkey_chk() {
359-
new_test_ext(1).execute_with(|| {
360-
let owner_hotkey = U256::from(123);
361-
let owner_coldkey = U256::from(999);
362-
let other_owner_hotkey = U256::from(456);
363-
let parent_hotkey = U256::from(4567);
364-
let parent_coldkey = U256::from(4568);
365-
366-
let netuid = add_dynamic_network(&owner_hotkey, &owner_coldkey);
367-
368-
SubtensorModule::set_max_registrations_per_block(netuid, 100);
369-
SubtensorModule::set_target_registrations_per_interval(netuid, 100);
370-
SubnetOwner::<Test>::insert(netuid, owner_coldkey);
371-
372-
let owner_uid = SubtensorModule::get_uid_for_net_and_hotkey(netuid, &owner_hotkey)
373-
.expect("Owner neuron should already be registered by add_dynamic_network");
374-
375-
// Register another hotkey for the owner
376-
register_ok_neuron(netuid, other_owner_hotkey, owner_coldkey, 0);
377-
let other_owner_uid =
378-
SubtensorModule::get_uid_for_net_and_hotkey(netuid, &other_owner_hotkey)
379-
.expect("Should be registered");
380-
381-
register_ok_neuron(netuid, parent_hotkey, parent_coldkey, 3);
382-
let _uid_4: u16 = SubtensorModule::get_uid_for_net_and_hotkey(netuid, &parent_hotkey)
383-
.expect("Should be registered");
384-
385-
// Give parent key some stake
386-
SubtensorModule::increase_stake_for_hotkey_and_coldkey_on_subnet(
387-
&parent_hotkey,
388-
&parent_coldkey,
389-
netuid,
390-
10_000_000,
391-
);
392-
393-
let additional_hotkey_1 = U256::from(1000);
394-
let additional_hotkey_2 = U256::from(1001);
395-
396-
let current_block = SubtensorModule::get_current_block_as_u64();
397-
SubtensorModule::replace_neuron(netuid, owner_uid, &additional_hotkey_1, current_block);
398-
399-
let still_uid = SubtensorModule::get_uid_for_net_and_hotkey(netuid, &owner_hotkey);
400-
assert_ok!(still_uid);
401-
assert_eq!(
402-
still_uid.unwrap(),
403-
owner_uid,
404-
"Owner's first hotkey should remain registered"
405-
);
406-
407-
let new_key_uid = SubtensorModule::get_uid_for_net_and_hotkey(netuid, &additional_hotkey_1);
408-
assert_err!(new_key_uid, Error::<Test>::HotKeyNotRegisteredInSubNet,);
409-
410-
SubtensorModule::replace_neuron(
411-
netuid,
412-
other_owner_uid,
413-
&additional_hotkey_1,
414-
current_block,
415-
);
416-
let still_uid = SubtensorModule::get_uid_for_net_and_hotkey(netuid, &other_owner_hotkey);
417-
assert_err!(still_uid, Error::<Test>::HotKeyNotRegisteredInSubNet,); // Was replaced
418-
419-
// Re-register this hotkey
420-
register_ok_neuron(netuid, other_owner_hotkey, owner_coldkey, 0);
421-
let _other_owner_uid =
422-
SubtensorModule::get_uid_for_net_and_hotkey(netuid, &other_owner_hotkey)
423-
.expect("Should be registered");
424-
425-
// Give the owner's other hotkey some CHK stake; Doesn't need to be much
426-
mock_set_children_no_epochs(
427-
netuid,
428-
&parent_hotkey,
429-
&[(
430-
I64F64::saturating_from_num(0.1)
431-
.saturating_mul(I64F64::saturating_from_num(u64::MAX))
432-
.saturating_to_num::<u64>(),
433-
other_owner_hotkey,
434-
)],
435-
);
436-
// Check stake weight of other_owner_hotkey
437-
let stake_weight =
438-
SubtensorModule::get_stake_weights_for_hotkey_on_subnet(&other_owner_hotkey, netuid);
439-
assert!(stake_weight.0 > 0);
338+
// Set this hotkey as the SubnetOwnerHotkey
339+
SubnetOwnerHotkey::<Test>::insert(netuid, other_owner_hotkey);
440340

441341
SubtensorModule::replace_neuron(netuid, owner_uid, &additional_hotkey_2, current_block);
442342

@@ -507,7 +407,7 @@ fn test_get_neuron_to_prune_owner_not_pruned() {
507407
}
508408

509409
#[test]
510-
fn test_get_neuron_to_prune_owner_pruned_if_not_top_stake_owner_hotkey() {
410+
fn test_get_neuron_to_prune_owner_pruned_if_not_in_sn_owner_hotkey_map() {
511411
new_test_ext(1).execute_with(|| {
512412
let owner_hotkey = U256::from(123);
513413
let owner_coldkey = U256::from(999);
@@ -551,118 +451,14 @@ fn test_get_neuron_to_prune_owner_pruned_if_not_top_stake_owner_hotkey() {
551451
let pruned_uid = SubtensorModule::get_neuron_to_prune(netuid);
552452
assert_eq!(pruned_uid, other_owner_uid, "Should prune the owner");
553453

554-
// Give the owner's other hotkey some stake
555-
SubtensorModule::increase_stake_for_hotkey_and_coldkey_on_subnet(
556-
&other_owner_hotkey,
557-
&owner_coldkey,
558-
netuid,
559-
1000,
560-
);
561-
562-
// Reset pruning scores
563-
SubtensorModule::set_pruning_score_for_uid(netuid, owner_uid, 0);
564-
SubtensorModule::set_pruning_score_for_uid(netuid, other_owner_uid, 1);
565-
SubtensorModule::set_pruning_score_for_uid(netuid, uid_2, 2);
566-
SubtensorModule::set_pruning_score_for_uid(netuid, uid_3, 3);
567-
568-
let pruned_uid = SubtensorModule::get_neuron_to_prune(netuid);
569-
570-
// - The pruned UID must be `uid_1` (score=1).
571-
// - The owner's UID remains unpruned.
572-
assert_eq!(
573-
pruned_uid, owner_uid,
574-
"Should prune the owner, not the top-stake owner hotkey and not the additional hotkeys"
575-
);
576-
});
577-
}
578-
579-
#[test]
580-
fn test_get_neuron_to_prune_owner_pruned_if_not_top_stake_owner_hotkey_chk() {
581-
new_test_ext(1).execute_with(|| {
582-
let owner_hotkey = U256::from(123);
583-
let owner_coldkey = U256::from(999);
584-
let other_owner_hotkey = U256::from(456);
585-
let parent_hotkey = U256::from(4567);
586-
let parent_coldkey = U256::from(4568);
587-
588-
let netuid = add_dynamic_network(&owner_hotkey, &owner_coldkey);
589-
590-
SubtensorModule::set_max_registrations_per_block(netuid, 100);
591-
SubtensorModule::set_target_registrations_per_interval(netuid, 100);
592-
SubnetOwner::<Test>::insert(netuid, owner_coldkey);
593-
594-
let owner_uid = SubtensorModule::get_uid_for_net_and_hotkey(netuid, &owner_hotkey)
595-
.expect("Owner neuron should already be registered by add_dynamic_network");
596-
597-
// Register another hotkey for the owner
598-
register_ok_neuron(netuid, other_owner_hotkey, owner_coldkey, 0);
599-
let other_owner_uid =
600-
SubtensorModule::get_uid_for_net_and_hotkey(netuid, &other_owner_hotkey)
601-
.expect("Should be registered");
602-
603-
let additional_hotkey_1 = U256::from(1000);
604-
let additional_coldkey_1 = U256::from(2000);
605-
606-
let additional_hotkey_2 = U256::from(1001);
607-
let additional_coldkey_2 = U256::from(2001);
608-
609-
register_ok_neuron(netuid, additional_hotkey_1, additional_coldkey_1, 1);
610-
let uid_2 = SubtensorModule::get_uid_for_net_and_hotkey(netuid, &additional_hotkey_1)
611-
.expect("Should be registered");
612-
613-
register_ok_neuron(netuid, additional_hotkey_2, additional_coldkey_2, 2);
614-
let uid_3 = SubtensorModule::get_uid_for_net_and_hotkey(netuid, &additional_hotkey_2)
615-
.expect("Should be registered");
616-
617-
register_ok_neuron(netuid, parent_hotkey, parent_coldkey, 3);
618-
let uid_4: u16 = SubtensorModule::get_uid_for_net_and_hotkey(netuid, &parent_hotkey)
619-
.expect("Should be registered");
620-
621-
// Give parent key some stake
622-
SubtensorModule::increase_stake_for_hotkey_and_coldkey_on_subnet(
623-
&parent_hotkey,
624-
&parent_coldkey,
625-
netuid,
626-
10_000_000,
627-
);
628-
629-
SubtensorModule::set_pruning_score_for_uid(netuid, owner_uid, 0);
630-
// Other owner key has pruning score not worse than the owner's first hotkey, but worse than the additional hotkeys
631-
SubtensorModule::set_pruning_score_for_uid(netuid, other_owner_uid, 1);
632-
SubtensorModule::set_pruning_score_for_uid(netuid, uid_2, 2);
633-
SubtensorModule::set_pruning_score_for_uid(netuid, uid_3, 3);
634-
635-
// Ensure parent key is not pruned
636-
SubtensorModule::set_pruning_score_for_uid(netuid, uid_4, 10_000);
637-
638-
let pruned_uid = SubtensorModule::get_neuron_to_prune(netuid);
639-
assert_eq!(
640-
pruned_uid, other_owner_uid,
641-
"Should prune the owner's other hotkey"
642-
);
643-
644-
// Give the owner's other hotkey some CHK stake; Doesn't need to be much
645-
mock_set_children_no_epochs(
646-
netuid,
647-
&parent_hotkey,
648-
&[(
649-
I64F64::saturating_from_num(0.1)
650-
.saturating_mul(I64F64::saturating_from_num(u64::MAX))
651-
.saturating_to_num::<u64>(),
652-
other_owner_hotkey,
653-
)],
654-
);
655-
// Check stake weight of other_owner_hotkey
656-
let stake_weight =
657-
SubtensorModule::get_stake_weights_for_hotkey_on_subnet(&other_owner_hotkey, netuid);
658-
assert!(stake_weight.0 > 0);
454+
// Set the owner's other hotkey as the SubnetOwnerHotkey
455+
SubnetOwnerHotkey::<Test>::insert(netuid, owner_hotkey);
659456

660457
// Reset pruning scores
661458
SubtensorModule::set_pruning_score_for_uid(netuid, owner_uid, 0);
662459
SubtensorModule::set_pruning_score_for_uid(netuid, other_owner_uid, 1);
663460
SubtensorModule::set_pruning_score_for_uid(netuid, uid_2, 2);
664461
SubtensorModule::set_pruning_score_for_uid(netuid, uid_3, 3);
665-
SubtensorModule::set_pruning_score_for_uid(netuid, uid_4, 10_000);
666462

667463
let pruned_uid = SubtensorModule::get_neuron_to_prune(netuid);
668464

0 commit comments

Comments
 (0)