20
20
21
21
import java .util .ArrayList ;
22
22
import java .util .Arrays ;
23
+ import java .util .HashMap ;
23
24
import java .util .List ;
25
+ import java .util .Map ;
24
26
25
27
enum FaasEnvironment {
26
28
AWS_LAMBDA ("aws.lambda" ),
@@ -29,21 +31,23 @@ enum FaasEnvironment {
29
31
VERCEL ("vercel" ),
30
32
UNKNOWN (null );
31
33
34
+ static final Map <String , String > ENV_OVERRIDES_FOR_TESTING = new HashMap <>();
35
+
32
36
static FaasEnvironment getFaasEnvironment () {
33
37
List <FaasEnvironment > result = new ArrayList <>();
34
- String awsExecutionEnv = System . getenv ("AWS_EXECUTION_ENV" );
38
+ String awsExecutionEnv = getEnv ("AWS_EXECUTION_ENV" );
35
39
36
- if (System . getenv ("VERCEL" ) != null ) {
40
+ if (getEnv ("VERCEL" ) != null ) {
37
41
result .add (FaasEnvironment .VERCEL );
38
42
}
39
43
if ((awsExecutionEnv != null && awsExecutionEnv .startsWith ("AWS_Lambda_" ))
40
- || System . getenv ("AWS_LAMBDA_RUNTIME_API" ) != null ) {
44
+ || getEnv ("AWS_LAMBDA_RUNTIME_API" ) != null ) {
41
45
result .add (FaasEnvironment .AWS_LAMBDA );
42
46
}
43
- if (System . getenv ("FUNCTIONS_WORKER_RUNTIME" ) != null ) {
47
+ if (getEnv ("FUNCTIONS_WORKER_RUNTIME" ) != null ) {
44
48
result .add (FaasEnvironment .AZURE_FUNC );
45
49
}
46
- if (System . getenv ("K_SERVICE" ) != null || System . getenv ("FUNCTION_NAME" ) != null ) {
50
+ if (getEnv ("K_SERVICE" ) != null || getEnv ("FUNCTION_NAME" ) != null ) {
47
51
result .add (FaasEnvironment .GCP_FUNC );
48
52
}
49
53
// vercel takes precedence over aws.lambda
@@ -56,6 +60,14 @@ static FaasEnvironment getFaasEnvironment() {
56
60
return result .get (0 );
57
61
}
58
62
63
+ @ Nullable
64
+ public static String getEnv (final String key ) {
65
+ if (ENV_OVERRIDES_FOR_TESTING .containsKey (key )) {
66
+ return ENV_OVERRIDES_FOR_TESTING .get (key );
67
+ }
68
+ return System .getenv (key );
69
+ }
70
+
59
71
@ Nullable
60
72
private final String name ;
61
73
@@ -95,11 +107,11 @@ public Integer getMemoryMb() {
95
107
public String getRegion () {
96
108
switch (this ) {
97
109
case AWS_LAMBDA :
98
- return System . getenv ("AWS_REGION" );
110
+ return getEnv ("AWS_REGION" );
99
111
case GCP_FUNC :
100
- return System . getenv ("FUNCTION_REGION" );
112
+ return getEnv ("FUNCTION_REGION" );
101
113
case VERCEL :
102
- return System . getenv ("VERCEL_REGION" );
114
+ return getEnv ("VERCEL_REGION" );
103
115
default :
104
116
return null ;
105
117
}
@@ -108,7 +120,7 @@ public String getRegion() {
108
120
@ Nullable
109
121
private static Integer getEnvInteger (final String name ) {
110
122
try {
111
- String value = System . getenv (name );
123
+ String value = getEnv (name );
112
124
return Integer .parseInt (value );
113
125
} catch (NumberFormatException e ) {
114
126
return null ;
0 commit comments