Пример #1
0
func vote(client crowdsound.CrowdSoundClient) {
	_, err := client.VoteSong(context.Background(), &crowdsound.VoteSongRequest{
		UserId: *userID,
		Name:   songs[4].Name,
		Artist: songs[4].Artist[0],
		Like:   true,
	})
	if err != nil {
		log.Fatalf("Error calling VoteSong(): %v", err)
	}
}
Пример #2
0
func RunVoteSongsBench(c crowdsound.CrowdSoundClient, amount int) (metrics.Histogram, error) {
	h := metrics.NewHistogram(metrics.NewUniformSample(amount))

	// Generate songs to vote on
	postStream, err := c.PostSong(context.Background())
	if err != nil {
		return h, err
	}

	var songToVote *crowdsound.PostSongRequest
	for song := range songGenerator(1, 0) {
		song.UserId = randomString(32)
		if err = postStream.Send(song); err != nil {
			return h, err
		}
		songToVote = song
	}

	if _, err = postStream.CloseAndRecv(); err != nil {
		return h, err
	}

	userID := randomString(32)
	for i := 0; i < amount; i++ {
		start := time.Now()
		_, err := c.VoteSong(context.Background(), &crowdsound.VoteSongRequest{
			UserId: userID,
			Name:   songToVote.Name,
			Artist: songToVote.Artist[0],
			Like:   true,
		})
		if err != nil {
			return h, err
		}

		h.Update(time.Since(start).Nanoseconds())
	}

	return h, nil
}