()
| 1243 | |
| 1244 | #[tokio::test] |
| 1245 | async fn test_gateway_duty_cycle_stats() { |
| 1246 | let _guard = test::prepare().await; |
| 1247 | |
| 1248 | // setup admin user |
| 1249 | let u = user::User { |
| 1250 | is_admin: true, |
| 1251 | is_active: true, |
| 1252 | email: "admin@admin".into(), |
| 1253 | email_verified: true, |
| 1254 | ..Default::default() |
| 1255 | }; |
| 1256 | let u = user::create(u).await.unwrap(); |
| 1257 | |
| 1258 | // create tenant |
| 1259 | let t = tenant::create(tenant::Tenant { |
| 1260 | name: "test-tenant".into(), |
| 1261 | can_have_gateways: true, |
| 1262 | max_gateway_count: 10, |
| 1263 | ..Default::default() |
| 1264 | }) |
| 1265 | .await |
| 1266 | .unwrap(); |
| 1267 | |
| 1268 | // create gateway |
| 1269 | let _ = gateway::create(gateway::Gateway { |
| 1270 | gateway_id: EUI64::from_be_bytes([1, 2, 3, 4, 5, 6, 7, 8]), |
| 1271 | tenant_id: t.id, |
| 1272 | name: "test-gw".into(), |
| 1273 | ..Default::default() |
| 1274 | }) |
| 1275 | .await |
| 1276 | .unwrap(); |
| 1277 | |
| 1278 | let now = Local::now(); |
| 1279 | |
| 1280 | // insert stats |
| 1281 | let mut m = metrics::Record { |
| 1282 | kind: metrics::Kind::COUNTER, |
| 1283 | time: now, |
| 1284 | metrics: HashMap::new(), |
| 1285 | }; |
| 1286 | |
| 1287 | m.metrics |
| 1288 | .insert("window_perc_M_868000000_868600000_10".into(), 0.5); |
| 1289 | m.metrics |
| 1290 | .insert("max_load_perc_L_865000000_868000000_10".into(), 5.0); |
| 1291 | |
| 1292 | metrics::save( |
| 1293 | "gw:dc:0102030405060708", |
| 1294 | &m, |
| 1295 | &[metrics::Aggregation::MINUTE], |
| 1296 | ) |
| 1297 | .await |
| 1298 | .unwrap(); |
| 1299 | |
| 1300 | // setup api |
| 1301 | let service = Gateway::new(RequestValidator::new()); |
| 1302 |
nothing calls this directly
no test coverage detected