CSIT-321 L2 Cross-connect - baseline - NIC-to-NIC(XL710)
[csit.git] / resources / libraries / robot / performance.robot
index 2099dee..62b1756 100644 (file)
@@ -53,6 +53,8 @@
 | | ... |                             for 10GE with 9004B L2 Frame.
 | | ... | - 10Ge_linerate_pps_9008B - Maximum number of packet per second
 | | ... |                             for 10GE with 9008B L2 Frame.
+| | ... | - 10Ge_linerate_pps_IMIX_v4_1 - Maximum number of packet per second
+| | ... |                                 for 10GE with IMIX_v4_1 profile.
 | | ... | - 40Ge_linerate_pps_64B - Maximum number of packet per second
 | | ... |                           for 40GE with 64B L2 Frame.
 | | ... | - 40Ge_linerate_pps_68B - Maximum number of packet per second
@@ -73,6 +75,8 @@
 | | ... |                             for 40GE with 9004B L2 Frame.
 | | ... | - 40Ge_linerate_pps_9008B - Maximum number of packet per second
 | | ... |                             for 40GE with 9008B L2 Frame.
+| | ... | - 40Ge_linerate_pps_IMIX_v4_1 - Maximum number of packet per second
+| | ... |                                 for 40GE with IMIX_v4_1 profile.
 | | ...
 | | Set Suite Variable | ${10Ge_linerate_pps_64B} | 14880952
 | | Set Suite Variable | ${10Ge_linerate_pps_68B} | 14204545
@@ -83,6 +87,7 @@
 | | Set Suite Variable | ${10Ge_linerate_pps_9000B} | 138580
 | | Set Suite Variable | ${10Ge_linerate_pps_9004B} | 138519
 | | Set Suite Variable | ${10Ge_linerate_pps_9008B} | 138458
+| | Set Suite Variable | ${10Ge_linerate_pps_IMIX_v4_1} | 3343736
 | | Set Suite Variable | ${40Ge_linerate_pps_64B} | 59523809
 | | Set Suite Variable | ${40Ge_linerate_pps_68B} | 56818181
 | | Set Suite Variable | ${40Ge_linerate_pps_72B} | 54347826
 | | Set Suite Variable | ${40Ge_linerate_pps_9000B} | 554323
 | | Set Suite Variable | ${40Ge_linerate_pps_9004B} | 554078
 | | Set Suite Variable | ${40Ge_linerate_pps_9008B} | 553832
+| | Set Suite Variable | ${40Ge_linerate_pps_IMIX_v4_1} | 13374944
+
+| Calculate pps
+| | [Documentation]
+| | ... | Calculate pps for given rate and L2 frame size,
+| | ... | additional 20B are added to L2 frame size as padding.
+| | ...
+| | ... | *Arguments*
+| | ... | - bps - Rate in bps. Type: integer
+| | ... | - framesize - L2 frame size in Bytes. Type: integer
+| | ...
+| | ... | *Return*
+| | ... | - Calculated pps. Type: integer
+| | ...
+| | ... | *Example:*
+| | ...
+| | ... | \| Calculate pps \| 10000000000 | 64
+| | [Arguments] | ${bps} | ${framesize}
+| | ${ret}= | Evaluate | (${bps}/((${framesize}+20)*8)).__trunc__()
+| | Return From Keyword | ${ret}
+
+| Get Frame Size
+| | [Documentation]
+| | ... | Framesize can be either integer in case of a single packet
+| | ... | in stream, or set of packets in case of IMIX type or simmilar.
+| | ... | This keyword returns average framesize.
+| | ...
+| | ... | *Arguments:*
+| | ... | - framesize - Framesize. Type: integer or string
+| | ...
+| | ... | *Example:*
+| | ...
+| | ... | \| Get Frame Size \| IMIX_v4_1
+| | [Arguments] | ${framesize}
+| | Run Keyword If | '${framesize}' == 'IMIX_v4_1'
+| | ...            | Return From Keyword | 353.83333
+| | Return From Keyword | ${framesize}
 
 | Setup performance global Variables
 | | [Documentation]
 | | dut2_v4.set_route | 10.10.10.0 | 24 | 1.1.1.1 | ${dut2_if1}
 | | All Vpp Interfaces Ready Wait | ${nodes}
 
