arvadostest

package
v0.0.0-...-c92af4d Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jul 1, 2021 License: AGPL-3.0, Apache-2.0, CC-BY-SA-3.0 Imports: 33 Imported by: 0

Documentation

Index

Constants

View Source
const (
	SpectatorToken          = "zw2f4gwx8hw8cjre7yp6v1zylhrhn3m5gvjq73rtpwhmknrybu"
	ActiveToken             = "3kg6k6lzmp9kj5cpkcoxie963cmvjahbt2fod9zru30k1jqdmi"
	ActiveTokenUUID         = "zzzzz-gj3su-077z32aux8dg2s1"
	ActiveTokenV2           = "v2/zzzzz-gj3su-077z32aux8dg2s1/3kg6k6lzmp9kj5cpkcoxie963cmvjahbt2fod9zru30k1jqdmi"
	AdminUserUUID           = "zzzzz-tpzed-d9tiejq69daie8f"
	AdminToken              = "4axaw8zxe0qm22wa6urpp5nskcne8z88cvbupv653y1njyi05h"
	AdminTokenUUID          = "zzzzz-gj3su-027z32aux8dg2s1"
	AnonymousToken          = "4kg6k6lzmp9kj4cpkcoxie964cmvjahbt4fod9zru44k4jqdmi"
	DataManagerToken        = "320mkve8qkswstz7ff61glpk3mhgghmg67wmic7elw4z41pke1"
	SystemRootToken         = "systemusertesttoken1234567890aoeuidhtnsqjkxbmwvzpy"
	ManagementToken         = "jg3ajndnq63sywcd50gbs5dskdc9ckkysb0nsqmfz08nwf17nl"
	ActiveUserUUID          = "zzzzz-tpzed-xurymjxw79nv3jz"
	FederatedActiveUserUUID = "zbbbb-tpzed-xurymjxw79nv3jz"
	SpectatorUserUUID       = "zzzzz-tpzed-l1s2piq4t4mps8r"
	UserAgreementCollection = "zzzzz-4zz18-uukreo9rbgwsujr" // user_agreement_in_anonymously_accessible_project
	FooCollectionName       = "zzzzz-4zz18-fy296fx3hot09f7 added sometime"
	FooCollection           = "zzzzz-4zz18-fy296fx3hot09f7"
	FooCollectionPDH        = "1f4b0bc7583c2a7f9102c395f4ffc5e3+45"
	NonexistentCollection   = "zzzzz-4zz18-totallynotexist"
	HelloWorldCollection    = "zzzzz-4zz18-4en62shvi99lxd4"
	FooBarDirCollection     = "zzzzz-4zz18-foonbarfilesdir"
	WazVersion1Collection   = "zzzzz-4zz18-25k12570yk1ver1"
	UserAgreementPDH        = "b519d9cb706a29fc7ea24dbea2f05851+93"
	HelloWorldPdh           = "55713e6a34081eb03609e7ad5fcad129+62"

	MultilevelCollection1 = "zzzzz-4zz18-pyw8yp9g3pr7irn"

	AProjectUUID    = "zzzzz-j7d0g-v955i6s2oi1cbso"
	ASubprojectUUID = "zzzzz-j7d0g-axqo7eu9pwvna1x"

	FooAndBarFilesInDirUUID = "zzzzz-4zz18-foonbarfilesdir"
	FooAndBarFilesInDirPDH  = "870369fc72738603c2fad16664e50e2d+58"

	Dispatch1Token    = "kwi8oowusvbutahacwk2geulqewy5oaqmpalczfna4b6bb0hfw"
	Dispatch1AuthUUID = "zzzzz-gj3su-k9dvestay1plssr"

	QueuedContainerRequestUUID = "zzzzz-xvhdp-cr4queuedcontnr"
	QueuedContainerUUID        = "zzzzz-dz642-queuedcontainer"

	RunningContainerUUID = "zzzzz-dz642-runningcontainr"

	CompletedContainerUUID         = "zzzzz-dz642-compltcontainer"
	CompletedContainerRequestUUID  = "zzzzz-xvhdp-cr4completedctr"
	CompletedContainerRequestUUID2 = "zzzzz-xvhdp-cr4completedcr2"

	CompletedDiagnosticsContainerRequest1UUID     = "zzzzz-xvhdp-diagnostics0001"
	CompletedDiagnosticsContainerRequest2UUID     = "zzzzz-xvhdp-diagnostics0002"
	CompletedDiagnosticsContainer1UUID            = "zzzzz-dz642-diagcompreq0001"
	CompletedDiagnosticsContainer2UUID            = "zzzzz-dz642-diagcompreq0002"
	DiagnosticsContainerRequest1LogCollectionUUID = "zzzzz-4zz18-diagcompreqlog1"
	DiagnosticsContainerRequest2LogCollectionUUID = "zzzzz-4zz18-diagcompreqlog2"

	CompletedDiagnosticsHasher1ContainerRequestUUID = "zzzzz-xvhdp-diag1hasher0001"
	CompletedDiagnosticsHasher2ContainerRequestUUID = "zzzzz-xvhdp-diag1hasher0002"
	CompletedDiagnosticsHasher3ContainerRequestUUID = "zzzzz-xvhdp-diag1hasher0003"
	CompletedDiagnosticsHasher1ContainerUUID        = "zzzzz-dz642-diagcomphasher1"
	CompletedDiagnosticsHasher2ContainerUUID        = "zzzzz-dz642-diagcomphasher2"
	CompletedDiagnosticsHasher3ContainerUUID        = "zzzzz-dz642-diagcomphasher3"

	UncommittedContainerRequestUUID = "zzzzz-xvhdp-cr4uncommittedc"

	Hasher1LogCollectionUUID = "zzzzz-4zz18-dlogcollhash001"
	Hasher2LogCollectionUUID = "zzzzz-4zz18-dlogcollhash002"
	Hasher3LogCollectionUUID = "zzzzz-4zz18-dlogcollhash003"

	ArvadosRepoUUID = "zzzzz-s0uqq-arvadosrepo0123"
	ArvadosRepoName = "arvados"
	FooRepoUUID     = "zzzzz-s0uqq-382brsig8rp3666"
	FooRepoName     = "active/foo"
	Repository2UUID = "zzzzz-s0uqq-382brsig8rp3667"
	Repository2Name = "active/foo2"

	FooCollectionSharingTokenUUID = "zzzzz-gj3su-gf02tdm4g1z3e3u"
	FooCollectionSharingToken     = "iknqgmunrhgsyfok8uzjlwun9iscwm3xacmzmg65fa1j1lpdss"

	WorkflowWithDefinitionYAMLUUID = "zzzzz-7fd4e-validworkfloyml"

	CollectionReplicationDesired2Confirmed2UUID = "zzzzz-4zz18-434zv1tnnf2rygp"

	ActiveUserCanReadAllUsersLinkUUID = "zzzzz-o0j2j-ctbysaduejxfrs5"

	TrustedWorkbenchAPIClientUUID = "zzzzz-ozdt8-teyxzyd8qllg11h"

	AdminAuthorizedKeysUUID = "zzzzz-fngyi-12nc9ov4osp8nae"

	CrunchstatForRunningJobLogUUID = "zzzzz-57u5n-tmymyrojrbtnxh1"

	IdleNodeUUID = "zzzzz-7ekkf-2z3mc76g2q73aio"

	TestVMUUID = "zzzzz-2x53u-382brsig8rp3064"

	CollectionWithUniqueWordsUUID = "zzzzz-4zz18-mnt690klmb51aud"

	LogCollectionUUID  = "zzzzz-4zz18-logcollection01"
	LogCollectionUUID2 = "zzzzz-4zz18-logcollection02"

	DockerImage112PDH      = "d740a57097711e08eb9b2a93518f20ab+174"
	DockerImage112Filename = "sha256:d8309758b8fe2c81034ffc8a10c36460b77db7bc5e7b448c4e5b684f9d95a678.tar"
)

