def test_update_ptp(self, session: Session, ip_prefixes: IpPrefixes): # given delay = 50 bandwidth = 5000000 loss = 25 dup = 25 jitter = 10 buffer = 100 node1 = session.add_node(CoreNode) node2 = session.add_node(CoreNode) iface1_data = ip_prefixes.create_iface(node1) iface2_data = ip_prefixes.create_iface(node2) session.add_link(node1.id, node2.id, iface1_data, iface2_data) iface1 = node1.get_iface(iface1_data.id) iface2 = node2.get_iface(iface2_data.id) assert iface1.getparam("delay") != delay assert iface1.getparam("bw") != bandwidth assert iface1.getparam("loss") != loss assert iface1.getparam("duplicate") != dup assert iface1.getparam("jitter") != jitter assert iface1.getparam("buffer") != buffer assert iface2.getparam("delay") != delay assert iface2.getparam("bw") != bandwidth assert iface2.getparam("loss") != loss assert iface2.getparam("duplicate") != dup assert iface2.getparam("jitter") != jitter assert iface2.getparam("buffer") != buffer # when options = LinkOptions( delay=delay, bandwidth=bandwidth, loss=loss, dup=dup, jitter=jitter, buffer=buffer, ) session.update_link(node1.id, node2.id, iface1_data.id, iface2_data.id, options) # then assert iface1.getparam("delay") == delay assert iface1.getparam("bw") == bandwidth assert iface1.getparam("loss") == loss assert iface1.getparam("duplicate") == dup assert iface1.getparam("jitter") == jitter assert iface1.getparam("buffer") == buffer assert iface2.getparam("delay") == delay assert iface2.getparam("bw") == bandwidth assert iface2.getparam("loss") == loss assert iface2.getparam("duplicate") == dup assert iface2.getparam("jitter") == jitter assert iface2.getparam("buffer") == buffer
def test_update_net_to_net(self, session: Session, ip_prefixes: IpPrefixes): # given node1 = session.add_node(SwitchNode) node2 = session.add_node(SwitchNode) iface1, _ = session.add_link(node1.id, node2.id) assert iface1.local_options != LINK_OPTIONS # when session.update_link(node1.id, node2.id, options=LINK_OPTIONS) # then assert iface1.local_options == LINK_OPTIONS assert iface1.has_local_netem assert iface1.options == LINK_OPTIONS assert iface1.has_netem
def test_update_node_to_net(self, session: Session, ip_prefixes: IpPrefixes): # given node1 = session.add_node(CoreNode) node2 = session.add_node(SwitchNode) iface1_data = ip_prefixes.create_iface(node1) iface1, _ = session.add_link(node1.id, node2.id, iface1_data) assert iface1.local_options != LINK_OPTIONS # when session.update_link(node1.id, node2.id, iface1_id=iface1_data.id, options=LINK_OPTIONS) # then assert iface1.local_options == LINK_OPTIONS assert iface1.has_local_netem
def test_add_node_to_node_uni(self, session: Session, ip_prefixes: IpPrefixes): # given node1 = session.add_node(CoreNode) node2 = session.add_node(CoreNode) iface1_data = ip_prefixes.create_iface(node1) iface2_data = ip_prefixes.create_iface(node2) link_options1 = LinkOptions( delay=50, bandwidth=5000000, loss=25, dup=25, jitter=10, buffer=100, unidirectional=True, ) link_options2 = LinkOptions( delay=51, bandwidth=5000001, loss=26, dup=26, jitter=11, buffer=101, unidirectional=True, ) # when iface1, iface2 = session.add_link(node1.id, node2.id, iface1_data, iface2_data, link_options1) session.update_link(node2.id, node1.id, iface2_data.id, iface1_data.id, link_options2) # then assert node1.get_iface(iface1_data.id) assert node2.get_iface(iface2_data.id) assert iface1 is not None assert iface2 is not None assert iface1.local_options == link_options1 assert iface1.has_local_netem assert iface2.local_options == link_options2 assert iface2.has_local_netem
def test_link_update(self, session: Session, ip_prefixes: IpPrefixes): # given delay = 50 bandwidth = 5000000 per = 25 dup = 25 jitter = 10 node_one = session.add_node(CoreNode) node_two = session.add_node(SwitchNode) interface_one_data = ip_prefixes.create_interface(node_one) session.add_link(node_one.id, node_two.id, interface_one_data) interface_one = node_one.netif(interface_one_data.id) assert interface_one.getparam("delay") != delay assert interface_one.getparam("bw") != bandwidth assert interface_one.getparam("loss") != per assert interface_one.getparam("duplicate") != dup assert interface_one.getparam("jitter") != jitter # when link_options = LinkOptions() link_options.delay = delay link_options.bandwidth = bandwidth link_options.per = per link_options.dup = dup link_options.jitter = jitter session.update_link( node_one.id, node_two.id, interface_one_id=interface_one_data.id, options=link_options, ) # then assert interface_one.getparam("delay") == delay assert interface_one.getparam("bw") == bandwidth assert interface_one.getparam("loss") == per assert interface_one.getparam("duplicate") == dup assert interface_one.getparam("jitter") == jitter
def test_clear_net_to_net(self, session: Session, ip_prefixes: IpPrefixes): # given node1 = session.add_node(SwitchNode) node2 = session.add_node(SwitchNode) iface1, _ = session.add_link(node1.id, node2.id, options=LINK_OPTIONS) assert iface1.local_options == LINK_OPTIONS assert iface1.has_local_netem assert iface1.options == LINK_OPTIONS assert iface1.has_netem # when options = LinkOptions(delay=0, bandwidth=0, loss=0.0, dup=0, jitter=0, buffer=0) session.update_link(node1.id, node2.id, options=options) # then assert iface1.local_options.is_clear() assert not iface1.has_local_netem assert iface1.options.is_clear() assert not iface1.has_netem
def test_link_options_bidirectional(self, session: Session, tmpdir: TemporaryFile, ip_prefixes: IpPrefixes): """ Test xml client methods for a ptp network. :param session: session for test :param tmpdir: tmpdir to create data in :param ip_prefixes: generates ip addresses for nodes """ # create nodes node1 = session.add_node(CoreNode) iface1_data = ip_prefixes.create_iface(node1) node2 = session.add_node(CoreNode) iface2_data = ip_prefixes.create_iface(node2) # create link options1 = LinkOptions() options1.unidirectional = 1 options1.bandwidth = 5000 options1.delay = 10 options1.loss = 10.5 options1.dup = 5 options1.jitter = 5 options1.buffer = 50 session.add_link(node1.id, node2.id, iface1_data, iface2_data, options1) options2 = LinkOptions() options2.unidirectional = 1 options2.bandwidth = 10000 options2.delay = 20 options2.loss = 10 options2.dup = 10 options2.jitter = 10 options2.buffer = 100 session.update_link(node2.id, node1.id, iface2_data.id, iface1_data.id, options2) # instantiate session session.instantiate() # get ids for nodes node1_id = node1.id node2_id = node2.id # save xml xml_file = tmpdir.join("session.xml") file_path = Path(xml_file.strpath) session.save_xml(file_path) # verify xml file was created and can be parsed assert xml_file.isfile() assert ElementTree.parse(file_path) # stop current session, clearing data session.shutdown() # verify nodes have been removed from session with pytest.raises(CoreError): assert not session.get_node(node1_id, CoreNode) with pytest.raises(CoreError): assert not session.get_node(node2_id, CoreNode) # load saved xml session.open_xml(file_path, start=True) # verify nodes have been recreated assert session.get_node(node1_id, CoreNode) assert session.get_node(node2_id, CoreNode) links = [] for node_id in session.nodes: node = session.nodes[node_id] links += node.links() assert len(links) == 2 link1 = links[0] link2 = links[1] assert options1.bandwidth == link1.options.bandwidth assert options1.delay == link1.options.delay assert options1.loss == link1.options.loss assert options1.dup == link1.options.dup assert options1.jitter == link1.options.jitter assert options1.buffer == link1.options.buffer assert options2.bandwidth == link2.options.bandwidth assert options2.delay == link2.options.delay assert options2.loss == link2.options.loss assert options2.dup == link2.options.dup assert options2.jitter == link2.options.jitter assert options2.buffer == link2.options.buffer
def test_link_options_bidirectional(self, session: Session, tmpdir: TemporaryFile, ip_prefixes: IpPrefixes): """ Test xml client methods for a ptp network. :param session: session for test :param tmpdir: tmpdir to create data in :param ip_prefixes: generates ip addresses for nodes """ # create nodes node_one = session.add_node(CoreNode) interface_one = ip_prefixes.create_interface(node_one) node_two = session.add_node(CoreNode) interface_two = ip_prefixes.create_interface(node_two) # create link link_options_one = LinkOptions() link_options_one.unidirectional = 1 link_options_one.bandwidth = 5000 link_options_one.delay = 10 link_options_one.per = 10.5 link_options_one.dup = 5 link_options_one.jitter = 5 session.add_link(node_one.id, node_two.id, interface_one, interface_two, link_options_one) link_options_two = LinkOptions() link_options_two.unidirectional = 1 link_options_two.bandwidth = 10000 link_options_two.delay = 20 link_options_two.per = 10 link_options_two.dup = 10 link_options_two.jitter = 10 session.update_link( node_two.id, node_one.id, interface_two.id, interface_one.id, link_options_two, ) # instantiate session session.instantiate() # get ids for nodes n1_id = node_one.id n2_id = node_two.id # save xml xml_file = tmpdir.join("session.xml") file_path = xml_file.strpath session.save_xml(file_path) # verify xml file was created and can be parsed assert xml_file.isfile() assert ElementTree.parse(file_path) # stop current session, clearing data session.shutdown() # verify nodes have been removed from session with pytest.raises(CoreError): assert not session.get_node(n1_id, CoreNode) with pytest.raises(CoreError): assert not session.get_node(n2_id, CoreNode) # load saved xml session.open_xml(file_path, start=True) # verify nodes have been recreated assert session.get_node(n1_id, CoreNode) assert session.get_node(n2_id, CoreNode) links = [] for node_id in session.nodes: node = session.nodes[node_id] links += node.all_link_data() assert len(links) == 2 link_one = links[0] link_two = links[1] assert link_options_one.bandwidth == link_one.bandwidth assert link_options_one.delay == link_one.delay assert link_options_one.per == link_one.per assert link_options_one.dup == link_one.dup assert link_options_one.jitter == link_one.jitter assert link_options_two.bandwidth == link_two.bandwidth assert link_options_two.delay == link_two.delay assert link_options_two.per == link_two.per assert link_options_two.dup == link_two.dup assert link_options_two.jitter == link_two.jitter