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