code: func getDataFromFiles(job, build, prefix string, source Downloader) ([][]byte, error) {
  	buildNumber, err := strconv.Atoi(build)
  	if err != nil {
  		return nil, fmt.Errorf("failed to convert build number %q to an int: %v", build, err)
  	}
  	prefix = "artifacts/" + prefix + "-"
  	filenames, err := source.ListFilesInBuild(job, buildNumber, prefix)
  	if err != nil {
  		return nil, fmt.Errorf("failed to list files with prefix %q: %v", prefix, err)
  	}
  	var contents [][]byte
  	for _, filename := range filenames {
  		filename := "artifacts/" + filename[strings.LastIndex(filename, "/")+1:]
  		body, err := source.GetFile(job, buildNumber, filename)
  		if err != nil {
  			return nil, fmt.Errorf("failed to get %q: %v", filename, err)
  		}
  		defer body.Close()
  		data, err := ioutil.ReadAll(body)
  		if err != nil {
  			return nil, fmt.Errorf("failed to read %q: %v", filename, err)
  		}
  		contents = append(contents, data)
  	}
  	return contents, nil
  }
docs: // getDataFromFiles returns the contents of the files having the prefix for the
  // test job at the given build. The files will be fetched using the specified
  // source.
  //
  // For example, getDataFromFiles("ci-kubernetes-node-kubelet-benchmark", "1234", "peformance", source)
  // returns the contents of all files with the prefix
  // "gs://kubernetes-jenkins/logs/ci-kubernetes-node-kubelet-benchmark/1234/artifacts/performance-*".