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

Commit ef11df89 authored by Hyosun Kim's avatar Hyosun Kim
Browse files

add overlay configs for last sos message connect and response timeout.

Bug: 331809319
Test: atest DatagramDispatcherTest, DatagramReceiverTest
Test: demo mode test b/331809319#comment20
1. satellite enable
2. send message
3. satellite disable
4. repeat 10 times from 1 to 3

Change-Id: Ib5638e3cbdffd1a8c686e72dc65c16babdbdd847
parent 0b4557fd
Loading
Loading
Loading
Loading
+15 −3
Original line number Diff line number Diff line
@@ -105,6 +105,7 @@ public class DatagramController {
    private long mDatagramWaitTimeForConnectedState;
    private long mModemImageSwitchingDuration;
    private boolean mWaitForDeviceAlignmentInDemoDatagram;
    private long mDatagramWaitTimeForConnectedStateForLastMessage;
    @GuardedBy("mLock")
    @SatelliteManager.SatelliteModemState
    private int mSatelltieModemState = SatelliteManager.SATELLITE_MODEM_STATE_UNKNOWN;
@@ -161,6 +162,8 @@ public class DatagramController {
        mModemImageSwitchingDuration = getSatelliteModemImageSwitchingDurationMillis();
        mWaitForDeviceAlignmentInDemoDatagram =
                getWaitForDeviceAlignmentInDemoDatagramFromResources();
        mDatagramWaitTimeForConnectedStateForLastMessage =
                getDatagramWaitForConnectedStateForLastMessageTimeoutMillis();
        mDemoModeDatagramList = new ArrayList<>();
    }

@@ -447,13 +450,17 @@ public class DatagramController {
    }

    @VisibleForTesting(visibility = VisibleForTesting.Visibility.PACKAGE)
    public long getDatagramWaitTimeForConnectedState() {
    public long getDatagramWaitTimeForConnectedState(boolean isLastSosMessage) {
        synchronized (mLock) {
            long timeout = isLastSosMessage ? mDatagramWaitTimeForConnectedStateForLastMessage :
                    mDatagramWaitTimeForConnectedState;
            logd("getDatagramWaitTimeForConnectedState: isLastSosMessage=" + isLastSosMessage
                    + ", timeout=" + timeout + ", modemState=" + mSatelltieModemState);
            if (mSatelltieModemState == SATELLITE_MODEM_STATE_OFF
                    || mSatelltieModemState == SATELLITE_MODEM_STATE_IDLE) {
                return (mDatagramWaitTimeForConnectedState + mModemImageSwitchingDuration);
                return (timeout + mModemImageSwitchingDuration);
            }
            return mDatagramWaitTimeForConnectedState;
            return timeout;
        }
    }

@@ -553,6 +560,11 @@ public class DatagramController {
                R.integer.config_satellite_modem_image_switching_duration_millis);
    }

    private long getDatagramWaitForConnectedStateForLastMessageTimeoutMillis() {
        return mContext.getResources().getInteger(
                R.integer.config_datagram_wait_for_connected_state_for_last_message_timeout_millis);
    }

    /**
     * This API can be used by only CTS to override the cached value for the device overlay config
     * value : config_send_satellite_datagram_to_modem_in_demo_mode, which determines whether
+16 −3
Original line number Diff line number Diff line
@@ -104,6 +104,7 @@ public class DatagramDispatcher extends Handler {
            mPendingNonEmergencyDatagramsMap = new LinkedHashMap<>();

    private long mWaitTimeForDatagramSendingResponse;
    private long mWaitTimeForDatagramSendingForLastMessageResponse;
    @SatelliteManager.DatagramType
    private int mLastSendRequestDatagramType = DATAGRAM_TYPE_UNKNOWN;

@@ -142,6 +143,8 @@ public class DatagramDispatcher extends Handler {
            mSendingDatagramInProgress = false;
        }
        mWaitTimeForDatagramSendingResponse = getWaitForDatagramSendingResponseTimeoutMillis();
        mWaitTimeForDatagramSendingForLastMessageResponse =
                getWaitForDatagramSendingResponseForLastMessageTimeoutMillis();
    }

    private static final class DatagramDispatcherHandlerRequest {
@@ -680,7 +683,8 @@ public class DatagramDispatcher extends Handler {
        }
        sendMessageDelayed(obtainMessage(
                        EVENT_DATAGRAM_WAIT_FOR_CONNECTED_STATE_TIMED_OUT, datagramArgs),
                mDatagramController.getDatagramWaitTimeForConnectedState());
                mDatagramController.getDatagramWaitTimeForConnectedState(
                        SatelliteServiceUtils.isLastSosMessage(datagramArgs.datagramType)));
    }

    private void stopDatagramWaitForConnectedStateTimer() {
@@ -709,9 +713,13 @@ public class DatagramDispatcher extends Handler {
            logd("WaitForDatagramSendingResponseTimer was already started");
            return;
        }
        long waitTime = SatelliteServiceUtils.isLastSosMessage(argument.datagramType)
                ? mWaitTimeForDatagramSendingForLastMessageResponse
                : mWaitTimeForDatagramSendingResponse;
        logd("startWaitForDatagramSendingResponseTimer: datagramType=" + argument.datagramType
                + ", waitTime=" + waitTime);
        sendMessageDelayed(obtainMessage(
                EVENT_WAIT_FOR_DATAGRAM_SENDING_RESPONSE_TIMED_OUT, argument),
                mWaitTimeForDatagramSendingResponse);
                EVENT_WAIT_FOR_DATAGRAM_SENDING_RESPONSE_TIMED_OUT, argument), waitTime);
    }

    private void stopWaitForDatagramSendingResponseTimer() {
@@ -760,6 +768,11 @@ public class DatagramDispatcher extends Handler {
                R.integer.config_wait_for_datagram_sending_response_timeout_millis);
    }

    private long getWaitForDatagramSendingResponseForLastMessageTimeoutMillis() {
        return mContext.getResources().getInteger(R.integer
                .config_wait_for_datagram_sending_response_for_last_message_timeout_millis);
    }

    private boolean shouldProcessEventSendSatelliteDatagramDone(
            @NonNull SendSatelliteDatagramArgument argument) {
        synchronized (mLock) {
+1 −1
Original line number Diff line number Diff line
@@ -818,7 +818,7 @@ public class DatagramReceiver extends Handler {
        }
        sendMessageDelayed(obtainMessage(
                        EVENT_DATAGRAM_WAIT_FOR_CONNECTED_STATE_TIMED_OUT),
                mDatagramController.getDatagramWaitTimeForConnectedState());
                mDatagramController.getDatagramWaitTimeForConnectedState(false));
    }

    private void stopDatagramWaitForConnectedStateTimer() {
+13 −1
Original line number Diff line number Diff line
@@ -347,7 +347,9 @@ public class SatelliteServiceUtils {
    }

    /**
     *
     * Check if the datagramType is the sos message (DATAGRAM_TYPE_SOS_MESSAGE,
     * DATAGRAM_TYPE_LAST_SOS_MESSAGE_STILL_NEED_HELP,
     * DATAGRAM_TYPE_LAST_SOS_MESSAGE_NO_HELP_NEEDED) or not
     */
    public static boolean isSosMessage(int datagramType) {
        return datagramType == SatelliteManager.DATAGRAM_TYPE_SOS_MESSAGE
@@ -355,6 +357,16 @@ public class SatelliteServiceUtils {
                || datagramType == SatelliteManager.DATAGRAM_TYPE_LAST_SOS_MESSAGE_NO_HELP_NEEDED;
    }

    /**
     * Check if the datagramType is the last sos message
     * (DATAGRAM_TYPE_LAST_SOS_MESSAGE_STILL_NEED_HELP or
     * DATAGRAM_TYPE_LAST_SOS_MESSAGE_NO_HELP_NEEDED) or not
     */
    public static boolean isLastSosMessage(int datagramType) {
        return datagramType == SatelliteManager.DATAGRAM_TYPE_LAST_SOS_MESSAGE_STILL_NEED_HELP
                || datagramType == SatelliteManager.DATAGRAM_TYPE_LAST_SOS_MESSAGE_NO_HELP_NEEDED;
    }

    /**
     * Return phone associated with phoneId 0.
     *
+183 −146
Original line number Diff line number Diff line
@@ -98,6 +98,12 @@ public class DatagramDispatcherTest extends TelephonyTest {
    private static final long TEST_DATAGRAM_WAIT_FOR_CONNECTED_STATE_TIMEOUT_MILLIS =
            TimeUnit.SECONDS.toMillis(60);
    private static final Long TIMEOUT_DATAGRAM_DELAY_IN_DEMO_MODE = TimeUnit.SECONDS.toMillis(10);
    private static final long
            TEST_DATAGRAM_WAIT_FOR_CONNECTED_STATE_FOR_LAST_MESSAGE_TIMEOUT_MILLIS =
            TimeUnit.SECONDS.toMillis(60);
    private static final int
            TEST_WAIT_FOR_DATAGRAM_SENDING_RESPONSE_FOR_LAST_MESSAGE_TIMEOUT_MILLIS =
            (int) TimeUnit.SECONDS.toMillis(60);

    private TestDatagramDispatcher mDatagramDispatcherUT;

@@ -188,8 +194,11 @@ public class DatagramDispatcherTest extends TelephonyTest {
            clearInvocations(mMockSatelliteModemInterface);
            doReturn(true).when(mMockDatagramController)
                    .needsWaitingForSatelliteConnected(eq(datagramType));
            when(mMockDatagramController.getDatagramWaitTimeForConnectedState())
            when(mMockDatagramController.getDatagramWaitTimeForConnectedState(eq(false)))
                    .thenReturn(TEST_DATAGRAM_WAIT_FOR_CONNECTED_STATE_TIMEOUT_MILLIS);
            when(mMockDatagramController.getDatagramWaitTimeForConnectedState(eq(true)))
                    .thenReturn(
                            TEST_DATAGRAM_WAIT_FOR_CONNECTED_STATE_FOR_LAST_MESSAGE_TIMEOUT_MILLIS);
            mResultListener.clear();

            mDatagramDispatcherUT.sendSatelliteDatagram(SUB_ID, datagramType, mDatagram,
@@ -201,7 +210,8 @@ public class DatagramDispatcherTest extends TelephonyTest {
                    eq(SatelliteManager.SATELLITE_DATAGRAM_TRANSFER_STATE_WAITING_TO_CONNECT),
                    eq(1),
                    eq(SATELLITE_RESULT_SUCCESS));
            mInOrder.verify(mMockDatagramController).getDatagramWaitTimeForConnectedState();
            mInOrder.verify(mMockDatagramController).getDatagramWaitTimeForConnectedState(
                    eq(SatelliteServiceUtils.isLastSosMessage(datagramType)));
            verifyZeroInteractions(mMockSatelliteModemInterface);
            assertTrue(mDatagramDispatcherUT.isDatagramWaitForConnectedStateTimerStarted());

@@ -247,7 +257,8 @@ public class DatagramDispatcherTest extends TelephonyTest {
            verifyZeroInteractions(mMockSatelliteModemInterface);
            mInOrder.verify(mMockDatagramController)
                    .needsWaitingForSatelliteConnected(eq(datagramType));
            mInOrder.verify(mMockDatagramController).getDatagramWaitTimeForConnectedState();
            mInOrder.verify(mMockDatagramController).getDatagramWaitTimeForConnectedState(
                    eq(SatelliteServiceUtils.isLastSosMessage(datagramType)));
            assertTrue(mDatagramDispatcherUT.isDatagramWaitForConnectedStateTimerStarted());

            moveTimeForward(TEST_DATAGRAM_WAIT_FOR_CONNECTED_STATE_TIMEOUT_MILLIS);
@@ -287,7 +298,8 @@ public class DatagramDispatcherTest extends TelephonyTest {
            verifyZeroInteractions(mMockSatelliteModemInterface);
            mInOrder.verify(mMockDatagramController)
                    .needsWaitingForSatelliteConnected(eq(datagramType));
            mInOrder.verify(mMockDatagramController).getDatagramWaitTimeForConnectedState();
            mInOrder.verify(mMockDatagramController).getDatagramWaitTimeForConnectedState(
                    eq(SatelliteServiceUtils.isLastSosMessage(datagramType)));
            assertTrue(mDatagramDispatcherUT.isDatagramWaitForConnectedStateTimerStarted());
            assertEquals(0, mResultListener.size());

@@ -305,6 +317,19 @@ public class DatagramDispatcherTest extends TelephonyTest {

    @Test
    public void testSendSatelliteDatagram_timeout() throws  Exception {
        when(mMockDatagramController.getDatagramWaitTimeForConnectedState(eq(false)))
                .thenReturn(TEST_DATAGRAM_WAIT_FOR_CONNECTED_STATE_TIMEOUT_MILLIS);
        when(mMockDatagramController.getDatagramWaitTimeForConnectedState(eq(true)))
                .thenReturn(TEST_DATAGRAM_WAIT_FOR_CONNECTED_STATE_FOR_LAST_MESSAGE_TIMEOUT_MILLIS);
        mContextFixture.putIntResource(
                R.integer.config_wait_for_datagram_sending_response_timeout_millis,
                TEST_WAIT_FOR_DATAGRAM_SENDING_RESPONSE_TIMEOUT_MILLIS);
        mContextFixture.putIntResource(
                R.integer.config_wait_for_datagram_sending_response_for_last_message_timeout_millis,
                TEST_WAIT_FOR_DATAGRAM_SENDING_RESPONSE_FOR_LAST_MESSAGE_TIMEOUT_MILLIS);
        mResultListener.clear();
        int[] sosDatagramTypes = {DATAGRAM_TYPE1, DATAGRAM_TYPE4, DATAGRAM_TYPE5};
        for (int datagramType : sosDatagramTypes) {
            doAnswer(invocation -> {
                Message message = (Message) invocation.getArguments()[3];

@@ -318,33 +343,29 @@ public class DatagramDispatcherTest extends TelephonyTest {
                        .sendToTarget();

                return null;
        }).when(mMockSatelliteModemInterface).sendSatelliteDatagram(any(SatelliteDatagram.class),
            }).when(mMockSatelliteModemInterface).sendSatelliteDatagram(
                    any(SatelliteDatagram.class),
                    anyBoolean(), anyBoolean(), any(Message.class));
            doReturn(false).when(mMockDatagramController)
                .needsWaitingForSatelliteConnected(eq(DATAGRAM_TYPE1));
        when(mMockDatagramController.getDatagramWaitTimeForConnectedState())
                .thenReturn(TEST_DATAGRAM_WAIT_FOR_CONNECTED_STATE_TIMEOUT_MILLIS);
        mContextFixture.putIntResource(
                R.integer.config_wait_for_datagram_sending_response_timeout_millis,
                TEST_WAIT_FOR_DATAGRAM_SENDING_RESPONSE_TIMEOUT_MILLIS);
        mResultListener.clear();
                    .needsWaitingForSatelliteConnected(eq(datagramType));

        mDatagramDispatcherUT.sendSatelliteDatagram(SUB_ID, DATAGRAM_TYPE1, mDatagram,
            mDatagramDispatcherUT.sendSatelliteDatagram(SUB_ID, datagramType, mDatagram,
                    true, mResultListener::offer);
            processAllMessages();
            mInOrder.verify(mMockDatagramController)
                .needsWaitingForSatelliteConnected(eq(DATAGRAM_TYPE1));
                    .needsWaitingForSatelliteConnected(eq(datagramType));
            mInOrder.verify(mMockDatagramController).isPollingInIdleState();
            mInOrder.verify(mMockDatagramController)
                .updateSendStatus(eq(SUB_ID), eq(DATAGRAM_TYPE1),
                    .updateSendStatus(eq(SUB_ID), eq(datagramType),
                            eq(SatelliteManager.SATELLITE_DATAGRAM_TRANSFER_STATE_SENDING), eq(1),
                            eq(SATELLITE_RESULT_SUCCESS));
            mInOrder.verify(mMockDatagramController)
                .updateSendStatus(eq(SUB_ID), eq(DATAGRAM_TYPE1),
                        eq(SatelliteManager.SATELLITE_DATAGRAM_TRANSFER_STATE_SEND_SUCCESS), eq(0),
                    .updateSendStatus(eq(SUB_ID), eq(datagramType),
                            eq(SatelliteManager.SATELLITE_DATAGRAM_TRANSFER_STATE_SEND_SUCCESS),
                            eq(0),
                            eq(SATELLITE_RESULT_SUCCESS));
            mInOrder.verify(mMockDatagramController)
                .updateSendStatus(eq(SUB_ID), eq(DATAGRAM_TYPE1),
                    .updateSendStatus(eq(SUB_ID), eq(datagramType),
                            eq(SatelliteManager.SATELLITE_DATAGRAM_TRANSFER_STATE_IDLE), eq(0),
                            eq(SATELLITE_RESULT_SUCCESS));
            verifyNoMoreInteractions(mMockDatagramController);
@@ -361,22 +382,23 @@ public class DatagramDispatcherTest extends TelephonyTest {
            doNothing().when(mMockSatelliteModemInterface).sendSatelliteDatagram(
                    any(SatelliteDatagram.class), anyBoolean(), anyBoolean(), any(Message.class));

        mDatagramDispatcherUT.sendSatelliteDatagram(SUB_ID, DATAGRAM_TYPE1, mDatagram,
            mDatagramDispatcherUT.sendSatelliteDatagram(SUB_ID, datagramType, mDatagram,
                    true, mResultListener::offer);
            processAllMessages();
            mInOrder.verify(mMockDatagramController)
                .needsWaitingForSatelliteConnected(eq(DATAGRAM_TYPE1));
                    .needsWaitingForSatelliteConnected(eq(datagramType));
            mInOrder.verify(mMockDatagramController).isPollingInIdleState();
            mInOrder.verify(mMockDatagramController)
                .updateSendStatus(eq(SUB_ID), eq(DATAGRAM_TYPE1),
                    .updateSendStatus(eq(SUB_ID), eq(datagramType),
                            eq(SatelliteManager.SATELLITE_DATAGRAM_TRANSFER_STATE_SENDING), eq(1),
                            eq(SATELLITE_RESULT_SUCCESS));
            mInOrder.verify(mMockDatagramController)
                .updateSendStatus(eq(SUB_ID), eq(DATAGRAM_TYPE1),
                        eq(SatelliteManager.SATELLITE_DATAGRAM_TRANSFER_STATE_SEND_FAILED), eq(1),
                    .updateSendStatus(eq(SUB_ID), eq(datagramType),
                            eq(SatelliteManager.SATELLITE_DATAGRAM_TRANSFER_STATE_SEND_FAILED),
                            eq(1),
                            eq(SATELLITE_RESULT_MODEM_TIMEOUT));
            mInOrder.verify(mMockDatagramController)
                .updateSendStatus(eq(SUB_ID), eq(DATAGRAM_TYPE1),
                    .updateSendStatus(eq(SUB_ID), eq(datagramType),
                            eq(SatelliteManager.SATELLITE_DATAGRAM_TRANSFER_STATE_IDLE), eq(0),
                            eq(SATELLITE_RESULT_SUCCESS));
            verifyNoMoreInteractions(mMockDatagramController);
@@ -385,6 +407,12 @@ public class DatagramDispatcherTest extends TelephonyTest {
            verify(mMockSatelliteModemInterface).abortSendingSatelliteDatagrams(any(Message.class));
            assertThat(mResultListener.peek()).isEqualTo(SATELLITE_RESULT_MODEM_TIMEOUT);
            verify(mMockSessionMetricsStats, times(1)).addCountOfFailedOutgoingDatagram();

            clearInvocations(mMockSatelliteModemInterface);
            clearInvocations(mMockDatagramController);
            clearInvocations(mMockSessionMetricsStats);
            mResultListener.clear();
        }
    }

    @Test
@@ -629,33 +657,39 @@ public class DatagramDispatcherTest extends TelephonyTest {
    }

    @Test
    public void testSendSatelliteDatagramToModemInDemoMode()
            throws Exception {
    public void testSendSatelliteDatagramToModemInDemoMode() throws Exception {
        when(mFeatureFlags.oemEnabledSatelliteFlag()).thenReturn(true);

        mDatagramDispatcherUT.setDemoMode(true);
        mDatagramDispatcherUT.setDeviceAlignedWithSatellite(true);

        int[] sosDatagramTypes = {DATAGRAM_TYPE1, DATAGRAM_TYPE4, DATAGRAM_TYPE5};
        for (int datagramType : sosDatagramTypes) {
            mIntegerConsumerSemaphore.drainPermits();
            mIntegerConsumerResult.clear();
            clearInvocations(mMockDatagramController);
            clearInvocations(mMockSatelliteModemInterface);
            clearInvocations(mMockSessionMetricsStats);
            doAnswer(invocation -> {
                Message message = (Message) invocation.getArguments()[3];
                mDatagramDispatcherUT.obtainMessage(2 /*EVENT_SEND_SATELLITE_DATAGRAM_DONE*/,
                                new AsyncResult(message.obj, null, null))
                        .sendToTarget();
                return null;
        }).when(mMockSatelliteModemInterface).sendSatelliteDatagram(any(SatelliteDatagram.class),
            }).when(mMockSatelliteModemInterface).sendSatelliteDatagram(
                    any(SatelliteDatagram.class),
                    anyBoolean(), anyBoolean(), any(Message.class));
        mDatagramDispatcherUT.setDemoMode(true);
        mDatagramDispatcherUT.setDeviceAlignedWithSatellite(true);
        mIntegerConsumerSemaphore.drainPermits();

            // Test when overlay config config_send_satellite_datagram_to_modem_in_demo_mode is true
            mDatagramDispatcherUT.setShouldSendDatagramToModemInDemoMode(null);
            mContextFixture.putBooleanResource(mConfigSendSatelliteDatagramToModemInDemoMode, true);
        mDatagramDispatcherUT.sendSatelliteDatagram(SUB_ID, DATAGRAM_TYPE1, mDatagram,
            mDatagramDispatcherUT.sendSatelliteDatagram(SUB_ID, datagramType, mDatagram,
                    true, mIntegerConsumer);
            processAllMessages();
            moveTimeForward(TIMEOUT_DATAGRAM_DELAY_IN_DEMO_MODE);
            processAllMessages();
            waitForIntegerConsumerResult(1);
        assertEquals(SATELLITE_RESULT_SUCCESS,
                (int) mIntegerConsumerResult.get(0));
            assertEquals(SATELLITE_RESULT_SUCCESS, (int) mIntegerConsumerResult.get(0));
            mIntegerConsumerResult.clear();
            verify(mMockSatelliteModemInterface, times(1)).sendSatelliteDatagram(
                    any(SatelliteDatagram.class), anyBoolean(), anyBoolean(), any(Message.class));
@@ -667,19 +701,20 @@ public class DatagramDispatcherTest extends TelephonyTest {
            verify(mMockDatagramController).pollPendingSatelliteDatagrams(anyInt(), any());
            verify(mMockSessionMetricsStats, times(1)).addCountOfSuccessfulOutgoingDatagram();

        // Test when overlay config config_send_satellite_datagram_to_modem_in_demo_mode is false
            // Test when overlay config config_send_satellite_datagram_to_modem_in_demo_mode is
            // false
            reset(mMockSatelliteModemInterface);
            mDatagramDispatcherUT.setShouldSendDatagramToModemInDemoMode(null);
        mContextFixture.putBooleanResource(mConfigSendSatelliteDatagramToModemInDemoMode, false);
        mDatagramDispatcherUT.sendSatelliteDatagram(SUB_ID, DATAGRAM_TYPE1, mDatagram,
            mContextFixture.putBooleanResource(mConfigSendSatelliteDatagramToModemInDemoMode,
                    false);
            mDatagramDispatcherUT.sendSatelliteDatagram(SUB_ID, datagramType, mDatagram,
                    true, mIntegerConsumer);
            processAllMessages();
            moveTimeForward(TIMEOUT_DATAGRAM_DELAY_IN_DEMO_MODE);
            processAllMessages();

            waitForIntegerConsumerResult(1);
        assertEquals(SATELLITE_RESULT_SUCCESS,
                (int) mIntegerConsumerResult.get(0));
            assertEquals(SATELLITE_RESULT_SUCCESS, (int) mIntegerConsumerResult.get(0));
            mIntegerConsumerResult.clear();
            verify(mMockSatelliteModemInterface, never()).sendSatelliteDatagram(
                    any(SatelliteDatagram.class), anyBoolean(), anyBoolean(), any(Message.class));
@@ -688,19 +723,19 @@ public class DatagramDispatcherTest extends TelephonyTest {
            processAllMessages();
            verify(mMockDatagramController, times(2)).pushDemoModeDatagram(
                    anyInt(), any(SatelliteDatagram.class));
        verify(mMockDatagramController, times(2)).pollPendingSatelliteDatagrams(anyInt(), any());
            verify(mMockDatagramController, times(2)).pollPendingSatelliteDatagrams(anyInt(),
                    any());

            // Send datagram one more time
            reset(mMockSatelliteModemInterface);
        mDatagramDispatcherUT.sendSatelliteDatagram(SUB_ID, DATAGRAM_TYPE1, mDatagram,
            mDatagramDispatcherUT.sendSatelliteDatagram(SUB_ID, datagramType, mDatagram,
                    true, mIntegerConsumer);
            processAllMessages();
            moveTimeForward(TIMEOUT_DATAGRAM_DELAY_IN_DEMO_MODE);
            processAllMessages();

            waitForIntegerConsumerResult(1);
        assertEquals(SATELLITE_RESULT_SUCCESS,
                (int) mIntegerConsumerResult.get(0));
            assertEquals(SATELLITE_RESULT_SUCCESS, (int) mIntegerConsumerResult.get(0));
            mIntegerConsumerResult.clear();
            verify(mMockSatelliteModemInterface, never()).sendSatelliteDatagram(
                    any(SatelliteDatagram.class), anyBoolean(), anyBoolean(), any(Message.class));
@@ -709,7 +744,9 @@ public class DatagramDispatcherTest extends TelephonyTest {
            processAllMessages();
            verify(mMockDatagramController, times(3)).pushDemoModeDatagram(
                    anyInt(), any(SatelliteDatagram.class));
        verify(mMockDatagramController, times(3)).pollPendingSatelliteDatagrams(anyInt(), any());
            verify(mMockDatagramController, times(3)).pollPendingSatelliteDatagrams(anyInt(),
                    any());
        }

        mDatagramDispatcherUT.setDemoMode(false);
        mDatagramDispatcherUT.setDeviceAlignedWithSatellite(false);
Loading