5G-Tests

Auf Geräten mit Android 11 oder höher unterstützt die Android Comms Test Suite (ACTS) die wichtigsten Anwendungsfälle für 5G NSA für Umgebungen mit einem oder mehreren Geräten. Auf dieser Seite erfahren Sie, wie ACTS erkennt und dafür sorgt, dass ein Gerät mit einem 5G-NSA-Netzwerk verbunden ist. Außerdem erhalten Sie einen Überblick über die Testpfadstruktur.

Erkennung

Ab Android 11 enthält das Android-Framework APIs zur Erkennung von 5G. Weitere Informationen finden Sie unter 5G-Erkennung.

Scripting Layer for Android (SL4A) unterstützt die 5G-Erkennung, indem LISTEN_DISPLAY_INFO_CHANGED-Ereignisse von PhoneStateListener überwacht und die Methode onDisplayInfoChanged() überschrieben wird. SL4A verwendet die folgenden Werte, um zwischen NSA- (Non-Standalone), mmWave- (Millimeterwelle) und SA- (Standalone)-Verbindungstypen für 5G zu unterscheiden:

Verbindungstyp Werte
5G NSA TelephonyManager.getDataNetworkType() = LTE

TelephonyDisplayInfo.getNetworkType() = LTE

TelephonyDisplayInfo.getOverrideNetworkType() = NR_NSA

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

TelephonyDisplayInfo.getNetworkType() = NR

Bei ACTS-Tests wird die Methode is_current_network_5g_nsa() verwendet, um sicherzustellen, dass das Gerät mit einem 5G-NSA-Netzwerk verbunden ist.

Testpfade und Teststruktur

Alle Telefontests (über 1.400) in ACTS sind Teil des Verzeichnisses tel. 5G-Tests befinden sich im Verzeichnis tools/test/connectivity/acts\_tests/tests/google/nr/ (nr steht für „new radio“). Mit der Einführung der 5G-Funkschnittstellentechnologie (Radio Access Technology, RAT) werden 5G-Tests in Livenetzumgebungen getrennt von 4G, 3G, 2G und 1x durchgeführt, damit ACTS-Tests skalierbar und unabhängig sind.

Im Folgenden werden Testklassen für 5G-Tests beschrieben.

  • Nsa5gActivationTest: Prüft, ob ein einzelnes Gerät aus verschiedenen Status korrekt mit 5G NSA verbunden ist.

    test_5g_nsa_activation_from_apm test_5g_nsa_activation_from_reboot
    test_5g_nsa_activation_from_3g
    
  • Nsa5gVoiceTest: Prüft die Funktionsweise von Sprachanrufen zwischen mehreren Geräten.

    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: Überprüft Datenfunktionen wie Browserdaten, verzögerte Daten und Messung.

    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: Prüft das Senden und Empfangen von SMS zwischen mehreren Geräten.

    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: Überprüft das Senden und Empfangen von MMS-Nachrichten zwischen mehreren Geräten.

    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: Prüft das WLAN-Tethering über ein Gerät, das mit einer 5G NSA verbunden ist.

    test_5g_nsa_tethering_to_5gwifi test_5g_nsa_tethering_to_2gwifi
    

Beispiel für eine Testausgabe

Wenn Sie prüfen möchten, ob ein Gerät 5G NSA verwendet, sehen Sie in test_run_info.txt nach, ob die folgenden Protokollmeldungen vorhanden sind.

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]

Fehlerbehebung

Wenn Sie die API-Antwort ohne Ausführen eines ACTS-Tests bei einem Fehler priorisieren möchten, verwenden Sie die folgenden Befehle:

>> 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}