...
1 package timeout
2
3 import (
4 "os"
5 "strconv"
6 "time"
7 )
8
9 var (
10
11 defaultTimeout = 4 * time.Minute
12
13
14
15 defaultTimeoutTestdRetry = 5 * time.Second
16 )
17
18
19 var (
20
21 SystemCreate time.Duration = defaultTimeout
22
23
24 SystemStart time.Duration = defaultTimeout
25
26
27 SystemPause time.Duration = defaultTimeout
28
29
30 SystemResume time.Duration = defaultTimeout
31
32
33 SystemSave time.Duration = defaultTimeout
34
35
36 SyscallWatcher time.Duration = defaultTimeout
37
38
39 Tar2VHD time.Duration = defaultTimeout
40
41
42 ExternalCommandToStart = defaultTimeout
43
44
45
46 ExternalCommandToComplete = defaultTimeout
47
48
49 TestDRetryLoop = defaultTimeoutTestdRetry
50 )
51
52 func init() {
53 SystemCreate = durationFromEnvironment("HCSSHIM_TIMEOUT_SYSTEMCREATE", SystemCreate)
54 SystemStart = durationFromEnvironment("HCSSHIM_TIMEOUT_SYSTEMSTART", SystemStart)
55 SystemPause = durationFromEnvironment("HCSSHIM_TIMEOUT_SYSTEMPAUSE", SystemPause)
56 SystemResume = durationFromEnvironment("HCSSHIM_TIMEOUT_SYSTEMRESUME", SystemResume)
57 SystemSave = durationFromEnvironment("HCSSHIM_TIMEOUT_SYSTEMSAVE", SystemSave)
58 SyscallWatcher = durationFromEnvironment("HCSSHIM_TIMEOUT_SYSCALLWATCHER", SyscallWatcher)
59 Tar2VHD = durationFromEnvironment("HCSSHIM_TIMEOUT_TAR2VHD", Tar2VHD)
60 ExternalCommandToStart = durationFromEnvironment("HCSSHIM_TIMEOUT_EXTERNALCOMMANDSTART", ExternalCommandToStart)
61 ExternalCommandToComplete = durationFromEnvironment("HCSSHIM_TIMEOUT_EXTERNALCOMMANDCOMPLETE", ExternalCommandToComplete)
62 TestDRetryLoop = durationFromEnvironment("HCSSHIM_TIMEOUT_TESTDRETRYLOOP", TestDRetryLoop)
63 }
64
65 func durationFromEnvironment(env string, defaultValue time.Duration) time.Duration {
66 envTimeout := os.Getenv(env)
67 if len(envTimeout) > 0 {
68 e, err := strconv.Atoi(envTimeout)
69 if err == nil && e > 0 {
70 return time.Second * time.Duration(e)
71 }
72 }
73 return defaultValue
74 }
75
View as plain text