summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHaofan Wang <haofanw@google.com>2024-05-16 21:04:01 +0000
committerGerrit Code Review <noreply-gerritcodereview@google.com>2024-05-16 21:04:01 +0000
commit1bb9a6f61b0b7b0aad7fa9d8cd292e9dbd9bf2fc (patch)
tree7965d02a83058eb782a81eb43e6bb67922e75ac2
parentfe913558e4ba6d72eb040a7997044b660c682b40 (diff)
parent114cf0b20d5f5d63622d96c20d313fde76d489a2 (diff)
downloadcts-android14-tests-dev.tar.gz
Merge changes from topic "cherrypicker-L43500030003666134:N63300030059291210" into android14-tests-devandroid14-tests-dev
* changes: [PATCH 8/8] cts: TunerTest: Fix testLnbAddAndRemoveCallback/testTransferFeAndLnbOwnership [PATCH 6/8] cts: TunerTest: Fix testMaxNumberOfFrontends [PATCH 5/8] cts: TunerTest: Fix testMaxNumberOfFrontends [PATCH 2/8] cts: TunerTest: Fix testTransferFeAndLnbOwnership [PATCH 1/8] cts: TunerTest: Fix testResourceReclaimed tests
-rw-r--r--tests/tests/tv/src/android/media/tv/tuner/cts/TunerResourceTestService.java3
-rw-r--r--tests/tests/tv/src/android/media/tv/tuner/cts/TunerTest.java198
2 files changed, 120 insertions, 81 deletions
diff --git a/tests/tests/tv/src/android/media/tv/tuner/cts/TunerResourceTestService.java b/tests/tests/tv/src/android/media/tv/tuner/cts/TunerResourceTestService.java
index e7145088bb3..93cdf000e15 100644
--- a/tests/tests/tv/src/android/media/tv/tuner/cts/TunerResourceTestService.java
+++ b/tests/tests/tv/src/android/media/tv/tuner/cts/TunerResourceTestService.java
@@ -69,6 +69,9 @@ public class TunerResourceTestService extends Service {
mFeInfo = infos.get(frontendIndex);
mFeSettings = TunerTest.createFrontendSettings(mFeInfo);
+ // apply target frontend only, for case when there are multiple instances in frontend type
+ mTuner.applyFrontend(mFeInfo);
+
// tune
return mTuner.tune(mFeSettings);
}
diff --git a/tests/tests/tv/src/android/media/tv/tuner/cts/TunerTest.java b/tests/tests/tv/src/android/media/tv/tuner/cts/TunerTest.java
index 6a4ab4ec3a5..0d07786977f 100644
--- a/tests/tests/tv/src/android/media/tv/tuner/cts/TunerTest.java
+++ b/tests/tests/tv/src/android/media/tv/tuner/cts/TunerTest.java
@@ -24,6 +24,7 @@ import static org.junit.Assert.assertNull;
import static org.junit.Assert.assertTrue;
import static org.junit.Assert.fail;
import static org.junit.Assume.assumeNotNull;
+import static org.junit.Assume.assumeTrue;
import android.content.ComponentName;
import android.content.Context;
@@ -1111,7 +1112,8 @@ public class TunerTest {
return;
}
- assertEquals(lnb.setVoltage(Lnb.VOLTAGE_5V), Tuner.RESULT_SUCCESS);
+ int targetLnbVoltage = getTargetLnbVoltage();
+ assertEquals(lnb.setVoltage(targetLnbVoltage), Tuner.RESULT_SUCCESS);
assertEquals(lnb.setTone(Lnb.TONE_NONE), Tuner.RESULT_SUCCESS);
assertEquals(
lnb.setSatellitePosition(Lnb.POSITION_A), Tuner.RESULT_SUCCESS);
@@ -1662,17 +1664,17 @@ public class TunerTest {
assertFalse(ids.isEmpty());
int targetFrontendId = sTunerCtsConfiguration.getTargetFrontendId().intValueExact();
FrontendInfo info = mTuner.getFrontendInfoById(ids.get(targetFrontendId));
- FrontendSettings feSettings = createFrontendSettings(info);
- // first tune with mTuner to acquire resource
- int res = mTuner.tune(feSettings);
+ // first apply frontend with mTuner to acquire resource
+ int res = mTuner.applyFrontend(info);
assertEquals(Tuner.RESULT_SUCCESS, res);
assertNotNull(mTuner.getFrontendInfo());
- // now tune with a higher priority tuner to have mTuner's resource reclaimed
+ // now apply frontend with a higher priority tuner to have mTuner's resource reclaimed
Tuner higherPrioTuner = new Tuner(mContext, null, 200);
- res = higherPrioTuner.tune(feSettings);
+ res = higherPrioTuner.applyFrontend(info);
assertEquals(Tuner.RESULT_SUCCESS, res);
+
assertNotNull(higherPrioTuner.getFrontendInfo());
higherPrioTuner.close();
@@ -1688,8 +1690,8 @@ public class TunerTest {
FrontendInfo info = mTuner.getFrontendInfoById(ids.get(targetFrontendId));
FrontendSettings feSettings = createFrontendSettings(info);
- // first tune with mTuner to acquire resource
- int res = mTuner.tune(feSettings);
+ // first apply frontend with mTuner to acquire resource
+ int res = mTuner.applyFrontend(info);
assertEquals(Tuner.RESULT_SUCCESS, res);
assertNotNull(mTuner.getFrontendInfo());
@@ -1749,9 +1751,11 @@ public class TunerTest {
tunerResourceTestServer = connection.getService();
// CASE1 - normal reclaim
- //
- // first tune with mTuner to acquire resource
- int res = mTuner.tune(feSettings);
+
+ // first apply frontend with mTuner to acquire resource
+ int res = mTuner.applyFrontend(info);
+ assertEquals(Tuner.RESULT_SUCCESS, res);
+
boolean tunerReclaimed = false;
assertEquals(Tuner.RESULT_SUCCESS, res);
assertNotNull(mTuner.getFrontendInfo());
@@ -1827,27 +1831,27 @@ public class TunerTest {
@Test
public void testShareFrontendFromTuner() throws Exception {
- Tuner tuner100 = new Tuner(mContext, null, 100);
- List<Integer> ids = tuner100.getFrontendIds();
+ List<Integer> ids = mTuner.getFrontendIds();
assumeNotNull(ids);
assertFalse(ids.isEmpty());
int targetFrontendId = sTunerCtsConfiguration.getTargetFrontendId().intValueExact();
- FrontendInfo info = tuner100.getFrontendInfoById(ids.get(targetFrontendId));
+ FrontendInfo info = mTuner.getFrontendInfoById(ids.get(targetFrontendId));
FrontendSettings feSettings = createFrontendSettings(info);
+
int[] statusTypes = {1};
- boolean exceptionThrown = false;
- int res;
+ boolean exceptionThrown;
- // CASE1: check resource reclaim while sharee's priority < owner's priority
- // let tuner100 share from tuner200
+ Tuner tuner100 = new Tuner(mContext, null, 100);
Tuner tuner200 = new Tuner(mContext, null, 200);
- res = tuner200.tune(feSettings);
- assertEquals(Tuner.RESULT_SUCCESS, res);
+ Tuner tuner300 = new Tuner(mContext, null, 300);
- info = tuner200.getFrontendInfoById(ids.get(targetFrontendId));
- res = tuner200.tune(feSettings);
+ // CASE1: check resource reclaim while sharee's priority < owner's priority
+
+ // apply target frontend only, for case when there are multiple instances in frontend type
+ int res = tuner200.applyFrontend(info);
assertEquals(Tuner.RESULT_SUCCESS, res);
+ // let tuner100 share from tuner200
tuner100.shareFrontendFromTuner(tuner200);
// call openFilter to trigger ITunerDemux.setFrontendDataSourceById()
Filter f = tuner100.openFilter(
@@ -1859,7 +1863,6 @@ public class TunerTest {
TunerTestOnTuneEventListener cb200 = new TunerTestOnTuneEventListener();
// tune again on the owner
- info = tuner200.getFrontendInfoById(ids.get(1));
tuner100.setOnTuneEventListener(getExecutor(), cb100);
tuner200.setOnTuneEventListener(getExecutor(), cb200);
res = tuner200.tune(feSettings);
@@ -1870,8 +1873,7 @@ public class TunerTest {
tuner200.clearOnTuneEventListener();
// now let the higher priority tuner steal the resource
- Tuner tuner300 = new Tuner(mContext, null, 300);
- res = tuner300.tune(feSettings);
+ res = tuner300.applyFrontend(info);
assertEquals(Tuner.RESULT_SUCCESS, res);
// confirm owner & sharee's resource gets reclaimed by confirming an exception is thrown
@@ -1898,7 +1900,9 @@ public class TunerTest {
// CASE2: check resource reclaim fail when sharee's priority > new requester
tuner100 = new Tuner(mContext, null, 100);
- res = tuner100.tune(feSettings);
+
+ // apply target frontend only, for case when there are multiple instances in frontend type
+ res = tuner100.applyFrontend(info);
assertEquals(Tuner.RESULT_SUCCESS, res);
tuner300 = new Tuner(mContext, null, 300);
@@ -1908,7 +1912,9 @@ public class TunerTest {
assertNotNull(f);
tuner200 = new Tuner(mContext, null, 200);
- res = tuner200.tune(feSettings);
+
+ // apply target frontend only, for case when there are multiple instances in frontend type
+ res = tuner200.applyFrontend(info);
assertNotEquals(Tuner.RESULT_SUCCESS, res);
// confirm the original tuner is still intact
@@ -1926,13 +1932,15 @@ public class TunerTest {
assertFalse(ids.isEmpty());
int targetFrontendId = sTunerCtsConfiguration.getTargetFrontendId().intValueExact();
FrontendInfo info = mTuner.getFrontendInfoById(ids.get(targetFrontendId));
- FrontendSettings feSettings = createFrontendSettings(info);
+ createFrontendSettings(info);
// SCENARIO 1 - transfer and close the previous owner
- // First create a tuner and tune() to acquire frontend resource
+ // First create a tuner and applyFrontend() to acquire frontend resource
Tuner tunerA = new Tuner(mContext, null, 100);
- int res = tunerA.tune(feSettings);
+
+ // apply target frontend only, for case when there are multiple instances in frontend type
+ int res = tunerA.applyFrontend(info);
assertEquals(Tuner.RESULT_SUCCESS, res);
// Create another tuner and share frontend from tunerA
@@ -1962,9 +1970,11 @@ public class TunerTest {
// SCENARIO 2 - transfer and closeFrontend and tune on the previous owner
- // First create a tuner and tune() to acquire frontend resource
+ // First create a tuner and applyFrontend() to acquire frontend resource
tunerA = new Tuner(mContext, null, 200);
- res = tunerA.tune(feSettings);
+
+ // apply target frontend only, for case when there are multiple instances in frontend type
+ res = tunerA.applyFrontend(info);
assertEquals(Tuner.RESULT_SUCCESS, res);
// Create another tuner and share frontend from tunerA
@@ -1981,7 +1991,9 @@ public class TunerTest {
// Confirm tune works without going through Tuner.close() even after transferOwner()
// The purpose isn't to get tunerB's frontend revoked, but doing so as singletuner
// based test has wider coverage
- res = tunerA.tune(feSettings); // this should reclaim tunerB
+
+ // apply target frontend only, for case when there are multiple instances in frontend type
+ res = tunerA.applyFrontend(info);
assertEquals(Tuner.RESULT_SUCCESS, res);
// Confirm tuberB is revoked
@@ -2071,8 +2083,9 @@ public class TunerTest {
// Open Lnb and check the callback
TunerTestLnbCallback lnbCB1 = new TunerTestLnbCallback();
Lnb lnbA = tunerA.openLnb(getExecutor(), lnbCB1);
- assertNotNull(lnbA);
- lnbA.setVoltage(Lnb.VOLTAGE_5V);
+ assumeTrue(lnbA != null);
+ int targetLnbVoltage = getTargetLnbVoltage();
+ lnbA.setVoltage(targetLnbVoltage);
lnbA.setTone(Lnb.TONE_CONTINUOUS);
lnbA.sendDiseqcMessage(new byte[] {1, 2});
assertTrue(lnbCB1.getOnDiseqcMessageCalled());
@@ -2937,29 +2950,33 @@ public class TunerTest {
int type = mTuner.getFrontendInfoById(ids.get(i)).getType();
if (TunerVersionChecker.isHigherOrEqualVersionTo(
TunerVersionChecker.TUNER_VERSION_2_0)) {
- int defaultMax = -1;
+ int defaultMax = mTuner.getMaxNumberOfFrontends(type);
int status;
- // Check default value
- defaultMax = mTuner.getMaxNumberOfFrontends(type);
- assertTrue(defaultMax > 0);
- // Set to -1
- status = mTuner.setMaxNumberOfFrontends(type, -1);
- assertEquals(Tuner.RESULT_INVALID_ARGUMENT, status);
- // Set to defaultMax + 1
- status = mTuner.setMaxNumberOfFrontends(type, defaultMax + 1);
- assertEquals(Tuner.RESULT_INVALID_ARGUMENT, status);
- // Set to 0
- status = mTuner.setMaxNumberOfFrontends(type, 0);
- assertEquals(Tuner.RESULT_SUCCESS, status);
- // Check after set
- int currentMax = -1;
- currentMax = mTuner.getMaxNumberOfFrontends(type);
- assertEquals(currentMax, 0);
- // Reset to default
- status = mTuner.setMaxNumberOfFrontends(type, defaultMax);
- assertEquals(Tuner.RESULT_SUCCESS, status);
- currentMax = mTuner.getMaxNumberOfFrontends(type);
- assertEquals(defaultMax, currentMax);
+ // Use try block to ensure restoring the max Tuner
+ try {
+ // Check default value
+ assertTrue(defaultMax > 0);
+ // Set to -1
+ status = mTuner.setMaxNumberOfFrontends(type, -1);
+ assertEquals(Tuner.RESULT_INVALID_ARGUMENT, status);
+ // Set to defaultMax + 1
+ status = mTuner.setMaxNumberOfFrontends(type, defaultMax + 1);
+ assertEquals(Tuner.RESULT_INVALID_ARGUMENT, status);
+ // Set to 0
+ status = mTuner.setMaxNumberOfFrontends(type, 0);
+ assertEquals(Tuner.RESULT_SUCCESS, status);
+ // Check after set
+ int currentMax = mTuner.getMaxNumberOfFrontends(type);
+ assertEquals(currentMax, 0);
+ } catch (Exception e) {
+ throw (e);
+ } finally {
+ // Reset to default
+ status = mTuner.setMaxNumberOfFrontends(type, defaultMax);
+ assertEquals(Tuner.RESULT_SUCCESS, status);
+ int currentMax = mTuner.getMaxNumberOfFrontends(type);
+ assertEquals(defaultMax, currentMax);
+ }
} else {
int defaultMax = mTuner.getMaxNumberOfFrontends(type);
assertEquals(defaultMax, -1);
@@ -2979,45 +2996,64 @@ public class TunerTest {
assertEquals(Tuner.RESULT_SUCCESS, mTuner.tune(feSettings1));
assertNotNull(mTuner.getFrontendInfo());
- // validate that set max cannot be set to lower value than current usage
- assertEquals(Tuner.RESULT_INVALID_ARGUMENT,
+ // Use try block to ensure restoring the max Tuner
+ try {
+ // validate that set max cannot be set to lower value than current usage
+ assertEquals(Tuner.RESULT_INVALID_ARGUMENT,
mTuner.setMaxNumberOfFrontends(type1, 0));
- // validate max value is reflected in the tune behavior
- mTuner.closeFrontend();
- assertEquals(Tuner.RESULT_SUCCESS,
+ // validate max value is reflected in the tune behavior
+ mTuner.closeFrontend();
+ assertEquals(Tuner.RESULT_SUCCESS,
mTuner.setMaxNumberOfFrontends(type1, 0));
- assertEquals(Tuner.RESULT_UNAVAILABLE,
+ assertEquals(Tuner.RESULT_UNAVAILABLE,
mTuner.tune(feSettings1));
- assertEquals(Tuner.RESULT_SUCCESS,
+ assertEquals(Tuner.RESULT_SUCCESS,
mTuner.setMaxNumberOfFrontends(type1, originalMax1));
- assertEquals(Tuner.RESULT_SUCCESS, mTuner.tune(feSettings1));
- assertNotNull(mTuner.getFrontendInfo());
- mTuner.closeFrontend();
+ assertEquals(Tuner.RESULT_SUCCESS, mTuner.tune(feSettings1));
+ assertNotNull(mTuner.getFrontendInfo());
+ mTuner.closeFrontend();
+ } catch (Exception e) {
+ throw(e);
+ } finally {
+ assertEquals(Tuner.RESULT_SUCCESS,
+ mTuner.setMaxNumberOfFrontends(type1, originalMax1));
+ }
}
// validate max number on one frontend type has no impact on other
if (ids.size() >= 2) {
- FrontendInfo info2 = mTuner.getFrontendInfoById(ids.get(1));
- int type2 = info2.getType();
- int originalMax2 = mTuner.getMaxNumberOfFrontends(type2);
-
- assertEquals(Tuner.RESULT_SUCCESS,
- mTuner.setMaxNumberOfFrontends(type2, 0));
- assertEquals(Tuner.RESULT_SUCCESS,
- mTuner.tune(feSettings1));
- assertNotNull(mTuner.getFrontendInfo());
-
- // set it back to the original max
- assertEquals(Tuner.RESULT_SUCCESS,
- mTuner.setMaxNumberOfFrontends(type2, originalMax2));
- mTuner.closeFrontend();
+ int type2 = type1;
+ for (int i = 0; i < ids.size(); i++) {
+ FrontendInfo info2 = mTuner.getFrontendInfoById(ids.get(i));
+ type2 = info2.getType();
+ if (type1 != type2) break;
+ }
+ if (type1 != type2) {
+ int originalMax2 = mTuner.getMaxNumberOfFrontends(type2);
+ // Use try block to ensure restoring the max Tuner
+ try {
+ assertEquals(Tuner.RESULT_SUCCESS,
+ mTuner.setMaxNumberOfFrontends(type2, 0));
+ assertEquals(Tuner.RESULT_SUCCESS,
+ mTuner.tune(feSettings1));
+ assertNotNull(mTuner.getFrontendInfo());
+ mTuner.closeFrontend();
+ } catch (Exception e) {
+ throw (e);
+ } finally {
+ // set it back to the original max
+ assertEquals(Tuner.RESULT_SUCCESS,
+ mTuner.setMaxNumberOfFrontends(type2, originalMax2));
+ }
+ }
}
}
}
+
public static Filter createTsSectionFilter(
Tuner tuner, Executor e, FilterCallback cb) {
Filter f = tuner.openFilter(Filter.TYPE_TS, Filter.SUBTYPE_SECTION, 1000, e, cb);