Example #1
0
 def test_erdos_renyi_topology(self):
     topology = fnss.erdos_renyi_topology(1000, 0.2)
     topology_fast = fnss.erdos_renyi_topology(1000, 0.2, fast=True)
     for t in (topology, topology_fast):
         self.assertEqual(1000, t.number_of_nodes())
     self.assertRaises(ValueError, fnss.erdos_renyi_topology, -1, 0.2)
     self.assertRaises(ValueError, fnss.erdos_renyi_topology, 40, 1.2)
     self.assertRaises(ValueError, fnss.erdos_renyi_topology, 50, -0.2)
Example #2
0
 def test_erdos_renyi_topology(self):
     topology = fnss.erdos_renyi_topology(1000, 0.2)
     topology_fast = fnss.erdos_renyi_topology(1000, 0.2, fast=True)
     for t in (topology, topology_fast):
         self.assertEqual(1000, t.number_of_nodes())
     self.assertRaises(ValueError, fnss.erdos_renyi_topology, -1, 0.2)
     self.assertRaises(ValueError, fnss.erdos_renyi_topology, 40, 1.2)
     self.assertRaises(ValueError, fnss.erdos_renyi_topology, 50, -0.2)
Example #3
0
    def erdoes_renyi(self, **args):
        """
        Creates a random Erdoes-Renyi Graph.

        Args:
            order (int): Number of nodes.
            connectivity (float): Probability that two nodes are connected.
                Must be in (0; 1].
            args (dict): Attributes for property generation:
                min_bw (int): Minimal value for bandwidth on edge.
                max_bw (int): Maximal value for bandwidth on edge.
                bandwidth (string): {uniform, power} - How bandwidth should be
                    generated. If uniform is chosen distribution follows uniform
                    distribution, if power is chosen distribution follows a
                    power law.
                min_cpu (int): Minimal value for CPU capacity.
                max_cpu (int): Maximal value for CPU capacity.
                min_distance (int): Minimal length of an edge.
                max_distance (int): Maximal length of an edge.
                delay (float, optional): Delay per kilometer of cable length.
                substrate (optional, bool): Whether it is a substrate network.
        Returns: FNSS Graph

        """
        unconnected = True
        num_nodes = args.pop('order')
        connectivity = args.pop('connectivity')
        vnr = None
        while unconnected:
            vnr = fnss.erdos_renyi_topology(n=num_nodes, p=connectivity)
            unconnected = not nx.is_connected(vnr)
        self.remove_unnecessary_attributes(args)
        self.generate_attributes(vnr, **args)
        vnr.graph['model'] = literals.NETWORK_MODEL_ERDOES_RENYI
        return vnr
Example #4
0
 def test_fast_erdos_renyi_topology_zero_seed(self):
     a = fnss.erdos_renyi_topology(100, 0.2, fast=True, seed=0)
     b = fnss.erdos_renyi_topology(100, 0.2, fast=True, seed=0)
     self.assertEqual(set(a.edges()), set(b.edges()))
Example #5
0
 def test_fast_erdos_renyi_topology_constant_seed(self):
     a = fnss.erdos_renyi_topology(100, 0.2, fast=True, seed=1)
     b = fnss.erdos_renyi_topology(100, 0.2, fast=True, seed=2)
     c = fnss.erdos_renyi_topology(100, 0.2, fast=True, seed=1)
     self.assertEqual(set(a.edges()), set(c.edges()))
     self.assertNotEqual(set(a.edges()), set(b.edges()))
Example #6
0
 def test_erdos_renyi_topology_no_seed(self):
     a = fnss.erdos_renyi_topology(100, 0.2)
     b = fnss.erdos_renyi_topology(100, 0.2)
     self.assertNotEqual(set(a.edges()), set(b.edges()))
Example #7
0
 def test_fast_erdos_renyi_topology_zero_seed(self):
     a = fnss.erdos_renyi_topology(100, 0.2, fast=True, seed=0)
     b = fnss.erdos_renyi_topology(100, 0.2, fast=True, seed=0)
     self.assertEqual(set(a.edges()), set(b.edges()))
Example #8
0
 def test_fast_erdos_renyi_topology_constant_seed(self):
     a = fnss.erdos_renyi_topology(100, 0.2, fast=True, seed=1)
     b = fnss.erdos_renyi_topology(100, 0.2, fast=True, seed=2)
     c = fnss.erdos_renyi_topology(100, 0.2, fast=True, seed=1)
     self.assertEqual(set(a.edges()), set(c.edges()))
     self.assertNotEqual(set(a.edges()), set(b.edges()))
