diff options
author | Haofan Wang <haofanw@google.com> | 2024-05-16 21:04:01 +0000 |
---|---|---|
committer | Gerrit Code Review <noreply-gerritcodereview@google.com> | 2024-05-16 21:04:01 +0000 |
commit | 1bb9a6f61b0b7b0aad7fa9d8cd292e9dbd9bf2fc (patch) | |
tree | 7965d02a83058eb782a81eb43e6bb67922e75ac2 | |
parent | fe913558e4ba6d72eb040a7997044b660c682b40 (diff) | |
parent | 114cf0b20d5f5d63622d96c20d313fde76d489a2 (diff) | |
download | cts-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.java | 3 | ||||
-rw-r--r-- | tests/tests/tv/src/android/media/tv/tuner/cts/TunerTest.java | 198 |
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); |