func logtest_response_handler( t *testing.T, wg *sync.WaitGroup, quit chan struct{}, m chan *message.Message) { var ( gets, puts int tg, tp tm.TimeDuration ) defer wg.Done() emptychan := false for { // Check if we have been signaled through <-quit // If we have, we now know that as soon as the // message channel is empty, we can quit. if emptychan { if len(m) == 0 { break } } // Check incoming channels select { case msg := <-m: // Collect stats switch msg.Type { case message.MsgGet: gets++ tg.Add(msg.TimeElapsed()) case message.MsgPut: puts++ tp.Add(msg.TimeElapsed()) } case <-quit: emptychan = true } } fmt.Printf("Gets:%d, Puts:%d\n"+ "Mean times in usecs: Gets:%.2f, Puts:%.2f\n", gets, puts, tg.MeanTimeUsecs(), tp.MeanTimeUsecs()) }
func response_handler(t *testing.T, wg *sync.WaitGroup, m chan *message.Message) { var ( gethits, getmisses, puts int errors int tgh, tgm, tp tm.TimeDuration ) defer wg.Done() // Check incoming channels for msg := range m { // Collect stats switch msg.Type { case message.MsgGet: if msg.Err == nil { tgh.Add(msg.TimeElapsed()) gethits++ // Check correctness. The value // of the offset should have been // saved in the buffer iopkt := msg.IoPkt() bio := bufferio.NewBufferIO(iopkt.Buffer) var offset_in_buffer uint64 bio.ReadDataLE(&offset_in_buffer) if offset_in_buffer != iopkt.Address { errors++ } } else { tgm.Add(msg.TimeElapsed()) getmisses++ } case message.MsgPut: puts++ tp.Add(msg.TimeElapsed()) } } fmt.Printf("ERRORS: %d\nGet H:%d M:%d, Puts:%d\n"+ "Get Hit Rate: %.2f\n"+ "Mean times in usecs:\n"+ "Get H:%.2f M:%.2f, Puts:%.2f\n", errors, gethits, getmisses, puts, float64(gethits)/float64(gethits+getmisses), tgh.MeanTimeUsecs(), tgm.MeanTimeUsecs(), tp.MeanTimeUsecs()) Assert(t, errors == 0) }
func response_handler(wg *sync.WaitGroup, quit chan struct{}, m chan *message.Message) { var ( gethits, getmisses, puts int tgh, tgm, tp tm.TimeDuration ) defer wg.Done() emptychan := false for { // Check if we have been signaled through <-quit // If we have, we now know that as soon as the // message channel is empty, we can quit. if emptychan { if len(m) == 0 { break } } // Check incoming channels select { case msg := <-m: // Collect stats switch msg.Type { case message.MsgGet: if msg.Err == nil { gethits++ tgh.Add(msg.TimeElapsed()) } else { getmisses++ tgm.Add(msg.TimeElapsed()) } case message.MsgPut: puts++ tp.Add(msg.TimeElapsed()) } case <-quit: emptychan = true } } fmt.Printf("Get H:%d M:%d, Puts:%d\n"+ "Get Hit Rate: %.2f\n"+ "Mean times in usecs:\n"+ "Get H:%.2f M:%.2f, Puts:%.2f\n", gethits, getmisses, puts, float64(gethits)/float64(gethits+getmisses), tgh.MeanTimeUsecs(), tgm.MeanTimeUsecs(), tp.MeanTimeUsecs()) }