docs: adding tutorial 4

This commit is contained in:
Blake Harnden 2023-06-05 13:27:34 -07:00
parent 75a92f3a38
commit c554983436
4 changed files with 181 additions and 0 deletions

View file

@ -0,0 +1,24 @@
import pytest
from core.emulator.coreemu import CoreEmu
from core.emulator.data import IpPrefixes
from core.emulator.enumerations import EventTypes
@pytest.fixture(scope="session")
def global_session():
core = CoreEmu()
session = core.create_session()
yield session
core.shutdown()
@pytest.fixture
def session(global_session):
global_session.set_state(EventTypes.CONFIGURATION_STATE)
yield global_session
global_session.clear()
@pytest.fixture(scope="session")
def ip_prefixes():
return IpPrefixes(ip4_prefix="10.0.0.0/24")

View file

@ -0,0 +1,35 @@
import pytest
from core.emulator.data import IpPrefixes, LinkOptions
from core.emulator.session import Session
from core.errors import CoreCommandError
from core.nodes.base import CoreNode
class TestPing:
def test_success(self, session: Session, ip_prefixes: IpPrefixes):
# create nodes
node1 = session.add_node(CoreNode)
node2 = session.add_node(CoreNode)
# link nodes together
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)
# ping node, expect a successful command
node1.cmd(f"ping -c 1 {iface2_data.ip4}")
def test_failure(self, session: Session, ip_prefixes: IpPrefixes):
# create nodes
node1 = session.add_node(CoreNode)
node2 = session.add_node(CoreNode)
# link nodes together
iface1_data = ip_prefixes.create_iface(node1)
iface2_data = ip_prefixes.create_iface(node2)
options = LinkOptions(loss=100.0)
session.add_link(node1.id, node2.id, iface1_data, iface2_data, options)
# ping node, expect command to fail and raise exception due to 100% loss
with pytest.raises(CoreCommandError):
node1.cmd(f"ping -c 1 {iface2_data.ip4}")