| 85 | } |
| 86 | |
| 87 | func (m *Metrics) Report() string { |
| 88 | m.lock.Lock() |
| 89 | defer m.lock.Unlock() |
| 90 | |
| 91 | duration := m.endTime.Sub(m.startTime) |
| 92 | durationSecs := duration.Seconds() |
| 93 | if durationSecs == 0 { |
| 94 | durationSecs = 1.0 |
| 95 | } |
| 96 | throughput := float64(m.totalBytes) / durationSecs / 1024 / 1024 |
| 97 | |
| 98 | return fmt.Sprintf(` |
| 99 | StreamManager Integration Test Results |
| 100 | ====================================== |
| 101 | Duration: %v |
| 102 | Total Bytes: %d |
| 103 | Throughput: %.2f MB/s |
| 104 | Data Packets: %d |
| 105 | Ack Packets: %d |
| 106 | OOO Packets: %d |
| 107 | Pipe High Water: %d bytes (%.2f KB) |
| 108 | `, duration, m.totalBytes, throughput, m.dataPackets, m.ackPackets, m.oooPackets, |
| 109 | m.pipeHighWaterMark, float64(m.pipeHighWaterMark)/1024) |
| 110 | } |