Skip to content
This repository was archived by the owner on Nov 13, 2023. It is now read-only.

TestCase Description

mssumanth edited this page Aug 7, 2013 · 3 revisions

TestCases:

  1. PktInPerPort : Packet_in per port Check if packet_in message goes to expected controller depending on which switch port it came from .

  2. PktInPerSrcMac: Packet_in per source MAC address Check if packet_in message goes to expected controller depending on which slice the source MAC address of the packet belongs to In this test, packets come from a shared port for both two slices .

  3. Echo: Echo_request and echo_reply Check if echo_request is terminated by FlowVisor and echo_reply comes back from it (not from target switch or controller)

  4. PortStatus: Port_status Check if port_status from switch goes to expected controller depending on which switch port it came from .

  5. PaktOutCorrect: Packet_out with packet within slice conditions Check packet_out from a controller goes to switch if the packet matches the conditions of slice

  6. PaktOutError: Packet_out with packet out of slice conditions Check controller gets error message when throwing packet_out if the packet doesn't match the conditions of slice In this test, source MAC address doesn't match

  7. PktOutFlood: Packet_out with flood port Check that packet_out to flood port from controller is modified and FlowVisor only specifies the ports each slice has

  8. PktOutShort: Packet_out with short packet Check that Packet_out which has short size packet can go through FlowVisor to switch

  9. PktOutBufId: Packet_out with specific buffer_id Check that Packet_out using buffer_id of packet_in goes to switch Check only the controller which has received the packet_in can perform this packet_out

  10. Vendor: Vendor message Check if vendor message goes straight to switch

  11. PortStats: Port_stats request Check if port_stats request message goes straight to switch

  12. DataLayerSourceAction: Send Flow_mod message to change the dl_src and see if the dl_src to which it is changed is in the expected slice.

  13. DataLayerSourceError: Send Flow_mod message to change the dl_src and see if the dl_src to which it is changed is in the expected slice. Error should be thrown when the new dl_src is not in the slice.

  14. DataLayerDestinationAction: Send Flow_mod message to change the dl_dst and see if the dl_dst to which it is changed is in the expected slice.

  15. DataLayerDestinationError: Send Flow_mod message to change the dl_dst and see if the dl_dst to which it is changed is in the expected slice. Error should be thrown when the new dl_dst is not in the slice.

  16. NetLayerSourceAction: Send Flow_mod message to change the nw_src and see if the nw_src to which it is changed is in the expected slice.

  17. NetLayerSourceError: Send Flow_mod message to change the nw_src and see if the nw_src to which it is changed is in the expected slice. Error should be thrown when the new nw_src is not in the slice.

  18. NetLayerDestinationAction: Send Flow_mod message to change the nw_dst and see if the nw_dst to which it is changed is in the expected slice.

  19. NetLayerDestinationError: Send Flow_mod message to change the nw_dst and see if the nw_dst to which it is changed is in the expected slice. Error should be thrown when the new nw_dst is not in the slice.

  20. NetLayerTOSAction: Send Flow_mod message to change the nw_tos and see if the nw_tos to which it is changed is in the expected slice.

  21. NetLayerTOSError: Send Flow_mod message to change the nw_tos and see if the nw_tos to which it is changed is in the expected slice. Error should be thrown when the new nw_tos is not in the slice.

  22. TransportLayerSourceAction: Send Flow_mod message to change the tp_src and see if the tp_src to which it is changed is in the expected slice.

  23. TransportLayerSourceError: Send Flow_mod message to change the tp_src and see if the tp_src to which it is changed is in the expected slice. Error should be thrown when the new tp_src is not in the slice.

  24. TransportLayerDestinationAction: Send Flow_mod message to change the tp_dst and see if the tp_dst to which it is changed is in the expected slice.

  25. TransportLayerDestinationError: Send Flow_mod message to change the tp_dst and see if the tp_dst to which it is changed is in the expected slice. Error should be thrown when the new tp_dst is not in the slice.

  26. VlanIdAction: Send Flow_mod message to change the dl_vlan and see if the dl_vlan to which it is changed is in the expected slice.

  27. VlanIdError: Send Flow_mod message to change the dl_vlan and see if the dl_vlan to which it is changed is in the expected slice. Error should be thrown when the new dl_vlan is not in the slice.

  28. VlanPrioAction: Send Flow_mod message to change the dl_vpcp and see if the dl_vpcp to which it is changed is in the expected slice.

  29. VlanPrioError: Send Flow_mod message to change the dl_vpcp and see if the dl_vpcp to which it is changed is in the expected slice. Error should be thrown when the new dl_vpcp is not in the slice.

  30. StripVlanAction: Send Flow_mod message to strip the dl_vlan and see if the dl_vlan to be stripped is in the expected slice.

  31. StripVlanError: Send Flow_mod message to strip the dl_vlan and see if the dl_vlan to be stripped is in the expected slice. Error should be thrown when the to be stripped dl_vlan is not in the slice.

  32. Ping: Ping and pong test . Check if FlowVisor receives ping from API client and sends back pong to it .

  33. ListFlowSpace: List_flow_space and response Check if FlowVisor receives listFlowSpace from API client and sends back the correct response.

  34. ListDevices: List_devices and response Check if FlowVisor receives listDevices from API client and sends back the correct response.

  35. GetLinks: Get_links and response Check if FlowVisor receives getLinks from API client and sends back the correct number of links

  36. ChangeFlowSpace: Change_flow_space and response Check if FlowVisor receives changeFlowSpace from API client without error

  37. CreateSlice: Create_slice and verify Check if FlowVisor receives and performs createSlice Check FlowVisor refuses to create/change it when illegal conditions .

  38. DeleteSlice: Delete_slice Check if FlowVisor receives createSlice and check it is deleted with counting the number of slices using listFlowSpace

  39. SliceOwner: API command exchange as a slice owner Check if API client can connect with FlowVisor as a slice owner Perform flow_space related commands and verify the response

  40. FlowModArp: Send flow_mod message with arp matching. This should be transparent to switch.

  41. DelSlice: Delete_slice and check the number of remaining slices It spawns flowvisor with two slices, spawns several switches, deletes both slices and check the number of remaining slices .

  42. PktIn2Disconn: Packet_in to disconnected controller . When FlowVisor has received packet_in to disconnected controller, check it discards it and send FlowMod with drop to the switch In this test, it sends pkt_in from switch to connected controller and checks that it is received . Then it sends pkt_in to not-connected controller and checks FlowVisor sends flow_mod_drop msg to switch .

  43. Lldp2nobody: LLDP from switch to nobody Check that un-trailered LLDP message from switch goes to controller without modification.

  44. FeaturesReply: Features_request and features_reply with flood port Even if switch sends back information about all of its ports, FlowVisor should only send controller the information about the ports within the slice rule

  45. PktOutFlood: Packet_out to flood port Packet_out with Flood should be expanded to the ports owned by the slice, if a slice has only portion of the switch ports.

  46. PktOutNoFloodPort: Packet_out to flood port Set one port in slice to NO_FLOOD, so the expansion should be to all ports except that one

  47. TrackOff: Flow_mod without tracking Send flowmod messages and check flowdb status . It should not be updated since tracking is off in this test.

  48. TrackOn: Flow_mod with tracking Send flowmod messages and check flowdb status . It should be updated since tracking is on in this test.

  49. ExpandNot: Send a flowmod from the controller to the switch without wildcarding. Check if the appropriate switch receives the flow mod without any expansion of the rules by flowvisor onto the switches.

  50. Expand: Send a flowmod from the controller to the switch with the match field wildcarded. The flowmod should get expanded and applied on the appropriate switches.

  51. FlowStats: On receiving the flowStatsReq, flowVisor sould send back the flowStatsReply pertaining to that slice only.

  52. FlowStatFragments: When the switch sends the FlowStatsResponse in segments with the 'MORE_FLAG' set, FV should collect all the response and send them.

  53. FlowStatsSpecific: User request a specific flow entry(with a particular match) as stats and receives them from FlowVisor.

  54. AggStats: On receiving the AggStatsReq, flowVisor sould send back the AggStatsReply pertaining to that slice only.

  55. AggStatsSpecific: User request a specific aggregate flow entry(with a particular match) as stats and receives them from FlowVisor.

  56. PktOutInport: Packet_out to flood port with ingress port mentioned. Check if FlowVisor expands the message so that it can exclude ingress_port from the message when it sends it to switch.

  57. AddPort: Port_status with adding a port. When switch sends port_status with 'add port',check if controller which has all the switch ports can receive it while controller which has only specific ports cannot.

  58. RmPortApi: ChangeFlowSpace with Remove via API Remove a port from flow space using API. Check if the removed port is now invisible

  59. EnqueueNoQueue: Enqueue Action Check if enqueue action is rejected, if the queue_id is not in the slice.

  60. EnqueueQueue: Enqueue Action Check is enqueue action is passed if the queue_id is in the slice.

  61. EnqueueForce: Enqueue Action If the flowspace entries forces a queue then check that the output action is replaced by the enqueue action.

  62. QueueConfig: Push QueueConfigRequest. If for a port, that is not in the slice verify that we get an error. If for a port, that is in the slice, check that we get a reply appropriately pruned by the queues defined in the slice.

  63. PktInPing: Pakcet_in with ping as a packet Check if controller gets it when the packet inside packet_in matches its flow space

  64. BrokenFlowMod: Flow_mod with misaligned fields When controller sends misaligned flow_mod, FlowVisor should reject it and send back error message with permission_error

  65. PktOutLldp: Packet_out with LLDP packet Check that when controller sends a valid LLDP packet, FlowVisor adds 'trailer' before is sends it to switch.

  66. LldpErr1: LLDP-ish irregular message and its error response Check that even if the packet in packet_out is LLDP-ish packet, if the dl_type is different send back error message to controller The send-back error message should be OFPED_BAD_ACTION, OFPBAC_EPERM

  67. LldpErr2: LLDP-ish irregular message and its error response Check that even if the packet in packet_out is LLDP-ish packet and even if the dl_type is different, if the buffer_id is incorrect, send back error message to controller The send-back error message should be OFPED_BAD_REQUEST, OFPBRC_BUFFER_UNKNOWN

  68. Lldp2nobody: LLDP from switch to nobody Check that un-trailered LLDP message from switch goes to controller without modification.

  69. RateLimit: Test Global slice limit. After the maximum number of rules have been installed, FlowVisor should push an error back to the controller.

  70. EchoPayLoad: Echo_request with Payload Check if FlowVisor pass the echo_request with payload

  71. FeatReqErr: Features_request and its error_reply First, make up a features_request and exchange error message This test is to check whether Flowvisor's XID mapping works.

  72. FlowModFail: Flow_mod to erase all and its error_reply Send a 'flow_mod erase all' and FlowVisor expands it so that it can exclude non-matching conditions. Assume it causes an error and check whether these message exchange are successful. In this test, the matching conditions are ports and dl_src.

  73. OldOFVer: Echo_request with old OpenFlow version When controller sends echo_request with old OpenFlow version, check if it gets echo_reply with current OpenFlow version (FlowVisor terminates echo message)

  74. Pkt2DelSlice: Packet_in to dynamically deleted slice After deleting a slice, test to see that the controller cannot receive packet_in from switch via FlowVisor

  75. PortStats: Port_stats_request Check if switch gets the same port_stats message as controller has issued

  76. QueueStats: Queue_stats_request Check if switch gets the same queue_stats message as controller has issued

  77. DescStats: Desc_stats_request and desc_stats_reply Check if desc_stats_request goes from controller to switch, and check desc_Stats_reply comes back from switch to controller.

  78. TableStats: Table_stats request and reply Check if table_stats_request goes to switch through FlowVisor. Check if table_stats_reply goes to controller through FlowVisor.

  79. NoVlan1: Non Vlan packet_in when vlan matching is in the slice rules A flowspace rule specifying a vlan id to controller 0 is added to flowvisor and there is no vlan id match attached to controller1. When a packet_in with no vlan id comes to flowvisor, check if it doesn't match the slice with vlan, it should be sent to controller1.

  80. NoVlan2: Non Vlan packet_in when vlan matching is in the slice rules, same test case as above but with different match set. A flowspace rule specifying a vlan id to controller 0 is added to flowvisor and there is no vlan id match attached to controller1. When a packet_in with no vlan id comes to flowvisor, check if it doesn't match the slice with vlan , it should be sent to controller1.

  81. Vlan1: Vlan packet_in when vlan matching is in the slice rules Check if the vlan id of the packet_in doesn't match to what is specified in the flowspace rule, it should be sent to a different slice. Here, a flowspace rule specifying a vlan id to controller 0 is added to flowvisor and there is no vlan id match attached to controller1. In this test, the packet_in with a differnet vlan_id than that specified in the flowspace should go to controller1.

  82. Vlan2: When the packet_in has the same vlan id as mentioned in the flowspace of flowvisor, it should go to the respective controller. In this case it should go to controller0.

  83. Internet2_Vlans: Internet2 guys had claimed that FV overwrites their inport when using vlans with FV rules which wildcard the inport. This test checks whether pushing a flow mod with a vlan tag and an inport is overwritten erroneously by flowvisor.

Clone this wiki locally