code wiki / (root) / nx_tropism_test.nx

nx_tropism_test.nx source

↩ module page · 94 lines · 3809 B

1// nx_tropism_test.nx -- smoke for nx_tropism. 2 3import "nx_syscalls.nx" 4import "nx_tier.nx" 5import "nx_attention_class.nx" 6import "nx_homeostasis.nx" 7import "nx_tropism.nx" 8 9func main() -> i64 { 10 // 1: enum sealed 11 if NX_TROP_N_TARGETS != 10 { return 1 } 12 13 // 2: validation 14 if nx_tropism_is_valid(NX_TROP_LOCAL_CPU) != 1 { return 2 } 15 if nx_tropism_is_valid(NX_TROP_USER_ATTENTION) != 1 { return 3 } 16 if nx_tropism_is_valid(-1) != 0 { return 4 } 17 if nx_tropism_is_valid(10) != 0 { return 5 } 18 19 // 3: local predicate 20 if nx_tropism_is_local(NX_TROP_LOCAL_CPU) != 1 { return 6 } 21 if nx_tropism_is_local(NX_TROP_LOCAL_GPU) != 1 { return 7 } 22 if nx_tropism_is_local(NX_TROP_LOCAL_GPU_MAX_VRAM) != 1 { return 8 } 23 if nx_tropism_is_local(NX_TROP_LOCAL_DISK) != 1 { return 9 } 24 if nx_tropism_is_local(NX_TROP_PEER) != 0 { return 10 } 25 if nx_tropism_is_local(NX_TROP_CLOUD) != 0 { return 11 } 26 27 // 4: remote predicate 28 if nx_tropism_is_remote(NX_TROP_NAS) != 1 { return 12 } 29 if nx_tropism_is_remote(NX_TROP_PEER) != 1 { return 13 } 30 if nx_tropism_is_remote(NX_TROP_CLOUD) != 1 { return 14 } 31 if nx_tropism_is_remote(NX_TROP_LOCAL_CPU) != 0 { return 15 } 32 33 // 5: STEADY -> current (no move) 34 let r1: nx_int = nx_tropism_resolve(NX_HOMEO_STEADY, 35 NX_TROP_LOCAL_CPU, NX_AC_DEV, NX_TROP_PEER) 36 if r1 != NX_TROP_LOCAL_CPU { return 16 } 37 38 // 6: foreground refuses CLOUD preference 39 let r2: nx_int = nx_tropism_resolve(NX_HOMEO_MIGRATE_RAM, 40 NX_TROP_LOCAL_CPU, 41 NX_AC_INTERACTIVE_FOREGROUND_GAME, NX_TROP_CLOUD) 42 if r2 == NX_TROP_CLOUD { return 17 } 43 44 // 7: foreground VRAM pressure -> LOCAL_GPU_MAX_VRAM 45 let r3: nx_int = nx_tropism_resolve(NX_HOMEO_MIGRATE_VRAM, 46 NX_TROP_LOCAL_GPU, 47 NX_AC_INTERACTIVE_FOREGROUND_GAME, NX_TROP_LOCAL_GPU) 48 if r3 != NX_TROP_LOCAL_GPU_MAX_VRAM { return 18 } 49 50 // 8: background RAM pressure -> NAS 51 let r4: nx_int = nx_tropism_resolve(NX_HOMEO_MIGRATE_RAM, 52 NX_TROP_LOCAL_CPU, 53 NX_AC_BACKGROUND_INFERENCE, NX_TROP_LOCAL_CPU) 54 if r4 != NX_TROP_NAS { return 19 } 55 56 // 9: disk pressure always NAS 57 let r5: nx_int = nx_tropism_resolve(NX_HOMEO_MIGRATE_DISK, 58 NX_TROP_LOCAL_DISK, 59 NX_AC_IDLE_OPPORTUNISTIC, NX_TROP_LOCAL_DISK) 60 if r5 != NX_TROP_NAS { return 20 } 61 62 // 10: background thermal -> PEER 63 let r6: nx_int = nx_tropism_resolve(NX_HOMEO_MIGRATE_THERMAL, 64 NX_TROP_LOCAL_CPU, 65 NX_AC_BACKGROUND_BUILD, NX_TROP_LOCAL_CPU) 66 if r6 != NX_TROP_PEER { return 21 } 67 68 // 11: eviction storm foreground -> LOCAL_GPU_MAX_VRAM 69 let r7: nx_int = nx_tropism_resolve(NX_HOMEO_EVICTION_STORM, 70 NX_TROP_LOCAL_GPU, 71 NX_AC_INTERACTIVE_FOREGROUND_GAME, NX_TROP_LOCAL_GPU) 72 if r7 != NX_TROP_LOCAL_GPU_MAX_VRAM { return 22 } 73 74 // 12: PROMOTE_TIER foreground stays on big-VRAM GPU 75 let r8: nx_int = nx_tropism_resolve(NX_HOMEO_PROMOTE_TIER, 76 NX_TROP_LOCAL_GPU, 77 NX_AC_INTERACTIVE_FOREGROUND_GAME, NX_TROP_LOCAL_GPU) 78 if r8 != NX_TROP_LOCAL_GPU_MAX_VRAM { return 23 } 79 80 // 13: PROMOTE_TIER background allows cloud 81 let r9: nx_int = nx_tropism_resolve(NX_HOMEO_PROMOTE_TIER, 82 NX_TROP_LOCAL_CPU, 83 NX_AC_BACKGROUND_BUILD, NX_TROP_LOCAL_CPU) 84 if r9 != NX_TROP_CLOUD { return 24 } 85 86 // 14: cost-q10 monotonic local < remote 87 if nx_tropism_cost_q10(NX_TROP_LOCAL_CPU) != 0 { return 25 } 88 if nx_tropism_cost_q10(NX_TROP_LOCAL_CPU) >= nx_tropism_cost_q10(NX_TROP_LOCAL_GPU) { return 26 } 89 if nx_tropism_cost_q10(NX_TROP_LOCAL_GPU) >= nx_tropism_cost_q10(NX_TROP_NAS) { return 27 } 90 if nx_tropism_cost_q10(NX_TROP_NAS) >= nx_tropism_cost_q10(NX_TROP_CLOUD) { return 28 } 91 if nx_tropism_cost_q10(NX_TROP_CLOUD) != 1024 { return 29 } 92 93 return 0 94}