in network/benchmarks/netperf/nptest/nptest.go [261:322]
func allocateWorkToClient(workerS *workerState, reply *WorkItem) {
if !allWorkersIdle() {
reply.IsIdle = true
return
}
// System is all idle - pick up next work item to allocate to client
for n, v := range testcases {
if v.Finished {
continue
}
if v.SourceNode != workerS.worker {
reply.IsIdle = true
return
}
if _, ok := workerStateMap[v.DestinationNode]; !ok {
reply.IsIdle = true
return
}
fmt.Printf("Requesting jobrun '%s' from %s to %s for MSS %d\n", v.Label, v.SourceNode, v.DestinationNode, v.MSS)
reply.ClientItem.Type = v.Type
reply.IsClientItem = true
workerS.idle = false
currentJobIndex = n
if !v.ClusterIP {
reply.ClientItem.Host = getWorkerPodIP(v.DestinationNode)
} else {
reply.ClientItem.Host = os.Getenv("NETPERF_W2_SERVICE_HOST")
}
switch {
case v.Type == iperfTCPTest || v.Type == iperfUDPTest || v.Type == iperfSctpTest:
reply.ClientItem.Port = "5201"
reply.ClientItem.MSS = v.MSS
v.MSS = v.MSS + mssStepSize
if v.MSS > mssMax {
v.Finished = true
}
return
case v.Type == netperfTest:
reply.ClientItem.Port = "12865"
return
}
}
for _, v := range testcases {
if !v.Finished {
return
}
}
if !datapointsFlushed {
fmt.Println("ALL TESTCASES AND MSS RANGES COMPLETE - GENERATING CSV OUTPUT")
flushDataPointsToCsv()
datapointsFlushed = true
}
reply.IsIdle = true
}