framework

package
v0.0.0-...-35e2b90 Latest Latest
Warning

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

Go to latest
Published: Apr 30, 2018 License: Apache-2.0 Imports: 25 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var (

	// TestVM is true if in this test run user wants to test VM on istio
	TestVM = flag.Bool("test_vm", false, "whether to test VM on istio")
)

Functions

func InitLogging

func InitLogging() error

InitLogging sets the logging directory. Should be called right after flag.Parse().

Types

type App

type App struct {
	AppYamlTemplate string
	AppYaml         string
	KubeInject      bool
	Template        interface{}
	// contains filtered or unexported fields
}

App gathers information for Hop app

type AppManager

type AppManager struct {
	Apps []*App

	Kubeconfig string
	// contains filtered or unexported fields
}

AppManager organize and deploy apps

func NewAppManager

func NewAppManager(tmpDir, namespace string, istioctl *Istioctl, kubeconfig string) *AppManager

NewAppManager create a new AppManager

func (*AppManager) AddApp

func (am *AppManager) AddApp(a *App)

AddApp for automated deployment. Must be done before Setup call.

func (*AppManager) CheckDeployments

func (am *AppManager) CheckDeployments() error

CheckDeployments waits for a period for the deployments to be started.

func (*AppManager) DeployApp

func (am *AppManager) DeployApp(a *App) error

DeployApp adds the app and deploys it to the system. Must be called after Setup call.

func (*AppManager) Setup

func (am *AppManager) Setup() error

Setup deploy apps

func (*AppManager) Teardown

func (am *AppManager) Teardown() error

Teardown currently does nothing, only to satisfied cleanable{}

func (*AppManager) UndeployApp

func (am *AppManager) UndeployApp(a *App) error

UndeployApp deletes the app from the system. Must be called after Setup call.

type Cleanable

type Cleanable interface {
	Setup() error
	Teardown() error
}

Cleanable interfaces that need to be registered to CommonConfig

type CommonConfig

type CommonConfig struct {
	// Test Cleanup registration
	Cleanup *testCleanup
	// Test Information
	Info *testInfo
	// Kubernetes and istio installation information
	Kube *KubeInfo
}

CommonConfig regroup all common test configuration.

func NewCommonConfig

func NewCommonConfig(testID string) (*CommonConfig, error)

NewCommonConfig creates a full config with the local head version.

func NewCommonConfigWithVersion

func NewCommonConfigWithVersion(testID, version string) (*CommonConfig, error)

NewCommonConfigWithVersion creates a new CommonConfig with the specified version of Istio. If baseVersion is empty, it will use the local head version.

func (*CommonConfig) RunTest

func (c *CommonConfig) RunTest(m runnable) int

RunTest sets up all registered cleanables in FIFO order Execute the runnable Call teardown on all the cleanables in LIFO order.

type GCPRawVM

type GCPRawVM struct {
	Name        string
	ClusterName string
	Namespace   string
	ProjectID   string
	Zone        string
	// Use Mason does not require provisioning, and therefore all following fields are not required
	UseMason bool
	// ServiceAccount must have iam.serviceAccountActor or owner permissions
	// to the project. Use IAM settings.
	ServiceAccount string
	Image          string
	ImageProject   string
}

GCPRawVM is hosted on Google Cloud Platform

func NewGCPRawVM

func NewGCPRawVM(namespace string) (*GCPRawVM, error)

NewGCPRawVM creates a new vm on GCP

func (*GCPRawVM) GetExternalIP

func (vm *GCPRawVM) GetExternalIP() (string, error)

GetExternalIP returns the internal IP of the VM

func (*GCPRawVM) GetInternalIP

func (vm *GCPRawVM) GetInternalIP() (string, error)

GetInternalIP returns the internal IP of the VM

func (*GCPRawVM) SecureCopy

func (vm *GCPRawVM) SecureCopy(files ...string) (string, error)

SecureCopy copies files to vm via scp

func (*GCPRawVM) SecureShell

func (vm *GCPRawVM) SecureShell(cmd string) (string, error)

SecureShell execeutes cmd on vm through ssh

func (*GCPRawVM) Setup

func (vm *GCPRawVM) Setup() error

Setup initialize the VM

func (*GCPRawVM) Teardown

func (vm *GCPRawVM) Teardown() error

Teardown releases the VM to resource manager

type Istioctl

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

Istioctl gathers istioctl information.

func NewIstioctl

func NewIstioctl(yamlDir, namespace, istioNamespace, proxyHub, proxyTag string) (*Istioctl, error)

NewIstioctl create a new istioctl by given temp dir.

func (*Istioctl) CreateRule

func (i *Istioctl) CreateRule(rule string) error

CreateRule create new rule(s)

func (*Istioctl) DeleteRule

func (i *Istioctl) DeleteRule(rule string) error

DeleteRule Delete rule(s)

func (*Istioctl) Install

func (i *Istioctl) Install() error

