func Work(workload string, req network.Request, ch_done chan network.Request) { var load float64 switch workload { case "none": load = 0 case "low": load = gen.ExpFloat64() * c_LOW case "medium": load = gen.ExpFloat64() * c_MEDIUM case "heavy": load = gen.ExpFloat64() * c_HEAVY default: log.Println("Undefined workload ", workload) return } timer := time.NewTimer(time.Millisecond * time.Duration(load)) for { select { case <-timer.C: req.ExecTimeMs = computeExecutionTime(req.Start) ch_done <- req return default: cpuTest() } } }