IDs of API server's test fixtures

View Source
const BlobSigningKey = "zfhgfenhffzltr9dixws36j1yhksjoll2grmku38mi7yxd66h5j4q9w4jzanezacp8s6q0ro3hxakfye02152hncy6zml2ed0uc"

BlobSigningKey used by the test servers

View Source
const PathologicalManifest = ". acbd18db4cc2f85cedef654fccc4a4d8+3 37b51d194a7513e45b56f6524f2d51f2+3 73feffa4b7f6bb68e44cf984c85f6e88+3+Z+K@xyzzy acbd18db4cc2f85cedef654fccc4a4d8+3 0:0:zero@0 0:1:f 1:0:zero@1 1:4:ooba 4:0:zero@4 5:1:r 5:4:rbaz 9:0:zero@9\n" +
	"./overlapReverse acbd18db4cc2f85cedef654fccc4a4d8+3 acbd18db4cc2f85cedef654fccc4a4d8+3 5:1:o 4:2:oo 2:4:ofoo\n" +
	"./segmented acbd18db4cc2f85cedef654fccc4a4d8+3 37b51d194a7513e45b56f6524f2d51f2+3 0:1:frob 5:1:frob 1:1:frob 1:2:oof 0:1:oof 5:0:frob 3:1:frob\n" +
	`./foo\040b\141r acbd18db4cc2f85cedef654fccc4a4d8+3 0:3:baz` + "\n" +
	`./foo\040b\141r acbd18db4cc2f85cedef654fccc4a4d8+3 0:3:b\141z\040w\141z` + "\n" +
	"./foo acbd18db4cc2f85cedef654fccc4a4d8+3 0:0:zero 0:3:foo\n" +
	". acbd18db4cc2f85cedef654fccc4a4d8+3 0:0:foo/zero 0:3:foo/foo\n"

