blob: ed280fb84c573da541418d29c9045e95566b0169 [file] [log] [blame]
package regression
import (
"context"
"fmt"
"go.skia.org/infra/go/vcsinfo"
"go.skia.org/infra/perf/go/cid"
"go.skia.org/infra/perf/go/dataframe"
)
// ClusterResponseProcessor is a callback that is called with ClusterResponses as a ClusterRequest is being processed.
type ClusterResponseProcessor func(*ClusterRequest, []*ClusterResponse)
// Run takes a ClusterRequest and runs it to completion before returning the results.
func Run(ctx context.Context, req *ClusterRequest, vcs vcsinfo.VCS, cidl *cid.CommitIDLookup, dfBuilder dataframe.DataFrameBuilder, clusterResponseProcessor ClusterResponseProcessor) ([]*ClusterResponse, error) {
proc, err := newProcess(ctx, req, vcs, cidl, dfBuilder, clusterResponseProcessor)
if err != nil {
return nil, fmt.Errorf("Failed to start new clustering process: %s", err)
}
proc.Run(ctx)
if proc.state == PROCESS_ERROR {
return nil, fmt.Errorf("Failed to complete clustering: %s", proc.message)
}
return proc.Responses(), nil
}