+| Scale IPv4 forwarding initialized in a 3-node circular topology
+| | [Documentation]
+| | ... | Custom setup of IPv4 topology with scalability of ip routes on all
+| | ... | DUT nodes in 3-node circular topology
+| | ...
+| | ... | *Arguments:*
+| | ... | - ${count} - IP route count. Type: integer
+| | ...
+| | ... | *Return:*
+| | ... | - No value returned
+| | ...
+| | ... | *Example:*
+| | ...
+| | ... | \| Scale IPv4 forwarding initialized in a 3-node circular topology \
+| | ... | \| 100000 \|
+| | [Arguments] | ${count}
+| | Set Interface State | ${dut1} | ${dut1_if1} | up
+| | Set Interface State | ${dut1} | ${dut1_if2} | up
+| | Set Interface State | ${dut2} | ${dut2_if1} | up
+| | Set Interface State | ${dut2} | ${dut2_if2} | up
+| | ${tg1_if1_mac}= | Get Interface MAC | ${tg} | ${tg_if1}
+| | ${tg1_if2_mac}= | Get Interface MAC | ${tg} | ${tg_if2}
+| | ${dut1_if2_mac}= | Get Interface MAC | ${dut1} | ${dut1_if2}
+| | ${dut2_if1_mac}= | Get Interface MAC | ${dut2} | ${dut2_if1}
+| | Add arp on dut | ${dut1} | ${dut1_if1} | 1.1.1.1 | ${tg1_if1_mac}
+| | Add arp on dut | ${dut1} | ${dut1_if2} | 2.2.2.2 | ${dut2_if1_mac}
+| | Add arp on dut | ${dut2} | ${dut2_if1} | 2.2.2.1 | ${dut1_if2_mac}
+| | Add arp on dut | ${dut2} | ${dut2_if2} | 3.3.3.1 | ${tg1_if2_mac}
+| | IP addresses are set on interfaces | ${dut1} | ${dut1_if1} | 1.1.1.2 | 30
+| | IP addresses are set on interfaces | ${dut1} | ${dut1_if2} | 2.2.2.1 | 30
+| | IP addresses are set on interfaces | ${dut2} | ${dut2_if1} | 2.2.2.2 | 30
+| | IP addresses are set on interfaces | ${dut2} | ${dut2_if2} | 3.3.3.2 | 30
+| | Vpp Route Add | ${dut1} | 10.0.0.0 | 32 | 1.1.1.1 | ${dut1_if1}
+| | ...           | count=${count}
+| | Vpp Route Add | ${dut1} | 20.0.0.0 | 32 | 2.2.2.2 | ${dut1_if2}
+| | ...           | count=${count}
+| | Vpp Route Add | ${dut2} | 10.0.0.0 | 32 | 2.2.2.1 | ${dut2_if1}
+| | ...           | count=${count}
+| | Vpp Route Add | ${dut2} | 20.0.0.0 | 32 | 3.3.3.1 | ${dut2_if2}
+| | ...           | count=${count}
+| | All Vpp Interfaces Ready Wait | ${nodes}
+
 | IPv6 forwarding initialized in a 3-node circular topology
 | | [Documentation]
 | | ... | Set UP state on VPP interfaces in path on nodes in 3-node circular
 | | Vpp Route Add | ${dut1} | 2001:2::0 | ${prefix} | 2001:3::2 | ${dut1_if2}
 | | Vpp Route Add | ${dut2} | 2001:1::0 | ${prefix} | 2001:3::1 | ${dut2_if1}
 