PathologicalManifest : A valid manifest designed to test various edge cases and parsing requirements

Variables

View Source
var (
	MD5CollisionData = [][]byte{
		[]byte("\x0e0eaU\x9a\xa7\x87\xd0\x0b\xc6\xf7\x0b\xbd\xfe4\x04\xcf\x03e\x9epO\x854\xc0\x0f\xfbe\x9cL\x87@\xcc\x94/\xeb-\xa1\x15\xa3\xf4\x15\\\xbb\x86\x07Is\x86em}\x1f4\xa4 Y\xd7\x8fZ\x8d\xd1\xef"),
		[]byte("\x0e0eaU\x9a\xa7\x87\xd0\x0b\xc6\xf7\x0b\xbd\xfe4\x04\xcf\x03e\x9etO\x854\xc0\x0f\xfbe\x9cL\x87@\xcc\x94/\xeb-\xa1\x15\xa3\xf4\x15\xdc\xbb\x86\x07Is\x86em}\x1f4\xa4 Y\xd7\x8fZ\x8d\xd1\xef"),
	}
	MD5CollisionMD5 = "cee9a457e790cf20d4bdaa6d69f01e41"
)

An MD5 collision.

View Source
var ErrStubUnimplemented = errors.New("stub unimplemented")

Functions

func APIHost

func APIHost() string

APIHost returns the address:port of the current test server.

func CreateBadPath

func CreateBadPath() (badpath string, err error)

CreateBadPath creates a tmp dir, appends given string and returns that path This will guarantee that the path being returned does not exist

func DB

func DB(c *check.C, cluster *arvados.Cluster) *sqlx.DB

DB returns a DB connection for the given cluster config.

func DestroyBadPath

func DestroyBadPath(badpath string) error

DestroyBadPath deletes the tmp dir created by the previous CreateBadPath call

