luci-go: Index | Files

package spantest

import ""

Package spantest implements creation/destruction of a temporary Spanner database.


Package Files


func SanitizeDBName Uses

func SanitizeDBName(name string) string

SanitizeDBName tranforms name to a valid one. If name is already valid, returns it without changes.

type TempDB Uses

type TempDB struct {
    Name string
    // contains filtered or unexported fields

TempDB is a temporary Spanner database.

func NewTempDB Uses

func NewTempDB(ctx context.Context, cfg TempDBConfig) (*TempDB, error)

NewTempDB creates a temporary database with a random name. The caller is responsible for calling Drop on the returned TempDB to cleanup resources after usage.

func (*TempDB) Client Uses

func (db *TempDB) Client(ctx context.Context) (*spanner.Client, error)

Client returns a spanner client connected to the database.

func (*TempDB) Drop Uses

func (db *TempDB) Drop(ctx context.Context) error

Drop deletes the database.

type TempDBConfig Uses

type TempDBConfig struct {
    // InstanceName is the name of Spannner instance where to create the
    // temporary database.
    // Format: projects/{project}/instances/{instance}.
    // Defaults to chromeinfra.TestSpannerInstance.
    InstanceName string

    // TokenSource will be used to authenticate to Spanner.
    // If nil, auth.Authenticator with SilentLogin and chrome-infra auth options
    // will be used.
    // This means that that the user may have to login with luci-auth tool.
    TokenSource oauth2.TokenSource

    // InitScriptPath is a path to a DDL script to initialize the database.
    // In lieu of a proper DDL parser, it is parsed using regexes.
    // Therefore the script MUST:
    //   - Use `#`` and/or `--`` for comments. No block comments.
    //   - Separate DDL statements with `;\n`.
    // If empty, the database is created with no tables.
    InitScriptPath string

TempDBConfig specifies how to create a temporary database.

Package spantest imports 16 packages (graph). Updated 2020-02-03. Refresh now. Tools for package owners.