Teste 5G

Para dispositivos com o Android 11 ou versões mais recentes, o Pacote de testes de comunicação do Android (ACTS, na sigla em inglês) oferece suporte aos principais casos de uso da NSA 5G para ambientes de um ou vários dispositivos. Nesta página, explicamos como o ACTS detecta e garante que um dispositivo esteja conectado a uma rede 5G da NSA e oferece uma visão geral da estrutura do caminho de teste.

Detecção

No Android 11 e versões mais recentes, o framework do Android inclui APIs para detectar 5G. Para mais detalhes, consulte Detecção de 5G.

A camada de scripting para Android (SL4A) oferece suporte à detecção 5G, detectando eventos LISTEN_DISPLAY_INFO_CHANGED do PhoneStateListener e substituindo o método onDisplayInfoChanged(). O SL4A usa os seguintes valores para distinguir entre os tipos de conexão NSA (não independente), mmWave (ondas milimétricas) e SA (independente) para 5G:

Tipo de conexão Valores
NSA 5G TelephonyManager.getDataNetworkType() = LTE

TelephonyDisplayInfo.getNetworkType() = LTE

TelephonyDisplayInfo.getOverrideNetworkType() = NR_NSA

5G mmWave TelephonyDisplayInfo.getOverrideNetworkType() = NR_MMWAVE
SA 5G TelephonyManager.getDataNetworkType() = NR

TelephonyDisplayInfo.getNetworkType() = NR

Os testes ACTS usam o método is_current_network_5g_nsa() para garantir que o dispositivo esteja conectado a uma rede 5G NSA.

Caminhos e estrutura do teste

Todos os testes de telefonia (mais de 1.400) no ACTS fazem parte do diretório tel. Os testes 5G estão localizados no diretório tools/test/connectivity/acts\_tests/tests/google/nr/ (nr significa novo rádio). Com a introdução da tecnologia de acesso por rádio 5G (RAT), os testes 5G são separados do 4G, 3G, 2G e 1x para ambientes de rede ativos, permitindo que os testes ACTS sejam escalonáveis e independentes.

Veja a seguir as classes para testes 5G.

  • Nsa5gActivationTest: verifica se um único dispositivo se conecta corretamente ao 5G NSA de vários estados.

    test_5g_nsa_activation_from_apm test_5g_nsa_activation_from_reboot
    test_5g_nsa_activation_from_3g
    
  • Nsa5gVoiceTest: verifica a funcionalidade de ligação entre vários dispositivos.

    test_5g_nsa_call_volte_to_volte test_5g_nsa_call_volte_to_3g
    test_5g_nsa_call_volte_mo_hold_unhold
    test_5g_nsa_call_mo_volte_in_active_data_transfer
    test_5g_nsa_volte_in_call_wifi_toggling
    
  • Nsa5gDataTest: verifica a funcionalidade dos dados, como navegação, armazenamento de dados e limitação.

    test_5g_nsa_data_browsing test_5g_nsa_data_stall_recovery
    test_5g_nsa_metered_cellular test_5g_nsa_metered_airplane
    test_5g_nsa_metered_wifi
    
  • Nsa5gSmsTest: verifica o envio e o recebimento de mensagens SMS entre vários dispositivos.

    test_5g_nsa_sms_mo_mt test_5g_nsa_sms_mo_mt_volte
    test_5g_nsa_sms_mo_mt_in_call_volte test_5g_nsa_sms_mo_mt_iwlan
    test_5g_nsa_sms_mo_mt_in_call_iwlan
    
  • Nsa5gMmsTest: verifica o envio e o recebimento de mensagens MMS entre vários dispositivos.

    test_5g_nsa_mms_mo_mt test_5g_nsa_mms_mo_mt_in_call_volte
    test_5g_nsa_mms_mo_mt_iwlan_apm_off test_5g_nsa_mms_mo_mt_in_call_iwlan
    test_5g_nsa_mms_mo_mt_in_call_volte_wifi
    
  • Nsa5gTetheringTest: verifica o tethering de Wi-Fi em um dispositivo conectado à rede 5G NSA.

    test_5g_nsa_tethering_to_5gwifi test_5g_nsa_tethering_to_2gwifi
    

Exemplo de saída de teste

Para confirmar que um dispositivo está em 5G NSA, procure as seguintes mensagens de registro em test_run_info.txt.

INFO [AndroidDevice|<SERIAL_ID>] Current ModePref for Sub 2 is in
NETWORK_MODE_NR_LTE_GSM_WCDMA [tel_test_utils.py:set_preferred_network_mode_pref:7634]
INFO [AndroidDevice|<SERIAL_ID>] Got expected event {'name': 'DisplayInfoChanged',
'data': {'override': 'NR_NSA', 'network': 'LTE', 'subscriptionId': 2147483647},
'time': 1611094526689} [tel_5g_utils.py:is_current_network_5g_nsa:58]

Solução de problemas

Para fazer a triagem da resposta da API sem executar um teste ACTS durante a falha, use os comandos abaixo:

>> python3
>> from acts.controllers.android_device import AndroidDevice; ad = AndroidDevice('<SERIAL_ID>'); a, b = ad.get_droid()
>> a.telephonyStartTrackingDisplayInfoChange()
>> b.start()
>> b.wait_for_event("DisplayInfoChanged", lambda _: True, timeout=30)

{'name': 'DisplayInfoChanged', 'data': 'TelephonyDisplayInfo {network=LTE, override=LTE_CA, 'time': 1586483596907}