func ParseAuthSettings

func ParseAuthSettings(authScript []byte)

ParseAuthSettings parses auth settings from given input

func ResetEnv

func ResetEnv()

ResetEnv resets test env

func SetServiceURL

func SetServiceURL(service *arvados.Service, internalURLs ...string)

SetServiceURL overrides the given service config/discovery with the given internalURLs.

ExternalURL is set to the last internalURL, which only aims to address the case where there is only one.

SetServiceURL panics on errors.

func StartAPI

func StartAPI()

StartAPI starts test API server

func StartKeep

func StartKeep(numKeepServers int, blobSigning bool)

StartKeep starts the given number of keep servers, optionally with --keep-blob-signing enabled. Use numKeepServers = 2 and blobSigning = false under all normal circumstances.

func StopAPI

func StopAPI()

StopAPI stops test API server

func StopKeep

func StopKeep(numKeepServers int)

StopKeep stops keep servers that were started with StartKeep. numkeepServers should be the same value that was passed to StartKeep, which is 2 under all normal circumstances.

func TransactionContext

func TransactionContext(c *check.C, db *sqlx.DB) (ctx context.Context, rollback func())

TransactionContext returns a context suitable for running a test case in a new transaction, and a rollback func which the caller should call after the test.

Types

type APIStub

type APIStub struct {
	// The error to return from every stubbed API method.
	Error error
	// contains filtered or unexported fields
}

func (*APIStub) APIClientAuthorizationCurrent

func (as *APIStub) APIClientAuthorizationCurrent(ctx context.Context, options arvados.GetOptions) (arvados.APIClientAuthorization, error)

func (*APIStub) BaseURL

func (as *APIStub) BaseURL() url.URL

BaseURL implements federation.backend

func (*APIStub) Calls

func (as *APIStub) Calls(method interface{}) []APIStubCall

func (*APIStub) CollectionCreate

func (as *APIStub) CollectionCreate(ctx context.Context, options arvados.CreateOptions) (arvados.Collection, error)

func (*APIStub) CollectionDelete

func (as *APIStub) CollectionDelete(ctx context.Context, options arvados.DeleteOptions) (arvados.Collection, error)

func (*APIStub) CollectionGet

func (as *APIStub) CollectionGet(ctx context.Context, options arvados.GetOptions) (arvados.Collection, error)

func (*APIStub) CollectionList

func (as *APIStub) CollectionList(ctx context.Context, options arvados.ListOptions) (arvados.CollectionList, error)

func (*APIStub) CollectionProvenance

func (as *APIStub) CollectionProvenance(ctx context.Context, options arvados.GetOptions) (map[string]interface{}, error)

func (*APIStub) CollectionTrash

func (as *APIStub) CollectionTrash(ctx context.Context, options arvados.DeleteOptions) (arvados.Collection, error)

func (*APIStub) CollectionUntrash

func (as *APIStub) CollectionUntrash(ctx context.Context, options arvados.UntrashOptions) (arvados.Collection, error)

func (*APIStub) CollectionUpdate

func (as *APIStub) CollectionUpdate(ctx context.Context, options arvados.UpdateOptions) (arvados.Collection, error)

func (*APIStub) CollectionUsedBy

func (as *APIStub) CollectionUsedBy(ctx context.Context, options arvados.GetOptions) (map[string]interface{}, error)

func (*APIStub) ConfigGet

func (as *APIStub) ConfigGet(ctx context.Context) (json.RawMessage, error)

func (*APIStub) ContainerCreate

func (as *APIStub) ContainerCreate(ctx context.Context, options arvados.CreateOptions) (arvados.Container, error)

func (*APIStub) ContainerDelete

func (as *APIStub) ContainerDelete(ctx context.Context, options arvados.DeleteOptions) (arvados.Container, error)

func (*APIStub) ContainerGet

func (as *APIStub) ContainerGet(ctx context.Context, options arvados.GetOptions) (arvados.Container, error)

