mocktc

package
v43.2.0 Latest Latest
Warning

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

Go to latest
Published: Apr 28, 2021 License: MPL-2.0 Imports: 25 Imported by: 0

README

Mock Services Design

This package contains mock service implementations for worker tests.

Design goals:

  1. All tests runnable against mocks or a real deployed cluster
  2. Tests to run against mocks by default, but configurable to run against a real taskcluster deployment
  3. Mocks to service HTTP requests on localhost, emulating a real worker environment, in order to maximise test coverage of worker code
  4. All worker required network services to be mocked, including AWS S3 upload (for artifact publishing), cloud metadata endpoints and taskcluster HTTP endpoints
  5. Tests requiring external conditions hard to trigger in a real deployment may bypass requirement for compatibility with a real taskcluster deployment

At the current time, the following are NOT design goals, due to the increased complexity to implement. These may become design goals in the future.

  1. Mock services to be usable by both generic-worker and docker-worker tests
  2. Sharable tests between generic-worker and docker-worker

Documentation

Index

Constants

View Source
const WST_AUDIENCE = "testing"
View Source
const WST_SECRET = "sshhh!"

Variables

This section is empty.

Functions

func JSON

func JSON(w http.ResponseWriter, resp interface{}, err error)

func Marshal

func Marshal(req *http.Request, payload interface{})

func NoBody

func NoBody(w http.ResponseWriter, err error)

func ReportError

func ReportError(w http.ResponseWriter, err error)

func ServiceProviders

func ServiceProviders(t *testing.T, baseURL string) []httputil.ServiceProvider

func Vars

func Vars(r *http.Request) map[string]string

func WriteAsJSON

func WriteAsJSON(t *testing.T, w http.ResponseWriter, resp interface{})

Types

type Auth

type Auth struct {
}

func NewAuth

func NewAuth(t *testing.T) *Auth

func (*Auth) ExpandScopes

func (auth *Auth) ExpandScopes(payload *tcauth.SetOfScopes) (*tcauth.SetOfScopes, error)

func (*Auth) SentryDSN

func (auth *Auth) SentryDSN(project string) (*tcauth.SentryDSNResponse, error)

func (*Auth) WebsocktunnelToken

func (auth *Auth) WebsocktunnelToken(wstAudience, wstClientId string) (*tcauth.WebsocktunnelTokenResponse, error)

type AuthProvider

type AuthProvider struct {
	// contains filtered or unexported fields
}

func NewAuthProvider

func NewAuthProvider(auth tc.Auth) *AuthProvider

func (*AuthProvider) ExpandScopes

func (ap *AuthProvider) ExpandScopes(w http.ResponseWriter, r *http.Request)

func (*AuthProvider) RegisterService

func (ap *AuthProvider) RegisterService(r *mux.Router)

func (*AuthProvider) SentryDSN

func (ap *AuthProvider) SentryDSN(w http.ResponseWriter, r *http.Request)

func (*AuthProvider) WebsocktunnelToken

func (ap *AuthProvider) WebsocktunnelToken(w http.ResponseWriter, r *http.Request)

type Obj

type Obj struct {
	// contains filtered or unexported fields
}

type Object

type Object struct {
	// contains filtered or unexported fields
}

func NewObject

func NewObject(t *testing.T, baseURL string) *Object

func (*Object) CreateUpload

func (object *Object) CreateUpload(name string, payload *tcobject.CreateUploadRequest) (*tcobject.CreateUploadResponse, error)

func (*Object) FakeObject

func (object *Object) FakeObject(name string)

FakeS3Object creates a fake object which is assumed to be stored in mocks3 at an object of the same name. It is up to the caller to create the object in mocks3 if necesary.

func (*Object) FinishUpload

func (object *Object) FinishUpload(name string, payload *tcobject.FinishUploadRequest) error

func (*Object) StartDownload

func (object *Object) StartDownload(name string, payload *tcobject.DownloadObjectRequest) (*tcobject.DownloadObjectResponse, error)

type ObjectProvider

type ObjectProvider struct {
	// contains filtered or unexported fields
}

func NewObjectProvider

func NewObjectProvider(object tc.Object) *ObjectProvider

func (*ObjectProvider) CreateUpload

func (op *ObjectProvider) CreateUpload(w http.ResponseWriter, r *http.Request)

func (*ObjectProvider) FinishUpload

func (op *ObjectProvider) FinishUpload(w http.ResponseWriter, r *http.Request)

func (*ObjectProvider) RegisterService

func (op *ObjectProvider) RegisterService(r *mux.Router)

func (*ObjectProvider) StartDownload

func (op *ObjectProvider) StartDownload(w http.ResponseWriter, r *http.Request)

type PurgeCache

type PurgeCache struct {
}

func NewPurgeCache

func NewPurgeCache(t *testing.T) *PurgeCache