Install downloads Istioctl binary.

func (*Istioctl) KubeInject

func (i *Istioctl) KubeInject(src, dest string) error

KubeInject use istio kube-inject to create new yaml with a proxy as sidecar.

func (*Istioctl) ReplaceRule

func (i *Istioctl) ReplaceRule(rule string) error

ReplaceRule replace rule(s)

func (*Istioctl) Setup

func (i *Istioctl) Setup() error

Setup set up istioctl prerequest for tests, port forwarding

func (*Istioctl) Teardown

func (i *Istioctl) Teardown() error

Teardown clean up everything created by setup

type KubeInfo

type KubeInfo struct {
	Namespace string

	TmpDir string

	AuthEnabled   bool
	RBACEnabled   bool
	InstallAddons bool

	// Extra services to be excluded from MTLS
	MTLSExcludedServices []string

	// Istioctl installation
	Istioctl *Istioctl
	// App Manager
	AppManager *AppManager

	// Release directory
	ReleaseDir string
	// Use baseversion if not empty.
	BaseVersion string

	KubeConfig       string
	KubeClient       kubernetes.Interface
	RemoteKubeConfig string
	RemoteKubeClient kubernetes.Interface
	RemoteAppManager *AppManager
	// contains filtered or unexported fields
}

KubeInfo gathers information for kubectl

func (*KubeInfo) GetAppPods

func (k *KubeInfo) GetAppPods() map[string][]string

GetAppPods gets a map of app name to pods for that app. If pods are found, the results are cached.

func (*KubeInfo) GetRoutes

func (k *KubeInfo) GetRoutes(app string) (string, error)

GetRoutes gets routes from the pod or returns error

func (*KubeInfo) ImagePullPolicy

func (k *KubeInfo) ImagePullPolicy() string

ImagePullPolicy exposes the pull policy override used for Docker images. May be "".

func (*KubeInfo) Ingress

func (k *KubeInfo) Ingress() (string, error)

Ingress lazily initialize ingress

func (*KubeInfo) IngressGateway

func (k *KubeInfo) IngressGateway() (string, error)

IngressGateway lazily initialize Ingress Gateway

func (*KubeInfo) IngressGatewayOrFail

func (k *KubeInfo) IngressGatewayOrFail(t *testing.T) string

IngressGatewayOrFail lazily initialize ingress gateway and fail test if not found.

func (*KubeInfo) IngressOrFail

func (k *KubeInfo) IngressOrFail(t *testing.T) string

IngressOrFail lazily initialize ingress and fail test if not found.

func (*KubeInfo) IstioEgressGatewayService

func (k *KubeInfo) IstioEgressGatewayService() string

IstioEgressGatewayService returns the service name for the egress gateway service

func (*KubeInfo) IstioIngressGatewayService

func (k *KubeInfo) IstioIngressGatewayService() string

IstioIngressGatewayService returns the service name for the ingress gateway service

func (*KubeInfo) IstioIngressService

func (k *KubeInfo) IstioIngressService() string

IstioIngressService returns the service name for the ingress service

func (*KubeInfo) IstioSystemNamespace

func (k *KubeInfo) IstioSystemNamespace() string

IstioSystemNamespace returns the namespace used for the Istio system components.

func (*KubeInfo) PilotHub

func (k *KubeInfo) PilotHub() string

PilotHub exposes the Docker hub used for the pilot image.

func (*KubeInfo) PilotTag

func (k *KubeInfo) PilotTag() string

PilotTag exposes the Docker tag used for the pilot image.

func (*KubeInfo) ProxyHub

func (k *KubeInfo) ProxyHub() string

ProxyHub exposes the Docker hub used for the proxy image.

func (*KubeInfo) ProxyTag

func (k *KubeInfo) ProxyTag() string

ProxyTag exposes the Docker tag used for the proxy image.

func (*KubeInfo) Setup

func (k *KubeInfo) Setup() error

Setup set up Kubernetes prerequest for tests

func (*KubeInfo) Teardown

func (k *KubeInfo) Teardown() error

Teardown clean up everything created by setup

type RawVM

type RawVM interface {
	Cleanable
	GetInternalIP() (string, error)
	GetExternalIP() (string, error)
	SecureShell(cmd string) (string, error)
	SecureCopy(files ...string) (string, error)
}

RawVM interfaces different cloud venders to support e2e testing with VM

type TestFlags

type TestFlags struct {
	V1alpha1 bool
	V1alpha3 bool
	Ingress  bool
	Egress   bool
}

TestFlags holds routing versions to test, and also if Ingress/Egress should be tested

func (*TestFlags) ConfigVersions

func (tf *TestFlags) ConfigVersions() []string

ConfigVersions returns a list of strings of the enabled config versions

func (*TestFlags) Init

func (tf *TestFlags) Init()

Init initializes golang "flags" with the flags of TestFlags

Jump to

Keyboard shortcuts

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