def test_mgr_ccap_services(self):
        mgr = ServiceSuiteManager()

        # use mock services instead of real
        new_services = []
        for serv in mgr.services:
            if serv.name in ("DHCPv4", "DHCPv6", "TPv4", "TPv6"):
                new_services.append(UtServiceConfig(name=serv.name))
            else:
                new_services.append(serv)
        mgr.services = new_services

        self.client = ItApiClientServiceSuite()
        self.client.connect("127.0.0.1")

        self.assertIsNotNone(self.client.it_api_socket,
                             "Client is not connected to ServiceSuiteManager"
                             "instance")

        self.gpb_msg = t_ItApiServiceSuiteMessage()
        self.gpb_msg.MessageType = self.gpb_msg.IT_API_SERVICE_SUITE_CONFIGURE
        self.gpb_msg.ServiceConfigureMessage.CcapCoreV4.enable = True

        v4_scenario = \
            self.gpb_msg.ServiceConfigureMessage.CcapCoreV4.ClientScenarios.add()
        v4_scenario.ScenarioType = v4_scenario.SCENARIO_REDIRECT
        v4_scenario.client_ip = "127.0.0.1"

        t = threading.Thread(target=self._client_send_thread)
        t.start()
        self.disp = mgr.disp
        self.disp.loop()

        self.assertEqual(len(mgr.orchestrator.sessions_active), 1,
                         "Invalid number of active sessions in master "
                         "orchestrator: {}".format(
                             len(mgr.orchestrator.sessions_active)))

        # disable the CcapCore service
        self.gpb_msg = t_ItApiServiceSuiteMessage()
        self.gpb_msg.MessageType = self.gpb_msg.IT_API_SERVICE_SUITE_CONFIGURE
        self.gpb_msg.ServiceConfigureMessage.CcapCoreV4.enable = False

        t = threading.Thread(target=self._client_send_thread_ccap_services)
        t.start()
        self.disp.loop()

        self.assertEqual(len(mgr.orchestrator.sessions_active), 0,
                         "Invalid number of active sessions in master "
                         "orchestrator: {}".format(
                             len(mgr.orchestrator.sessions_active)))

        self.client.cleanup()
        mgr.cleanup()
    def test_mgr_mock_services(self):
        mgr = ServiceSuiteManager()

        # use mock services instead of real
        new_services = []
        for serv in mgr.services:
            new_services.append(UtServiceConfig(name=serv.name))
        mgr.services = new_services

        self.client = ItApiClientServiceSuite()
        self.client.connect("127.0.0.1")

        self.assertIsNotNone(self.client.it_api_socket,
                             "Client is not connected to ServiceSuiteManager"
                             "instance")

        self.gpb_msg = t_ItApiServiceSuiteMessage()
        self.gpb_msg.MessageType = self.gpb_msg.IT_API_SERVICE_SUITE_CONFIGURE
        self.gpb_msg.ServiceConfigureMessage.DHCPv4.enable = True

        t = threading.Thread(target=self._client_send_thread)
        t.start()
        self.disp = mgr.disp
        self.disp.loop()
        self.client.cleanup()
        mgr.cleanup()
Exemple #3
0
 def start_l2tp(self):
     connected = self.connect_to_it_api_client()
     if connected:
         msg = t_ItApiServiceSuiteMessage()
         msg.MessageType = msg.IT_API_SERVICE_SUITE_L2TP
         # gpb_result = self.it_api_client.it_api_send_msg(msg)
         # sys.stdout.write("Result: %s\n" . format(gpb_result))
         self.it_api_client.it_api_send_msg(msg)
