in network/benchmarks/netperf/nptest/nptest.go [648:697]
func startWork() {
for true {
var timeout time.Duration
var client *rpc.Client
var err error
address := host
if isIPv6(address) {
address = "[" + address + "]"
}
timeout = 5
for true {
fmt.Println("Attempting to connect to orchestrator at", host)
client, err = rpc.DialHTTP("tcp", address+":"+port)
if err == nil {
break
}
fmt.Println("RPC connection to ", host, " failed:", err)
time.Sleep(timeout * time.Second)
}
for true {
clientData := ClientRegistrationData{Host: podname, KubeNode: kubenode, Worker: worker, IP: getMyIP()}
var workItem WorkItem
if err := client.Call("NetPerfRPC.RegisterClient", clientData, &workItem); err != nil {
// RPC server has probably gone away - attempt to reconnect
fmt.Println("Error attempting RPC call", err)
break
}
switch {
case workItem.IsIdle == true:
time.Sleep(5 * time.Second)
continue
case workItem.IsServerItem == true:
fmt.Println("Orchestrator requests worker run iperf and netperf servers")
go iperfServer()
go qperfServer()
go netperfServer()
time.Sleep(1 * time.Second)
case workItem.IsClientItem == true:
handleClientWorkItem(client, &workItem)
}
}
}
}