| package tracestore |
| |
| import ( |
| "context" |
| "time" |
| |
| "go.skia.org/infra/go/paramtools" |
| "go.skia.org/infra/go/query" |
| "go.skia.org/infra/perf/go/git/provider" |
| "go.skia.org/infra/perf/go/types" |
| ) |
| |
| // Source is returned from GetLastNSources. |
| type Source struct { |
| // Filename is the filename of the file that was ingested. |
| Filename string |
| |
| // CommitNumber of the point that was found. |
| CommitNumber types.CommitNumber |
| } |
| |
| // TraceStore is the interface that all backends that store traces must |
| // implement. It is used by dfbuilder to build DataFrames and by the perf-tool |
| // to perform some common maintenance tasks. |
| type TraceStore interface { |
| // CommitNumberOfTileStart returns the types.CommitNumber at the beginning of the |
| // given tile. |
| CommitNumberOfTileStart(commitNumber types.CommitNumber) types.CommitNumber |
| |
| // GetLatestTile returns the latest, i.e. the newest tile. |
| GetLatestTile(context.Context) (types.TileNumber, error) |
| |
| // GetParamSet returns the OPS for the given tile. |
| GetParamSet(ctx context.Context, tileNumber types.TileNumber) (paramtools.ReadOnlyParamSet, error) |
| |
| // GetSource returns the full URL of the file that contained the point at |
| // 'index' of trace 'traceId'. |
| GetSource(ctx context.Context, commitNumber types.CommitNumber, traceId string) (string, error) |
| |
| // GetLastNSources returns the filename and commit number for each the last |
| // n commits to the given trace. |
| GetLastNSources(ctx context.Context, traceID string, n int) ([]Source, error) |
| |
| // GetTraceIDsBySource returns all the traceIDs that came from a given |
| // ingested file. |
| GetTraceIDsBySource(ctx context.Context, sourceFilename string, tileNumber types.TileNumber) ([]string, error) |
| |
| // OffsetFromCommitNumber returns the offset from within a Tile that a commit sits. |
| OffsetFromCommitNumber(commitNumber types.CommitNumber) int32 |
| |
| // QueryTraces returns a map of trace keys to a slice of floats for |
| // all traces that match the given query. |
| QueryTraces(ctx context.Context, tileNumber types.TileNumber, q *query.Query) (types.TraceSet, []provider.Commit, error) |
| |
| // QueryTracesIDOnly returns a stream of ParamSets that match the |
| // given query. |
| // TODO(jcgregorio) Change to just return count and ParamSet. |
| QueryTracesIDOnly(ctx context.Context, tileNumber types.TileNumber, q *query.Query) (<-chan paramtools.Params, error) |
| |
| // ReadTraces loads the traces for the given trace keys. |
| ReadTraces(ctx context.Context, tileNumber types.TileNumber, keys []string) (types.TraceSet, []provider.Commit, error) |
| |
| // ReadTracesForCommitRange loads the traces for the given trace keys and |
| // between the begin and end commit, inclusive. |
| ReadTracesForCommitRange(ctx context.Context, keys []string, begin types.CommitNumber, end types.CommitNumber) (types.TraceSet, []provider.Commit, error) |
| |
| // TileNumber returns the types.TileNumber that the commit is stored in. |
| TileNumber(commitNumber types.CommitNumber) types.TileNumber |
| |
| // TileSize returns the size of a Tile. |
| TileSize() int32 |
| |
| // TraceCount returns the number of traces in a tile. |
| TraceCount(ctx context.Context, tileNumber types.TileNumber) (int64, error) |
| |
| // WriteTraces writes the given values into the store. |
| // |
| // params is a slice of Params, where each one represents a single trace. |
| // values are the values to write, for each trace in params, at the offset |
| // given in types.CommitNumber. paramset is the ParamSet of all the params |
| // to be written. source is the filename where the data came from. timestamp |
| // is the timestamp when the data was generated. |
| // |
| // Note that 'params' and 'values' are parallel slices and thus need to |
| // match. |
| WriteTraces(ctx context.Context, commitNumber types.CommitNumber, params []paramtools.Params, values []float32, paramset paramtools.ParamSet, source string, timestamp time.Time) error |
| |
| // StartBackgroundMetricsGathering runs metrics collection in the background |
| StartBackgroundMetricsGathering() |
| } |