示例#1
0
 def setUp(self):
     self.mme = Mme(
         "mme", 8999, {
             "system": {
                 "mmeName":
                 "Istanbul",
                 "servedGummeis": [
                     (("28603", "28604"), (0, 1, 2), (23, 58, 127)),
                     (("00108"), (0, ), (12, 13, 14)),
                 ],
                 "maximumEnbsAllowed":
                 2,
             },
             "s1": {
                 "s1SetupTimeToWait": 1,
             },
         })
     self.mme.execute()
     self.enb = Enb(
         "enb", 9000, {
             "control": {
                 "adminState": True,
             },
             "system": {
                 "globalEnbId": 345,
                 "enbName": "Taksim",
                 "supportedTas": [
                     (127, ("28603", "28604")),
                 ],
                 "csgIdList": [],
                 "defaultPagingDrx": [32, 64, 128],
             },
             "rrc": {
                 "maxRrcConnectionSetupAttempts": 5,
                 "rrcConnectionSetupTimeout": 0.7,
             },
             "mme": {
                 "address": (localhost(), 8999),
                 "s1SetupParameters": ConfigPath("system"),
                 "properties": None,
             },
         })
     self.enb.execute()
     self.numUes = 5
     self.ueIoServices = [
         IoService(str(i), 9001 + i) for i in range(self.numUes)
     ]
     [s.start() for s in self.ueIoServices]
示例#2
0
文件: test_rrc.py 项目: BBOZKUS/pyEPS
    def setUp(self):
        self.mme = Mme("mme", 8999, {
            "system": {
                "mmeName": "Istanbul",
                "servedGummeis": [
                    (("28603", "28604"), (0, 1, 2), (23, 58, 127)),
                    (("00108"), (0,), (12, 13, 14)),
                ],
                "maximumEnbsAllowed": 2,
            },
            "s1": {
                "s1SetupTimeToWait": 1,
            },
        })
        self.mme.execute()
        self.enb = Enb("enb", 9000, {
            "control": {
                "adminState": True,
            },
            "system": {
                "globalEnbId": 345,
                "enbName": "Taksim",
                "supportedTas": [
                    (127, ("28603", "28604")),
                ],
                "csgIdList": [],
                "defaultPagingDrx": [32, 64, 128],
            },
            "rrc": {
                "maxRrcConnectionSetupAttempts": 5,
                "rrcConnectionSetupTimeout": 0.7,
            },
            "mme": {
                "address": (localhost(), 8999),
                "s1SetupParameters": ConfigPath("system"),
                "properties": None,
            },
        })
        self.enb.execute()
        procedureParameters = {
            "maxPrachPreambleAttempts": 5,
            "prachPreambleRepeatDelay": 0.7,
            "macContentionResolutionTimeout": 0.5,
            "rrcConnectionSetupTimeoutT300": 2.0
        }
        args = lambda i: {
            "ueIdentityType": "randomValue",
            "ueIdentityValue": 3434,
            "rrcEstablishmentCause": "moSignaling",
            "selectedPlmnIdentity": 2801,
            "initialNasMessage": {
                "nasMessageType": "attachRequest"
            },
        }

        self.ueIoServices = [IoService(str(i), 9001 + i) for i in range(20)]
        [s.start() for s in self.ueIoServices]
        self.ueProcedures = [UeRrcConnectionEstablishmentProcedure(procedureParameters, (localhost(), 9000),
            s, self.__procedureCompleteCallback__, args(i)) for i, s in enumerate(self.ueIoServices)]
        self.numSuccess = 0
