Method for start / stop capture on a link

Ref https://github.com/GNS3/gns3-gui/issues/1117
This commit is contained in:
Julien Duponchelle committed 2016-04-21 12:14:09 +02:00
1 parent 78a9785819
commit 04a1b2df3b
9 files changed
+230 -18

No files matched your search

+10
View File
@@ -57,6 +57,7 @@ def test_json(async_run, project, compute):
async_run(link.addVM(vm2, 1, 3))
assert link.__json__() == {
"link_id": link.id,
"data_link_type": "DLT_EN10MB",
"vms": [
{
"vm_id": vm1.id,
@@ -70,3 +71,12 @@ def test_json(async_run, project, compute):
}
]
}
def test_capture_filename(project, compute, async_run):
vm1 = VM(project, compute, name="Hello@")
vm2 = VM(project, compute, name="w0.rld")
link = Link(project)
async_run(link.addVM(vm1, 0, 4))
async_run(link.addVM(vm2, 1, 3))
assert link.capture_file_name() == "Hello_0-4_to_w0rld_1-3.pcap"
+62
View File
@@ -97,3 +97,65 @@ def test_delete(async_run, project):
compute1.delete.assert_any_call("/projects/{}/vpcs/vms/{}/adapters/0/ports/4/nio".format(project.id, vm1.id))
compute2.delete.assert_any_call("/projects/{}/vpcs/vms/{}/adapters/3/ports/1/nio".format(project.id, vm2.id))
def test_choose_capture_side(async_run, project):
"""
The link capture should run on the optimal node
"""
compute1 = MagicMock()
compute2 = MagicMock()
compute2.id = "local"
vm_vpcs = VM(project, compute1, vm_type="vpcs")
vm_iou = VM(project, compute2, vm_type="iou")
link = UDPLink(project)
async_run(link.addVM(vm_vpcs, 0, 4))
async_run(link.addVM(vm_iou, 3, 1))
assert link._choose_capture_side()["vm"] == vm_iou
vm_vpcs = VM(project, compute1, vm_type="vpcs")
vm_vpcs2 = VM(project, compute1, vm_type="vpcs")
link = UDPLink(project)
async_run(link.addVM(vm_vpcs, 0, 4))
async_run(link.addVM(vm_vpcs2, 3, 1))
# VPCS doesn't support capture
with pytest.raises(aiohttp.web.HTTPConflict):
link._choose_capture_side()["vm"]
# Capture should run on the local node
vm_iou = VM(project, compute1, vm_type="iou")
vm_iou2 = VM(project, compute2, vm_type="iou")
link = UDPLink(project)
async_run(link.addVM(vm_iou, 0, 4))
async_run(link.addVM(vm_iou2, 3, 1))
assert link._choose_capture_side()["vm"] == vm_iou2
def test_capture(async_run, project):
compute1 = MagicMock()
vm_vpcs = VM(project, compute1, vm_type="vpcs", name="V1")
vm_iou = VM(project, compute1, vm_type="iou", name="I1")
link = UDPLink(project)
async_run(link.addVM(vm_vpcs, 0, 4))
async_run(link.addVM(vm_iou, 3, 1))
capture = async_run(link.start_capture())
compute1.post.assert_any_call("/projects/{}/iou/vms/{}/adapters/3/ports/1/start_capture".format(project.id, vm_iou.id), data={
"capture_file_name": link.capture_file_name(),
"data_link_type": "DLT_EN10MB"
})
capture = async_run(link.stop_capture())
compute1.post.assert_any_call("/projects/{}/iou/vms/{}/adapters/3/ports/1/stop_capture".format(project.id, vm_iou.id))