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

Commit 576cadbe authored by Hyundo Moon's avatar Hyundo Moon
Browse files

GattServiceTest: Avoid directly assigning member variables as mocks

GattServiceTest overwrites the member variables in the GattService,
which results their cleanup() not be called.
It resulted NPE in Broadcast receiver used in ScanManager.
This CL fixes this issue.

Bug: 291390459
Test: atest GoogleBluetoothInstrumentationTests
Change-Id: I63d6f30b67a4e8b7f2f5702a5ea0687a84142115
Merged-In: I63d6f30b67a4e8b7f2f5702a5ea0687a84142115
parent 6507424a
Loading
Loading
Loading
Loading
+17 −0
Original line number Diff line number Diff line
@@ -19,6 +19,9 @@ package com.android.bluetooth.gatt;
import android.util.Log;

import com.android.bluetooth.Utils;
import com.android.bluetooth.btservice.AdapterService;
import com.android.bluetooth.btservice.BluetoothAdapterProxy;

/**
 * Factory class for object initialization to help with unit testing
 */
@@ -64,4 +67,18 @@ public class GattObjectsFactory {
    public ScanNativeInterface getScanNativeInterface() {
        return ScanNativeInterface.getInstance();
    }

    public ScanManager createScanManager(GattService service, AdapterService adapterService,
            BluetoothAdapterProxy bluetoothAdapterProxy) {
        return new ScanManager(service, adapterService, bluetoothAdapterProxy);
    }

    public PeriodicScanManager createPeriodicScanManager(AdapterService adapterService) {
        return new PeriodicScanManager(adapterService);
    }

    public DistanceMeasurementManager createDistanceMeasurementManager(
            AdapterService adapterService) {
        return new DistanceMeasurementManager(adapterService);
    }
}
+6 −7
Original line number Diff line number Diff line
@@ -281,13 +281,9 @@ public class GattService extends ProfileService {

    private AdapterService mAdapterService;
    private BluetoothAdapterProxy mBluetoothAdapterProxy;
    @VisibleForTesting
    AdvertiseManager mAdvertiseManager;
    @VisibleForTesting
    PeriodicScanManager mPeriodicScanManager;
    @VisibleForTesting
    DistanceMeasurementManager mDistanceMeasurementManager;
    @VisibleForTesting
    ScanManager mScanManager;
    private AppOpsManager mAppOps;
    private CompanionDeviceManager mCompanionManager;
@@ -349,13 +345,16 @@ public class GattService extends ProfileService {
        mAdvertiseManager = new AdvertiseManager(this, mAdapterService, mAdvertiserMap);
        mAdvertiseManager.start();

        mScanManager = new ScanManager(this, mAdapterService, mBluetoothAdapterProxy);
        mScanManager = GattObjectsFactory.getInstance()
                .createScanManager(this, mAdapterService, mBluetoothAdapterProxy);
        mScanManager.start();

        mPeriodicScanManager = new PeriodicScanManager(mAdapterService);
        mPeriodicScanManager = GattObjectsFactory.getInstance()
                .createPeriodicScanManager(mAdapterService);
        mPeriodicScanManager.start();

        mDistanceMeasurementManager = new DistanceMeasurementManager(mAdapterService);
        mDistanceMeasurementManager = GattObjectsFactory.getInstance()
                .createDistanceMeasurementManager(mAdapterService);
        mDistanceMeasurementManager.start();

        setGattService(this);
+5 −2
Original line number Diff line number Diff line
@@ -96,6 +96,7 @@ public class GattServiceTest {
    @Mock private GattService.ScannerMap mScannerMap;
    @Mock private GattService.ScannerMap.App mApp;
    @Mock private GattService.PendingIntentInfo mPiInfo;
    @Mock private PeriodicScanManager mPeriodicScanManager;
    @Mock private ScanManager mScanManager;
    @Mock private Set<String> mReliableQueue;
    @Mock private GattService.ServerMap mServerMap;
@@ -124,6 +125,10 @@ public class GattServiceTest {

        GattObjectsFactory.setInstanceForTesting(mFactory);
        doReturn(mNativeInterface).when(mFactory).getNativeInterface();
        doReturn(mScanManager).when(mFactory).createScanManager(any(), any(), any());
        doReturn(mPeriodicScanManager).when(mFactory).createPeriodicScanManager(any());
        doReturn(mDistanceMeasurementManager).when(mFactory)
                .createDistanceMeasurementManager(any());

        mAdapter = BluetoothAdapter.getDefaultAdapter();
        mAttributionSource = mAdapter.getAttributionSource();
@@ -144,10 +149,8 @@ public class GattServiceTest {

        mService.mClientMap = mClientMap;
        mService.mScannerMap = mScannerMap;
        mService.mScanManager = mScanManager;
        mService.mReliableQueue = mReliableQueue;
        mService.mServerMap = mServerMap;
        mService.mDistanceMeasurementManager = mDistanceMeasurementManager;
    }

    @After
+2 −1
Original line number Diff line number Diff line
@@ -85,6 +85,7 @@ import org.mockito.Captor;
import org.mockito.Mock;
import org.mockito.Mockito;
import org.mockito.MockitoAnnotations;
import org.mockito.Spy;

/**
 * Test cases for {@link ScanManager}.
@@ -113,7 +114,7 @@ public class ScanManagerTest {
    @Mock private AdapterService mAdapterService;
    @Mock private BluetoothAdapterProxy mBluetoothAdapterProxy;
    @Mock private LocationManager mLocationManager;
    @Mock private GattObjectsFactory mFactory;
    @Spy private GattObjectsFactory mFactory = GattObjectsFactory.getInstance();
    @Mock private GattNativeInterface mNativeInterface;
    @Mock private ScanNativeInterface mScanNativeInterface;
    @Mock private MetricsLogger  mMetricsLogger;