func (*APIStub) ContainerList

func (as *APIStub) ContainerList(ctx context.Context, options arvados.ListOptions) (arvados.ContainerList, error)

func (*APIStub) ContainerLock

func (as *APIStub) ContainerLock(ctx context.Context, options arvados.GetOptions) (arvados.Container, error)

func (*APIStub) ContainerRequestCreate

func (as *APIStub) ContainerRequestCreate(ctx context.Context, options arvados.CreateOptions) (arvados.ContainerRequest, error)

func (*APIStub) ContainerRequestDelete

func (as *APIStub) ContainerRequestDelete(ctx context.Context, options arvados.DeleteOptions) (arvados.ContainerRequest, error)

func (*APIStub) ContainerRequestGet

func (as *APIStub) ContainerRequestGet(ctx context.Context, options arvados.GetOptions) (arvados.ContainerRequest, error)

func (*APIStub) ContainerRequestList

func (as *APIStub) ContainerRequestList(ctx context.Context, options arvados.ListOptions) (arvados.ContainerRequestList, error)

func (*APIStub) ContainerRequestUpdate

func (as *APIStub) ContainerRequestUpdate(ctx context.Context, options arvados.UpdateOptions) (arvados.ContainerRequest, error)

func (*APIStub) ContainerSSH

func (*APIStub) ContainerUnlock

func (as *APIStub) ContainerUnlock(ctx context.Context, options arvados.GetOptions) (arvados.Container, error)

func (*APIStub) ContainerUpdate

func (as *APIStub) ContainerUpdate(ctx context.Context, options arvados.UpdateOptions) (arvados.Container, error)

func (*APIStub) GroupContents

func (as *APIStub) GroupContents(ctx context.Context, options arvados.GroupContentsOptions) (arvados.ObjectList, error)

func (*APIStub) GroupCreate

func (as *APIStub) GroupCreate(ctx context.Context, options arvados.CreateOptions) (arvados.Group, error)

func (*APIStub) GroupDelete

func (as *APIStub) GroupDelete(ctx context.Context, options arvados.DeleteOptions) (arvados.Group, error)

func (*APIStub) GroupGet

func (as *APIStub) GroupGet(ctx context.Context, options arvados.GetOptions) (arvados.Group, error)

func (*APIStub) GroupList

func (as *APIStub) GroupList(ctx context.Context, options arvados.ListOptions) (arvados.GroupList, error)

func (*APIStub) GroupShared

func (as *APIStub) GroupShared(ctx context.Context, options arvados.ListOptions) (arvados.GroupList, error)

func (*APIStub) GroupTrash

func (as *APIStub) GroupTrash(ctx context.Context, options arvados.DeleteOptions) (arvados.Group, error)

func (*APIStub) GroupUntrash

func (as *APIStub) GroupUntrash(ctx context.Context, options arvados.UntrashOptions) (arvados.Group, error)

func (*APIStub) GroupUpdate

func (as *APIStub) GroupUpdate(ctx context.Context, options arvados.UpdateOptions) (arvados.Group, error)

func (*APIStub) Login

func (*APIStub) Logout

func (*APIStub) SpecimenCreate

func (as *APIStub) SpecimenCreate(ctx context.Context, options arvados.CreateOptions) (arvados.Specimen, error)

func (*APIStub) SpecimenDelete

func (as *APIStub) SpecimenDelete(ctx context.Context, options arvados.DeleteOptions) (arvados.Specimen, error)

func (*APIStub) SpecimenGet

func (as *APIStub) SpecimenGet(ctx context.Context, options arvados.GetOptions) (arvados.Specimen, error)

func (*APIStub) SpecimenList

func (as *APIStub) SpecimenList(ctx context.Context, options arvados.ListOptions) (arvados.SpecimenList, error)

func (*APIStub) SpecimenUpdate

