package nfs import ( "sync" "testing" "github.com/darroyo/nasctl/internal/system" ) func TestUniqueFSIDNoCollision(t *testing.T) { const goroutines = 100 results := make(chan uint32, goroutines) var wg sync.WaitGroup for i := 0; i < goroutines; i++ { wg.Add(1) go func() { defer wg.Done() n, err := system.GenerateRandomFSID() if err != nil { t.Errorf("generateRandomFSID failed: %v", err) return } results <- n }() } wg.Wait() close(results) seen := make(map[uint32]struct{}) for n := range results { if _, dup := seen[n]; dup { t.Errorf("duplicate fsid generated: %d", n) } seen[n] = struct{}{} } } func TestUniqueFSIDWithUsedSet(t *testing.T) { used := map[uint32]struct{}{ 1: {}, 2: {}, 3: {}, } for i := 0; i < 50; i++ { n, err := UniqueFSID(used) if err != nil { t.Fatalf("UniqueFSID failed at iteration %d: %v", i, err) } if n == 0 { t.Fatalf("fsid 0 is reserved") } if _, dup := used[n]; dup { t.Fatalf("returned duplicate fsid: %d", n) } used[n] = struct{}{} } }