+| Scale IPv6 forwarding initialized in a 3-node circular topology
+| | [Documentation]
+| | ... | Custom setup of IPv6 topology with scalability of ip routes on all
+| | ... | DUT nodes in 3-node circular topology
+| | ...
+| | ... | *Arguments:*
+| | ... | - ${count} - IP route count. Type: integer
+| | ...
+| | ... | *Return:*
+| | ... | - No value returned
+| | ...
+| | ... | *Example:*
+| | ...
+| | ... | \| Scale IPv6 forwarding initialized in a 3-node circular topology \
+| | ... | \| 100000 \|
+| | [Arguments] | ${count}
+| | ${subn_prefix}= | Set Variable | 64
+| | ${host_prefix}= | Set Variable | 128
+| | VPP Set If IPv6 Addr | ${dut1} | ${dut1_if1} | 2001:3::1 | ${subn_prefix}
+| | VPP Set If IPv6 Addr | ${dut1} | ${dut1_if2} | 2001:4::1 | ${subn_prefix}
+| | VPP Set If IPv6 Addr | ${dut2} | ${dut2_if1} | 2001:4::2 | ${subn_prefix}
+| | VPP Set If IPv6 Addr | ${dut2} | ${dut2_if2} | 2001:5::1 | ${subn_prefix}
+| | ${tg1_if1_mac}= | Get Interface MAC | ${tg} | ${tg_if1}
+| | ${tg1_if2_mac}= | Get Interface MAC | ${tg} | ${tg_if2}
+| | ${dut1_if2_mac}= | Get Interface MAC | ${dut1} | ${dut1_if2}
+| | ${dut2_if1_mac}= | Get Interface MAC | ${dut2} | ${dut2_if1}
+| | Vpp nodes ra suppress link layer | ${nodes}
+| | Add Ip Neighbor | ${dut1} | ${dut1_if1} | 2001:3::2 | ${tg1_if1_mac}
+| | Add Ip Neighbor | ${dut1} | ${dut1_if2} | 2001:4::2 | ${dut2_if1_mac}
+| | Add Ip Neighbor | ${dut2} | ${dut2_if1} | 2001:4::1 | ${dut1_if2_mac}
+| | Add Ip Neighbor | ${dut2} | ${dut2_if2} | 2001:5::2 | ${tg1_if2_mac}
+| | Vpp Route Add | ${dut1} | 2001:2::0 | ${host_prefix} | 2001:4::2
+| | ...           | interface=${dut1_if2} | count=${count}
+| | Vpp Route Add | ${dut1} | 2001:1::0 | ${host_prefix} | 2001:3::2
+| | ...           | interface=${dut1_if1} | count=${count}
+| | Vpp Route Add | ${dut2} | 2001:1::0 | ${host_prefix} | 2001:4::1
+| | ...           | interface=${dut2_if2} | count=${count}
+| | Vpp Route Add | ${dut2} | 2001:2::0 | ${host_prefix} | 2001:5::2
+| | ...           | interface=${dut2_if1} | count=${count}
+
+| IPv6 iAcl whitelist initialized in a 3-node circular topology
+| | [Documentation]
+| | ... | Creates classify L3 table on DUTs. IPv6 iAcl security whitelist
+| | ... | ingress /64 filter entries applied on links TG - DUT1 and DUT2 - TG.
+| | ...
+| | ${table_idx} | ${skip_n} | ${match_n}= | And Vpp Creates Classify Table L3
+| | ... | ${dut1} | ip6 | dst
+| | And Vpp Configures Classify Session L3
+| | ... | ${dut1} | permit | ${table_idx} | ${skip_n} | ${match_n}
+| | ... | ip6 | dst | 2001:2::2
+| | And Vpp Enable Input Acl Interface
+| | ... | ${dut1} | ${dut1_if1} | ip6 | ${table_idx}
+| | ${table_idx} | ${skip_n} | ${match_n}= | And Vpp Creates Classify Table L3
+| | ... | ${dut2} | ip6 | dst
+| | And Vpp Configures Classify Session L3
+| | ... | ${dut2} | permit | ${table_idx} | ${skip_n} | ${match_n}
+| | ... | ip6 | dst | 2001:1::2
+| | And Vpp Enable Input Acl Interface
+| | ... | ${dut2} | ${dut2_if2} | ip6 | ${table_idx}
+
 | L2 xconnect initialized in a 3-node circular topology
 | | [Documentation]
 | | ... | Setup L2 xconnect topology by cross connecting two interfaces on
 | | Vpp l2bd forwarding setup | ${dut2} | ${dut2_if1} | ${dut2_if2}
 | | All Vpp Interfaces Ready Wait | ${nodes}
 