Example #9
0
 def test_erdos_renyi_topology_no_seed(self):
     a = fnss.erdos_renyi_topology(100, 0.2)
     b = fnss.erdos_renyi_topology(100, 0.2)
     self.assertNotEqual(set(a.edges()), set(b.edges()))
    def setUp(self):
        self.connection_params = {
            'db_name': 'TestDb',
            'host': 'localhost',
            'port': 3366,
            'user': '******',
            'password': '******'
        }
        vne_interface.DbManager.set_connection_parameter(
            **self.connection_params)
        vne_interface.DbManager.connect()
        with vne_interface.dm.db.transaction() as txn:
            try:
                vne_interface.dm.db.create_tables([
                    vne_interface.dm.EventGenerationSetting,
                    vne_interface.dm.VnrGenerationSetting,
                    vne_interface.dm.AlgorithmSetting,
                    vne_interface.dm.Network, vne_interface.dm.Node,
                    vne_interface.dm.Edge, vne_interface.dm.NetworkAttribute,
                    vne_interface.dm.SubstrateGenerationSetting,
                    vne_interface.dm.EventHeap, vne_interface.dm.Experiment,
                    vne_interface.dm.LearningModel, vne_interface.dm.Setup
                ])

                self.algo_setting = vne_interface.dm.AlgorithmSetting.create(
                    parameter=
                    '{"alpha": 0.5, "beta": 0.5, "name": "melo_sdp", "timeout": 65.0}'
                )
                self.event_setting = vne_interface.dm.EventGenerationSetting.create(
                    parameter=
                    '{"model": "erdoes_renyi", "lmbd": 10, "num_requests": 5, "avg_life_time": 1000}'
                )
                self.vnr_setting = vne_interface.dm.VnrGenerationSetting.create(
                    parameter=
                    '{"min_bw": 0, "max_cpu": 50, "maxy": 100, "miny": 0, '
                    '"min_cpu": 0, "max_bw": 50, "minx": 0, "connectivity": 0.5, '
                    '"bandwidth": "uniform", "max_num_nodes": 22, '
                    '"min_num_nodes": 8, "max_distance": 501, '
                    '"min_distance": 500, "maxx": 100}')
                self.substrate_setting = vne_interface.dm.SubstrateGenerationSetting.create(
                    parameter='{"min_bw": 50, "max_cpu": 100, "maxy": 100, '
                    '"substrate": true, "miny": 0, "min_cpu": 50, '
                    '"bandwidth": "uniform", "num_nodes": 43, "minx": 0, '
                    '"connectivity": 0.5, "max_bw": 100, "max_distance": 50, '
                    '"model": "erdoes_renyi", "min_distance": 1, "maxx": 100}')
                substrate = fnss.erdos_renyi_topology(43, 0.5)
                fnss.set_capacities_random_uniform(substrate, range(50, 100))
                for attributes in substrate.node.itervalues():
                    attributes['cpu'] = np.random.uniform(50, 100)
                networkif = vne_interface.Network.from_fnss_topology(substrate)
                self.substrate = networkif.network_model
                self.learning_model = vne_interface.dm.LearningModel.create(
                    type='testmode',
                    serialized_model='/path/to/model.pkl',
                    aux_params='empty',
                    comment=
                    'This model is created from setup method of unittest')
                self.experiment = vne_interface.dm.Experiment.create(
                    description=
                    'Created for test purposes from setup method of unittest')
                self.event_heaps = []
                for i in range(5):
                    self.event_heaps.append(
                        vne_interface.dm.EventHeap.create(
                            event_generation_setting_id=self.event_setting.
                            event_generation_setting_id,
                            vnr_generation_setting_id=self.vnr_setting.
                            vnr_generation_setting_id))
                self.setups = []
                for heap in self.event_heaps:
                    self.setups.append(
                        vne_interface.dm.Setup.create(
                            event_generation_setting=self.event_setting,
                            vnr_generation_setting=self.vnr_setting,
                            substrate_generation_setting=self.
                            substrate_setting,
                            algorithm_setting=self.algo_setting,
                            experiment=self.experiment,
                            event_heap=heap,
                            description=
                            'Test Setup created from unittest setup method',
                            substrate=self.substrate,
                            learning_model_id=self.learning_model.
                            learning_model_id))
                txn.commit()
            except Exception as e:
                logging.exception(e)
                txn.rollback()