@@ -303,7 +303,7 @@ impl AsyncBuildQueue {
303303
304304/// Index methods.
305305impl AsyncBuildQueue {
306- async fn queue_crate_invalidation ( & self , conn : & mut sqlx :: PgConnection , krate : & str ) {
306+ async fn queue_crate_invalidation ( & self , krate : & str ) {
307307 let krate = match krate
308308 . parse :: < KrateName > ( )
309309 . with_context ( || format ! ( "can't parse crate name '{}'" , krate) )
@@ -316,7 +316,7 @@ impl AsyncBuildQueue {
316316 } ;
317317
318318 if let Err ( err) =
319- cdn:: queue_crate_invalidation ( conn , & self . config , & self . cdn_metrics , & krate) . await
319+ cdn:: queue_crate_invalidation ( & self . config , & self . cdn_metrics , & krate) . await
320320 {
321321 report_error ( & err) ;
322322 }
@@ -360,7 +360,7 @@ impl AsyncBuildQueue {
360360 Err ( err) => report_error ( & err) ,
361361 }
362362
363- self . queue_crate_invalidation ( & mut conn , krate) . await ;
363+ self . queue_crate_invalidation ( krate) . await ;
364364 self . remove_crate_from_queue ( krate) . await ?;
365365 continue ;
366366 }
@@ -392,8 +392,7 @@ impl AsyncBuildQueue {
392392 Err ( err) => report_error ( & err) ,
393393 }
394394
395- self . queue_crate_invalidation ( & mut conn, & release. name )
396- . await ;
395+ self . queue_crate_invalidation ( & release. name ) . await ;
397396 self . remove_version_from_queue ( & release. name , & version)
398397 . await ?;
399398 continue ;
@@ -449,8 +448,7 @@ impl AsyncBuildQueue {
449448 report_error ( & err) ;
450449 }
451450
452- self . queue_crate_invalidation ( & mut conn, & release. name )
453- . await ;
451+ self . queue_crate_invalidation ( & release. name ) . await ;
454452 }
455453 }
456454
@@ -639,10 +637,8 @@ impl BuildQueue {
639637
640638 self . inner . builder_metrics . total_builds . add ( 1 , & [ ] ) ;
641639
642- self . runtime . block_on (
643- self . inner
644- . queue_crate_invalidation ( & mut transaction, & to_process. name ) ,
645- ) ;
640+ self . runtime
641+ . block_on ( self . inner . queue_crate_invalidation ( & to_process. name ) ) ;
646642
647643 let mut increase_attempt_count = || -> Result < ( ) > {
648644 let attempt: i32 = self . runtime . block_on (
@@ -1405,72 +1401,66 @@ mod tests {
14051401 9
14061402 ) ;
14071403
1408- // no invalidations were run since we don't have a distribution id configured
1409- assert ! (
1410- env. runtime( )
1411- . block_on( async {
1412- cdn:: cloudfront:: queued_or_active_crate_invalidations(
1413- & mut * env. async_db( ) . async_conn( ) . await ,
1414- )
1415- . await
1416- } ) ?
1417- . is_empty( )
1418- ) ;
1419-
14201404 Ok ( ( ) )
14211405 }
14221406
14231407 #[ test]
1424- fn test_invalidate_cdn_after_build_and_error ( ) -> Result < ( ) > {
1408+ fn test_invalidate_cdn_after_error ( ) -> Result < ( ) > {
1409+ let mut fastly_api = mockito:: Server :: new ( ) ;
1410+
14251411 let env = TestEnvironment :: with_config_and_runtime (
14261412 TestEnvironment :: base_config ( )
1427- . cloudfront_distribution_id_web ( Some ( "distribution_id_web" . into ( ) ) )
1428- . cloudfront_distribution_id_static ( Some ( "distribution_id_static" . into ( ) ) )
1413+ . fastly_api_host ( fastly_api. url ( ) . parse ( ) . unwrap ( ) )
1414+ . fastly_api_token ( Some ( "test-token" . into ( ) ) )
1415+ . fastly_service_sid ( Some ( "test-sid-1" . into ( ) ) )
14291416 . build ( ) ?,
14301417 ) ?;
14311418
14321419 let queue = env. build_queue ( ) ;
14331420
1434- queue. add_crate ( "will_succeed" , & V1 , -1 , None ) ?;
1435- queue. add_crate ( "will_fail" , & V1 , 0 , None ) ?;
1421+ let m = fastly_api
1422+ . mock ( "POST" , "/service/test-sid-1/purge" )
1423+ . with_status ( 200 )
1424+ . create ( ) ;
14361425
1437- let fetch_invalidations = || {
1438- env. runtime ( )
1439- . block_on ( async {
1440- let mut conn = env. async_db ( ) . async_conn ( ) . await ;
1441- cdn:: cloudfront:: queued_or_active_crate_invalidations ( & mut conn) . await
1442- } )
1443- . unwrap ( )
1444- } ;
1445-
1446- assert ! ( fetch_invalidations( ) . is_empty( ) ) ;
1426+ queue. add_crate ( "will_fail" , & V1 , 0 , None ) ?;
14471427
14481428 queue. process_next_crate ( |krate| {
1449- assert_eq ! ( "will_succeed " , krate. name) ;
1450- Ok ( BuildPackageSummary :: default ( ) )
1429+ assert_eq ! ( "will_fail " , krate. name) ;
1430+ anyhow :: bail! ( "simulate a failure" ) ;
14511431 } ) ?;
14521432
1453- let queued_invalidations = fetch_invalidations ( ) ;
1454- assert_eq ! ( queued_invalidations. len( ) , 3 ) ;
1455- assert ! (
1456- queued_invalidations
1457- . iter( )
1458- . all( |i| i. krate == "will_succeed" )
1459- ) ;
1433+ m. expect ( 1 ) . assert ( ) ;
1434+
1435+ Ok ( ( ) )
1436+ }
1437+ #[ test]
1438+ fn test_invalidate_cdn_after_build ( ) -> Result < ( ) > {
1439+ let mut fastly_api = mockito:: Server :: new ( ) ;
1440+
1441+ let env = TestEnvironment :: with_config_and_runtime (
1442+ TestEnvironment :: base_config ( )
1443+ . fastly_api_host ( fastly_api. url ( ) . parse ( ) . unwrap ( ) )
1444+ . fastly_api_token ( Some ( "test-token" . into ( ) ) )
1445+ . fastly_service_sid ( Some ( "test-sid-1" . into ( ) ) )
1446+ . build ( ) ?,
1447+ ) ?;
1448+
1449+ let queue = env. build_queue ( ) ;
1450+
1451+ let m = fastly_api
1452+ . mock ( "POST" , "/service/test-sid-1/purge" )
1453+ . with_status ( 200 )
1454+ . create ( ) ;
1455+
1456+ queue. add_crate ( "will_succeed" , & V1 , -1 , None ) ?;
14601457
14611458 queue. process_next_crate ( |krate| {
1462- assert_eq ! ( "will_fail " , krate. name) ;
1463- anyhow :: bail! ( "simulate a failure" ) ;
1459+ assert_eq ! ( "will_succeed " , krate. name) ;
1460+ Ok ( BuildPackageSummary :: default ( ) )
14641461 } ) ?;
14651462
1466- let queued_invalidations = fetch_invalidations ( ) ;
1467- assert_eq ! ( queued_invalidations. len( ) , 6 ) ;
1468- assert ! (
1469- queued_invalidations
1470- . iter( )
1471- . skip( 3 )
1472- . all( |i| i. krate == "will_fail" )
1473- ) ;
1463+ m. expect ( 1 ) . assert ( ) ;
14741464
14751465 Ok ( ( ) )
14761466 }
0 commit comments