// Generate and send a random GetValuesSingle request. func (l *Load) sendSingle(client *gen.HFileServiceClient, diff *gen.HFileServiceClient) { numKeys := int(math.Abs(rand.ExpFloat64()*10) + 1) keys := l.randomKeys(numKeys) r := &gen.SingleHFileKeyRequest{HfileName: &l.collection, SortedKeys: keys} before := time.Now() resp, err := client.GetValuesSingle(r) if err != nil { log.Println("[GetValuesSingle] Error fetching value:", err, util.PrettyKeys(keys)) } report.TimeSince(l.rtt+".overall", before) report.TimeSince(l.rtt+".getValuesSingle", before) if diff != nil { beforeDiff := time.Now() diffResp, diffErr := diff.GetValuesSingle(r) if diffErr != nil { log.Println("[GetValuesSingle] Error fetching diff value:", diffErr, util.PrettyKeys(keys)) } report.TimeSince(l.diffRtt+".overall", beforeDiff) report.TimeSince(l.diffRtt+".getValuesSingle", beforeDiff) if err == nil && diffErr == nil && !reflect.DeepEqual(resp, diffResp) { report.Inc("diffs") report.Inc("diffs.getValuesSingle") log.Printf("[DIFF-getValuesSingle] req: %v\n%s\torig (%d): %v\n\tdiff (%d): %v\n", r, util.PrettyKeys(keys), resp.GetKeyCount(), resp, diffResp.GetKeyCount(), diffResp) } } }
func dummyWorker(t hasFatal, client *gen.HFileServiceClient, work chan *gen.SingleHFileKeyRequest, done *sync.WaitGroup) { defer done.Done() // warmup if _, err := client.GetValuesSingle(GetRandomTestReqs("compressed", 1, 5, 50000)[0]); err != nil { return } for { if req, ok := <-work; !ok { return } else if res, err := client.GetValuesSingle(req); err != nil { t.Fatal("error: ", err) } else { CheckReqAndRes(t, req, res) } } }
// Generate and send a random GetValuesSingle request. func (l *Load) sendSingle(client *gen.HFileServiceClient, diff *gen.HFileServiceClient) { var wg sync.WaitGroup keys := l.randomKeys() r := &gen.SingleHFileKeyRequest{HfileName: &l.collection, SortedKeys: keys} var diffResp *gen.SingleHFileKeyResponse var diffErr error if diff != nil { wg.Add(1) go func() { defer wg.Done() beforeDiff := time.Now() diffResp, diffErr = diff.GetValuesSingle(r) if diffErr != nil { log.Println("[GetValuesSingle] Error fetching diff value:", renderErr(diffErr), util.PrettyKeys(keys)) } report.TimeSince(l.diffRtt+".overall", beforeDiff) report.TimeSince(l.diffRtt+".getValuesSingle", beforeDiff) }() } before := time.Now() resp, err := client.GetValuesSingle(r) if err != nil { log.Println("[GetValuesSingle] Error fetching value:", renderErr(err), util.PrettyKeys(keys)) } report.TimeSince(l.rtt+".overall", before) report.TimeSince(l.rtt+".getValuesSingle", before) if diff != nil { wg.Wait() if err == nil && diffErr == nil && !reflect.DeepEqual(resp, diffResp) { report.Inc("diffs") report.Inc("diffs.getValuesSingle") log.Printf("[DIFF-getValuesSingle] req: %v\n%s\torig (%d): %v\n\tdiff (%d): %v\n", r, util.PrettyKeys(keys), resp.GetKeyCount(), resp, diffResp.GetKeyCount(), diffResp) } } }