Merge "Add the SPA page enter/leave logging metrcis." into udc-dev
This commit is contained in:
@@ -25,12 +25,15 @@ import com.android.settings.spa.SpaActivity.Companion.startSpaActivity
|
||||
import com.android.settings.spa.SpaActivity.Companion.startSpaActivityForApp
|
||||
import com.android.settingslib.spa.framework.util.KEY_DESTINATION
|
||||
import com.google.common.truth.Truth.assertThat
|
||||
import org.junit.Before
|
||||
import org.junit.Rule
|
||||
import org.junit.Test
|
||||
import org.junit.runner.RunWith
|
||||
import org.mockito.Answers
|
||||
import org.mockito.ArgumentCaptor
|
||||
import org.mockito.Mock
|
||||
import org.mockito.Mockito.verify
|
||||
import org.mockito.Mockito.`when`
|
||||
import org.mockito.junit.MockitoJUnit
|
||||
import org.mockito.junit.MockitoRule
|
||||
|
||||
@@ -39,9 +42,14 @@ class SpaActivityTest {
|
||||
@get:Rule
|
||||
val mockito: MockitoRule = MockitoJUnit.rule()
|
||||
|
||||
@Mock
|
||||
@Mock(answer = Answers.RETURNS_DEEP_STUBS)
|
||||
private lateinit var context: Context
|
||||
|
||||
@Before
|
||||
fun setUp() {
|
||||
`when`(context.applicationContext.packageName).thenReturn("com.android.settings")
|
||||
}
|
||||
|
||||
@Test
|
||||
fun startSpaActivity() {
|
||||
context.startSpaActivity(DESTINATION)
|
||||
|
@@ -0,0 +1,95 @@
|
||||
/*
|
||||
* Copyright (C) 2023 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.settings.spa.core.instrumentation
|
||||
|
||||
import android.os.SystemClock
|
||||
import androidx.test.ext.junit.runners.AndroidJUnit4
|
||||
import com.google.common.truth.Truth.assertThat
|
||||
import org.junit.Before
|
||||
import org.junit.Test
|
||||
import org.junit.runner.RunWith
|
||||
|
||||
/** Tests for {@link MetricsDataModel}. */
|
||||
@RunWith(AndroidJUnit4::class)
|
||||
class MetricsDataModelTest {
|
||||
private val TEST_PID = "pseudo_page_id"
|
||||
|
||||
private lateinit var metricsDataModel: MetricsDataModel
|
||||
|
||||
@Before
|
||||
fun setUp() {
|
||||
metricsDataModel = MetricsDataModel()
|
||||
}
|
||||
|
||||
@Test
|
||||
fun initMetricsDataModel() {
|
||||
assertThat(metricsDataModel.pageTimeStampList.size).isEqualTo(0)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun addTimeStamp_addOnePageTimeStamp_sizeShouldBeOne() {
|
||||
metricsDataModel.addTimeStamp(PageTimeStamp(TEST_PID, System.currentTimeMillis()))
|
||||
|
||||
assertThat(metricsDataModel.pageTimeStampList.size).isEqualTo(1)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun addTimeStamp_addTwoSamePageTimeStamp_sizeShouldBeTwo() {
|
||||
metricsDataModel.addTimeStamp(PageTimeStamp(TEST_PID, System.currentTimeMillis()))
|
||||
metricsDataModel.addTimeStamp(PageTimeStamp(TEST_PID, System.currentTimeMillis()))
|
||||
|
||||
assertThat(metricsDataModel.pageTimeStampList.size).isEqualTo(2)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun getPageDuration_getExistPageId_mustFoundValue() {
|
||||
metricsDataModel.addTimeStamp(PageTimeStamp(TEST_PID, System.currentTimeMillis()))
|
||||
SystemClock.sleep(5)
|
||||
|
||||
assertThat(metricsDataModel.getPageDuration(TEST_PID).toInt()).isGreaterThan(0)
|
||||
assertThat(metricsDataModel.pageTimeStampList.size).isEqualTo(0)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun getPageDuration_getNonExistPageId_valueShouldBeZero() {
|
||||
metricsDataModel.addTimeStamp(PageTimeStamp(TEST_PID, System.currentTimeMillis()))
|
||||
|
||||
assertThat(metricsDataModel.getPageDuration("WRONG_ID").toLong()).isEqualTo(0L)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun getPageDuration_getExistPageIdAndDonotRemoved_sizeShouldBeOne() {
|
||||
metricsDataModel.addTimeStamp(PageTimeStamp(TEST_PID, System.currentTimeMillis()))
|
||||
SystemClock.sleep(5)
|
||||
|
||||
assertThat(metricsDataModel.getPageDuration(TEST_PID, false).toLong()).isGreaterThan(0L)
|
||||
assertThat(metricsDataModel.pageTimeStampList.size).isEqualTo(1)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun getPageDuration_getTwoExistPageId_theOrderIsLIFO() {
|
||||
metricsDataModel.addTimeStamp(PageTimeStamp(TEST_PID, 10000L))
|
||||
metricsDataModel.addTimeStamp(PageTimeStamp(TEST_PID, 20000L))
|
||||
|
||||
// The formula is d1 = t1 - 20000, d2 = t2 - 10000
|
||||
// d2 - d1 = t2 - t1 + 10000, because t2 > t1 the result of d2 - d1 is greater 10000
|
||||
val duration1 = metricsDataModel.getPageDuration(TEST_PID).toLong()
|
||||
SystemClock.sleep(5)
|
||||
val duration2 = metricsDataModel.getPageDuration(TEST_PID).toLong()
|
||||
|
||||
assertThat(duration2 - duration1).isGreaterThan(10000L)
|
||||
}
|
||||
}
|
@@ -0,0 +1,83 @@
|
||||
/*
|
||||
* Copyright (C) 2023 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.settings.spa.core.instrumentation
|
||||
|
||||
import android.app.settings.SettingsEnums
|
||||
import android.os.Bundle
|
||||
import androidx.test.ext.junit.runners.AndroidJUnit4
|
||||
import com.android.settingslib.spa.framework.common.LOG_DATA_SESSION_NAME
|
||||
import com.android.settingslib.spa.framework.common.LogEvent
|
||||
import com.android.settingslib.spa.framework.util.SESSION_BROWSE
|
||||
import com.android.settingslib.spa.framework.util.SESSION_SEARCH
|
||||
import com.google.common.truth.Truth.assertThat
|
||||
import org.junit.Before
|
||||
import org.junit.Test
|
||||
import org.junit.runner.RunWith
|
||||
|
||||
/** Tests for {@link SpaLogData}. */
|
||||
@RunWith(AndroidJUnit4::class)
|
||||
class SpaLogDataTest {
|
||||
private val TEST_PID = "pseudo_page_id"
|
||||
|
||||
private lateinit var bundle: Bundle
|
||||
private lateinit var dataModel: MetricsDataModel
|
||||
|
||||
@Before
|
||||
fun setUp() {
|
||||
bundle = Bundle()
|
||||
dataModel = MetricsDataModel()
|
||||
}
|
||||
|
||||
@Test
|
||||
fun getSessionType_withoutSessionExtraData_returnSessionUnknow() {
|
||||
val spaLogData = SpaLogData(TEST_PID, LogEvent.PAGE_ENTER, bundle, dataModel)
|
||||
|
||||
assertThat(spaLogData.getSessionType()).isEqualTo(SettingsEnums.SESSION_UNKNOWN)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun getSessionType_hasSessionBrowseExtraData_returnSessionBrowse() {
|
||||
bundle.putString(LOG_DATA_SESSION_NAME, SESSION_BROWSE)
|
||||
val spaLogData = SpaLogData(TEST_PID, LogEvent.PAGE_ENTER, bundle, dataModel)
|
||||
|
||||
assertThat(spaLogData.getSessionType()).isEqualTo(SettingsEnums.BROWSE)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun getSessionType_hasSessionSearchExtraData_returnSessionSearch() {
|
||||
bundle.putString(LOG_DATA_SESSION_NAME, SESSION_SEARCH)
|
||||
val spaLogData = SpaLogData(TEST_PID, LogEvent.PAGE_ENTER, bundle, dataModel)
|
||||
|
||||
assertThat(spaLogData.getSessionType()).isEqualTo(SettingsEnums.SEARCH)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun getSessionType_hasSessionUnknownExtraData_returnSessionUnknow() {
|
||||
bundle.putString(LOG_DATA_SESSION_NAME, "SESSION_OTHER")
|
||||
val spaLogData = SpaLogData(TEST_PID, LogEvent.PAGE_ENTER, bundle, dataModel)
|
||||
|
||||
assertThat(spaLogData.getSessionType()).isEqualTo(SettingsEnums.SESSION_UNKNOWN)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun getPageId_withPageEvent_returnInputId() {
|
||||
val spaLogData1 = SpaLogData(TEST_PID, LogEvent.PAGE_ENTER, bundle, dataModel)
|
||||
assertThat(spaLogData1.getPageId()).isEqualTo(TEST_PID)
|
||||
|
||||
val spaLogData2 = SpaLogData(TEST_PID, LogEvent.PAGE_LEAVE, bundle, dataModel)
|
||||
assertThat(spaLogData2.getPageId()).isEqualTo(TEST_PID)
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user