...

Source file src/github.com/aws/aws-sdk-go-v2/internal/sdk/time.go

Documentation: github.com/aws/aws-sdk-go-v2/internal/sdk

     1  package sdk
     2  
     3  import (
     4  	"context"
     5  	"time"
     6  )
     7  
     8  func init() {
     9  	NowTime = time.Now
    10  	Sleep = time.Sleep
    11  	SleepWithContext = sleepWithContext
    12  }
    13  
    14  // NowTime is a value for getting the current time. This value can be overridden
    15  // for testing mocking out current time.
    16  var NowTime func() time.Time
    17  
    18  // Sleep is a value for sleeping for a duration. This value can be overridden
    19  // for testing and mocking out sleep duration.
    20  var Sleep func(time.Duration)
    21  
    22  // SleepWithContext will wait for the timer duration to expire, or the context
    23  // is canceled. Which ever happens first. If the context is canceled the Context's
    24  // error will be returned.
    25  //
    26  // This value can be overridden for testing and mocking out sleep duration.
    27  var SleepWithContext func(context.Context, time.Duration) error
    28  
    29  // sleepWithContext will wait for the timer duration to expire, or the context
    30  // is canceled. Which ever happens first. If the context is canceled the
    31  // Context's error will be returned.
    32  func sleepWithContext(ctx context.Context, dur time.Duration) error {
    33  	t := time.NewTimer(dur)
    34  	defer t.Stop()
    35  
    36  	select {
    37  	case <-t.C:
    38  		break
    39  	case <-ctx.Done():
    40  		return ctx.Err()
    41  	}
    42  
    43  	return nil
    44  }
    45  
    46  // noOpSleepWithContext does nothing, returns immediately.
    47  func noOpSleepWithContext(context.Context, time.Duration) error {
    48  	return nil
    49  }
    50  
    51  func noOpSleep(time.Duration) {}
    52  
    53  // TestingUseNopSleep is a utility for disabling sleep across the SDK for
    54  // testing.
    55  func TestingUseNopSleep() func() {
    56  	SleepWithContext = noOpSleepWithContext
    57  	Sleep = noOpSleep
    58  
    59  	return func() {
    60  		SleepWithContext = sleepWithContext
    61  		Sleep = time.Sleep
    62  	}
    63  }
    64  
    65  // TestingUseReferenceTime is a utility for swapping the time function across the SDK to return a specific reference time
    66  // for testing purposes.
    67  func TestingUseReferenceTime(referenceTime time.Time) func() {
    68  	NowTime = func() time.Time {
    69  		return referenceTime
    70  	}
    71  	return func() {
    72  		NowTime = time.Now
    73  	}
    74  }
    75  

View as plain text