func (*PurgeCache) PurgeRequests

func (purgeCache *PurgeCache) PurgeRequests(workerPoolId, since string) (*tcpurgecache.OpenPurgeRequestList, error)

type Queue

type Queue struct {
	// contains filtered or unexported fields
}

func NewQueue

func NewQueue(t *testing.T, baseURL string) *Queue

func (*Queue) Artifact

func (queue *Queue) Artifact(taskId, runId, name string) (*tcqueue.GetArtifactContentResponse, error)

func (*Queue) CancelTask

func (queue *Queue) CancelTask(taskId string) (*tcqueue.TaskStatusResponse, error)

func (*Queue) ClaimWork

func (queue *Queue) ClaimWork(taskQueueId string, payload *tcqueue.ClaimWorkRequest) (*tcqueue.ClaimWorkResponse, error)

func (*Queue) CreateArtifact

func (queue *Queue) CreateArtifact(taskId, runId, name string, payload *tcqueue.PostArtifactRequest) (*tcqueue.PostArtifactResponse, error)

func (*Queue) CreateTask

func (queue *Queue) CreateTask(taskId string, payload *tcqueue.TaskDefinitionRequest) (*tcqueue.TaskStatusResponse, error)

func (*Queue) FakeErrorArtifact

func (queue *Queue) FakeErrorArtifact(taskId string, runId string, name string, message string, reason string)

FakeErrorArtifact makes a fake artifact with storageType 'object', outside of the usual API flow. It is up to the caller to also create the data in the object service, if necessary

func (*Queue) FakeObjectArtifact

func (queue *Queue) FakeObjectArtifact(taskId string, runId string, name string, contentType string)

FakeObjectArtifact makes a fake artifact with storageType 'object', outside of the usual API flow. It is up to the caller to also create the data in the object service, if necessary

func (*Queue) FakeS3Artifact

func (queue *Queue) FakeS3Artifact(taskId string, runId string, name string, contentType string)

FakeS3Artifact makes a fake artifact with storageType 's3', outside of the usual API flow. It is up to the caller to also create the data on mocks3, if necessary

func (*Queue) GetLatestArtifact_SignedURL

func (queue *Queue) GetLatestArtifact_SignedURL(taskId, name string, duration time.Duration) (*url.URL, error)

func (*Queue) LatestArtifact

func (queue *Queue) LatestArtifact(taskId, name string) (*tcqueue.GetArtifactContentResponse, error)

func (*Queue) ListArtifacts

func (queue *Queue) ListArtifacts(taskId, runId, continuationToken, limit string) (*tcqueue.ListArtifactsResponse, error)

func (*Queue) ReclaimTask

func (queue *Queue) ReclaimTask(taskId, runId string) (*tcqueue.TaskReclaimResponse, error)

func (*Queue) ReportCompleted

func (queue *Queue) ReportCompleted(taskId, runId string) (*tcqueue.TaskStatusResponse, error)

func (*Queue) ReportException

func (queue *Queue) ReportException(taskId, runId string, payload *tcqueue.TaskExceptionRequest) (*tcqueue.TaskStatusResponse, error)

func (*Queue) ReportFailed

func (queue *Queue) ReportFailed(taskId, runId string) (*tcqueue.TaskStatusResponse, error)

func (*Queue) Status

func (queue *Queue) Status(taskId string) (*tcqueue.TaskStatusResponse, error)

func (*Queue) Task

func (queue *Queue) Task(taskId string) (*tcqueue.TaskDefinitionResponse, error)

type QueueProvider

type QueueProvider struct {
	// contains filtered or unexported fields
}

func NewQueueProvider

func NewQueueProvider(queue tc.Queue) *QueueProvider

func (*QueueProvider) Artifact

func (qp *QueueProvider) Artifact(w http.ResponseWriter, r *http.Request)

func (*QueueProvider) CancelTask

func (qp *QueueProvider) CancelTask(w http.ResponseWriter, r *http.Request)

func (*QueueProvider) ClaimWork

func (qp *QueueProvider) ClaimWork(w http.ResponseWriter, r *http.Request)

func (*QueueProvider) CreateArtifact

func (qp *QueueProvider) CreateArtifact(w http.ResponseWriter, r *http.Request)

func (*QueueProvider) CreateTask

func (qp *QueueProvider) CreateTask(w http.ResponseWriter, r *http.Request)

func (*QueueProvider) GetLatestArtifact_SignedURL

func (qp *QueueProvider) GetLatestArtifact_SignedURL(w http.ResponseWriter, r *http.Request)

func (*QueueProvider) LatestArtifact

func (qp *QueueProvider) LatestArtifact(w http.ResponseWriter, r *http.Request)

func (*QueueProvider) ListArtifacts

func (qp *QueueProvider) ListArtifacts(w http.ResponseWriter, r *http.Request)

