| @@ 439-484 (lines=46) @@ | ||
| 436 | result = current_data["result"] |
|
| 437 | assert result == [] |
|
| 438 | ||
| 439 | @patch("napps.amlight.sdntrace_cp.main.get_stored_flows") |
|
| 440 | async def test_get_traces(self, mock_stored_flows, event_loop): |
|
| 441 | """Test traces rest call.""" |
|
| 442 | self.napp.controller.loop = event_loop |
|
| 443 | payload = [{ |
|
| 444 | "trace": { |
|
| 445 | "switch": { |
|
| 446 | "dpid": "00:00:00:00:00:00:00:01", |
|
| 447 | "in_port": 1 |
|
| 448 | }, |
|
| 449 | "eth": {"dl_vlan": 100}, |
|
| 450 | } |
|
| 451 | }] |
|
| 452 | ||
| 453 | stored_flow = { |
|
| 454 | "id": 1, |
|
| 455 | "flow": { |
|
| 456 | "table_id": 0, |
|
| 457 | "cookie": 84114964, |
|
| 458 | "hard_timeout": 0, |
|
| 459 | "idle_timeout": 0, |
|
| 460 | "priority": 10, |
|
| 461 | "match": {"dl_vlan": 100, "in_port": 1}, |
|
| 462 | "actions": [ |
|
| 463 | {"action_type": "pop_vlan"}, |
|
| 464 | {"action_type": "output", "port": 2}, |
|
| 465 | ], |
|
| 466 | } |
|
| 467 | } |
|
| 468 | ||
| 469 | mock_stored_flows.return_value = { |
|
| 470 | "00:00:00:00:00:00:00:01": [stored_flow] |
|
| 471 | } |
|
| 472 | ||
| 473 | resp = await self.api_client.put(self.traces_endpoint, json=payload) |
|
| 474 | assert resp.status_code == 200 |
|
| 475 | current_data = resp.json() |
|
| 476 | result1 = current_data["result"] |
|
| 477 | ||
| 478 | assert len(result1) == 1 |
|
| 479 | assert len(result1[0]) == 1 |
|
| 480 | assert result1[0][0]["dpid"] == "00:00:00:00:00:00:00:01" |
|
| 481 | assert result1[0][0]["port"] == 1 |
|
| 482 | assert result1[0][0]["type"] == "last" |
|
| 483 | assert result1[0][0]["vlan"] == 100 |
|
| 484 | assert result1[0][0]["out"] == {"port": 2} |
|
| 485 | ||
| 486 | @patch("napps.amlight.sdntrace_cp.main.get_stored_flows") |
|
| 487 | async def test_traces(self, mock_stored_flows, event_loop): |
|
| @@ 581-625 (lines=45) @@ | ||
| 578 | resp = await self.api_client.put(self.traces_endpoint, json=payload) |
|
| 579 | assert resp.status_code == 424 |
|
| 580 | ||
| 581 | @patch("napps.amlight.sdntrace_cp.main.get_stored_flows") |
|
| 582 | async def test_traces_with_loop(self, mock_stored_flows, event_loop): |
|
| 583 | """Test traces rest call""" |
|
| 584 | self.napp.controller.loop = event_loop |
|
| 585 | payload = [ |
|
| 586 | { |
|
| 587 | "trace": { |
|
| 588 | "switch": { |
|
| 589 | "dpid": "00:00:00:00:00:00:00:01", |
|
| 590 | "in_port": 1 |
|
| 591 | }, |
|
| 592 | "eth": { |
|
| 593 | "dl_vlan": 100 |
|
| 594 | } |
|
| 595 | } |
|
| 596 | } |
|
| 597 | ] |
|
| 598 | ||
| 599 | stored_flow = { |
|
| 600 | "id": 1, |
|
| 601 | "flow": { |
|
| 602 | "table_id": 0, |
|
| 603 | "cookie": 84114964, |
|
| 604 | "hard_timeout": 0, |
|
| 605 | "idle_timeout": 0, |
|
| 606 | "priority": 10, |
|
| 607 | "match": {"dl_vlan": 100, "in_port": 1}, |
|
| 608 | "actions": [{"action_type": "output", "port": 1}], |
|
| 609 | } |
|
| 610 | } |
|
| 611 | ||
| 612 | mock_stored_flows.return_value = { |
|
| 613 | "00:00:00:00:00:00:00:01": [stored_flow], |
|
| 614 | } |
|
| 615 | ||
| 616 | resp = await self.api_client.put(self.traces_endpoint, json=payload) |
|
| 617 | assert resp.status_code == 200 |
|
| 618 | current_data = resp.json() |
|
| 619 | result = current_data["result"] |
|
| 620 | assert len(result) == 1 |
|
| 621 | assert result[0][0]["dpid"] == "00:00:00:00:00:00:00:01" |
|
| 622 | assert result[0][0]["port"] == 1 |
|
| 623 | assert result[0][0]["type"] == "loop" |
|
| 624 | assert result[0][0]["vlan"] == 100 |
|
| 625 | assert result[0][0]["out"] == {"port": 1, "vlan": 100} |
|
| 626 | ||
| 627 | @patch("napps.amlight.sdntrace_cp.main.get_stored_flows") |
|
| 628 | async def test_traces_no_action(self, mock_stored_flows, event_loop): |
|