示例#3
0
 def setUp(self):
     self.mme = Mme("mme", 8999, {
         "system": {
             "mmeName": "Istanbul",
             "servedGummeis": [
                 (("28603", "28604"), (0, 1, 2), (23, 58, 127)),
                 (("00108"), (0,), (12, 13, 14)),
             ],
             "maximumEnbsAllowed": 2,
         },
         "s1": {
             "s1SetupTimeToWait": 1,
         },
     })
     self.mme.execute()
     self.enb = Enb("enb", 9000, {
         "control": {
             "adminState": True,
         },
         "system": {
             "globalEnbId": 345,
             "enbName": "Taksim",
             "supportedTas": [
                 (127, ("28603", "28604")),
             ],
             "csgIdList": [],
             "defaultPagingDrx": [32, 64, 128],
         },
         "rrc": {
             "maxRrcConnectionSetupAttempts": 5,
             "rrcConnectionSetupTimeout": 0.7,
         },
         "mme": {
             "address": (localhost(), 8999),
             "s1SetupParameters": ConfigPath("system"),
             "properties": None,
         },
     })
     self.enb.execute()
     self.numUes = 5
     self.ueIoServices = [IoService(str(i), 9001 + i) for i in range(self.numUes)]
     [s.start() for s in self.ueIoServices]
示例#4
0
class TestS1Interface(unittest.TestCase):
    def setUp(self):
        self.mme = Mme(
            "mme", 8999, {
                "system": {
                    "mmeName":
                    "Istanbul",
                    "servedGummeis": [
                        (("28603", "28604"), (0, 1, 2), (23, 58, 127)),
                        (("00108"), (0, ), (12, 13, 14)),
                    ],
                    "maximumEnbsAllowed":
                    2,
                },
                "s1": {
                    "s1SetupTimeToWait": 1,
                },
            })
        self.mme.execute()
        self.enb = Enb(
            "enb", 9000, {
                "control": {
                    "adminState": True,
                },
                "system": {
                    "globalEnbId": 345,
                    "enbName": "Taksim",
                    "supportedTas": [
                        (127, ("28603", "28604")),
                    ],
                    "csgIdList": [],
                    "defaultPagingDrx": [32, 64, 128],
                },
                "rrc": {
                    "maxRrcConnectionSetupAttempts": 5,
                    "rrcConnectionSetupTimeout": 0.7,
                },
                "mme": {
                    "address": (localhost(), 8999),
                    "s1SetupParameters": ConfigPath("system"),
                    "properties": None,
                },
            })
        self.enb.execute()

    def tearDown(self):
        [n.terminate() for n in (self.enb, self.mme)]

    def test_s1SetupSuccessful(self):
        time.sleep(0.1)
        self.assertEqual(self.enb.config.getValue("mme.properties.name"),
                         "Istanbul")

    def test_rrcConnectionSetupProcedureSuccessful(self):
        time.sleep(0.1)  # Wait for S1 Setup

        def rrcComplete(result):
            self.result = result

        self.result = None
        ueIoService = IoService("ue", 9001)
        ueIoService.start()
        rrcProcedure = RrcConnectionEstablishmentProcedure(
            {
                "maxPrachPreambleAttempts": 5,
                "prachPreambleRepeatDelay": 0.7,
                "macContentionResolutionTimeout": 0.5,
                "rrcConnectionSetupTimeoutT300": 2.0
            }, (localhost(), 9000), ueIoService, rrcComplete, {
                "ueIdentityType": "randomValue",
                "ueIdentityValue": 3434,
                "rrcEstablishmentCause": "moSignaling",
                "selectedPlmnIdentity": 2801,
                "initialNasMessage": {
                    "nasMessageType": "attachRequest"
                },
            })
        rrcProcedure.execute()
        time.sleep(2)
        self.assertEqual(self.result,
                         RrcConnectionEstablishmentProcedure.Success)
        ueIoService.stop()
示例#5
0
class TestEnbRrcConnectionEstablishment(unittest.TestCase):

    def setUp(self):
        self.mme = Mme("mme", 8999, {
            "system": {
                "mmeName": "Istanbul",
                "servedGummeis": [
                    (("28603", "28604"), (0, 1, 2), (23, 58, 127)),
                    (("00108"), (0,), (12, 13, 14)),
                ],
                "maximumEnbsAllowed": 2,
            },
            "s1": {
                "s1SetupTimeToWait": 1,
            },
        })
        self.mme.execute()
        self.enb = Enb("enb", 9000, {
            "control": {
                "adminState": True,
            },
            "system": {
                "globalEnbId": 345,
                "enbName": "Taksim",
                "supportedTas": [
                    (127, ("28603", "28604")),
                ],
                "csgIdList": [],
                "defaultPagingDrx": [32, 64, 128],
            },
            "rrc": {
                "maxRrcConnectionSetupAttempts": 5,
                "rrcConnectionSetupTimeout": 0.7,
            },
            "mme": {
                "address": (localhost(), 8999),
                "s1SetupParameters": ConfigPath("system"),
                "properties": None,
            },
        })
        self.enb.execute()
        self.numUes = 5
        self.ueIoServices = [IoService(str(i), 9001 + i) for i in range(self.numUes)]
        [s.start() for s in self.ueIoServices]

    def tearDown(self):
        [n.terminate() for n in (self.enb, self.mme)]
        [s.stop() for s in self.ueIoServices]

    def test_noRrcConnectionSetupCompleteReceived(self):
        time.sleep(0.1)
        temporaryCrnti = 0
        self.ueIoServices[0].sendMessage((localhost(), 9000), *rrcConnectionRequest(temporaryCrnti, "randomValue", 3434, "moSignaling"))
        time.sleep(2.5) # more than 3* 0.5 = 1.5 seconds  + 0.5 seconds
        #self.assertEqual(self.handler.kpis["numRrcConnectionEstablishmentFailures"], 1)

    def test_singleUeRrcEstablishmentSuccess(self):
        time.sleep(0.1)
        temporaryCrnti = 0
        rrcTransactionIdentifier = 0
        self.ueIoServices[0].sendMessage((localhost(), 9000), *rrcConnectionRequest(
            temporaryCrnti, "randomValue", 3434, "moSignaling"))
        self.ueIoServices[0].sendMessage((localhost(), 9000), *rrcConnectionSetupComplete(
            rrcTransactionIdentifier, 28001, {"nasMessageType": "attachRequest"}))
        time.sleep(0.1) # ensure the enb call back is not waiting for rrc complete
        self.assertEqual(self.enb.state.uePool.numUes(), 1)

    def test_nUeRrcEstablishmentSuccess(self):
        time.sleep(0.1)
        for temporaryCrnti, s in enumerate(self.ueIoServices):
            s.sendMessage((localhost(), 9000), *rrcConnectionRequest(
                temporaryCrnti, "randomValue", 3434, "moSignaling") )
            time.sleep(0.1)  # need this to solve issue of synch
        for rrcTransactionIdentifier, s in enumerate(self.ueIoServices):
            s.sendMessage((localhost(), 9000), *rrcConnectionSetupComplete(
                rrcTransactionIdentifier, 28001, {"nasMessageType": "attachRequest"}))
            time.sleep(0.1)
        time.sleep(0.1) # need this to solve issue of synch
        self.assertEqual(self.enb.state.uePool.numUes(), self.numUes)
示例#6
0
class TestS1Interface(unittest.TestCase):

    def setUp(self):
        self.mme = Mme("mme", 8999, {
            "system": {
                "mmeName": "Istanbul",
                "servedGummeis": [
                    (("28603", "28604"), (0, 1, 2), (23, 58, 127)),
                    (("00108"), (0,), (12, 13, 14)),
                ],
                "maximumEnbsAllowed": 2,
            },
            "s1": {
                "s1SetupTimeToWait": 1,
            },
        })
        self.mme.execute()
        self.enb = Enb("enb", 9000, {
            "control": {
                "adminState": True,
            },
            "system": {
                "globalEnbId": 345,
                "enbName": "Taksim",
                "supportedTas": [
                    (127, ("28603", "28604")),
                ],
                "csgIdList": [],
                "defaultPagingDrx": [32, 64, 128],
            },
            "rrc": {
                "maxRrcConnectionSetupAttempts": 5,
                "rrcConnectionSetupTimeout": 0.7,
            },
            "mme": {
                "address": (localhost(), 8999),
                "s1SetupParameters": ConfigPath("system"),
                "properties": None,
            },
        })
        self.enb.execute()

    def tearDown(self):
        [n.terminate() for n in (self.enb, self.mme)]

    def test_s1SetupSuccessful(self):
        time.sleep(0.1)
        self.assertEqual(self.enb.config.getValue("mme.properties.name"), "Istanbul")

    def test_rrcConnectionSetupProcedureSuccessful(self):
        time.sleep(0.1) # Wait for S1 Setup
        def rrcComplete(result):
            self.result = result
        self.result = None
        ueIoService = IoService("ue", 9001)
        ueIoService.start()
        rrcProcedure = RrcConnectionEstablishmentProcedure({
            "maxPrachPreambleAttempts": 5,
            "prachPreambleRepeatDelay": 0.7,
            "macContentionResolutionTimeout": 0.5,
            "rrcConnectionSetupTimeoutT300": 2.0
        }, (localhost(), 9000), ueIoService, rrcComplete, {
            "ueIdentityType": "randomValue",
            "ueIdentityValue": 3434,
            "rrcEstablishmentCause": "moSignaling",
            "selectedPlmnIdentity": 2801,
            "initialNasMessage": {
                "nasMessageType": "attachRequest"
            },
        })
        rrcProcedure.execute()
        time.sleep(2)
        self.assertEqual(self.result, RrcConnectionEstablishmentProcedure.Success)
        ueIoService.stop()
示例#7
0
class TestEnbRrcConnectionEstablishment(unittest.TestCase):
    def setUp(self):
        self.mme = Mme(
            "mme", 8999, {
                "system": {
                    "mmeName":
                    "Istanbul",
                    "servedGummeis": [
                        (("28603", "28604"), (0, 1, 2), (23, 58, 127)),
                        (("00108"), (0, ), (12, 13, 14)),
                    ],
                    "maximumEnbsAllowed":
                    2,
                },
                "s1": {
                    "s1SetupTimeToWait": 1,
                },
            })
        self.mme.execute()
        self.enb = Enb(
            "enb", 9000, {
                "control": {
                    "adminState": True,
                },
                "system": {
                    "globalEnbId": 345,
                    "enbName": "Taksim",
                    "supportedTas": [
                        (127, ("28603", "28604")),
                    ],
                    "csgIdList": [],
                    "defaultPagingDrx": [32, 64, 128],
                },
                "rrc": {
                    "maxRrcConnectionSetupAttempts": 5,
                    "rrcConnectionSetupTimeout": 0.7,
                },
                "mme": {
                    "address": (localhost(), 8999),
                    "s1SetupParameters": ConfigPath("system"),
                    "properties": None,
                },
            })
        self.enb.execute()
        self.numUes = 5
        self.ueIoServices = [
            IoService(str(i), 9001 + i) for i in range(self.numUes)
        ]
        [s.start() for s in self.ueIoServices]

    def tearDown(self):
        [n.terminate() for n in (self.enb, self.mme)]
        [s.stop() for s in self.ueIoServices]

    def test_noRrcConnectionSetupCompleteReceived(self):
        time.sleep(0.1)
        temporaryCrnti = 0
        self.ueIoServices[0].sendMessage(
            (localhost(), 9000),
            *rrcConnectionRequest(temporaryCrnti, "randomValue", 3434,
                                  "moSignaling"))
        time.sleep(2.5)  # more than 3* 0.5 = 1.5 seconds  + 0.5 seconds
        #self.assertEqual(self.handler.kpis["numRrcConnectionEstablishmentFailures"], 1)

    def test_singleUeRrcEstablishmentSuccess(self):
        time.sleep(0.1)
        temporaryCrnti = 0
        rrcTransactionIdentifier = 0
        self.ueIoServices[0].sendMessage(
            (localhost(), 9000),
            *rrcConnectionRequest(temporaryCrnti, "randomValue", 3434,
                                  "moSignaling"))
        self.ueIoServices[0].sendMessage(
            (localhost(), 9000),
            *rrcConnectionSetupComplete(rrcTransactionIdentifier, 28001,
                                        {"nasMessageType": "attachRequest"}))
        time.sleep(
            0.1)  # ensure the enb call back is not waiting for rrc complete
        self.assertEqual(self.enb.state.uePool.numUes(), 1)

    def test_nUeRrcEstablishmentSuccess(self):
        time.sleep(0.1)
        for temporaryCrnti, s in enumerate(self.ueIoServices):
            s.sendMessage((localhost(), 9000),
                          *rrcConnectionRequest(temporaryCrnti, "randomValue",
                                                3434, "moSignaling"))
            time.sleep(0.1)  # need this to solve issue of synch
        for rrcTransactionIdentifier, s in enumerate(self.ueIoServices):
            s.sendMessage((localhost(), 9000),
                          *rrcConnectionSetupComplete(
                              rrcTransactionIdentifier, 28001,
                              {"nasMessageType": "attachRequest"}))
            time.sleep(0.1)
        time.sleep(0.1)  # need this to solve issue of synch
        self.assertEqual(self.enb.state.uePool.numUes(), self.numUes)
示例#8
0
    def setUp(self):
        self.mme = Mme(
            "mme", 8999, {
                "system": {
                    "mmeName":
                    "Istanbul",
                    "servedGummeis": [
                        (("28603", "28604"), (0, 1, 2), (23, 58, 127)),
                        (("00108"), (0, ), (12, 13, 14)),
                    ],
                    "maximumEnbsAllowed":
                    2,
                },
                "s1": {
                    "s1SetupTimeToWait": 1,
                },
            })
        self.mme.execute()
        self.enb = Enb(
            "enb", 9000, {
                "control": {
                    "adminState": True,
                },
                "system": {
                    "globalEnbId": 345,
                    "enbName": "Taksim",
                    "supportedTas": [
                        (127, ("28603", "28604")),
                    ],
                    "csgIdList": [],
                    "defaultPagingDrx": [32, 64, 128],
                },
                "rrc": {
                    "maxRrcConnectionSetupAttempts": 5,
                    "rrcConnectionSetupTimeout": 0.7,
                },
                "mme": {
                    "address": (localhost(), 8999),
                    "s1SetupParameters": ConfigPath("system"),
                    "properties": None,
                },
            })
        self.enb.execute()
        procedureParameters = {
            "maxPrachPreambleAttempts": 5,
            "prachPreambleRepeatDelay": 0.7,
            "macContentionResolutionTimeout": 0.5,
            "rrcConnectionSetupTimeoutT300": 2.0
        }
        args = lambda i: {
            "ueIdentityType": "randomValue",
            "ueIdentityValue": 3434,
            "rrcEstablishmentCause": "moSignaling",
            "selectedPlmnIdentity": 2801,
            "initialNasMessage": {
                "nasMessageType": "attachRequest"
            },
        }

        self.ueIoServices = [IoService(str(i), 9001 + i) for i in range(20)]
        [s.start() for s in self.ueIoServices]
        self.ueProcedures = [
            UeRrcConnectionEstablishmentProcedure(
                procedureParameters,
                (localhost(), 9000), s, self.__procedureCompleteCallback__,
                args(i)) for i, s in enumerate(self.ueIoServices)
        ]
        self.numSuccess = 0