Exemple #4
0
    def test_01_basic_init(self):
        serv = None
        rpd1 = None
        try:
            self.logger.info("Starting ServiceSuite VM")
            serv = self.topology.create_vm_service_suite("ServiceSuite1")

            self.logger.info("Configuring ServiceSuite VM")
            msg = serv.prepare_config_message(dhcpv4=True, dhcpv6=False, tps=True,
                                              ccapv4=True)

            msg.ServiceConfigureMessage.CcapCoreV4.IPv4Address = \
                serv.ip_addresses[1]
            reply = serv.vm_command(msg)
            self.logger.info("Received reply to service configuration:")
            self.logger.info("%s", reply)
            self.assertIsNotNone(reply, "Not any reply message received from RPD")
            self.assertEqual(reply.MessageResult,
                             reply.IT_API_SERVICE_SUITE_RESULT_OK,
                             "Unexpected configuration result: {}".format(
                                 reply.MessageResult))

            self.logger.info("Starting RPD VM")
            rpd1 = self.topology.create_vm_open_rpd("RPD1")

            # Wait for a while, then start l2tp
            wait_time = 120
            self.logger.info("Wait for %d seconds, then start L2TP", wait_time)
            time.sleep(wait_time)
            msg = t_ItApiServiceSuiteMessage()
            msg.MessageType = msg.IT_API_SERVICE_SUITE_L2TP
            self.logger.info("Configure L2TP")
            reply = serv.vm_command(msg)
            self.logger.info("Received reply to service l2tp configuration:")
            self.logger.info("%s", reply)
            self.assertEqual(reply.MessageResult,
                             reply.IT_API_SERVICE_SUITE_RESULT_OK,
                             "Unexpected configuration result: {}".format(reply.MessageResult))

            self.poll_result(self.check_session, [rpd1], 30,
                             "Provision didn't reach final state")

            self.poll_result(self.check_rcp, [rpd1], 10,
                             "Fail to get Rcp config!")

            self.poll_result(self.check_l2tp, [rpd1], 20,
                             "Fail to get l2tp config!")

            # self.assertTrue(True)
            # time.sleep(200000)
        finally:
            if serv is not None:
                serv.get_logs("test_01_basic_init")
            if rpd1 is not None:
                rpd1.get_logs("test_01_basic_init")
Exemple #5
0
    def prepare_config_message(dhcpv6=None,
                               dhcpv4=None,
                               tps=None,
                               ccapv6=None,
                               ccapv4=None):
        # True -> enable service, False -> disable, None -> no change
        msg = t_ItApiServiceSuiteMessage()
        msg.MessageType = msg.IT_API_SERVICE_SUITE_CONFIGURE

        mapping = {
            "DHCPv4": dhcpv4,
            "DHCPv6": dhcpv6,
            "Tp": tps,
            "CcapCoreV6": ccapv6,
            "CcapCoreV4": ccapv4
        }
        for gpb_attr, config in mapping.iteritems():
            if config is not None:
                getattr(msg.ServiceConfigureMessage, gpb_attr).enable = config
        return msg
Exemple #6
0
    def _enable_services(self, enable=True):
        connected = self.connect_to_it_api_client()
        if connected:
            # True -> enable service, False -> disable, None -> no change
            msg = t_ItApiServiceSuiteMessage()
            msg.MessageType = msg.IT_API_SERVICE_SUITE_CONFIGURE

            # Default behavior
            getattr(msg.ServiceConfigureMessage, "DHCPv4").enable = enable
            getattr(msg.ServiceConfigureMessage, "DHCPv6").enable = enable
            getattr(msg.ServiceConfigureMessage, "Tp").enable = enable
            # Note - CcapCoreV6 services both v4 and v6, so only start one of these
            getattr(msg.ServiceConfigureMessage, "CcapCoreV4").enable = False
            getattr(msg.ServiceConfigureMessage, "CcapCoreV6").enable = enable

            if (self.ipv4_only):
                sys.stderr.write(
                    "**************************************************\n")
                sys.stderr.write("*** WARNING - IPv6 services are DISABLED!\n")
                sys.stderr.write(
                    "**************************************************\n")
                getattr(msg.ServiceConfigureMessage, "DHCPv6").enable = False
                getattr(msg.ServiceConfigureMessage,
                        "CcapCoreV6").enable = False
                getattr(msg.ServiceConfigureMessage,
                        "CcapCoreV4").enable = enable
            # elif (self.ipv6_only):
            #     sys.stderr.write("**************************************************\n")
            #     sys.stderr.write("*** WARNING - IPv4 services are DISABLED!\n")
            #     sys.stderr.write("**************************************************\n")
            #     # Note - The DHCPv4 service is currently required in v6 mode,
            #     #  uncomment the following line when this is no longer the case
            #     # getattr(msg.ServiceConfigureMessage, "DHCPv4").enable = False
            #     # Note - CcapCoreV4 should be disabled by default, but make sure
            #     getattr(msg.ServiceConfigureMessage, "CcapCoreV4").enable = False

            # gpb_result = self.it_api_client.it_api_send_msg(msg)
            # sys.stdout.write("Result: %s\n" . format(gpb_result))
            self.it_api_client.it_api_send_msg(msg)