func (*QueueProvider) ReclaimTask

func (qp *QueueProvider) ReclaimTask(w http.ResponseWriter, r *http.Request)

func (*QueueProvider) RegisterService

func (qp *QueueProvider) RegisterService(r *mux.Router)

func (*QueueProvider) ReportCompleted

func (qp *QueueProvider) ReportCompleted(w http.ResponseWriter, r *http.Request)

func (*QueueProvider) ReportException

func (qp *QueueProvider) ReportException(w http.ResponseWriter, r *http.Request)

func (*QueueProvider) ReportFailed

func (qp *QueueProvider) ReportFailed(w http.ResponseWriter, r *http.Request)

func (*QueueProvider) Status

func (qp *QueueProvider) Status(w http.ResponseWriter, r *http.Request)

func (*QueueProvider) Task

func (qp *QueueProvider) Task(w http.ResponseWriter, r *http.Request)

type Secrets

type Secrets struct {
	// map from secret name to secret value
	Secrets map[string]*tcsecrets.Secret
}

func NewSecrets

func NewSecrets() *Secrets

func (*Secrets) Get

func (s *Secrets) Get(name string) (*tcsecrets.Secret, error)

func (*Secrets) List

func (s *Secrets) List(continuationToken, limit string) (*tcsecrets.SecretsList, error)

func (*Secrets) Ping

func (s *Secrets) Ping() error

func (*Secrets) Remove

func (s *Secrets) Remove(name string) error

func (*Secrets) Set

func (s *Secrets) Set(name string, payload *tcsecrets.Secret) error

type SecretsProvider

type SecretsProvider struct {
	// contains filtered or unexported fields
}

func NewSecretsProvider

func NewSecretsProvider(secrets tc.Secrets) *SecretsProvider

func (*SecretsProvider) Get

func (*SecretsProvider) List

func (*SecretsProvider) Ping

func (*SecretsProvider) RegisterService

func (sp *SecretsProvider) RegisterService(r *mux.Router)

func (*SecretsProvider) Remove

func (sp *SecretsProvider) Remove(w http.ResponseWriter, r *http.Request)

func (*SecretsProvider) Set

type ServiceFactory

type ServiceFactory struct {
	// contains filtered or unexported fields
}

func NewServiceFactory

func NewServiceFactory(t *testing.T) *ServiceFactory

func (*ServiceFactory) Auth

func (sf *ServiceFactory) Auth(creds *tcclient.Credentials, rootURL string) tc.Auth

func (*ServiceFactory) Object

func (sf *ServiceFactory) Object(creds *tcclient.Credentials, rootURL string) tc.Object

func (*ServiceFactory) PurgeCache

func (sf *ServiceFactory) PurgeCache(creds *tcclient.Credentials, rootURL string) tc.PurgeCache

func (*ServiceFactory) Queue

func (sf *ServiceFactory) Queue(creds *tcclient.Credentials, rootURL string) tc.Queue

func (*ServiceFactory) Secrets

func (sf *ServiceFactory) Secrets(creds *tcclient.Credentials, rootURL string) tc.Secrets

func (*ServiceFactory) WorkerManager

func (sf *ServiceFactory) WorkerManager(creds *tcclient.Credentials, rootURL string) tc.WorkerManager

type WorkerManager

type WorkerManager struct {
	// contains filtered or unexported fields
}

func NewWorkerManager

func NewWorkerManager(t *testing.T) *WorkerManager

func (*WorkerManager) CreateWorkerPool

func (*WorkerManager) WorkerPool

func (wm *WorkerManager) WorkerPool(workerPoolId string) (*tcworkermanager.WorkerPoolFullDefinition, error)

type WorkerManagerProvider

type WorkerManagerProvider struct {
	// contains filtered or unexported fields
}

func NewWorkerManagerProvider

func NewWorkerManagerProvider(workerManager tc.WorkerManager) *WorkerManagerProvider

func (*WorkerManagerProvider) CreateWorkerPool

func (wp *WorkerManagerProvider) CreateWorkerPool(w http.ResponseWriter, r *http.Request)

func (*WorkerManagerProvider) RegisterService

func (wp *WorkerManagerProvider) RegisterService(r *mux.Router)

func (*WorkerManagerProvider) RegisterWorker

func (wp *WorkerManagerProvider) RegisterWorker(w http.ResponseWriter, r *http.Request)

func (*WorkerManagerProvider) WorkerPool

func (wp *WorkerManagerProvider) WorkerPool(w http.ResponseWriter, r *http.Request)

Directories

Path Synopsis
The interfaces in this package contain the methods of each taskcluster service, allowing the use of fakes that provide the same methods.
The interfaces in this package contain the methods of each taskcluster service, allowing the use of fakes that provide the same methods.

Jump to

Keyboard shortcuts

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