func (as *APIStub) SpecimenUpdate(ctx context.Context, options arvados.UpdateOptions) (arvados.Specimen, error)

func (*APIStub) UserActivate

func (as *APIStub) UserActivate(ctx context.Context, options arvados.UserActivateOptions) (arvados.User, error)

func (*APIStub) UserAuthenticate

func (*APIStub) UserBatchUpdate

func (as *APIStub) UserBatchUpdate(ctx context.Context, options arvados.UserBatchUpdateOptions) (arvados.UserList, error)

func (*APIStub) UserCreate

func (as *APIStub) UserCreate(ctx context.Context, options arvados.CreateOptions) (arvados.User, error)

func (*APIStub) UserDelete

func (as *APIStub) UserDelete(ctx context.Context, options arvados.DeleteOptions) (arvados.User, error)

func (*APIStub) UserGet

func (as *APIStub) UserGet(ctx context.Context, options arvados.GetOptions) (arvados.User, error)

func (*APIStub) UserGetCurrent

func (as *APIStub) UserGetCurrent(ctx context.Context, options arvados.GetOptions) (arvados.User, error)

func (*APIStub) UserGetSystem

func (as *APIStub) UserGetSystem(ctx context.Context, options arvados.GetOptions) (arvados.User, error)

func (*APIStub) UserList

func (as *APIStub) UserList(ctx context.Context, options arvados.ListOptions) (arvados.UserList, error)

func (*APIStub) UserMerge

func (as *APIStub) UserMerge(ctx context.Context, options arvados.UserMergeOptions) (arvados.User, error)

func (*APIStub) UserSetup

func (as *APIStub) UserSetup(ctx context.Context, options arvados.UserSetupOptions) (map[string]interface{}, error)

func (*APIStub) UserUnsetup

func (as *APIStub) UserUnsetup(ctx context.Context, options arvados.GetOptions) (arvados.User, error)

func (*APIStub) UserUpdate

func (as *APIStub) UserUpdate(ctx context.Context, options arvados.UpdateOptions) (arvados.User, error)

func (*APIStub) UserUpdateUUID

func (as *APIStub) UserUpdateUUID(ctx context.Context, options arvados.UpdateUUIDOptions) (arvados.User, error)

type APIStubCall

type APIStubCall struct {
	Method  interface{}
	Context context.Context
	Options interface{}
}

type OIDCProvider

type OIDCProvider struct {
	// expected token request
	ValidCode         string
	ValidClientID     string
	ValidClientSecret string
	// desired response from token endpoint
	AuthEmail          string
	AuthEmailVerified  bool
	AuthName           string
	AccessTokenPayload map[string]interface{}

	PeopleAPIResponse map[string]interface{}

	Issuer    *httptest.Server
	PeopleAPI *httptest.Server
	// contains filtered or unexported fields
}

func NewOIDCProvider

func NewOIDCProvider(c *check.C) *OIDCProvider

func (*OIDCProvider) ValidAccessToken

func (p *OIDCProvider) ValidAccessToken() string

type Proxy

type Proxy struct {
	*httptest.Server

	// URL where the proxy is listening. Same as Server.URL, but
	// with parsing already done for you.
	URL *url.URL

	// A dump of each request that has been proxied.
	RequestDumps [][]byte
}

func NewProxy

func NewProxy(c *check.C, svc arvados.Service) *Proxy

NewProxy returns a new Proxy that saves a dump of each reqeust before forwarding to the indicated service.

type ServerStub

type ServerStub struct {
	Responses map[string]StubResponse
}

ServerStub with response map of path and StubResponse Ex: /arvados/v1/keep_services = arvadostest.StubResponse{200, string(`{}`)}

func (*ServerStub) ServeHTTP

func (stub *ServerStub) ServeHTTP(resp http.ResponseWriter, req *http.Request)

type StubResponse

type StubResponse struct {
	Status int
	Body   string
}

StubResponse struct with response status and body

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL