本文整理匯總了Golang中github.com/cloudfoundry-incubator/bbs/models.Timeout函數的典型用法代碼示例。如果您正苦於以下問題:Golang Timeout函數的具體用法?Golang Timeout怎麽用?Golang Timeout使用的例子?那麽, 這裏精選的函數代碼示例或許可以為您提供幫助。
在下文中一共展示了Timeout函數的13個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的Golang代碼示例。
示例1: NewValidDesiredLRP
func NewValidDesiredLRP(guid string) *models.DesiredLRP {
myRouterJSON := json.RawMessage(`{"foo":"bar"}`)
modTag := models.NewModificationTag("epoch", 0)
desiredLRP := &models.DesiredLRP{
ProcessGuid: guid,
Domain: "some-domain",
RootFs: "some:rootfs",
Instances: 1,
EnvironmentVariables: []*models.EnvironmentVariable{{Name: "FOO", Value: "bar"}},
CachedDependencies: []*models.CachedDependency{
{Name: "app bits", From: "blobstore.com/bits/app-bits", To: "/usr/local/app", CacheKey: "cache-key", LogSource: "log-source"},
{Name: "app bits with checksum", From: "blobstore.com/bits/app-bits-checksum", To: "/usr/local/app-checksum", CacheKey: "cache-key", LogSource: "log-source", ChecksumAlgorithm: "md5", ChecksumValue: "checksum-value"},
},
Setup: models.WrapAction(&models.RunAction{Path: "ls", User: "name"}),
Action: models.WrapAction(&models.RunAction{Path: "ls", User: "name"}),
StartTimeoutMs: 15000,
Monitor: models.WrapAction(models.EmitProgressFor(
models.Timeout(models.Try(models.Parallel(models.Serial(&models.RunAction{Path: "ls", User: "name"}))),
10*time.Second,
),
"start-message",
"success-message",
"failure-message",
)),
DiskMb: 512,
MemoryMb: 1024,
CpuWeight: 42,
Routes: &models.Routes{"my-router": &myRouterJSON},
LogSource: "some-log-source",
LogGuid: "some-log-guid",
MetricsGuid: "some-metrics-guid",
Annotation: "some-annotation",
Network: &models.Network{
Properties: map[string]string{
"some-key": "some-value",
"some-other-key": "some-other-value",
},
},
EgressRules: []*models.SecurityGroupRule{{
Protocol: models.TCPProtocol,
Destinations: []string{"1.1.1.1/32", "2.2.2.2/32"},
PortRange: &models.PortRange{Start: 10, End: 16000},
}},
ModificationTag: &modTag,
LegacyDownloadUser: "legacy-dan",
TrustedSystemCertificatesPath: "/etc/somepath",
VolumeMounts: []*models.VolumeMount{
{
Driver: "my-driver",
VolumeId: "my-volume",
ContainerPath: "/mnt/mypath",
Mode: models.BindMountMode_RO,
},
},
}
err := desiredLRP.Validate()
Expect(err).NotTo(HaveOccurred())
return desiredLRP
}
示例2: NewValidDesiredLRP
func NewValidDesiredLRP(guid string) *models.DesiredLRP {
myRouterJSON := json.RawMessage(`{"foo":"bar"}`)
modTag := models.NewModificationTag("epoch", 0)
desiredLRP := &models.DesiredLRP{
ProcessGuid: guid,
Domain: "some-domain",
RootFs: "some:rootfs",
Instances: 1,
EnvironmentVariables: []*models.EnvironmentVariable{{Name: "FOO", Value: "bar"}},
Setup: models.WrapAction(&models.RunAction{Path: "ls", User: "name"}),
Action: models.WrapAction(&models.RunAction{Path: "ls", User: "name"}),
StartTimeout: 15,
Monitor: models.WrapAction(models.EmitProgressFor(
models.Timeout(models.Try(models.Parallel(models.Serial(&models.RunAction{Path: "ls", User: "name"}))),
10*time.Second,
),
"start-message",
"success-message",
"failure-message",
)),
DiskMb: 512,
MemoryMb: 1024,
CpuWeight: 42,
Routes: &models.Routes{"my-router": &myRouterJSON},
LogSource: "some-log-source",
LogGuid: "some-log-guid",
MetricsGuid: "some-metrics-guid",
Annotation: "some-annotation",
EgressRules: []*models.SecurityGroupRule{{
Protocol: models.TCPProtocol,
Destinations: []string{"1.1.1.1/32", "2.2.2.2/32"},
PortRange: &models.PortRange{Start: 10, End: 16000},
}},
ModificationTag: &modTag,
}
err := desiredLRP.Validate()
Expect(err).NotTo(HaveOccurred())
return desiredLRP
}
示例3: BuildRecipe
//.........這裏部分代碼省略.........
cachedDependencies := []*models.CachedDependency{
&models.CachedDependency{
From: compilerURL.String(),
To: path.Dir(DockerBuilderExecutablePath),
CacheKey: "docker-lifecycle",
},
}
runActionArguments := []string{
"-outputMetadataJSONFilename", DockerBuilderOutputPath,
"-dockerRef", lifecycleData.DockerImageUrl,
}
if len(backend.config.InsecureDockerRegistries) > 0 {
insecureDockerRegistries := strings.Join(backend.config.InsecureDockerRegistries, ",")
runActionArguments = append(runActionArguments, "-insecureDockerRegistries", insecureDockerRegistries)
}
fileDescriptorLimit := uint64(request.FileDescriptors)
runAs := "vcap"
actions := []models.ActionInterface{}
if cacheDockerImage(request.Environment) {
runAs = "root"
additionalEgressRules, additionalArgs, err := cachingEgressRulesAndArgs(
logger,
backend.config.DockerRegistryAddress,
backend.config.ConsulCluster,
lifecycleData,
)
if err != nil {
return &models.TaskDefinition{}, "", "", err
}
runActionArguments = append(runActionArguments, additionalArgs...)
request.EgressRules = append(request.EgressRules, additionalEgressRules...)
actions = append(
actions,
models.EmitProgressFor(
&models.RunAction{
Path: MountCgroupsPath,
ResourceLimits: &models.ResourceLimits{
Nofile: &fileDescriptorLimit,
},
User: runAs,
},
"Preparing docker daemon...",
"",
"Failed to set up docker environment",
),
)
}
actions = append(
actions,
models.EmitProgressFor(
&models.RunAction{
Path: DockerBuilderExecutablePath,
Args: runActionArguments,
Env: request.Environment,
ResourceLimits: &models.ResourceLimits{
Nofile: &fileDescriptorLimit,
},
User: runAs,
},
"Staging...",
"Staging Complete",
"Staging Failed",
),
)
annotationJson, _ := json.Marshal(cc_messages.StagingTaskAnnotation{
Lifecycle: DockerLifecycleName,
CompletionCallback: request.CompletionCallback,
})
taskDefinition := &models.TaskDefinition{
RootFs: models.PreloadedRootFS(backend.config.DockerStagingStack),
ResultFile: DockerBuilderOutputPath,
Privileged: true,
MemoryMb: int32(request.MemoryMB),
LogSource: TaskLogSource,
LogGuid: request.LogGuid,
EgressRules: request.EgressRules,
DiskMb: int32(request.DiskMB),
CompletionCallbackUrl: backend.config.CallbackURL(stagingGuid),
Annotation: string(annotationJson),
Action: models.WrapAction(models.Timeout(models.Serial(actions...), dockerTimeout(request, backend.logger))),
CachedDependencies: cachedDependencies,
LegacyDownloadUser: "vcap",
TrustedSystemCertificatesPath: TrustedSystemCertificatesPath,
}
logger.Debug("staging-task-request")
return taskDefinition, stagingGuid, backend.config.TaskDomain, nil
}
示例4:
parallelRunAction := desiredLRP.Action.CodependentAction
Expect(parallelRunAction.Actions).To(HaveLen(1))
runAction := parallelRunAction.Actions[0].RunAction
Expect(desiredLRP.Monitor.GetValue()).To(Equal(models.Timeout(
&models.ParallelAction{
Actions: []*models.Action{
&models.Action{
RunAction: &models.RunAction{
User: "vcap",
Path: "/tmp/lifecycle/healthcheck",
Args: []string{"-port=8080"},
LogSource: "HEALTH",
ResourceLimits: &models.ResourceLimits{
Nofile: &defaultNofile,
},
SuppressLogOutput: true,
},
},
},
},
30*time.Second,
)))
Expect(runAction.Path).To(Equal("/tmp/lifecycle/launcher"))
Expect(runAction.Args).To(Equal([]string{
"app",
"the-start-command with-arguments",
"the-execution-metadata",
示例5: BuildRecipe
//.........這裏部分代碼省略.........
compilerURL, err := backend.compilerDownloadURL()
if err != nil {
return &models.TaskDefinition{}, "", "", err
}
cacheDockerImage := false
for _, envVar := range request.Environment {
if envVar.Name == "DIEGO_DOCKER_CACHE" && envVar.Value == "true" {
cacheDockerImage = true
break
}
}
actions := []models.ActionInterface{}
//Download builder
actions = append(
actions,
models.EmitProgressFor(
&models.DownloadAction{
From: compilerURL.String(),
To: path.Dir(DockerBuilderExecutablePath),
CacheKey: "docker-lifecycle",
User: "vcap",
},
"",
"",
"Failed to set up docker environment",
),
)
runActionArguments := []string{"-outputMetadataJSONFilename", DockerBuilderOutputPath, "-dockerRef", lifecycleData.DockerImageUrl}
runAs := "vcap"
if cacheDockerImage {
runAs = "root"
host, port, err := net.SplitHostPort(backend.config.DockerRegistryAddress)
if err != nil {
logger.Debug("invalid docker registry address", lager.Data{"address": backend.config.DockerRegistryAddress, "error": err.Error()})
return &models.TaskDefinition{}, "", "", ErrInvalidDockerRegistryAddress
}
registryServices, err := getDockerRegistryServices(backend.config.ConsulCluster, backend.logger)
if err != nil {
return &models.TaskDefinition{}, "", "", err
}
registryRules := addDockerRegistryRules(request.EgressRules, registryServices)
request.EgressRules = append(request.EgressRules, registryRules...)
registryIPs := strings.Join(buildDockerRegistryAddresses(registryServices), ",")
runActionArguments, err = addDockerCachingArguments(runActionArguments, registryIPs, backend.config.InsecureDockerRegistry, host, port, lifecycleData)
if err != nil {
return &models.TaskDefinition{}, "", "", err
}
}
fileDescriptorLimit := uint64(request.FileDescriptors)
// Run builder
actions = append(
actions,
models.EmitProgressFor(
&models.RunAction{
Path: DockerBuilderExecutablePath,
Args: runActionArguments,
Env: request.Environment,
ResourceLimits: &models.ResourceLimits{
Nofile: &fileDescriptorLimit,
},
User: runAs,
},
"Staging...",
"Staging Complete",
"Staging Failed",
),
)
annotationJson, _ := json.Marshal(cc_messages.StagingTaskAnnotation{
Lifecycle: DockerLifecycleName,
})
taskDefinition := &models.TaskDefinition{
RootFs: models.PreloadedRootFS(backend.config.DockerStagingStack),
ResultFile: DockerBuilderOutputPath,
Privileged: true,
MemoryMb: int32(request.MemoryMB),
LogSource: TaskLogSource,
LogGuid: request.LogGuid,
EgressRules: request.EgressRules,
DiskMb: int32(request.DiskMB),
CompletionCallbackUrl: backend.config.CallbackURL(stagingGuid),
Annotation: string(annotationJson),
Action: models.WrapAction(models.Timeout(models.Serial(actions...), dockerTimeout(request, backend.logger))),
}
logger.Debug("staging-task-request")
return taskDefinition, stagingGuid, backend.config.TaskDomain, nil
}
示例6:
"run": {
"path": "echo",
"user": "someone",
"resource_limits":{
"nofile": 10
},
"suppress_log_output": false
}
},
"timeout_ms": 10
}`,
models.WrapAction(
models.Timeout(
&models.RunAction{
Path: "echo",
User: "someone",
ResourceLimits: &models.ResourceLimits{Nofile: &nofile},
},
10*time.Millisecond,
)),
)
Describe("Validate", func() {
var timeoutAction *models.TimeoutAction
Context("when the action has 'action' specified and a positive timeout", func() {
It("is valid", func() {
timeoutAction = &models.TimeoutAction{
Action: &models.Action{
UploadAction: &models.UploadAction{
From: "local_location",
To: "web_location",
示例7:
{Name: "env-key-1", Value: "env-value-1"},
{Name: "env-key-2", Value: "env-value-2"},
{Name: "PORT", Value: "8080"},
},
ResourceLimits: &models.ResourceLimits{Nofile: &nofile},
LogSource: recipebuilder.AppLogSource,
})),
Monitor: models.WrapAction(models.Timeout(
&models.ParallelAction{
Actions: []*models.Action{
&models.Action{
RunAction: &models.RunAction{
User: "vcap",
Path: "/tmp/lifecycle/healthcheck",
Args: []string{"-port=8080"},
LogSource: "HEALTH",
ResourceLimits: &models.ResourceLimits{
Nofile: &defaultNofile,
},
},
},
},
},
30*time.Second,
)),
DiskMb: 1024,
MemoryMb: 256,
CpuWeight: 1,
Ports: []uint32{
8080,
},
Routes: routes,
示例8: BuildRecipe
func (backend *traditionalBackend) BuildRecipe(stagingGuid string, request cc_messages.StagingRequestFromCC) (*models.TaskDefinition, string, string, error) {
logger := backend.logger.Session("build-recipe", lager.Data{"app-id": request.AppId, "staging-guid": stagingGuid})
logger.Info("staging-request")
if request.LifecycleData == nil {
return &models.TaskDefinition{}, "", "", ErrMissingLifecycleData
}
var lifecycleData cc_messages.BuildpackStagingData
err := json.Unmarshal(*request.LifecycleData, &lifecycleData)
if err != nil {
return &models.TaskDefinition{}, "", "", err
}
err = backend.validateRequest(request, lifecycleData)
if err != nil {
return &models.TaskDefinition{}, "", "", err
}
compilerURL, err := backend.compilerDownloadURL(request, lifecycleData)
if err != nil {
return &models.TaskDefinition{}, "", "", err
}
buildpacksOrder := []string{}
for _, buildpack := range lifecycleData.Buildpacks {
buildpacksOrder = append(buildpacksOrder, buildpack.Key)
}
skipDetect := len(lifecycleData.Buildpacks) == 1 && lifecycleData.Buildpacks[0].SkipDetect
builderConfig := buildpack_app_lifecycle.NewLifecycleBuilderConfig(buildpacksOrder, skipDetect, backend.config.SkipCertVerify)
timeout := traditionalTimeout(request, backend.logger)
actions := []models.ActionInterface{}
//Download app package
appDownloadAction := &models.DownloadAction{
Artifact: "app package",
From: lifecycleData.AppBitsDownloadUri,
To: builderConfig.BuildDir(),
User: "vcap",
}
actions = append(actions, appDownloadAction)
downloadActions := []models.ActionInterface{}
downloadNames := []string{}
//Download builder
downloadActions = append(
downloadActions,
models.EmitProgressFor(
&models.DownloadAction{
From: compilerURL.String(),
To: path.Dir(builderConfig.ExecutablePath),
CacheKey: fmt.Sprintf("buildpack-%s-lifecycle", lifecycleData.Stack),
User: "vcap",
},
"",
"",
"Failed to set up staging environment",
),
)
//Download buildpacks
buildpackNames := []string{}
downloadMsgPrefix := ""
if !skipDetect {
downloadMsgPrefix = "No buildpack specified; fetching standard buildpacks to detect and build your application.\n"
}
for _, buildpack := range lifecycleData.Buildpacks {
if buildpack.Name == cc_messages.CUSTOM_BUILDPACK {
buildpackNames = append(buildpackNames, buildpack.Url)
} else {
buildpackNames = append(buildpackNames, buildpack.Name)
downloadActions = append(
downloadActions,
&models.DownloadAction{
Artifact: buildpack.Name,
From: buildpack.Url,
To: builderConfig.BuildpackPath(buildpack.Key),
CacheKey: buildpack.Key,
User: "vcap",
},
)
}
}
downloadNames = append(downloadNames, fmt.Sprintf("buildpacks (%s)", strings.Join(buildpackNames, ", ")))
//Download buildpack artifacts cache
downloadURL, err := backend.buildArtifactsDownloadURL(lifecycleData)
if err != nil {
return &models.TaskDefinition{}, "", "", err
}
if downloadURL != nil {
downloadActions = append(
//.........這裏部分代碼省略.........
示例9: Build
func (b *BuildpackRecipeBuilder) Build(desiredApp *cc_messages.DesireAppRequestFromCC) (*models.DesiredLRP, error) {
lrpGuid := desiredApp.ProcessGuid
buildLogger := b.logger.Session("message-builder")
if desiredApp.DropletUri == "" {
buildLogger.Error("desired-app-invalid", ErrDropletSourceMissing, lager.Data{"desired-app": desiredApp})
return nil, ErrDropletSourceMissing
}
if desiredApp.DropletUri != "" && desiredApp.DockerImageUrl != "" {
buildLogger.Error("desired-app-invalid", ErrMultipleAppSources, lager.Data{"desired-app": desiredApp})
return nil, ErrMultipleAppSources
}
var lifecycle = "buildpack/" + desiredApp.Stack
lifecyclePath, ok := b.config.Lifecycles[lifecycle]
if !ok {
buildLogger.Error("unknown-lifecycle", ErrNoLifecycleDefined, lager.Data{
"lifecycle": lifecycle,
})
return nil, ErrNoLifecycleDefined
}
lifecycleURL := lifecycleDownloadURL(lifecyclePath, b.config.FileServerURL)
rootFSPath := models.PreloadedRootFS(desiredApp.Stack)
var containerEnvVars []*models.EnvironmentVariable
containerEnvVars = append(containerEnvVars, &models.EnvironmentVariable{"LANG", DefaultLANG})
numFiles := DefaultFileDescriptorLimit
if desiredApp.FileDescriptors != 0 {
numFiles = desiredApp.FileDescriptors
}
var setup []models.ActionInterface
var actions []models.ActionInterface
var monitor models.ActionInterface
cachedDependencies := []*models.CachedDependency{}
cachedDependencies = append(cachedDependencies, &models.CachedDependency{
From: lifecycleURL,
To: "/tmp/lifecycle",
CacheKey: fmt.Sprintf("%s-lifecycle", strings.Replace(lifecycle, "/", "-", 1)),
})
desiredAppPorts, err := b.ExtractExposedPorts(desiredApp)
if err != nil {
return nil, err
}
switch desiredApp.HealthCheckType {
case cc_messages.PortHealthCheckType, cc_messages.UnspecifiedHealthCheckType:
monitor = models.Timeout(getParallelAction(desiredAppPorts, "vcap"), 30*time.Second)
}
setup = append(setup, &models.DownloadAction{
From: desiredApp.DropletUri,
To: ".",
CacheKey: fmt.Sprintf("droplets-%s", lrpGuid),
User: "vcap",
})
actions = append(actions, &models.RunAction{
User: "vcap",
Path: "/tmp/lifecycle/launcher",
Args: append(
[]string{"app"},
desiredApp.StartCommand,
desiredApp.ExecutionMetadata,
),
Env: createLrpEnv(desiredApp.Environment, desiredAppPorts[0]),
LogSource: AppLogSource,
ResourceLimits: &models.ResourceLimits{
Nofile: &numFiles,
},
})
desiredAppRoutingInfo, err := helpers.CCRouteInfoToRoutes(desiredApp.RoutingInfo, desiredAppPorts)
if err != nil {
buildLogger.Error("marshaling-cc-route-info-failed", err)
return nil, err
}
if desiredApp.AllowSSH {
hostKeyPair, err := b.config.KeyFactory.NewKeyPair(1024)
if err != nil {
buildLogger.Error("new-host-key-pair-failed", err)
return nil, err
}
userKeyPair, err := b.config.KeyFactory.NewKeyPair(1024)
if err != nil {
buildLogger.Error("new-user-key-pair-failed", err)
return nil, err
}
actions = append(actions, &models.RunAction{
//.........這裏部分代碼省略.........
示例10:
Expect(task.Failed).To(BeTrue())
// when sh can't open another file the exec exits 2
Expect(task.FailureReason).To(ContainSubstring("status 2"))
})
})
Context("when the command times out", func() {
It("should fail the Task", func() {
err := receptorClient.CreateTask(helpers.TaskCreateRequest(
guid,
models.Serial(
models.Timeout(
&models.RunAction{
User: "vcap",
Path: "sleep",
Args: []string{"1"},
},
500*time.Millisecond,
),
),
))
Expect(err).NotTo(HaveOccurred())
var task receptor.TaskResponse
Eventually(func() interface{} {
var err error
task, err = receptorClient.GetTask(guid)
Expect(err).NotTo(HaveOccurred())
return task.State
示例11:
var protoDeserialization models.Task
err = proto.Unmarshal(protoSerialization, &protoDeserialization)
Expect(err).NotTo(HaveOccurred())
Expect(protoDeserialization).To(Equal(task))
})
})
Describe("VersionDownTo", func() {
Context("V1", func() {
BeforeEach(func() {
task.Action = models.WrapAction(models.Timeout(
&models.RunAction{
Path: "/the/path",
User: "the user",
},
10*time.Millisecond,
))
})
It("converts TimeoutMs to Timeout in Nanoseconds", func() {
task.VersionDownTo(format.V1)
Expect(task.GetAction().GetTimeoutAction().DeprecatedTimeoutNs).To(BeEquivalentTo(10 * time.Millisecond))
})
})
Context("V0", func() {
var (
downloadAction1, downloadAction2 *models.DownloadAction
)
示例12:
var newValidDesiredLRP = func(guid string) *models.DesiredLRP {
myRouterJSON := json.RawMessage(`{"foo":"bar"}`)
modTag := models.NewModificationTag("epoch", 0)
desiredLRP := &models.DesiredLRP{
ProcessGuid: guid,
Domain: "some-domain",
RootFs: "some:rootfs",
Instances: 1,
EnvironmentVariables: []*models.EnvironmentVariable{{Name: "FOO", Value: "bar"}},
Setup: models.WrapAction(&models.RunAction{Path: "ls", User: "name"}),
Action: models.WrapAction(&models.RunAction{Path: "ls", User: "name"}),
DeprecatedStartTimeoutS: 15,
Monitor: models.WrapAction(models.EmitProgressFor(
models.Timeout(models.Try(models.Parallel(models.Serial(&models.RunAction{Path: "ls", User: "name"}))),
10*time.Second,
),
"start-message",
"success-message",
"failure-message",
)),
DiskMb: 512,
MemoryMb: 1024,
CpuWeight: 42,
Routes: &models.Routes{"my-router": &myRouterJSON},
LogSource: "some-log-source",
LogGuid: "some-log-guid",
MetricsGuid: "some-metrics-guid",
Annotation: "some-annotation",
EgressRules: []*models.SecurityGroupRule{{
Protocol: models.TCPProtocol,
示例13:
"router": &rawMessage,
}
expectedSchedulingInfo.ModificationTag.Increment()
schedulingInfo.ApplyUpdate(update)
Expect(schedulingInfo).To(Equal(expectedSchedulingInfo))
})
})
Describe("Version Down To", func() {
Context("V1", func() {
BeforeEach(func() {
desiredLRP.Setup = models.WrapAction(models.Timeout(
&models.RunAction{
Path: "/the/path",
User: "the user",
},
10*time.Millisecond,
))
desiredLRP.Action = models.WrapAction(models.Timeout(
&models.RunAction{
Path: "/the/path",
User: "the user",
},
20*time.Millisecond,
))
desiredLRP.Monitor = models.WrapAction(models.Timeout(
&models.RunAction{
Path: "/the/path",
User: "the user",
},