• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1import os
2import re
3
4from acts import utils
5from acts import signals
6from acts.base_test import BaseTestClass
7from acts_contrib.test_utils.tel.tel_defines import EventSmsSentSuccess
8from acts_contrib.test_utils.tel.tel_test_utils import get_iccid_by_adb
9from acts_contrib.test_utils.tel.tel_test_utils import is_sim_ready_by_adb
10
11
12class GnssSimInventoryTest(BaseTestClass):
13    """ GNSS SIM Inventory Tests"""
14
15    def setup_class(self):
16        super().setup_class()
17        self.ad = self.android_devices[0]
18
19    def check_device_status(self):
20        if int(self.ad.adb.shell("settings get global airplane_mode_on")) != 0:
21            self.ad.log.info("Force airplane mode off")
22            utils.force_airplane_mode(self.ad, False)
23        if not is_sim_ready_by_adb(self.ad.log, self.ad):
24            raise signals.TestFailure("SIM card is not loaded and ready.")
25
26    def get_imsi(self):
27        self.ad.log.info("Get imsi from netpolicy.xml")
28        try:
29            tmp_imsi = self.ad.adb.shell("cat /data/system/netpolicy.xml")
30            imsi = re.compile(r'(\d{15})').search(tmp_imsi).group(1)
31            return imsi
32        except Exception as e:
33            raise signals.TestFailure("Fail to get imsi : %s" % e)
34
35    def get_iccid(self):
36        iccid = str(get_iccid_by_adb(self.ad))
37        if not isinstance(iccid, int):
38            self.ad.log.info("Unable to get iccid via adb. Changed to isub.")
39            tmp_iccid = self.ad.adb.shell("dumpsys isub | grep iccid")
40            iccid = re.compile(r'(\d{20})').search(tmp_iccid).group(1)
41            return iccid
42        raise signals.TestFailure("Fail to get iccid")
43
44    def test_gnss_sim_inventory(self):
45        sim_inventory_recipient = "0958787507"
46        self.check_device_status()
47        sms_message = "imsi: %s, iccid: %s, ldap: %s, model: %s, sn: %s" % (
48            self.get_imsi(), self.get_iccid(), os.getlogin(), self.ad.model,
49            self.ad.serial)
50        self.ad.log.info(sms_message)
51        try:
52            self.ad.log.info("Send SMS by SL4A.")
53            self.ad.droid.smsSendTextMessage(sim_inventory_recipient,
54                                             sms_message, True)
55            self.ad.ed.pop_event(EventSmsSentSuccess, 10)
56        except Exception as e:
57            raise signals.TestFailure(e)
58