in network/benchmarks/netperf/nptest/nptest.go [502:563]
func allocateWorkToClient(workerState *workerState, workItem *WorkItem) {
if !allWorkersIdle() {
workItem.IsIdle = true
return
}
// System is all idle - pick up next work item to allocate to client
for n, v := range active_tests {
if v.Finished {
continue
}
if v.SourceNode != workerState.worker {
workItem.IsIdle = true
return
}
if _, ok := workerStateMap[v.DestinationNode]; !ok {
workItem.IsIdle = true
return
}
fmt.Printf("Requesting jobrun '%s' from %s to %s for MSS %d for MsgSize %d\n", v.Label, v.SourceNode, v.DestinationNode, v.MSS, v.MsgSize)
workItem.IsClientItem = true
workItem.TestCaseIndex = n
workerState.idle = false
if !v.ClusterIP {
workItem.ClientItem.Host = workerStateMap[workerState.worker].IP
} else {
workItem.ClientItem.Host = os.Getenv("NETPERF_W2_SERVICE_HOST")
}
workItem.ClientItem.Params = v.TestParams
if v.MSS != 0 && v.MSS < mssMax {
v.MSS += mssStepSize
} else {
v.Finished = true
}
if v.Type == netperfTest {
workItem.ClientItem.Port = "12865"
} else {
workItem.ClientItem.Port = "5201"
}
return
}
for _, v := range active_tests {
if !v.Finished {
return
}
}
if !datapointsFlushed {
fmt.Println("ALL TESTCASES AND MSS RANGES COMPLETE - GENERATING CSV OUTPUT")
flushDataPointsToCsv()
flushResultJsonData()
datapointsFlushed = true
}
workItem.IsIdle = true
}