|
1 | 1 | use std::env;
|
2 | 2 |
|
3 |
| -use crate::Client; |
| 3 | +use crate::{ |
| 4 | + cmap::establish::handshake::{ |
| 5 | + ClientMetadata, |
| 6 | + FaasEnvironmentName, |
| 7 | + RuntimeEnvironment, |
| 8 | + BASE_CLIENT_METADATA, |
| 9 | + }, |
| 10 | + Client, |
| 11 | +}; |
4 | 12 |
|
5 | 13 | type Result<T> = anyhow::Result<T>;
|
6 | 14 |
|
@@ -33,79 +41,154 @@ impl Drop for TempVars {
|
33 | 41 | }
|
34 | 42 | }
|
35 | 43 |
|
36 |
| -async fn check_faas_handshake(vars: &[(&'static str, &str)]) -> Result<()> { |
| 44 | +async fn check_faas_handshake( |
| 45 | + vars: &[(&'static str, &str)], |
| 46 | + expected: &ClientMetadata, |
| 47 | +) -> Result<()> { |
37 | 48 | let _tv = TempVars::set(vars);
|
38 | 49 |
|
39 | 50 | let client = Client::for_test().await;
|
40 | 51 | client.list_database_names().await?;
|
| 52 | + #[allow(clippy::incompatible_msrv)] |
| 53 | + let metadata = crate::cmap::establish::handshake::TEST_METADATA |
| 54 | + .get() |
| 55 | + .unwrap(); |
| 56 | + assert_eq!(expected, metadata); |
41 | 57 |
|
42 | 58 | Ok(())
|
43 | 59 | }
|
44 | 60 |
|
45 | 61 | #[tokio::test]
|
46 | 62 | async fn valid_aws() -> Result<()> {
|
47 |
| - check_faas_handshake(&[ |
48 |
| - ("AWS_EXECUTION_ENV", "AWS_Lambda_java8"), |
49 |
| - ("AWS_REGION", "us-east-2"), |
50 |
| - ("AWS_LAMBDA_FUNCTION_MEMORY_SIZE", "1024"), |
51 |
| - ]) |
| 63 | + check_faas_handshake( |
| 64 | + &[ |
| 65 | + ("AWS_EXECUTION_ENV", "AWS_Lambda_java8"), |
| 66 | + ("AWS_REGION", "us-east-2"), |
| 67 | + ("AWS_LAMBDA_FUNCTION_MEMORY_SIZE", "1024"), |
| 68 | + ], |
| 69 | + &ClientMetadata { |
| 70 | + env: Some(RuntimeEnvironment { |
| 71 | + name: Some(FaasEnvironmentName::AwsLambda), |
| 72 | + runtime: Some("AWS_Lambda_java8".to_string()), |
| 73 | + memory_mb: Some(1024), |
| 74 | + region: Some("us-east-2".to_string()), |
| 75 | + ..RuntimeEnvironment::UNSET |
| 76 | + }), |
| 77 | + ..BASE_CLIENT_METADATA.clone() |
| 78 | + }, |
| 79 | + ) |
52 | 80 | .await
|
53 | 81 | }
|
54 | 82 |
|
55 | 83 | #[tokio::test]
|
56 | 84 | async fn valid_azure() -> Result<()> {
|
57 |
| - check_faas_handshake(&[("FUNCTIONS_WORKER_RUNTIME", "node")]).await |
| 85 | + check_faas_handshake( |
| 86 | + &[("FUNCTIONS_WORKER_RUNTIME", "node")], |
| 87 | + &ClientMetadata { |
| 88 | + env: Some(RuntimeEnvironment { |
| 89 | + name: Some(FaasEnvironmentName::AzureFunc), |
| 90 | + runtime: Some("node".to_string()), |
| 91 | + ..RuntimeEnvironment::UNSET |
| 92 | + }), |
| 93 | + ..BASE_CLIENT_METADATA.clone() |
| 94 | + }, |
| 95 | + ) |
| 96 | + .await |
58 | 97 | }
|
59 | 98 |
|
60 | 99 | #[tokio::test]
|
61 | 100 | async fn valid_gcp() -> Result<()> {
|
62 |
| - check_faas_handshake(&[ |
63 |
| - ("K_SERVICE", "servicename"), |
64 |
| - ("FUNCTION_MEMORY_MB", "1024"), |
65 |
| - ("FUNCTION_TIMEOUT_SEC", "60"), |
66 |
| - ("FUNCTION_REGION", "us-central1"), |
67 |
| - ]) |
| 101 | + check_faas_handshake( |
| 102 | + &[ |
| 103 | + ("K_SERVICE", "servicename"), |
| 104 | + ("FUNCTION_MEMORY_MB", "1024"), |
| 105 | + ("FUNCTION_TIMEOUT_SEC", "60"), |
| 106 | + ("FUNCTION_REGION", "us-central1"), |
| 107 | + ], |
| 108 | + &ClientMetadata { |
| 109 | + env: Some(RuntimeEnvironment { |
| 110 | + name: Some(FaasEnvironmentName::GcpFunc), |
| 111 | + memory_mb: Some(1024), |
| 112 | + timeout_sec: Some(60), |
| 113 | + region: Some("us-central1".to_string()), |
| 114 | + ..RuntimeEnvironment::UNSET |
| 115 | + }), |
| 116 | + ..BASE_CLIENT_METADATA.clone() |
| 117 | + }, |
| 118 | + ) |
68 | 119 | .await
|
69 | 120 | }
|
70 | 121 |
|
71 | 122 | #[tokio::test]
|
72 | 123 | async fn valid_vercel() -> Result<()> {
|
73 |
| - check_faas_handshake(&[ |
74 |
| - ("VERCEL", "1"), |
75 |
| - ("VERCEL_URL", "*.vercel.app"), |
76 |
| - ("VERCEL_REGION", "cdg1"), |
77 |
| - ]) |
| 124 | + check_faas_handshake( |
| 125 | + &[ |
| 126 | + ("VERCEL", "1"), |
| 127 | + ("VERCEL_URL", "*.vercel.app"), |
| 128 | + ("VERCEL_REGION", "cdg1"), |
| 129 | + ], |
| 130 | + &ClientMetadata { |
| 131 | + env: Some(RuntimeEnvironment { |
| 132 | + name: Some(FaasEnvironmentName::Vercel), |
| 133 | + region: Some("cdg1".to_string()), |
| 134 | + ..RuntimeEnvironment::UNSET |
| 135 | + }), |
| 136 | + ..BASE_CLIENT_METADATA.clone() |
| 137 | + }, |
| 138 | + ) |
78 | 139 | .await
|
79 | 140 | }
|
80 | 141 |
|
81 | 142 | #[tokio::test]
|
82 | 143 | async fn invalid_multiple_providers() -> Result<()> {
|
83 |
| - check_faas_handshake(&[ |
84 |
| - ("AWS_EXECUTION_ENV", "AWS_Lambda_java8"), |
85 |
| - ("FUNCTIONS_WORKER_RUNTIME", "node"), |
86 |
| - ]) |
| 144 | + check_faas_handshake( |
| 145 | + &[ |
| 146 | + ("AWS_EXECUTION_ENV", "AWS_Lambda_java8"), |
| 147 | + ("FUNCTIONS_WORKER_RUNTIME", "node"), |
| 148 | + ], |
| 149 | + &BASE_CLIENT_METADATA, |
| 150 | + ) |
87 | 151 | .await
|
88 | 152 | }
|
89 | 153 |
|
90 | 154 | #[tokio::test]
|
91 | 155 | async fn invalid_long_string() -> Result<()> {
|
92 |
| - check_faas_handshake(&[ |
93 |
| - ("AWS_EXECUTION_ENV", "AWS_Lambda_java8"), |
94 |
| - ("AWS_REGION", &"a".repeat(512)), |
95 |
| - ]) |
| 156 | + check_faas_handshake( |
| 157 | + &[ |
| 158 | + ("AWS_EXECUTION_ENV", "AWS_Lambda_java8"), |
| 159 | + ("AWS_REGION", &"a".repeat(512)), |
| 160 | + ], |
| 161 | + &ClientMetadata { |
| 162 | + env: Some(RuntimeEnvironment { |
| 163 | + name: Some(FaasEnvironmentName::AwsLambda), |
| 164 | + ..RuntimeEnvironment::UNSET |
| 165 | + }), |
| 166 | + ..BASE_CLIENT_METADATA.clone() |
| 167 | + }, |
| 168 | + ) |
96 | 169 | .await
|
97 | 170 | }
|
98 | 171 |
|
99 | 172 | #[tokio::test]
|
100 | 173 | async fn invalid_wrong_type() -> Result<()> {
|
101 |
| - check_faas_handshake(&[ |
102 |
| - ("AWS_EXECUTION_ENV", "AWS_Lambda_java8"), |
103 |
| - ("AWS_LAMBDA_FUNCTION_MEMORY_SIZE", "big"), |
104 |
| - ]) |
| 174 | + check_faas_handshake( |
| 175 | + &[ |
| 176 | + ("AWS_EXECUTION_ENV", "AWS_Lambda_java8"), |
| 177 | + ("AWS_LAMBDA_FUNCTION_MEMORY_SIZE", "big"), |
| 178 | + ], |
| 179 | + &ClientMetadata { |
| 180 | + env: Some(RuntimeEnvironment { |
| 181 | + name: Some(FaasEnvironmentName::AwsLambda), |
| 182 | + runtime: Some("AWS_Lambda_java8".to_string()), |
| 183 | + ..RuntimeEnvironment::UNSET |
| 184 | + }), |
| 185 | + ..BASE_CLIENT_METADATA.clone() |
| 186 | + }, |
| 187 | + ) |
105 | 188 | .await
|
106 | 189 | }
|
107 | 190 |
|
108 | 191 | #[tokio::test]
|
109 | 192 | async fn invalid_aws_not_lambda() -> Result<()> {
|
110 |
| - check_faas_handshake(&[("AWS_EXECUTION_ENV", "EC2")]).await |
| 193 | + check_faas_handshake(&[("AWS_EXECUTION_ENV", "EC2")], &BASE_CLIENT_METADATA).await |
111 | 194 | }
|
0 commit comments