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

Commit 39e1fbf7 authored by Sungsoo Lim's avatar Sungsoo Lim
Browse files

Prevant test failures on tearDown()

While test runs, tearDown() is called even there are some fauilres
in setUp(). Therefore tearDown() should only clear values that were
executed in setUp().

Bug: 305287964
Bug: 304721663
Bug: 303156122
Bug: 280518449
Bug: 292012215
Bug: 298398008
Bug: 304705063
Bug: 304969746
Bug: 305110553
Test: atest BluetoothInstrumentationTests
Change-Id: I3ed50b4b73ce3a07b45955b2649fed72e3ee82dc
parent 4fa3df5a
Loading
Loading
Loading
Loading
+9 −2
Original line number Diff line number Diff line
@@ -57,6 +57,7 @@ public class HapClientStateMachineTest {
    private HapClientStateMachine mHapClientStateMachine;
    private BluetoothDevice mTestDevice;
    private static final int TIMEOUT_MS = 1000;
    boolean mIsAdapterServiceSet;

    @Mock
    private AdapterService mAdapterService;
@@ -70,6 +71,7 @@ public class HapClientStateMachineTest {
        // Set up mocks and test assets
        MockitoAnnotations.initMocks(this);
        TestUtils.setAdapterService(mAdapterService);
        mIsAdapterServiceSet = true;

        mAdapter = BluetoothAdapter.getDefaultAdapter();

@@ -88,8 +90,13 @@ public class HapClientStateMachineTest {

    @After
    public void tearDown() throws Exception {
        if (!mIsAdapterServiceSet) {
            return;
        }
        if (mHapClientStateMachine != null) {
            mHapClientStateMachine.doQuit();
            mHandlerThread.quit();
        }
        TestUtils.clearAdapterService(mAdapterService);
    }

+22 −11
Original line number Diff line number Diff line
@@ -105,6 +105,8 @@ public class HeadsetServiceAndStateMachineTest {
    private HeadsetIntentReceiver mHeadsetIntentReceiver;
    private int mOriginalVrTimeoutMs = 5000;
    private PowerManager.WakeLock mVoiceRecognitionWakeLock;
    boolean mIsAdapterServiceSet;
    boolean mIsHeadsetServiceStarted;

    @Mock private HeadsetNativeInterface mNativeInterface;

@@ -166,6 +168,7 @@ public class HeadsetServiceAndStateMachineTest {
        mVoiceRecognitionWakeLock =
                powerManager.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "VoiceRecognitionTest");
        TestUtils.setAdapterService(mAdapterService);
        mIsAdapterServiceSet = true;
        doReturn(MAX_HEADSET_CONNECTIONS).when(mAdapterService).getMaxConnectedAudioDevices();
        doReturn(new ParcelUuid[]{BluetoothUuid.HFP}).when(mAdapterService)
                .getRemoteUuids(any(BluetoothDevice.class));
@@ -220,6 +223,7 @@ public class HeadsetServiceAndStateMachineTest {
        mOriginalVrTimeoutMs = HeadsetService.sStartVrTimeoutMs;
        HeadsetService.sStartVrTimeoutMs = START_VR_TIMEOUT_MILLIS;
        TestUtils.startService(mServiceRule, HeadsetService.class);
        mIsHeadsetServiceStarted = true;
        mHeadsetService = HeadsetService.getHeadsetService();
        Assert.assertNotNull(mHeadsetService);
        verify(mObjectsFactory).makeSystemInterface(mHeadsetService);
@@ -238,22 +242,29 @@ public class HeadsetServiceAndStateMachineTest {

    @After
    public void tearDown() throws Exception {
        if (!mIsAdapterServiceSet) {
            return;
        }
        mConnectionStateChangedQueue.clear();
        mActiveDeviceChangedQueue.clear();

        if (mIsHeadsetServiceStarted) {
            mTargetContext.unregisterReceiver(mHeadsetIntentReceiver);
            TestUtils.stopService(mServiceRule, HeadsetService.class);
        HeadsetService.sStartVrTimeoutMs = mOriginalVrTimeoutMs;
        Intents.release();
            mHeadsetService = HeadsetService.getHeadsetService();
            Assert.assertNull(mHeadsetService);
        Method method = HeadsetObjectsFactory.class.getDeclaredMethod("setInstanceForTesting",
                HeadsetObjectsFactory.class);
            // Clear classes that is spied on and has static life time
            clearInvocations(mNativeInterface);
        }
        HeadsetService.sStartVrTimeoutMs = mOriginalVrTimeoutMs;
        Intents.release();
        Method method =
                HeadsetObjectsFactory.class.getDeclaredMethod(
                        "setInstanceForTesting", HeadsetObjectsFactory.class);
        method.setAccessible(true);
        method.invoke(null, (HeadsetObjectsFactory) null);
        TestUtils.clearAdapterService(mAdapterService);
        mBondedDevices.clear();
        mConnectionStateChangedQueue.clear();
        mActiveDeviceChangedQueue.clear();
        // Clear classes that is spied on and has static life time
        clearInvocations(mNativeInterface);
        TestUtils.clearAdapterService(mAdapterService);
    }

    /**
+14 −14
Original line number Diff line number Diff line
@@ -62,6 +62,8 @@ public class HeadsetClientServiceTest {
    private HeadsetClientService mService = null;
    private BluetoothAdapter mAdapter = null;
    private Context mTargetContext;
    private boolean mIsAdapterServiceSet;
    private boolean mIsHeadsetClientServiceStarted;

    private static final int STANDARD_WAIT_MILLIS = 1000;

@@ -79,6 +81,7 @@ public class HeadsetClientServiceTest {
        MockitoAnnotations.initMocks(this);

        TestUtils.setAdapterService(mAdapterService);
        mIsAdapterServiceSet = true;
        doReturn(mDatabaseManager).when(mAdapterService).getDatabase();
        doReturn(mRemoteDevices).when(mAdapterService).getRemoteDevices();
        doReturn(true, false).when(mAdapterService).isStartedProfile(anyString());
@@ -88,16 +91,16 @@ public class HeadsetClientServiceTest {
    @After
    public void tearDown() throws Exception {
        NativeInterface.setInstance(null);
        mService = HeadsetClientService.getHeadsetClientService();
        Assert.assertNull(mService);
        stopServiceIfStarted();
        if (mIsAdapterServiceSet) {
            TestUtils.clearAdapterService(mAdapterService);
        }
    }

    @Test
    public void testInitialize() throws Exception {
        startService();
        Assert.assertNotNull(HeadsetClientService.getHeadsetClientService());
        stopService();
    }

    @Ignore("b/260202548")
@@ -121,8 +124,6 @@ public class HeadsetClientServiceTest {
                    eq(HeadsetClientStateMachine.SEND_BIEV),
                    eq(2),
                    anyInt());

        stopService();
    }

    @Test
@@ -142,8 +143,6 @@ public class HeadsetClientServiceTest {
                    eq(HeadsetClientStateMachine.SEND_BIEV),
                    eq(2),
                    anyInt());

        stopService();
    }

    @Test
@@ -159,8 +158,6 @@ public class HeadsetClientServiceTest {

        verify(mStateMachine, timeout(STANDARD_WAIT_MILLIS).times(1))
                .setAudioPolicy(any(BluetoothSinkAudioPolicy.class));

        stopService();
    }

    @Test
@@ -173,8 +170,6 @@ public class HeadsetClientServiceTest {
        mService.getStateMachineMap().put(device, mStateMachine);

        mService.dump(new StringBuilder());

        stopService();
    }

    @Test
@@ -217,9 +212,14 @@ public class HeadsetClientServiceTest {
        // Try getting the Bluetooth adapter
        mAdapter = BluetoothAdapter.getDefaultAdapter();
        Assert.assertNotNull(mAdapter);
        mIsHeadsetClientServiceStarted = true;
    }

    private void stopService() throws Exception {
    private void stopServiceIfStarted() throws Exception {
        if (mIsHeadsetClientServiceStarted) {
            TestUtils.stopService(mServiceRule, HeadsetClientService.class);
            mService = HeadsetClientService.getHeadsetClientService();
            Assert.assertNull(mService);
        }
    }
}
+12 −9
Original line number Diff line number Diff line
@@ -16,14 +16,12 @@

package com.android.bluetooth.mapclient;

import static android.Manifest.permission.BLUETOOTH_CONNECT;

import static com.google.common.truth.Truth.assertThat;

import static org.mockito.ArgumentMatchers.eq;
import static org.mockito.Mockito.*;

import android.annotation.Nullable;
import android.app.BroadcastOptions;
import android.bluetooth.BluetoothAdapter;
import android.bluetooth.BluetoothDevice;
@@ -39,7 +37,6 @@ import android.os.Handler;
import android.os.Looper;
import android.os.Message;
import android.provider.Telephony.Sms;
import android.provider.Telephony.Mms;
import android.telephony.TelephonyManager;
import android.telephony.SubscriptionManager;
import android.test.mock.MockContentProvider;
@@ -51,7 +48,6 @@ import androidx.test.filters.MediumTest;
import androidx.test.rule.ServiceTestRule;
import androidx.test.runner.AndroidJUnit4;

import com.android.bluetooth.R;
import com.android.bluetooth.TestUtils;
import com.android.bluetooth.btservice.AdapterService;
import com.android.bluetooth.btservice.storage.DatabaseManager;
@@ -64,7 +60,6 @@ import com.google.common.truth.Correspondence;

import org.junit.After;
import org.junit.Assert;
import org.junit.Assume;
import org.junit.Before;
import org.junit.Rule;
import org.junit.Test;
@@ -76,7 +71,6 @@ import org.mockito.MockitoAnnotations;

import java.time.Instant;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@@ -95,6 +89,8 @@ public class MapClientStateMachineTest {
    private Bmessage mTestIncomingMmsBmessage;
    private String mTestMessageSmsHandle = "0001";
    private String mTestMessageMmsHandle = "0002";
    boolean mIsAdapterServiceSet;
    boolean mIsMapClientServiceStarted;

    private static final boolean MESSAGE_SEEN = true;
    private static final boolean MESSAGE_NOT_SEEN = false;
@@ -151,12 +147,14 @@ public class MapClientStateMachineTest {
    public void setUp() throws Exception {
        mTargetContext = InstrumentationRegistry.getTargetContext();
        MockitoAnnotations.initMocks(this);
        TestUtils.setAdapterService(mAdapterService);
        mIsAdapterServiceSet = true;
        mMockContentProvider = new MockSmsContentProvider();
        mMockContentResolver = new MockContentResolver();
        TestUtils.setAdapterService(mAdapterService);
        when(mAdapterService.getDatabase()).thenReturn(mDatabaseManager);
        doReturn(true, false).when(mAdapterService).isStartedProfile(anyString());
        TestUtils.startService(mServiceRule, MapClientService.class);
        mIsMapClientServiceStarted = true;
        mMockContentResolver.addProvider("sms", mMockContentProvider);
        mMockContentResolver.addProvider("mms", mMockContentProvider);
        mMockContentResolver.addProvider("mms-sms", mMockContentProvider);
@@ -206,9 +204,14 @@ public class MapClientStateMachineTest {
        if (mMceStateMachine != null) {
            mMceStateMachine.doQuit();
        }

        if (mIsMapClientServiceStarted) {
            TestUtils.stopService(mServiceRule, MapClientService.class);
        }
        if (mIsAdapterServiceSet) {
            TestUtils.clearAdapterService(mAdapterService);
        }
    }

    /**
     * Test that default state is STATE_CONNECTING
+12 −7
Original line number Diff line number Diff line
@@ -21,7 +21,6 @@ import static org.mockito.Mockito.*;
import android.bluetooth.BluetoothAdapter;
import android.bluetooth.BluetoothDevice;
import android.bluetooth.BluetoothProfile;
import android.bluetooth.IBluetoothMapClient;
import android.content.Context;
import android.os.UserHandle;

@@ -30,7 +29,6 @@ import androidx.test.filters.MediumTest;
import androidx.test.rule.ServiceTestRule;
import androidx.test.runner.AndroidJUnit4;

import com.android.bluetooth.R;
import com.android.bluetooth.TestUtils;
import com.android.bluetooth.Utils;
import com.android.bluetooth.btservice.AdapterService;
@@ -38,7 +36,6 @@ import com.android.bluetooth.btservice.storage.DatabaseManager;

import org.junit.After;
import org.junit.Assert;
import org.junit.Assume;
import org.junit.Before;
import org.junit.Rule;
import org.junit.Test;
@@ -57,6 +54,8 @@ public class MapClientTest {
    private MapClientService mService = null;
    private BluetoothAdapter mAdapter = null;
    private Context mTargetContext;
    private boolean mIsAdapterServiceSet;
    private boolean mIsMapClientServiceStarted;

    @Mock private AdapterService mAdapterService;
    @Mock private MnsService mMockMnsService;
@@ -69,10 +68,12 @@ public class MapClientTest {
        mTargetContext = InstrumentationRegistry.getTargetContext();
        MockitoAnnotations.initMocks(this);
        TestUtils.setAdapterService(mAdapterService);
        mIsAdapterServiceSet = true;
        when(mAdapterService.getDatabase()).thenReturn(mDatabaseManager);
        doReturn(true, false).when(mAdapterService).isStartedProfile(anyString());
        MapUtils.setMnsService(mMockMnsService);
        TestUtils.startService(mServiceRule, MapClientService.class);
        mIsMapClientServiceStarted = true;
        mService = MapClientService.getMapClientService();
        Assert.assertNotNull(mService);
        mAdapter = BluetoothAdapter.getDefaultAdapter();
@@ -80,11 +81,15 @@ public class MapClientTest {

    @After
    public void tearDown() throws Exception {
        if (mIsMapClientServiceStarted) {
            TestUtils.stopService(mServiceRule, MapClientService.class);
            mService = MapClientService.getMapClientService();
            Assert.assertNull(mService);
        }
        if (mIsAdapterServiceSet) {
            TestUtils.clearAdapterService(mAdapterService);
        }
    }

    /**
     * Mock the priority of a bluetooth device
Loading