Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit d6f0bdb8 authored by Jan Sebechlebsky's avatar Jan Sebechlebsky Committed by Ján Sebechlebský
Browse files

Migrate audio policy test to AndroidJUnit4

Bug: 247536210
Test: atest com.android.audiopolicytest
Change-Id: Ia200a17884c22f461df24b342fbf279090e724c5
parent 6f677a36
Loading
Loading
Loading
Loading
+3 −7
Original line number Diff line number Diff line
@@ -10,15 +10,11 @@ package {
android_test {
    name: "audiopolicytest",
    srcs: ["**/*.java"],
    libs: [
        "android.test.runner",
        "android.test.base",
    ],
    static_libs: [
        "mockito-target-minus-junit4",
        "androidx.test.ext.junit",
        "androidx.test.rules",
        "android-ex-camera2",
        "testng",
        "guava",
        "platform-test-annotations",
    ],
    platform_apis: true,
    certificate: "platform",
+1 −6
Original line number Diff line number Diff line
@@ -24,7 +24,7 @@

    <application>
        <uses-library android:name="android.test.runner" />
        <activity android:label="@string/app_name" android:name="AudioPolicyTest"
        <activity android:label="@string/app_name" android:name="AudioPolicyTestActivity"
                  android:screenOrientation="landscape" android:exported="true">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
@@ -33,11 +33,6 @@
        </activity>
    </application>

    <!--instrumentation android:name=".AudioPolicyTestRunner"
            android:targetPackage="com.android.audiopolicytest"
            android:label="AudioManager policy oriented integration tests InstrumentationRunner">
    </instrumentation-->

    <instrumentation android:name="androidx.test.runner.AndroidJUnitRunner"
            android:targetPackage="com.android.audiopolicytest"
            android:label="AudioManager policy oriented integration tests InstrumentationRunner">
+43 −10
Original line number Diff line number Diff line
@@ -16,28 +16,57 @@

package com.android.audiopolicytest;

import static androidx.test.core.app.ApplicationProvider.getApplicationContext;

import static com.android.audiopolicytest.AudioVolumeTestUtil.DEFAULT_ATTRIBUTES;
import static com.android.audiopolicytest.AudioVolumeTestUtil.incrementVolumeIndex;

import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotEquals;
import static org.testng.Assert.assertThrows;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertNull;
import static org.junit.Assert.assertThrows;
import static org.junit.Assert.assertTrue;

import android.media.AudioAttributes;
import android.media.AudioManager;
import android.media.AudioSystem;
import android.media.audiopolicy.AudioProductStrategy;
import android.media.audiopolicy.AudioVolumeGroup;
import android.platform.test.annotations.Presubmit;
import android.util.Log;

import androidx.test.ext.junit.runners.AndroidJUnit4;

import com.google.common.primitives.Ints;

import org.junit.Before;
import org.junit.Rule;
import org.junit.Test;
import org.junit.runner.RunWith;

import java.util.List;

public class AudioManagerTest extends AudioVolumesTestBase {
@Presubmit
@RunWith(AndroidJUnit4.class)
public class AudioManagerTest {
    private static final String TAG = "AudioManagerTest";

    private AudioManager mAudioManager;

    @Rule
    public final AudioVolumesTestRule rule = new AudioVolumesTestRule();

    @Before
    public void setUp() {
        mAudioManager = getApplicationContext().getSystemService(AudioManager.class);
    }

    //-----------------------------------------------------------------
    // Test getAudioProductStrategies and validate strategies
    //-----------------------------------------------------------------
    public void testGetAndValidateProductStrategies() throws Exception {
    @Test
    public void testGetAndValidateProductStrategies() {
        List<AudioProductStrategy> audioProductStrategies =
                mAudioManager.getAudioProductStrategies();
        assertTrue(audioProductStrategies.size() > 0);
@@ -101,8 +130,8 @@ public class AudioManagerTest extends AudioVolumesTestBase {
    //-----------------------------------------------------------------
    // Test getAudioVolumeGroups and validate volume groups
    //-----------------------------------------------------------------

    public void testGetAndValidateVolumeGroups() throws Exception {
    @Test
    public void testGetAndValidateVolumeGroups() {
        List<AudioVolumeGroup> audioVolumeGroups = mAudioManager.getAudioVolumeGroups();
        assertTrue(audioVolumeGroups.size() > 0);

@@ -118,7 +147,7 @@ public class AudioManagerTest extends AudioVolumesTestBase {
            // for each volume group attributes, find the matching product strategy and ensure
            // it is linked the considered volume group
            for (final AudioAttributes aa : avgAttributes) {
                if (aa.equals(sDefaultAttributes)) {
                if (aa.equals(DEFAULT_ATTRIBUTES)) {
                    // Some volume groups may not have valid attributes, used for internal
                    // volume management like patch/rerouting
                    // so bailing out strategy retrieval from attributes
@@ -180,6 +209,7 @@ public class AudioManagerTest extends AudioVolumesTestBase {
    //-----------------------------------------------------------------
    // Test Volume per Attributes setter/getters
    //-----------------------------------------------------------------
    @Test
    public void testSetGetVolumePerAttributesWithInvalidAttributes() throws Exception {
        AudioAttributes nullAttributes = null;

@@ -197,7 +227,8 @@ public class AudioManagerTest extends AudioVolumesTestBase {
                        nullAttributes, 0 /*index*/, 0/*flags*/));
    }

    public void testSetGetVolumePerAttributes() throws Exception {
    @Test
    public void testSetGetVolumePerAttributes() {
        for (int usage : AudioAttributes.SDK_USAGES) {
            if (usage == AudioAttributes.USAGE_UNKNOWN) {
                continue;
@@ -248,12 +279,14 @@ public class AudioManagerTest extends AudioVolumesTestBase {
    //-----------------------------------------------------------------
    // Test register/unregister VolumeGroupCallback
    //-----------------------------------------------------------------
    public void testVolumeGroupCallback() throws Exception {
    @Test
    public void testVolumeGroupCallback() {
        List<AudioVolumeGroup> audioVolumeGroups = mAudioManager.getAudioVolumeGroups();
        assertTrue(audioVolumeGroups.size() > 0);

        AudioVolumeGroupCallbackHelper vgCbReceiver = new AudioVolumeGroupCallbackHelper();
        mAudioManager.registerVolumeGroupCallback(mContext.getMainExecutor(), vgCbReceiver);
        mAudioManager.registerVolumeGroupCallback(getApplicationContext().getMainExecutor(),
                vgCbReceiver);

        final List<Integer> publicStreams = Ints.asList(AudioManager.getPublicStreamTypes());
        try {
@@ -273,7 +306,7 @@ public class AudioManagerTest extends AudioVolumesTestBase {

                // Set the volume per attributes (if valid) and wait the callback
                for (final AudioAttributes aa : avgAttributes) {
                    if (aa.equals(sDefaultAttributes)) {
                    if (aa.equals(DEFAULT_ATTRIBUTES)) {
                        // Some volume groups may not have valid attributes, used for internal
                        // volume management like patch/rerouting
                        // so bailing out strategy retrieval from attributes
+2 −2
Original line number Diff line number Diff line
@@ -19,9 +19,9 @@ package com.android.audiopolicytest;
import android.app.Activity;
import android.os.Bundle;

public class AudioPolicyTest extends Activity  {
public class AudioPolicyTestActivity extends Activity  {

    public AudioPolicyTest() {
    public AudioPolicyTestActivity() {
    }

    /** Called when the activity is first created. */
+24 −4
Original line number Diff line number Diff line
@@ -16,25 +16,43 @@

package com.android.audiopolicytest;

import static com.android.audiopolicytest.AudioVolumeTestUtil.INVALID_ATTRIBUTES;

import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertNotEquals;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertTrue;

import android.media.AudioAttributes;
import android.media.AudioManager;
import android.media.AudioSystem;
import android.media.audiopolicy.AudioProductStrategy;
import android.media.audiopolicy.AudioVolumeGroup;
import android.platform.test.annotations.Presubmit;
import android.util.Log;

import androidx.test.ext.junit.runners.AndroidJUnit4;

import org.junit.Rule;
import org.junit.Test;
import org.junit.runner.RunWith;

import java.util.List;

public class AudioProductStrategyTest extends AudioVolumesTestBase {
@Presubmit
@RunWith(AndroidJUnit4.class)
public class AudioProductStrategyTest {
    private static final String TAG = "AudioProductStrategyTest";

    @Rule
    public final AudioVolumesTestRule rule = new AudioVolumesTestRule();

    //-----------------------------------------------------------------
    // Test getAudioProductStrategies and validate strategies
    //-----------------------------------------------------------------
    public void testGetProductStrategies() throws Exception {
    @Test
    public void testGetProductStrategies() {
        List<AudioProductStrategy> audioProductStrategies =
                AudioProductStrategy.getAudioProductStrategies();

@@ -65,6 +83,7 @@ public class AudioProductStrategyTest extends AudioVolumesTestBase {
    //-----------------------------------------------------------------
    // Test stream to/from attributes conversion
    //-----------------------------------------------------------------
    @Test
    public void testAudioAttributesFromStreamTypes() throws Exception {
        List<AudioProductStrategy> audioProductStrategies =
                AudioProductStrategy.getAudioProductStrategies();
@@ -81,7 +100,7 @@ public class AudioProductStrategyTest extends AudioVolumesTestBase {
            // hosting this stream type; Bailing out the test, just ensure that any request
            // for reciproque API with the unknown attributes would return default stream
            // for volume control, aka STREAM_MUSIC.
            if (aaFromStreamType.equals(sInvalidAttributes)) {
            if (aaFromStreamType.equals(INVALID_ATTRIBUTES)) {
                assertEquals(AudioSystem.STREAM_MUSIC,
                        AudioProductStrategy.getLegacyStreamTypeForStrategyWithAudioAttributes(
                            aaFromStreamType));
@@ -139,7 +158,8 @@ public class AudioProductStrategyTest extends AudioVolumesTestBase {
        }
    }

    public void testAudioAttributesToStreamTypes() throws Exception {
    @Test
    public void testAudioAttributesToStreamTypes() {
        List<AudioProductStrategy> audioProductStrategies =
                AudioProductStrategy.getAudioProductStrategies();

Loading