-| 2-node Performance Suite Setup
-| | [Documentation]
-| | ... | Suite preparation phase that setup default startup configuration of
-| | ... | VPP on all DUTs. Updates interfaces on all nodes and setup global
-| | ... | variables used in test cases. Initializes traffic generator.
-| | ...
-| | ... | *Arguments:*
-| | ... | - topology_type - Topology type. Type: string
-| | ...
-| | ... | *Example:*
-| | ...
-| | ... | \| 2-node Performance Suite Setup \| L2 \|
-| | [Arguments] | ${topology_type}
-| | Setup default startup configuration of VPP on all DUTs
-| | Show vpp version on all DUTs
-| | Setup performance rate Variables
-| | Setup performance global Variables
-| | 2-node circular Topology Variables Setup
-| | Initialize traffic generator | ${tg} | ${tg_if1} | ${tg_if2}
-| | ...                          | ${dut1} | ${dut1_if1}
-| | ...                          | ${dut1} | ${dut1_if2}
-| | ...                          | ${topology_type}
-
-| 3-node Performance Suite Setup
-| | [Documentation]
-| | ... | Suite preparation phase that setup default startup configuration of
-| | ... | VPP on all DUTs. Updates interfaces on all nodes and setup global
-| | ... | variables used in test cases. Initializes traffic generator.
-| | ...
-| | ... | *Arguments:*
-| | ... | - topology_type - Topology type. Type: string
-| | ...
-| | ... | *Example:*
-| | ...
-| | ... | \| 3-node Performance Suite Setup \| L2 \|
-| | [Arguments] | ${topology_type}
-| | Setup default startup configuration of VPP on all DUTs
-| | Show vpp version on all DUTs
-| | Setup performance rate Variables
-| | Setup performance global Variables
-| | 3-node circular Topology Variables Setup
-| | Initialize traffic generator | ${tg} | ${tg_if1} | ${tg_if2}
-| | ...                          | ${dut1} | ${dut1_if1}
-| | ...                          | ${dut2} | ${dut2_if2}
-| | ...                          | ${topology_type}
-
 2-node Performance Suite Setup with DUT's NIC model
 | | [Documentation]
 | | ... | Suite preparation phase that setup default startup configuration of
 | | ... | \| (0, 10/10/10) \|
 | | [Arguments] | ${rate_per_stream} | ${framesize} | ${nr_streams}
 | | ...         | ${latency}
+| | ${framesize}= | Get Frame Size | ${framesize}
 | | ${rate_total}= | Evaluate | ${rate_per_stream}*${nr_streams}
 | | ${bandwidth_total}= | Evaluate | ${rate_total}*(${framesize}+20)*8/(10**9)
 | | Set Test Message | FINAL_RATE: ${rate_total} pps
 | | ... | \| percentage \| (0, 10/10/10) \|
 | | [Arguments] | ${rate_per_stream} | ${framesize} | ${nr_streams}
 | | ...         | ${loss_acceptance} | ${loss_acceptance_type} | ${latency}
+| | ${framesize}= | Get Frame Size | ${framesize}
 | | ${rate_total}= | Evaluate | ${rate_per_stream}*${nr_streams}
 | | ${bandwidth_total}= | Evaluate | ${rate_total}*(${framesize}+20)*8/(10**9)
 | | Set Test Message | FINAL_RATE: ${rate_total} pps