aboutsummaryrefslogtreecommitdiff
path: root/tests/src/com/android/ims
diff options
context:
space:
mode:
Diffstat (limited to 'tests/src/com/android/ims')
-rw-r--r--tests/src/com/android/ims/rcs/uce/UceStatsWriterTest.java292
-rw-r--r--tests/src/com/android/ims/rcs/uce/presence/publish/DeviceCapabilityListenerTest.java32
-rw-r--r--tests/src/com/android/ims/rcs/uce/presence/publish/PublishControllerImplTest.java10
-rw-r--r--tests/src/com/android/ims/rcs/uce/presence/publish/PublishProcessorTest.java13
-rw-r--r--tests/src/com/android/ims/rcs/uce/request/OptionsCoordinatorTest.java14
-rw-r--r--tests/src/com/android/ims/rcs/uce/request/RemoteOptionsCoordinatorTest.java6
-rw-r--r--tests/src/com/android/ims/rcs/uce/request/SubscribeCoordinatorTest.java56
7 files changed, 413 insertions, 10 deletions
diff --git a/tests/src/com/android/ims/rcs/uce/UceStatsWriterTest.java b/tests/src/com/android/ims/rcs/uce/UceStatsWriterTest.java
new file mode 100644
index 00000000..49edf198
--- /dev/null
+++ b/tests/src/com/android/ims/rcs/uce/UceStatsWriterTest.java
@@ -0,0 +1,292 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.ims.rcs.uce;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertTrue;
+
+import androidx.test.ext.junit.runners.AndroidJUnit4;
+import androidx.test.filters.SmallTest;
+
+import android.telephony.ims.RcsContactPresenceTuple;
+import android.telephony.ims.RcsContactUceCapability;
+
+import com.android.ims.rcs.uce.UceStatsWriter;
+import com.android.ims.rcs.uce.UceStatsWriter.UceStatsCallback;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.MockitoAnnotations;
+
+@RunWith(AndroidJUnit4.class)
+public class UceStatsWriterTest {
+ private int mSubId = 3;
+ private long mTaskId = 5;
+ private int mRegistrationTech = 3;
+ private int mType = 2;
+ private boolean mSuccessful = true;
+ private int mCommandCode = 4;
+ private int mNetworkResponse = 200;
+ private String mReason = "noresource";
+
+ private Callback mCallback;
+ private TestableUceStatsWriter mWrite;
+
+ class Callback implements UceStatsCallback {
+ int subId;
+ List<String> featureTagList;
+ List<String> serviceIdList;
+ List<String> versions;
+ int registrationTech;
+ int type;
+ boolean successful;
+ int commandCode;
+ int networkResponse;
+ long taskId;
+ List<RcsContactUceCapability> updatedCapList;
+ String reason;
+
+ Callback() {
+ }
+
+ public void onImsRegistrationFeatureTagStats(int subId, List<String> featureTagList,
+ int registrationTech) {
+ this.subId = subId;
+ this.featureTagList = featureTagList;
+ this.registrationTech = registrationTech;
+ }
+
+ public void onStoreCompleteImsRegistrationFeatureTagStats(int subId) {}
+
+ public void onImsRegistrationServiceDescStats(int subId, List<String> serviceIdList,
+ List<String> serviceIdVersionList, int registrationTech) {
+ this.subId = subId;
+ this.serviceIdList = serviceIdList;
+ this.versions = serviceIdVersionList;
+ this.registrationTech = registrationTech;
+ }
+
+ public void onSubscribeResponse(int subId, long taskId, int networkResponse) {
+ this.subId = subId;
+ this.taskId = taskId;
+ this.successful = true;
+ this.commandCode = 0;
+ this.networkResponse = networkResponse;
+ }
+
+ public void onUceEvent(int subId, int type, boolean successful, int commandCode,
+ int networkResponse) {
+ this.subId = subId;
+ this.type = type;
+ this.successful = successful;
+ this.commandCode = commandCode;
+ this.networkResponse = networkResponse;
+ }
+
+ public void onSubscribeTerminated(int subId, long taskId, String reason) {
+ this.subId = subId;
+ this.taskId = taskId;
+ this.reason = reason;
+ }
+
+ public void onPresenceNotifyEvent(int subId, long taskId,
+ List<RcsContactUceCapability> updatedCapList) {
+ this.subId = subId;
+ this.taskId = taskId;
+ this.updatedCapList = updatedCapList;
+ }
+
+ public void onStoreCompleteImsRegistrationServiceDescStats(int subId) {
+ this.subId = subId;
+ }
+ }
+
+ private class TestableUceStatsWriter extends UceStatsWriter {
+ public TestableUceStatsWriter(UceStatsCallback callback) {
+ super(callback);
+ }
+ }
+
+ @Before
+ public void setUp() throws Exception {
+ MockitoAnnotations.initMocks(this);
+ mCallback = new Callback();
+ mWrite = new TestableUceStatsWriter(mCallback);
+ }
+
+ @After
+ public void tearDown() throws Exception {
+ }
+
+ @Test
+ @SmallTest
+ public void setImsRegistrationFeatureTagStats() throws Exception {
+ List<String> featureTags = new ArrayList<>();
+ featureTags.add("+g.3gpp.iari-ref=\"urn%3Aurn-7%3A3gpp-application.ims.iari.rcse.im\"");
+ featureTags.add("+g.3gpp.icsi-ref=\"urn%3Aurn-7%3A3gpp-service.ims.icsi.oma.cpm.session\"");
+ featureTags.add("+g.3gpp.iari-ref=\"urn%3Aurn-7%3A3gpp-application.ims.iari.rcs.ftsms\"");
+ mWrite.setImsRegistrationFeatureTagStats(mSubId, featureTags, mRegistrationTech);
+ assertEquals(mSubId, mCallback.subId);
+ for (int index = 0; index < featureTags.size(); index++) {
+ assertEquals(featureTags.get(index), mCallback.featureTagList.get(index));
+ }
+ assertEquals(mRegistrationTech, mCallback.registrationTech);
+ }
+
+ @Test
+ @SmallTest
+ public void setImsRegistrationServiceDescStats() throws Exception {
+ List<RcsContactPresenceTuple> tupleList = new ArrayList<>();
+ tupleList.add(getContactChatTuple());
+ tupleList.add(getContactFtTuple());
+ tupleList.add(getContactUnknown1Tuple());
+ tupleList.add(getContactUnknown2Tuple());
+ mWrite.setImsRegistrationServiceDescStats(mSubId, tupleList, mRegistrationTech);
+ assertEquals(mSubId, mCallback.subId);
+ for (int index = 0; index < tupleList.size(); index++) {
+ assertEquals(tupleList.get(index).getServiceId(), mCallback.serviceIdList.get(index));
+ assertEquals(tupleList.get(index).getServiceVersion(), mCallback.versions.get(index));
+ }
+ assertEquals(mRegistrationTech, mCallback.registrationTech);
+ }
+
+ @Test
+ @SmallTest
+ public void setSubscribeEvent() throws Exception {
+ mWrite.setSubscribeResponse(mSubId, mTaskId, mNetworkResponse);
+ assertEquals(mSubId, mCallback.subId);
+ assertEquals(mTaskId, mCallback.taskId);
+ assertTrue(mCallback.successful);
+ assertEquals(0, mCallback.commandCode);
+ assertEquals(mNetworkResponse, mCallback.networkResponse);
+ }
+
+ @Test
+ @SmallTest
+ public void setSubscribeTerminated() throws Exception {
+ mWrite.setSubscribeResponse(mSubId, mTaskId, mNetworkResponse);
+ mWrite.setSubscribeTerminated(mSubId, mTaskId, mReason);
+ assertEquals(mSubId, mCallback.subId);
+ assertEquals(mTaskId, mCallback.taskId);
+ assertEquals(mReason, mCallback.reason);
+ }
+
+ @Test
+ @SmallTest
+ public void setUceEvent() throws Exception {
+ mWrite.setUceEvent(mSubId, mType, mSuccessful, mCommandCode, mNetworkResponse);
+ assertEquals(mSubId, mCallback.subId);
+ assertEquals(mType, mCallback.type);
+ assertEquals(mSuccessful, mCallback.successful);
+ assertEquals(mCommandCode, mCallback.commandCode);
+ assertEquals(mNetworkResponse, mCallback.networkResponse);
+ }
+
+ @Test
+ @SmallTest
+ public void setPresenceNotifyEvent() throws Exception {
+ List<RcsContactUceCapability> updatedCapList = new ArrayList<>();
+ RcsContactUceCapability.PresenceBuilder builder =
+ new RcsContactUceCapability.PresenceBuilder(null, 0, 2);
+ builder.addCapabilityTuple(getContactChatTuple());
+ builder.addCapabilityTuple(getContactCallComposer2Tuple());
+ builder.addCapabilityTuple(getContactUnknown1Tuple());
+ updatedCapList.add(builder.build());
+
+ mWrite.setPresenceNotifyEvent(mSubId, mTaskId, updatedCapList);
+ assertEquals(mSubId, mCallback.subId);
+ assertEquals(mTaskId, mCallback.taskId);
+ assertEquals(updatedCapList.size(), mCallback.updatedCapList.size());
+ for (int index = 0; index < updatedCapList.size(); index++) {
+ RcsContactUceCapability input = updatedCapList.get(index);
+ RcsContactUceCapability output = mCallback.updatedCapList.get(index);
+ assertEquals(input.getCapabilityTuples().size(), output.getCapabilityTuples().size());
+ }
+ }
+
+ @Test
+ @SmallTest
+ public void setPresenceNotifyEvent_withCallComposer2Caps() throws Exception {
+ RcsContactPresenceTuple tuple = getContactCallComposer2Tuple();
+ List<RcsContactUceCapability> updatedCapList = new ArrayList<>();
+ RcsContactUceCapability.PresenceBuilder builder =
+ new RcsContactUceCapability.PresenceBuilder(null, 0, 2);
+ builder.addCapabilityTuple(getContactCallComposer2Tuple());
+ updatedCapList.add(builder.build());
+
+ mWrite.setPresenceNotifyEvent(mSubId, mTaskId, updatedCapList);
+ assertEquals(mSubId, mCallback.subId);
+ assertEquals(mTaskId, mCallback.taskId);
+ assertEquals(updatedCapList.size(), mCallback.updatedCapList.size());
+ }
+
+ @Test
+ @SmallTest
+ public void setUnPublish() throws Exception {
+ mWrite.setUnPublish(mSubId);
+ assertEquals(mSubId, mCallback.subId);
+ }
+
+ private RcsContactPresenceTuple getContactChatTuple() {
+ RcsContactPresenceTuple.Builder builder =
+ new RcsContactPresenceTuple.Builder("open", RcsContactPresenceTuple.SERVICE_ID_CHAT_V1,
+ "1.0");
+ return builder.build();
+ }
+
+ private RcsContactPresenceTuple getContactMmtelTuple() {
+ RcsContactPresenceTuple.Builder builder =
+ new RcsContactPresenceTuple.Builder("open", RcsContactPresenceTuple.SERVICE_ID_MMTEL,
+ "1.0");
+ return builder.build();
+ }
+
+ private RcsContactPresenceTuple getContactFtTuple() {
+ RcsContactPresenceTuple.Builder builder =
+ new RcsContactPresenceTuple.Builder("open", RcsContactPresenceTuple.SERVICE_ID_FT,
+ "1.0");
+ return builder.build();
+ }
+
+ private RcsContactPresenceTuple getContactCallComposer2Tuple() {
+ RcsContactPresenceTuple.Builder builder =
+ new RcsContactPresenceTuple.Builder("open",
+ RcsContactPresenceTuple.SERVICE_ID_CALL_COMPOSER,
+ "2.0");
+ return builder.build();
+ }
+
+ private RcsContactPresenceTuple getContactUnknown1Tuple() {
+ RcsContactPresenceTuple.Builder builder =
+ new RcsContactPresenceTuple.Builder("open", "Unknown1",
+ "8.0");
+ return builder.build();
+ }
+
+ private RcsContactPresenceTuple getContactUnknown2Tuple() {
+ RcsContactPresenceTuple.Builder builder =
+ new RcsContactPresenceTuple.Builder("open", "Unknown2",
+ "9.0");
+ return builder.build();
+ }
+}
diff --git a/tests/src/com/android/ims/rcs/uce/presence/publish/DeviceCapabilityListenerTest.java b/tests/src/com/android/ims/rcs/uce/presence/publish/DeviceCapabilityListenerTest.java
index bf33103f..1959dd0d 100644
--- a/tests/src/com/android/ims/rcs/uce/presence/publish/DeviceCapabilityListenerTest.java
+++ b/tests/src/com/android/ims/rcs/uce/presence/publish/DeviceCapabilityListenerTest.java
@@ -19,7 +19,11 @@ package com.android.ims.rcs.uce.presence.publish;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.ArgumentMatchers.anyBoolean;
import static org.mockito.ArgumentMatchers.anyInt;
+import static org.mockito.ArgumentMatchers.anyList;
+import static org.mockito.Mockito.doNothing;
import static org.mockito.Mockito.doReturn;
+import static org.mockito.Mockito.eq;
+import static org.mockito.Mockito.refEq;
import static org.mockito.Mockito.verify;
import android.content.BroadcastReceiver;
@@ -39,12 +43,18 @@ import androidx.test.ext.junit.runners.AndroidJUnit4;
import androidx.test.filters.SmallTest;
import com.android.ims.ImsTestBase;
+import com.android.ims.rcs.uce.UceStatsWriter;
+import java.util.ArrayList;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Set;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.Mock;
+import org.mockito.Mockito;
@RunWith(AndroidJUnit4.class)
public class DeviceCapabilityListenerTest extends ImsTestBase {
@@ -60,6 +70,7 @@ public class DeviceCapabilityListenerTest extends ImsTestBase {
@Mock DeviceCapabilityListener.ImsMmTelManagerFactory mImsMmTelMgrFactory;
@Mock DeviceCapabilityListener.ImsRcsManagerFactory mImsRcsMgrFactory;
@Mock DeviceCapabilityListener.ProvisioningManagerFactory mProvisioningMgrFactory;
+ @Mock UceStatsWriter mUceStatsWriter;
int mSubId = 1;
@@ -77,6 +88,10 @@ public class DeviceCapabilityListenerTest extends ImsTestBase {
doReturn(true).when(mDeviceCapability).updateVtSetting(anyBoolean());
doReturn(true).when(mDeviceCapability).updateVtSetting(anyBoolean());
doReturn(true).when(mDeviceCapability).updateMmtelCapabilitiesChanged(any());
+
+ doNothing().when(mUceStatsWriter).setImsRegistrationFeatureTagStats(
+ anyInt(), anyList(), anyInt());
+ doNothing().when(mUceStatsWriter).setStoreCompleteImsRegistrationFeatureTagStats(anyInt());
}
@After
@@ -183,8 +198,18 @@ public class DeviceCapabilityListenerTest extends ImsTestBase {
DeviceCapabilityListener deviceCapListener = createDeviceCapabilityListener();
deviceCapListener.setImsCallbackRegistered(true);
RegistrationCallback registrationCallback = deviceCapListener.mRcsRegistrationCallback;
+
+ List<String> list = new ArrayList<>();
+ list.add("+g.3gpp.iari-ref=\"urn%3Aurn-7%3A3gpp-application.ims.iari.rcse.im\"");
+ list.add("+g.3gpp.icsi-ref=\"urn%3Aurn-7%3A3gpp-service.ims.icsi.oma.cpm.session\"");
+ list.add("+g.3gpp.iari-ref=\"urn%3Aurn-7%3A3gpp-application.ims.iari.rcs.ftsms\"");
+ Set<String> featureTags = new HashSet<String>(list);
+
ImsRegistrationAttributes attr = new ImsRegistrationAttributes.Builder(
- ImsRegistrationImplBase.REGISTRATION_TECH_LTE).build();
+ ImsRegistrationImplBase.REGISTRATION_TECH_LTE)
+ .setFeatureTags(featureTags)
+ .build();
+
// Notify DeviceCapabilityListener that registered has caused a change and requires publish
doReturn(true).when(mDeviceCapability).updateImsRcsRegistered(attr);
@@ -195,6 +220,8 @@ public class DeviceCapabilityListenerTest extends ImsTestBase {
verify(mDeviceCapability).updateImsRcsRegistered(attr);
verify(mCallback).requestPublishFromInternal(
PublishController.PUBLISH_TRIGGER_RCS_REGISTERED);
+ verify(mUceStatsWriter).setImsRegistrationFeatureTagStats(anyInt(),
+ refEq(list), eq(ImsRegistrationImplBase.REGISTRATION_TECH_LTE));
}
@Test
@@ -216,6 +243,7 @@ public class DeviceCapabilityListenerTest extends ImsTestBase {
verify(mDeviceCapability).updateImsRcsUnregistered();
verify(mCallback).requestPublishFromInternal(
PublishController.PUBLISH_TRIGGER_RCS_UNREGISTERED);
+ verify(mUceStatsWriter).setStoreCompleteImsRegistrationFeatureTagStats(anyInt());
}
@Test
@@ -237,7 +265,7 @@ public class DeviceCapabilityListenerTest extends ImsTestBase {
private DeviceCapabilityListener createDeviceCapabilityListener() {
DeviceCapabilityListener deviceCapListener = new DeviceCapabilityListener(mContext,
- mSubId, mDeviceCapability, mCallback);
+ mSubId, mDeviceCapability, mCallback, mUceStatsWriter);
deviceCapListener.setImsMmTelManagerFactory(mImsMmTelMgrFactory);
deviceCapListener.setImsRcsManagerFactory(mImsRcsMgrFactory);
deviceCapListener.setProvisioningMgrFactory(mProvisioningMgrFactory);
diff --git a/tests/src/com/android/ims/rcs/uce/presence/publish/PublishControllerImplTest.java b/tests/src/com/android/ims/rcs/uce/presence/publish/PublishControllerImplTest.java
index b4c9b873..804702c4 100644
--- a/tests/src/com/android/ims/rcs/uce/presence/publish/PublishControllerImplTest.java
+++ b/tests/src/com/android/ims/rcs/uce/presence/publish/PublishControllerImplTest.java
@@ -43,6 +43,7 @@ import androidx.test.filters.SmallTest;
import com.android.ims.RcsFeatureManager;
import com.android.ims.rcs.uce.UceController;
import com.android.ims.rcs.uce.UceDeviceState.DeviceStateResult;
+import com.android.ims.rcs.uce.UceStatsWriter;
import com.android.ims.rcs.uce.presence.publish.PublishController.PublishControllerCallback;
import com.android.ims.rcs.uce.presence.publish.PublishControllerImpl.DeviceCapListenerFactory;
import com.android.ims.rcs.uce.presence.publish.PublishControllerImpl.PublishProcessorFactory;
@@ -68,6 +69,7 @@ public class PublishControllerImplTest extends ImsTestBase {
@Mock UceController.UceControllerCallback mUceCtrlCallback;
@Mock RemoteCallbackList<IRcsUcePublishStateCallback> mPublishStateCallbacks;
@Mock DeviceStateResult mDeviceStateResult;
+ @Mock UceStatsWriter mUceStatsWriter;
private int mSubId = 1;
@@ -77,7 +79,7 @@ public class PublishControllerImplTest extends ImsTestBase {
doReturn(mPublishProcessor).when(mPublishProcessorFactory).createPublishProcessor(any(),
eq(mSubId), any(), any());
doReturn(mDeviceCapListener).when(mDeviceCapListenerFactory).createDeviceCapListener(any(),
- eq(mSubId), any(), any());
+ eq(mSubId), any(), any(), any());
doReturn(mDeviceStateResult).when(mUceCtrlCallback).getDeviceState();
doReturn(false).when(mDeviceStateResult).isRequestForbidden();
}
@@ -162,6 +164,8 @@ public class PublishControllerImplTest extends ImsTestBase {
@SmallTest
public void testUnpublish() throws Exception {
PublishControllerImpl publishController = createPublishController();
+ //To initialize the public state to publish_ok.
+ publishController.setCapabilityType(RcsImsCapabilities.CAPABILITY_TYPE_OPTIONS_UCE);
publishController.onUnpublish();
@@ -169,6 +173,8 @@ public class PublishControllerImplTest extends ImsTestBase {
waitForHandlerAction(handler, 1000);
int publishState = publishController.getUcePublishState();
assertEquals(RcsUceAdapter.PUBLISH_STATE_NOT_PUBLISHED, publishState);
+ verify(mPublishProcessor).resetState();
+ verify(mUceStatsWriter).setUnPublish(eq(mSubId));
}
@Test
@@ -349,7 +355,7 @@ public class PublishControllerImplTest extends ImsTestBase {
private PublishControllerImpl createPublishController() {
PublishControllerImpl publishController = new PublishControllerImpl(mContext, mSubId,
mUceCtrlCallback, Looper.getMainLooper(), mDeviceCapListenerFactory,
- mPublishProcessorFactory);
+ mPublishProcessorFactory, mUceStatsWriter);
publishController.setPublishStateCallback(mPublishStateCallbacks);
publishController.setCapabilityType(RcsImsCapabilities.CAPABILITY_TYPE_PRESENCE_UCE);
return publishController;
diff --git a/tests/src/com/android/ims/rcs/uce/presence/publish/PublishProcessorTest.java b/tests/src/com/android/ims/rcs/uce/presence/publish/PublishProcessorTest.java
index d83158f5..d894c331 100644
--- a/tests/src/com/android/ims/rcs/uce/presence/publish/PublishProcessorTest.java
+++ b/tests/src/com/android/ims/rcs/uce/presence/publish/PublishProcessorTest.java
@@ -34,6 +34,7 @@ import androidx.test.filters.SmallTest;
import com.android.ims.ImsTestBase;
import com.android.ims.RcsFeatureManager;
+import com.android.ims.rcs.uce.UceStatsWriter;
import com.android.ims.rcs.uce.presence.publish.PublishController.PublishControllerCallback;
import org.junit.After;
@@ -42,6 +43,7 @@ import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.Mock;
+import java.util.Optional;
@RunWith(AndroidJUnit4.class)
public class PublishProcessorTest extends ImsTestBase {
@@ -50,6 +52,7 @@ public class PublishProcessorTest extends ImsTestBase {
@Mock PublishControllerCallback mPublishCtrlCallback;
@Mock PublishProcessorState mProcessorState;
@Mock PublishRequestResponse mResponseCallback;
+ @Mock UceStatsWriter mUceStatsWriter;
private int mSub = 1;
private long mTaskId = 1L;
@@ -144,6 +147,8 @@ public class PublishProcessorTest extends ImsTestBase {
doReturn(mTaskId).when(mProcessorState).getCurrentTaskId();
doReturn(mTaskId).when(mResponseCallback).getTaskId();
doReturn(true).when(mResponseCallback).needRetry();
+ doReturn(Optional.of(10)).when(mResponseCallback).getCmdErrorCode();
+
PublishProcessor publishProcessor = getPublishProcessor();
publishProcessor.onCommandError(mResponseCallback);
@@ -154,6 +159,8 @@ public class PublishProcessorTest extends ImsTestBase {
verify(mResponseCallback).onDestroy();
verify(mProcessorState).setPublishingFlag(false);
verify(mPublishCtrlCallback).clearRequestCanceledTimer();
+ verify(mUceStatsWriter).setUceEvent(eq(mSub), eq(UceStatsWriter.PUBLISH_EVENT), eq(true),
+ eq(10), eq(0));
}
@Test
@@ -200,6 +207,7 @@ public class PublishProcessorTest extends ImsTestBase {
doReturn(mTaskId).when(mResponseCallback).getTaskId();
doReturn(false).when(mResponseCallback).needRetry();
doReturn(true).when(mResponseCallback).isRequestSuccess();
+ doReturn(Optional.of(200)).when(mResponseCallback).getNetworkRespSipCode();
PublishProcessor publishProcessor = getPublishProcessor();
publishProcessor.onNetworkResponse(mResponseCallback);
@@ -208,6 +216,9 @@ public class PublishProcessorTest extends ImsTestBase {
verify(mResponseCallback).onDestroy();
verify(mProcessorState).setPublishingFlag(false);
verify(mPublishCtrlCallback).clearRequestCanceledTimer();
+
+ verify(mUceStatsWriter).setUceEvent(eq(mSub), eq(UceStatsWriter.PUBLISH_EVENT), eq(true),
+ eq(0), eq(200));
}
@Test
@@ -223,7 +234,7 @@ public class PublishProcessorTest extends ImsTestBase {
private PublishProcessor getPublishProcessor() {
PublishProcessor publishProcessor = new PublishProcessor(mContext, mSub,
- mDeviceCapabilities, mPublishCtrlCallback);
+ mDeviceCapabilities, mPublishCtrlCallback, mUceStatsWriter);
publishProcessor.setProcessorState(mProcessorState);
publishProcessor.onRcsConnected(mRcsFeatureManager);
return publishProcessor;
diff --git a/tests/src/com/android/ims/rcs/uce/request/OptionsCoordinatorTest.java b/tests/src/com/android/ims/rcs/uce/request/OptionsCoordinatorTest.java
index 9c270fbf..1759de5d 100644
--- a/tests/src/com/android/ims/rcs/uce/request/OptionsCoordinatorTest.java
+++ b/tests/src/com/android/ims/rcs/uce/request/OptionsCoordinatorTest.java
@@ -38,11 +38,13 @@ import androidx.test.filters.SmallTest;
import com.android.ims.ImsTestBase;
import com.android.ims.rcs.uce.request.UceRequestCoordinator.RequestResult;
import com.android.ims.rcs.uce.request.UceRequestManager.RequestManagerCallback;
+import com.android.ims.rcs.uce.UceStatsWriter;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.List;
+import java.util.Optional;
import org.junit.After;
import org.junit.Before;
@@ -57,6 +59,7 @@ public class OptionsCoordinatorTest extends ImsTestBase {
@Mock CapabilityRequestResponse mResponse;
@Mock RequestManagerCallback mRequestMgrCallback;
@Mock IRcsUceControllerCallback mUceCallback;
+ @Mock UceStatsWriter mUceStatsWriter;
private int mSubId = 1;
private long mTaskId = 1L;
@@ -93,11 +96,14 @@ public class OptionsCoordinatorTest extends ImsTestBase {
@Test
@SmallTest
public void testRequestCommandError() throws Exception {
+ doReturn(Optional.of(3)).when(mResponse).getCommandError();
OptionsRequestCoordinator coordinator = getOptionsCoordinator();
coordinator.onRequestUpdated(mTaskId, REQUEST_UPDATE_COMMAND_ERROR);
verify(mRequest).onFinish();
+ verify(mUceStatsWriter).setUceEvent(eq(mSubId), eq(UceStatsWriter.OUTGOING_OPTION_EVENT),
+ eq(false), eq(3), eq(0));
Collection<UceRequest> requestList = coordinator.getActivatedRequest();
Collection<RequestResult> resultList = coordinator.getFinishedRequest();
@@ -111,6 +117,7 @@ public class OptionsCoordinatorTest extends ImsTestBase {
public void testRequestNetworkResponse() throws Exception {
OptionsRequestCoordinator coordinator = getOptionsCoordinator();
doReturn(true).when(mResponse).isNetworkResponseOK();
+ doReturn(Optional.of(200)).when(mResponse).getNetworkRespSipCode();
final List<RcsContactUceCapability> updatedCapList = new ArrayList<>();
RcsContactUceCapability updatedCapability = getContactUceCapability();
@@ -124,6 +131,8 @@ public class OptionsCoordinatorTest extends ImsTestBase {
verify(mResponse).removeUpdatedCapabilities(updatedCapList);
verify(mRequest).onFinish();
+ verify(mUceStatsWriter).setUceEvent(eq(mSubId), eq(UceStatsWriter.OUTGOING_OPTION_EVENT),
+ eq(true), eq(0), eq(200));
Collection<UceRequest> requestList = coordinator.getActivatedRequest();
Collection<RequestResult> resultList = coordinator.getFinishedRequest();
@@ -134,9 +143,10 @@ public class OptionsCoordinatorTest extends ImsTestBase {
private OptionsRequestCoordinator getOptionsCoordinator() {
OptionsRequestCoordinator.Builder builder = new OptionsRequestCoordinator.Builder(
- mSubId, Collections.singletonList(mRequest), mRequestMgrCallback);
+ mSubId, Collections.singletonList(mRequest), mRequestMgrCallback, mUceStatsWriter);
builder.setCapabilitiesCallback(mUceCallback);
- return builder.build();
+ OptionsRequestCoordinator coordinator = builder.build();
+ return coordinator;
}
private RcsContactUceCapability getContactUceCapability() {
diff --git a/tests/src/com/android/ims/rcs/uce/request/RemoteOptionsCoordinatorTest.java b/tests/src/com/android/ims/rcs/uce/request/RemoteOptionsCoordinatorTest.java
index 1a6ed4a4..80077114 100644
--- a/tests/src/com/android/ims/rcs/uce/request/RemoteOptionsCoordinatorTest.java
+++ b/tests/src/com/android/ims/rcs/uce/request/RemoteOptionsCoordinatorTest.java
@@ -37,6 +37,7 @@ import com.android.ims.ImsTestBase;
import com.android.ims.rcs.uce.request.RemoteOptionsRequest.RemoteOptResponse;
import com.android.ims.rcs.uce.request.UceRequestCoordinator.RequestResult;
import com.android.ims.rcs.uce.request.UceRequestManager.RequestManagerCallback;
+import com.android.ims.rcs.uce.UceStatsWriter;
import java.util.Collection;
import java.util.Collections;
@@ -54,6 +55,7 @@ public class RemoteOptionsCoordinatorTest extends ImsTestBase {
@Mock RemoteOptResponse mResponse;
@Mock RequestManagerCallback mRequestMgrCallback;
@Mock IOptionsRequestCallback mOptRequestCallback;
+ @Mock UceStatsWriter mUceStatsWriter;
private int mSubId = 1;
private long mTaskId = 1L;
@@ -84,6 +86,8 @@ public class RemoteOptionsCoordinatorTest extends ImsTestBase {
verify(mOptRequestCallback).respondToCapabilityRequest(updatedCapability, true);
verify(mRequest).onFinish();
+ verify(mUceStatsWriter).setUceEvent(eq(mSubId), eq(UceStatsWriter.INCOMING_OPTION_EVENT),
+ eq(true), eq(0), eq(200));
Collection<UceRequest> requestList = coordinator.getActivatedRequest();
Collection<RequestResult> resultList = coordinator.getFinishedRequest();
@@ -94,7 +98,7 @@ public class RemoteOptionsCoordinatorTest extends ImsTestBase {
private RemoteOptionsCoordinator getRemoteOptCoordinator() {
RemoteOptionsCoordinator.Builder builder = new RemoteOptionsCoordinator.Builder(
- mSubId, Collections.singletonList(mRequest), mRequestMgrCallback);
+ mSubId, Collections.singletonList(mRequest), mRequestMgrCallback, mUceStatsWriter);
builder.setOptionsRequestCallback(mOptRequestCallback);
return builder.build();
}
diff --git a/tests/src/com/android/ims/rcs/uce/request/SubscribeCoordinatorTest.java b/tests/src/com/android/ims/rcs/uce/request/SubscribeCoordinatorTest.java
index 137b4ac7..bcd3c98d 100644
--- a/tests/src/com/android/ims/rcs/uce/request/SubscribeCoordinatorTest.java
+++ b/tests/src/com/android/ims/rcs/uce/request/SubscribeCoordinatorTest.java
@@ -39,6 +39,7 @@ import static org.mockito.Mockito.never;
import static org.mockito.Mockito.verify;
import android.net.Uri;
+import android.telephony.ims.RcsContactPresenceTuple;
import android.telephony.ims.RcsContactUceCapability;
import android.telephony.ims.aidl.IRcsUceControllerCallback;
@@ -47,6 +48,7 @@ import androidx.test.filters.SmallTest;
import com.android.ims.ImsTestBase;
import com.android.ims.rcs.uce.UceDeviceState.DeviceStateResult;
+import com.android.ims.rcs.uce.UceStatsWriter;
import com.android.ims.rcs.uce.request.UceRequestCoordinator.RequestResult;
import com.android.ims.rcs.uce.request.UceRequestManager.RequestManagerCallback;
@@ -70,6 +72,7 @@ public class SubscribeCoordinatorTest extends ImsTestBase {
@Mock RequestManagerCallback mRequestMgrCallback;
@Mock IRcsUceControllerCallback mUceCallback;
@Mock DeviceStateResult mDeviceStateResult;
+ @Mock UceStatsWriter mUceStatsWriter;
private int mSubId = 1;
private long mTaskId = 1L;
@@ -106,6 +109,7 @@ public class SubscribeCoordinatorTest extends ImsTestBase {
@Test
@SmallTest
public void testRequestCommandError() throws Exception {
+ doReturn(Optional.of(3)).when(mResponse).getCommandError();
SubscribeRequestCoordinator coordinator = getSubscribeCoordinator();
coordinator.onRequestUpdated(mTaskId, REQUEST_UPDATE_COMMAND_ERROR);
@@ -114,6 +118,9 @@ public class SubscribeCoordinatorTest extends ImsTestBase {
Collection<RequestResult> resultList = coordinator.getFinishedRequest();
assertTrue(requestList.isEmpty());
assertEquals(1, resultList.size());
+
+ verify(mUceStatsWriter).setUceEvent(eq(mSubId), eq(UceStatsWriter.SUBSCRIBE_EVENT),
+ eq(false), eq(3), eq(0));
verify(mRequest).onFinish();
}
@@ -122,6 +129,7 @@ public class SubscribeCoordinatorTest extends ImsTestBase {
public void testRequestNetworkRespSuccess() throws Exception {
SubscribeRequestCoordinator coordinator = getSubscribeCoordinator();
doReturn(true).when(mResponse).isNetworkResponseOK();
+ doReturn(Optional.of(200)).when(mResponse).getNetworkRespSipCode();
coordinator.onRequestUpdated(mTaskId, REQUEST_UPDATE_NETWORK_RESPONSE);
@@ -129,11 +137,28 @@ public class SubscribeCoordinatorTest extends ImsTestBase {
Collection<RequestResult> resultList = coordinator.getFinishedRequest();
assertEquals(1, requestList.size());
assertTrue(resultList.isEmpty());
+
+ verify(mUceStatsWriter).setSubscribeResponse(eq(mSubId), eq(mTaskId), eq(200));
+
verify(mRequest, never()).onFinish();
}
@Test
@SmallTest
+ public void testRequestNetworkRespFailure() throws Exception {
+ doReturn(Optional.of(400)).when(mResponse).getNetworkRespSipCode();
+
+ SubscribeRequestCoordinator coordinator = getSubscribeCoordinator();
+
+ coordinator.onRequestUpdated(mTaskId, REQUEST_UPDATE_NETWORK_RESPONSE);
+
+ verify(mUceStatsWriter).setSubscribeResponse(eq(mSubId), eq(mTaskId), eq(400));
+
+ verify(mRequest).onFinish();
+ }
+
+ @Test
+ @SmallTest
public void testRequestNetworkRespError() throws Exception {
SubscribeRequestCoordinator coordinator = getSubscribeCoordinator();
doReturn(false).when(mResponse).isNetworkResponseOK();
@@ -162,7 +187,8 @@ public class SubscribeCoordinatorTest extends ImsTestBase {
SubscribeRequestCoordinator coordinator = getSubscribeCoordinator();
final List<RcsContactUceCapability> updatedCapList = new ArrayList<>();
- RcsContactUceCapability updatedCapability = getContactUceCapability();
+ RcsContactPresenceTuple tuple = getContactPresenceTuple();
+ RcsContactUceCapability updatedCapability = getContactUceCapability(tuple);
updatedCapList.add(updatedCapability);
doReturn(updatedCapList).when(mResponse).getUpdatedContactCapability();
@@ -171,6 +197,8 @@ public class SubscribeCoordinatorTest extends ImsTestBase {
verify(mRequestMgrCallback).saveCapabilities(updatedCapList);
verify(mUceCallback).onCapabilitiesReceived(updatedCapList);
verify(mResponse).removeUpdatedCapabilities(updatedCapList);
+
+ verify(mUceStatsWriter).setPresenceNotifyEvent(eq(mSubId), eq(mTaskId), any());
}
@Test
@@ -188,6 +216,8 @@ public class SubscribeCoordinatorTest extends ImsTestBase {
verify(mRequestMgrCallback).saveCapabilities(updatedCapList);
verify(mUceCallback).onCapabilitiesReceived(updatedCapList);
verify(mResponse).removeTerminatedResources(updatedCapList);
+
+ verify(mUceStatsWriter).setPresenceNotifyEvent(eq(mSubId), eq(mTaskId), any());
}
@Test
@@ -211,12 +241,16 @@ public class SubscribeCoordinatorTest extends ImsTestBase {
public void testRequestTerminated() throws Exception {
SubscribeRequestCoordinator coordinator = getSubscribeCoordinator();
+ doReturn("noresource").when(mResponse).getTerminatedReason();
+
coordinator.onRequestUpdated(mTaskId, REQUEST_UPDATE_TERMINATED);
Collection<UceRequest> requestList = coordinator.getActivatedRequest();
Collection<RequestResult> resultList = coordinator.getFinishedRequest();
assertTrue(requestList.isEmpty());
assertEquals(1, resultList.size());
+
+ verify(mUceStatsWriter).setSubscribeTerminated(eq(mSubId), eq(mTaskId), eq("noresource"));
}
@Test
@@ -234,8 +268,18 @@ public class SubscribeCoordinatorTest extends ImsTestBase {
private SubscribeRequestCoordinator getSubscribeCoordinator() {
SubscribeRequestCoordinator.Builder builder = new SubscribeRequestCoordinator.Builder(
- mSubId, Collections.singletonList(mRequest), mRequestMgrCallback);
+ mSubId, Collections.singletonList(mRequest), mRequestMgrCallback, mUceStatsWriter);
builder.setCapabilitiesCallback(mUceCallback);
+ SubscribeRequestCoordinator subCoor = builder.build();
+ return subCoor;
+ }
+
+ private RcsContactUceCapability getContactUceCapability(RcsContactPresenceTuple tuple) {
+ int requestResult = RcsContactUceCapability.REQUEST_RESULT_FOUND;
+ RcsContactUceCapability.PresenceBuilder builder =
+ new RcsContactUceCapability.PresenceBuilder(
+ mContact, RcsContactUceCapability.SOURCE_TYPE_NETWORK, requestResult);
+ builder.addCapabilityTuple(tuple);
return builder.build();
}
@@ -246,4 +290,12 @@ public class SubscribeCoordinatorTest extends ImsTestBase {
mContact, RcsContactUceCapability.SOURCE_TYPE_NETWORK, requestResult);
return builder.build();
}
+
+ private RcsContactPresenceTuple getContactPresenceTuple() {
+ RcsContactPresenceTuple.Builder builder =
+ new RcsContactPresenceTuple.Builder("open", RcsContactPresenceTuple.SERVICE_ID_CHAT_V1,
+ "1.0");
+ return builder.build();
+
+ }
}