Atlas › Test

no_buffer_left

Exact test identity: go.temporal.io/server/common/contextutil/TestWithDeadlineBuffer/parent_has_deadline/no_buffer_left

Package
go.temporal.io/server/common/contextutil
Suite / test hierarchy
TestWithDeadlineBuffer/parent_has_deadline/no_buffer_left
Test
no_buffer_left
Introduced at
deadline.go ×1 Frontier kind: Joint frontier
Covered ranges
5
Covered lines
10
Covered files
1

Co-introduced tests

1 other test enter at the same concept.

Covered source

Expand a file to inspect source; the > gutter marks covered lines.

go.temporal.io/server/common/contextutil/deadline.go 10 covered LOC · 5 ranges

Open complete file

18 timeout time.Duration,
19 buffer time.Duration,
20 > ) (context.Context, context.CancelFunc) { deadline.go
21 > if parent.Err() != nil {
22 return parent, noop
23 }
24
25 > parentDeadline, parentHasDeadline := parent.Deadline() deadline.go
26 >
27 > if !parentHasDeadline {
28 // No parent deadline, so buffer is available to parent after child deadline expiry.
29 return context.WithTimeout(parent, timeout)
32 // If parent deadline itself does not allow buffer then set child timeout to zero. Otherwise
33 // compute child deadline such that at least buffer remains after it and before parent deadline.
34 > remaining := time.Until(parentDeadline) - buffer deadline.go
35 > if remaining < timeout {
36 > timeout = max(0, remaining) deadline.go
37 > }
38 > return context.WithTimeout(parent, timeout) deadline.go
39 }