Skip to content

Commit e61d6bb

Browse files
authored
Reduce number of RewardedAd loads on iOS in CI (#1180)
The GMA backend doesn't whitelist iOS devices running in CI which means number of ads that can be served to iOS in CI is restricted. This is true even when using the prescribed Demo Ad Unit Id. This PR reduces the number of ads we load on iOS in an attempt to minimize the chance of encountering NoFillErrors and push our CI to green.
1 parent 9e4d526 commit e61d6bb

File tree

1 file changed

+35
-75
lines changed

1 file changed

+35
-75
lines changed

gma/integration_test/src/integration_test.cc

Lines changed: 35 additions & 75 deletions
Original file line numberDiff line numberDiff line change
@@ -778,19 +778,13 @@ TEST_F(FirebaseGmaTest, TestAdViewLoadAd) {
778778
firebase::Future<firebase::gma::AdResult> load_ad_future;
779779
const firebase::gma::AdResult* result_ptr = nullptr;
780780

781-
// Loading Ads has been deemed flaky as the AdMob Service has a chance to
782-
// return NoFill for valid ad requests if there aren't any ads to serve.
783-
FLAKY_TEST_SECTION_BEGIN();
784-
785781
load_ad_future = ad_view->LoadAd(GetAdRequest());
786782
WaitForCompletion(load_ad_future, "LoadAd");
787783

788784
result_ptr = load_ad_future.result();
789785
ASSERT_NE(result_ptr, nullptr);
790786
EXPECT_TRUE(result_ptr->is_successful());
791787

792-
FLAKY_TEST_SECTION_END();
793-
794788
ASSERT_NE(result_ptr, nullptr);
795789
EXPECT_FALSE(result_ptr->response_info().adapter_responses().empty());
796790
EXPECT_FALSE(
@@ -811,10 +805,6 @@ TEST_F(FirebaseGmaTest, TestInterstitialAdLoad) {
811805
SKIP_TEST_ON_DESKTOP;
812806
SKIP_TEST_ON_SIMULATOR;
813807

814-
// Loading Ads has been deemed flaky as the AdMob Service has a chance to
815-
// return NoFill for valid ad requests if there aren't any ads to serve.
816-
FLAKY_TEST_SECTION_BEGIN();
817-
818808
firebase::gma::InterstitialAd* interstitial =
819809
new firebase::gma::InterstitialAd();
820810

@@ -837,17 +827,14 @@ TEST_F(FirebaseGmaTest, TestInterstitialAdLoad) {
837827

838828
load_ad_future.Release();
839829
delete interstitial;
840-
841-
FLAKY_TEST_SECTION_END();
842830
}
843831

844832
TEST_F(FirebaseGmaTest, TestRewardedAdLoad) {
845833
SKIP_TEST_ON_DESKTOP;
846834
SKIP_TEST_ON_SIMULATOR;
847835

848-
// Loading Ads has been deemed flaky as the AdMob Service has a chance to
849-
// return NoFill for valid ad requests if there aren't any ads to serve.
850-
FLAKY_TEST_SECTION_BEGIN();
836+
// TODO(@drsanta): remove when GMA whitelists CI devices.
837+
TEST_REQUIRES_USER_INTERACTION_ON_IOS;
851838

852839
firebase::gma::RewardedAd* rewarded = new firebase::gma::RewardedAd();
853840

@@ -870,8 +857,6 @@ TEST_F(FirebaseGmaTest, TestRewardedAdLoad) {
870857

871858
load_ad_future.Release();
872859
delete rewarded;
873-
874-
FLAKY_TEST_SECTION_END();
875860
}
876861

877862
// Interactive test section. These have been placed up front so that the
@@ -1011,6 +996,9 @@ TEST_F(FirebaseGmaUITest, TestRewardedAdLoadAndShow) {
1011996
SKIP_TEST_ON_DESKTOP;
1012997
SKIP_TEST_ON_SIMULATOR;
1013998

999+
// TODO(@drsanta): remove when GMA whitelists CI devices.
1000+
TEST_REQUIRES_USER_INTERACTION_ON_IOS;
1001+
10141002
firebase::gma::RewardedAd* rewarded = new firebase::gma::RewardedAd();
10151003

10161004
WaitForCompletion(rewarded->Initialize(app_framework::GetWindowContext()),
@@ -1093,18 +1081,12 @@ TEST_F(FirebaseGmaTest, TestAdViewLoadAdEmptyAdRequest) {
10931081
firebase::Future<firebase::gma::AdResult> load_ad_future;
10941082
const firebase::gma::AdResult* result_ptr = nullptr;
10951083

1096-
// Loading Ads has been deemed flaky as the AdMob Service has a chance to
1097-
// return NoFill for valid ad requests if there aren't any ads to serve.
1098-
FLAKY_TEST_SECTION_BEGIN();
1099-
11001084
load_ad_future = ad_view->LoadAd(request);
11011085
WaitForCompletion(load_ad_future, "LoadAd");
11021086
result_ptr = load_ad_future.result();
11031087
ASSERT_NE(result_ptr, nullptr);
11041088
EXPECT_TRUE(result_ptr->is_successful());
11051089

1106-
FLAKY_TEST_SECTION_END();
1107-
11081090
EXPECT_FALSE(result_ptr->response_info().adapter_responses().empty());
11091091
EXPECT_FALSE(
11101092
result_ptr->response_info().mediation_adapter_class_name().empty());
@@ -1133,14 +1115,8 @@ TEST_F(FirebaseGmaTest, TestAdViewLoadAdAnchorAdaptiveAd) {
11331115
kBannerAdUnit, banner_ad_size),
11341116
"Initialize");
11351117

1136-
// Loading Ads has been deemed flaky as the AdMob Service has a chance to
1137-
// return NoFill for valid ad requests if there aren't any ads to serve.
1138-
FLAKY_TEST_SECTION_BEGIN();
1139-
11401118
WaitForCompletion(ad_view->LoadAd(GetAdRequest()), "LoadAd");
11411119

1142-
FLAKY_TEST_SECTION_END();
1143-
11441120
const AdSize ad_size = ad_view->ad_size();
11451121
EXPECT_EQ(ad_size.width(), kBannerWidth);
11461122
EXPECT_NE(ad_size.height(), 0);
@@ -1163,14 +1139,8 @@ TEST_F(FirebaseGmaTest, TestAdViewLoadAdInlineAdaptiveAd) {
11631139
kBannerAdUnit, banner_ad_size),
11641140
"Initialize");
11651141

1166-
// Loading Ads has been deemed flaky as the AdMob Service has a chance to
1167-
// return NoFill for valid ad requests if there aren't any ads to serve.
1168-
FLAKY_TEST_SECTION_BEGIN();
1169-
11701142
WaitForCompletion(ad_view->LoadAd(GetAdRequest()), "LoadAd");
11711143

1172-
FLAKY_TEST_SECTION_END();
1173-
11741144
const AdSize ad_size = ad_view->ad_size();
11751145
EXPECT_EQ(ad_size.width(), kBannerWidth);
11761146
EXPECT_NE(ad_size.height(), 0);
@@ -1192,14 +1162,8 @@ TEST_F(FirebaseGmaTest, TestAdViewLoadAdGetInlineAdaptiveBannerMaxHeight) {
11921162
kBannerAdUnit, banner_ad_size),
11931163
"Initialize");
11941164

1195-
// Loading Ads has been deemed flaky as the AdMob Service has a chance to
1196-
// return NoFill for valid ad requests if there aren't any ads to serve.
1197-
FLAKY_TEST_SECTION_BEGIN();
1198-
11991165
WaitForCompletion(ad_view->LoadAd(GetAdRequest()), "LoadAd");
12001166

1201-
FLAKY_TEST_SECTION_END();
1202-
12031167
const AdSize ad_size = ad_view->ad_size();
12041168
EXPECT_EQ(ad_size.width(), kBannerWidth);
12051169
EXPECT_NE(ad_size.height(), 0);
@@ -1219,15 +1183,7 @@ TEST_F(FirebaseGmaTest, TestAdViewLoadAdDestroyNotCalled) {
12191183
WaitForCompletion(ad_view->Initialize(app_framework::GetWindowContext(),
12201184
kBannerAdUnit, banner_ad_size),
12211185
"Initialize");
1222-
1223-
// Loading Ads has been deemed flaky as the AdMob Service has a chance to
1224-
// return NoFill for valid ad requests if there aren't any ads to serve.
1225-
FLAKY_TEST_SECTION_BEGIN();
1226-
12271186
WaitForCompletion(ad_view->LoadAd(GetAdRequest()), "LoadAd");
1228-
1229-
FLAKY_TEST_SECTION_END();
1230-
12311187
delete ad_view;
12321188
}
12331189

@@ -1305,10 +1261,6 @@ TEST_F(FirebaseGmaTest, TestAdView) {
13051261
SKIP_TEST_ON_DESKTOP;
13061262
SKIP_TEST_ON_SIMULATOR;
13071263

1308-
// Loading Ads has been deemed flaky as the AdMob Service has a chance to
1309-
// return NoFill for valid ad requests if there aren't any ads to serve.
1310-
FLAKY_TEST_SECTION_BEGIN();
1311-
13121264
const firebase::gma::AdSize banner_ad_size(kBannerWidth, kBannerHeight);
13131265
firebase::gma::AdView* ad_view = new firebase::gma::AdView();
13141266
WaitForCompletion(ad_view->Initialize(app_framework::GetWindowContext(),
@@ -1504,8 +1456,6 @@ TEST_F(FirebaseGmaTest, TestAdView) {
15041456
bounding_box_listener.bounding_box_changes_.back().height == -1);
15051457
#endif // defined(ANDROID) || TARGET_OS_IPHONE
15061458
}
1507-
1508-
FLAKY_TEST_SECTION_END();
15091459
}
15101460

15111461
TEST_F(FirebaseGmaTest, TestAdViewErrorNotInitialized) {
@@ -1674,10 +1624,6 @@ TEST_F(FirebaseGmaTest, TestInterstitialAdLoadEmptyRequest) {
16741624
SKIP_TEST_ON_DESKTOP;
16751625
SKIP_TEST_ON_SIMULATOR;
16761626

1677-
// Loading Ads has been deemed flaky as the AdMob Service has a chance to
1678-
// return NoFill for valid ad requests if there aren't any ads to serve.
1679-
FLAKY_TEST_SECTION_BEGIN();
1680-
16811627
firebase::gma::InterstitialAd* interstitial =
16821628
new firebase::gma::InterstitialAd();
16831629

@@ -1701,8 +1647,6 @@ TEST_F(FirebaseGmaTest, TestInterstitialAdLoadEmptyRequest) {
17011647
EXPECT_FALSE(result_ptr->response_info().ToString().empty());
17021648

17031649
delete interstitial;
1704-
1705-
FLAKY_TEST_SECTION_END();
17061650
}
17071651

17081652
TEST_F(FirebaseGmaTest, TestInterstitialAdErrorNotInitialized) {
@@ -1851,9 +1795,8 @@ TEST_F(FirebaseGmaTest, TestRewardedAdLoadEmptyRequest) {
18511795
SKIP_TEST_ON_DESKTOP;
18521796
SKIP_TEST_ON_SIMULATOR;
18531797

1854-
// Loading Ads has been deemed flaky as the AdMob Service has a chance to
1855-
// return NoFill for valid ad requests if there aren't any ads to serve.
1856-
FLAKY_TEST_SECTION_BEGIN();
1798+
// TODO(@drsanta): remove when GMA whitelists CI devices.
1799+
TEST_REQUIRES_USER_INTERACTION_ON_IOS;
18571800

18581801
// Note: while showing an ad requires user interaction in another test,
18591802
// this test is mean as a baseline loadAd functionality test.
@@ -1878,8 +1821,6 @@ TEST_F(FirebaseGmaTest, TestRewardedAdLoadEmptyRequest) {
18781821
EXPECT_FALSE(result_ptr->response_info().ToString().empty());
18791822

18801823
delete rewarded;
1881-
1882-
FLAKY_TEST_SECTION_END();
18831824
}
18841825

18851826
TEST_F(FirebaseGmaTest, TestRewardedAdErrorNotInitialized) {
@@ -1938,6 +1879,9 @@ TEST_F(FirebaseGmaTest, TesRewardedAdErrorAlreadyInitialized) {
19381879
TEST_F(FirebaseGmaTest, TestRewardedAdErrorLoadInProgress) {
19391880
SKIP_TEST_ON_DESKTOP;
19401881

1882+
// TODO(@drsanta): remove when GMA whitelists CI devices.
1883+
TEST_REQUIRES_USER_INTERACTION_ON_IOS;
1884+
19411885
firebase::gma::RewardedAd* rewarded = new firebase::gma::RewardedAd();
19421886
WaitForCompletion(rewarded->Initialize(app_framework::GetWindowContext()),
19431887
"Initialize");
@@ -2029,10 +1973,16 @@ TEST_F(FirebaseGmaTest, TestAdViewStress) {
20291973

20301974
// Load the AdView ad.
20311975
firebase::gma::AdRequest request = GetAdRequest();
2032-
WaitForCompletion(ad_view->LoadAd(request), "TestAdViewStress LoadAd");
2033-
EXPECT_EQ(ad_view->ad_size().width(), kBannerWidth);
2034-
EXPECT_EQ(ad_view->ad_size().height(), kBannerHeight);
2035-
1976+
firebase::Future<firebase::gma::AdResult> future = ad_view->LoadAd(request);
1977+
WaitForCompletionAnyResult(future, "TestAdViewStress LoadAd");
1978+
// Stress tests may exhaust the ad pool. If so, loadAd will return
1979+
// kAdErrorCodeNoFill.
1980+
EXPECT_TRUE(future.error() == firebase::gma::kAdErrorCodeNone ||
1981+
future.error() == firebase::gma::kAdErrorCodeNoFill);
1982+
if (future.error() == firebase::gma::kAdErrorCodeNone) {
1983+
EXPECT_EQ(ad_view->ad_size().width(), kBannerWidth);
1984+
EXPECT_EQ(ad_view->ad_size().height(), kBannerHeight);
1985+
}
20361986
WaitForCompletion(ad_view->Destroy(), "Destroy the AdView");
20371987
delete ad_view;
20381988
}
@@ -2055,8 +2005,13 @@ TEST_F(FirebaseGmaTest, TestInterstitialAdStress) {
20552005

20562006
// When the InterstitialAd is initialized, load an ad.
20572007
firebase::gma::AdRequest request = GetAdRequest();
2058-
WaitForCompletion(interstitial->LoadAd(kInterstitialAdUnit, request),
2059-
"TestInterstitialAdStress LoadAd");
2008+
firebase::Future<firebase::gma::AdResult> future =
2009+
interstitial->LoadAd(kInterstitialAdUnit, request);
2010+
WaitForCompletionAnyResult(future, "TestInterstitialAdStress LoadAd");
2011+
// Stress tests may exhaust the ad pool. If so, loadAd will return
2012+
// kAdErrorCodeNoFill.
2013+
EXPECT_TRUE(future.error() == firebase::gma::kAdErrorCodeNone ||
2014+
future.error() == firebase::gma::kAdErrorCodeNoFill);
20602015
delete interstitial;
20612016
}
20622017
}
@@ -2065,7 +2020,7 @@ TEST_F(FirebaseGmaTest, TestRewardedAdStress) {
20652020
SKIP_TEST_ON_DESKTOP;
20662021
SKIP_TEST_ON_EMULATOR;
20672022

2068-
// TODO(@drsanta): remove when GMA whitelists CI devices
2023+
// TODO(@drsanta): remove when GMA whitelists CI devices.
20692024
TEST_REQUIRES_USER_INTERACTION_ON_IOS;
20702025

20712026
for (int i = 0; i < 10; ++i) {
@@ -2076,8 +2031,13 @@ TEST_F(FirebaseGmaTest, TestRewardedAdStress) {
20762031

20772032
// When the RewardedAd is initialized, load an ad.
20782033
firebase::gma::AdRequest request = GetAdRequest();
2079-
WaitForCompletion(rewarded->LoadAd(kRewardedAdUnit, request),
2080-
"TestRewardedAdStress LoadAd");
2034+
firebase::Future<firebase::gma::AdResult> future =
2035+
rewarded->LoadAd(kRewardedAdUnit, request);
2036+
WaitForCompletionAnyResult(future, "TestRewardedAdStress LoadAd");
2037+
// Stress tests may exhaust the ad pool. If so, loadAd will return
2038+
// kAdErrorCodeNoFill.
2039+
EXPECT_TRUE(future.error() == firebase::gma::kAdErrorCodeNone ||
2040+
future.error() == firebase::gma::kAdErrorCodeNoFill);
20812041
delete rewarded;
20822042
}
20832043
}

0 commit comments

Comments
 (0)