quality: Add test cases for port_desc and port_stats messages
This commit is contained in:
parent
2e3f772b1f
commit
599f1947db
8 changed files with 153 additions and 31 deletions
|
|
@ -325,10 +325,10 @@ defmodule Openflow.Enums do
|
||||||
_class, _reason -> Openflow.Multipart.Table.Request
|
_class, _reason -> Openflow.Multipart.Table.Request
|
||||||
end
|
end
|
||||||
|
|
||||||
def to_int(Openflow.Multipart.PortStats.Request, :multipart_request_codec) do
|
def to_int(Openflow.Multipart.Port.Request, :multipart_request_codec) do
|
||||||
multipart_request_codec_to_int(Openflow.Multipart.PortStats.Request)
|
multipart_request_codec_to_int(Openflow.Multipart.Port.Request)
|
||||||
catch
|
catch
|
||||||
_class, _reason -> Openflow.Multipart.PortStats.Request
|
_class, _reason -> Openflow.Multipart.Port.Request
|
||||||
end
|
end
|
||||||
|
|
||||||
def to_int(Openflow.Multipart.Queue.Request, :multipart_request_codec) do
|
def to_int(Openflow.Multipart.Queue.Request, :multipart_request_codec) do
|
||||||
|
|
@ -419,10 +419,10 @@ defmodule Openflow.Enums do
|
||||||
_class, _reason -> Openflow.Multipart.Table.Reply
|
_class, _reason -> Openflow.Multipart.Table.Reply
|
||||||
end
|
end
|
||||||
|
|
||||||
def to_int(Openflow.Multipart.PortStats.Reply, :multipart_reply_codec) do
|
def to_int(Openflow.Multipart.Port.Reply, :multipart_reply_codec) do
|
||||||
multipart_reply_codec_to_int(Openflow.Multipart.PortStats.Reply)
|
multipart_reply_codec_to_int(Openflow.Multipart.Port.Reply)
|
||||||
catch
|
catch
|
||||||
_class, _reason -> Openflow.Multipart.PortStats.Reply
|
_class, _reason -> Openflow.Multipart.Port.Reply
|
||||||
end
|
end
|
||||||
|
|
||||||
def to_int(Openflow.Multipart.Queue.Reply, :multipart_reply_codec) do
|
def to_int(Openflow.Multipart.Queue.Reply, :multipart_reply_codec) do
|
||||||
|
|
@ -10941,7 +10941,7 @@ defmodule Openflow.Enums do
|
||||||
def multipart_request_codec_to_int(Openflow.Multipart.Flow.Request), do: 0x1
|
def multipart_request_codec_to_int(Openflow.Multipart.Flow.Request), do: 0x1
|
||||||
def multipart_request_codec_to_int(Openflow.Multipart.Aggregate.Request), do: 0x2
|
def multipart_request_codec_to_int(Openflow.Multipart.Aggregate.Request), do: 0x2
|
||||||
def multipart_request_codec_to_int(Openflow.Multipart.Table.Request), do: 0x3
|
def multipart_request_codec_to_int(Openflow.Multipart.Table.Request), do: 0x3
|
||||||
def multipart_request_codec_to_int(Openflow.Multipart.PortStats.Request), do: 0x4
|
def multipart_request_codec_to_int(Openflow.Multipart.Port.Request), do: 0x4
|
||||||
def multipart_request_codec_to_int(Openflow.Multipart.Queue.Request), do: 0x5
|
def multipart_request_codec_to_int(Openflow.Multipart.Queue.Request), do: 0x5
|
||||||
def multipart_request_codec_to_int(Openflow.Multipart.Group.Request), do: 0x6
|
def multipart_request_codec_to_int(Openflow.Multipart.Group.Request), do: 0x6
|
||||||
def multipart_request_codec_to_int(Openflow.Multipart.GroupDesc.Request), do: 0x7
|
def multipart_request_codec_to_int(Openflow.Multipart.GroupDesc.Request), do: 0x7
|
||||||
|
|
@ -10957,7 +10957,7 @@ defmodule Openflow.Enums do
|
||||||
def multipart_request_codec_to_atom(0x1), do: Openflow.Multipart.Flow.Request
|
def multipart_request_codec_to_atom(0x1), do: Openflow.Multipart.Flow.Request
|
||||||
def multipart_request_codec_to_atom(0x2), do: Openflow.Multipart.Aggregate.Request
|
def multipart_request_codec_to_atom(0x2), do: Openflow.Multipart.Aggregate.Request
|
||||||
def multipart_request_codec_to_atom(0x3), do: Openflow.Multipart.Table.Request
|
def multipart_request_codec_to_atom(0x3), do: Openflow.Multipart.Table.Request
|
||||||
def multipart_request_codec_to_atom(0x4), do: Openflow.Multipart.PortStats.Request
|
def multipart_request_codec_to_atom(0x4), do: Openflow.Multipart.Port.Request
|
||||||
def multipart_request_codec_to_atom(0x5), do: Openflow.Multipart.Queue.Request
|
def multipart_request_codec_to_atom(0x5), do: Openflow.Multipart.Queue.Request
|
||||||
def multipart_request_codec_to_atom(0x6), do: Openflow.Multipart.Group.Request
|
def multipart_request_codec_to_atom(0x6), do: Openflow.Multipart.Group.Request
|
||||||
def multipart_request_codec_to_atom(0x7), do: Openflow.Multipart.GroupDesc.Request
|
def multipart_request_codec_to_atom(0x7), do: Openflow.Multipart.GroupDesc.Request
|
||||||
|
|
@ -10973,7 +10973,7 @@ defmodule Openflow.Enums do
|
||||||
def multipart_reply_codec_to_int(Openflow.Multipart.Flow.Reply), do: 0x1
|
def multipart_reply_codec_to_int(Openflow.Multipart.Flow.Reply), do: 0x1
|
||||||
def multipart_reply_codec_to_int(Openflow.Multipart.Aggregate.Reply), do: 0x2
|
def multipart_reply_codec_to_int(Openflow.Multipart.Aggregate.Reply), do: 0x2
|
||||||
def multipart_reply_codec_to_int(Openflow.Multipart.Table.Reply), do: 0x3
|
def multipart_reply_codec_to_int(Openflow.Multipart.Table.Reply), do: 0x3
|
||||||
def multipart_reply_codec_to_int(Openflow.Multipart.PortStats.Reply), do: 0x4
|
def multipart_reply_codec_to_int(Openflow.Multipart.Port.Reply), do: 0x4
|
||||||
def multipart_reply_codec_to_int(Openflow.Multipart.Queue.Reply), do: 0x5
|
def multipart_reply_codec_to_int(Openflow.Multipart.Queue.Reply), do: 0x5
|
||||||
def multipart_reply_codec_to_int(Openflow.Multipart.Group.Reply), do: 0x6
|
def multipart_reply_codec_to_int(Openflow.Multipart.Group.Reply), do: 0x6
|
||||||
def multipart_reply_codec_to_int(Openflow.Multipart.GroupDesc.Reply), do: 0x7
|
def multipart_reply_codec_to_int(Openflow.Multipart.GroupDesc.Reply), do: 0x7
|
||||||
|
|
@ -10989,7 +10989,7 @@ defmodule Openflow.Enums do
|
||||||
def multipart_reply_codec_to_atom(0x1), do: Openflow.Multipart.Flow.Reply
|
def multipart_reply_codec_to_atom(0x1), do: Openflow.Multipart.Flow.Reply
|
||||||
def multipart_reply_codec_to_atom(0x2), do: Openflow.Multipart.Aggregate.Reply
|
def multipart_reply_codec_to_atom(0x2), do: Openflow.Multipart.Aggregate.Reply
|
||||||
def multipart_reply_codec_to_atom(0x3), do: Openflow.Multipart.Table.Reply
|
def multipart_reply_codec_to_atom(0x3), do: Openflow.Multipart.Table.Reply
|
||||||
def multipart_reply_codec_to_atom(0x4), do: Openflow.Multipart.PortStats.Reply
|
def multipart_reply_codec_to_atom(0x4), do: Openflow.Multipart.Port.Reply
|
||||||
def multipart_reply_codec_to_atom(0x5), do: Openflow.Multipart.Queue.Reply
|
def multipart_reply_codec_to_atom(0x5), do: Openflow.Multipart.Queue.Reply
|
||||||
def multipart_reply_codec_to_atom(0x6), do: Openflow.Multipart.Group.Reply
|
def multipart_reply_codec_to_atom(0x6), do: Openflow.Multipart.Group.Reply
|
||||||
def multipart_reply_codec_to_atom(0x7), do: Openflow.Multipart.GroupDesc.Reply
|
def multipart_reply_codec_to_atom(0x7), do: Openflow.Multipart.GroupDesc.Reply
|
||||||
|
|
@ -13542,7 +13542,7 @@ defmodule Openflow.Enums do
|
||||||
{Openflow.Multipart.Flow.Request, 1},
|
{Openflow.Multipart.Flow.Request, 1},
|
||||||
{Openflow.Multipart.Aggregate.Request, 2},
|
{Openflow.Multipart.Aggregate.Request, 2},
|
||||||
{Openflow.Multipart.Table.Request, 3},
|
{Openflow.Multipart.Table.Request, 3},
|
||||||
{Openflow.Multipart.PortStats.Request, 4},
|
{Openflow.Multipart.Port.Request, 4},
|
||||||
{Openflow.Multipart.Queue.Request, 5},
|
{Openflow.Multipart.Queue.Request, 5},
|
||||||
{Openflow.Multipart.Group.Request, 6},
|
{Openflow.Multipart.Group.Request, 6},
|
||||||
{Openflow.Multipart.GroupDesc.Request, 7},
|
{Openflow.Multipart.GroupDesc.Request, 7},
|
||||||
|
|
@ -13561,7 +13561,7 @@ defmodule Openflow.Enums do
|
||||||
{Openflow.Multipart.Flow.Reply, 1},
|
{Openflow.Multipart.Flow.Reply, 1},
|
||||||
{Openflow.Multipart.Aggregate.Reply, 2},
|
{Openflow.Multipart.Aggregate.Reply, 2},
|
||||||
{Openflow.Multipart.Table.Reply, 3},
|
{Openflow.Multipart.Table.Reply, 3},
|
||||||
{Openflow.Multipart.PortStats.Reply, 4},
|
{Openflow.Multipart.Port.Reply, 4},
|
||||||
{Openflow.Multipart.Queue.Reply, 5},
|
{Openflow.Multipart.Queue.Reply, 5},
|
||||||
{Openflow.Multipart.Group.Reply, 6},
|
{Openflow.Multipart.Group.Reply, 6},
|
||||||
{Openflow.Multipart.GroupDesc.Reply, 7},
|
{Openflow.Multipart.GroupDesc.Reply, 7},
|
||||||
|
|
|
||||||
|
|
@ -13,10 +13,6 @@ defmodule Openflow.Multipart.PortDesc.Reply do
|
||||||
|
|
||||||
def ofp_type, do: 18
|
def ofp_type, do: 18
|
||||||
|
|
||||||
def new(ports \\ []) do
|
|
||||||
%Reply{ports: ports}
|
|
||||||
end
|
|
||||||
|
|
||||||
def read(<<ports_bin::bytes>>) do
|
def read(<<ports_bin::bytes>>) do
|
||||||
ports = for <<port_bin::64-bytes <- ports_bin>>, do: Openflow.Port.read(port_bin)
|
ports = for <<port_bin::64-bytes <- ports_bin>>, do: Openflow.Port.read(port_bin)
|
||||||
%Reply{ports: Enum.reverse(ports)}
|
%Reply{ports: Enum.reverse(ports)}
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
defmodule Openflow.Multipart.PortStats.Reply do
|
defmodule Openflow.Multipart.Port.Reply do
|
||||||
defstruct(
|
defstruct(
|
||||||
version: 4,
|
version: 4,
|
||||||
xid: 0,
|
xid: 0,
|
||||||
|
|
@ -13,10 +13,6 @@ defmodule Openflow.Multipart.PortStats.Reply do
|
||||||
|
|
||||||
def ofp_type, do: 18
|
def ofp_type, do: 18
|
||||||
|
|
||||||
def new(ports \\ []) do
|
|
||||||
%Reply{ports: ports}
|
|
||||||
end
|
|
||||||
|
|
||||||
def read(<<ports_bin::bytes>>) do
|
def read(<<ports_bin::bytes>>) do
|
||||||
ports = Openflow.Multipart.PortStats.read(ports_bin)
|
ports = Openflow.Multipart.PortStats.read(ports_bin)
|
||||||
%Reply{ports: ports}
|
%Reply{ports: ports}
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
defmodule Openflow.Multipart.PortStats.Request do
|
defmodule Openflow.Multipart.Port.Request do
|
||||||
defstruct(
|
defstruct(
|
||||||
version: 4,
|
version: 4,
|
||||||
xid: 0,
|
xid: 0,
|
||||||
|
|
@ -12,11 +12,7 @@ defmodule Openflow.Multipart.PortStats.Request do
|
||||||
|
|
||||||
def ofp_type, do: 18
|
def ofp_type, do: 18
|
||||||
|
|
||||||
def new(port_no) when is_integer(port_no) or is_atom(port_no) do
|
def new(options \\ []) do
|
||||||
%Request{port_number: port_no}
|
|
||||||
end
|
|
||||||
|
|
||||||
def new(options) when is_list(options) do
|
|
||||||
%Request{
|
%Request{
|
||||||
xid: options[:xid] || 0,
|
xid: options[:xid] || 0,
|
||||||
port_number: options[:port_no] || :any
|
port_number: options[:port_no] || :any
|
||||||
|
|
|
||||||
|
|
@ -73,7 +73,7 @@ enums = [
|
||||||
{Openflow.Multipart.Flow.Request, 1},
|
{Openflow.Multipart.Flow.Request, 1},
|
||||||
{Openflow.Multipart.Aggregate.Request, 2},
|
{Openflow.Multipart.Aggregate.Request, 2},
|
||||||
{Openflow.Multipart.Table.Request, 3},
|
{Openflow.Multipart.Table.Request, 3},
|
||||||
{Openflow.Multipart.PortStats.Request, 4},
|
{Openflow.Multipart.Port.Request, 4},
|
||||||
{Openflow.Multipart.Queue.Request, 5},
|
{Openflow.Multipart.Queue.Request, 5},
|
||||||
{Openflow.Multipart.Group.Request, 6},
|
{Openflow.Multipart.Group.Request, 6},
|
||||||
{Openflow.Multipart.GroupDesc.Request, 7},
|
{Openflow.Multipart.GroupDesc.Request, 7},
|
||||||
|
|
@ -90,7 +90,7 @@ enums = [
|
||||||
{Openflow.Multipart.Flow.Reply, 1},
|
{Openflow.Multipart.Flow.Reply, 1},
|
||||||
{Openflow.Multipart.Aggregate.Reply, 2},
|
{Openflow.Multipart.Aggregate.Reply, 2},
|
||||||
{Openflow.Multipart.Table.Reply, 3},
|
{Openflow.Multipart.Table.Reply, 3},
|
||||||
{Openflow.Multipart.PortStats.Reply, 4},
|
{Openflow.Multipart.Port.Reply, 4},
|
||||||
{Openflow.Multipart.Queue.Reply, 5},
|
{Openflow.Multipart.Queue.Reply, 5},
|
||||||
{Openflow.Multipart.Group.Reply, 6},
|
{Openflow.Multipart.Group.Reply, 6},
|
||||||
{Openflow.Multipart.GroupDesc.Reply, 7},
|
{Openflow.Multipart.GroupDesc.Reply, 7},
|
||||||
|
|
|
||||||
|
|
@ -32,12 +32,12 @@ defmodule OfpMeterStatsTest do
|
||||||
%Openflow.Multipart.Meter{
|
%Openflow.Multipart.Meter{
|
||||||
band_stats: [%{byte_band_count: 0, packet_band_count: 0}],
|
band_stats: [%{byte_band_count: 0, packet_band_count: 0}],
|
||||||
byte_in_count: 0,
|
byte_in_count: 0,
|
||||||
duration_nsec: 480000,
|
duration_nsec: 480_000,
|
||||||
duration_sec: 0,
|
duration_sec: 0,
|
||||||
flow_count: 0,
|
flow_count: 0,
|
||||||
meter_id: 100,
|
meter_id: 100,
|
||||||
packet_in_count: 0
|
packet_in_count: 0
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
version: 4,
|
version: 4,
|
||||||
xid: 0
|
xid: 0
|
||||||
|
|
|
||||||
62
test/lib/openflow/ofp_port_desc_stats_test.exs
Normal file
62
test/lib/openflow/ofp_port_desc_stats_test.exs
Normal file
|
|
@ -0,0 +1,62 @@
|
||||||
|
defmodule OfpPortDescTest do
|
||||||
|
use ExUnit.Case
|
||||||
|
|
||||||
|
describe "Openflow.Multipart.PortDesc.Request" do
|
||||||
|
test "with default values" do
|
||||||
|
desc = Openflow.Multipart.PortDesc.Request.new(0)
|
||||||
|
|
||||||
|
desc
|
||||||
|
|> Openflow.to_binary()
|
||||||
|
|> Openflow.read()
|
||||||
|
|> Kernel.elem(1)
|
||||||
|
|> Kernel.==(desc)
|
||||||
|
|> assert()
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
describe "Openflow.Multipart.PortDesc.Reply" do
|
||||||
|
test "with test packet_data" do
|
||||||
|
port_desc_stats =
|
||||||
|
"test/packet_data/4-54-ofp_port_desc_reply.packet"
|
||||||
|
|> File.read!()
|
||||||
|
|> Openflow.read()
|
||||||
|
|> Kernel.elem(1)
|
||||||
|
|
||||||
|
%Openflow.Multipart.PortDesc.Reply{
|
||||||
|
aux_id: nil,
|
||||||
|
datapath_id: nil,
|
||||||
|
flags: [],
|
||||||
|
ports: [
|
||||||
|
%Openflow.Port{
|
||||||
|
advertised_features: [:copper, :autoneg],
|
||||||
|
config: [],
|
||||||
|
current_features: [:"100mb_fd", :copper, :autoneg],
|
||||||
|
current_speed: 5000,
|
||||||
|
hw_addr: "f20ba47df8ea",
|
||||||
|
max_speed: 5000,
|
||||||
|
name: "Port6",
|
||||||
|
number: 6,
|
||||||
|
peer_features: [:"100mb_fd", :copper, :autoneg],
|
||||||
|
state: [:live],
|
||||||
|
supported_features: [:"100mb_fd", :copper, :autoneg]
|
||||||
|
},
|
||||||
|
%Openflow.Port{
|
||||||
|
advertised_features: [:copper, :autoneg],
|
||||||
|
config: [],
|
||||||
|
current_features: [:"100mb_fd", :copper, :autoneg],
|
||||||
|
current_speed: 5000,
|
||||||
|
hw_addr: "f20ba4d03f70",
|
||||||
|
max_speed: 5000,
|
||||||
|
name: "Port7",
|
||||||
|
number: 7,
|
||||||
|
peer_features: [:"100mb_fd", :copper, :autoneg],
|
||||||
|
state: [:live],
|
||||||
|
supported_features: [:"100mb_fd", :copper, :autoneg]
|
||||||
|
}
|
||||||
|
],
|
||||||
|
version: 4,
|
||||||
|
xid: 0
|
||||||
|
} = port_desc_stats
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
72
test/lib/openflow/ofp_port_stats_test.exs
Normal file
72
test/lib/openflow/ofp_port_stats_test.exs
Normal file
|
|
@ -0,0 +1,72 @@
|
||||||
|
defmodule OfpPortStatsTest do
|
||||||
|
use ExUnit.Case
|
||||||
|
|
||||||
|
describe "Openflow.Multipart.Port.Request" do
|
||||||
|
test "with default values" do
|
||||||
|
port_stats =
|
||||||
|
%Openflow.Multipart.Port.Request{}
|
||||||
|
|> Map.to_list()
|
||||||
|
|> Openflow.Multipart.Port.Request.new()
|
||||||
|
|> Openflow.to_binary()
|
||||||
|
|> Openflow.read()
|
||||||
|
|> Kernel.elem(1)
|
||||||
|
|
||||||
|
assert port_stats.xid == 0
|
||||||
|
assert port_stats.port_number == :any
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
describe "Openflow.Multipart.Port.Reply" do
|
||||||
|
test "with test packet_data" do
|
||||||
|
port_stats =
|
||||||
|
"test/packet_data/4-30-ofp_port_stats_reply.packet"
|
||||||
|
|> File.read!()
|
||||||
|
|> Openflow.read()
|
||||||
|
|> Kernel.elem(1)
|
||||||
|
|
||||||
|
%Openflow.Multipart.Port.Reply{
|
||||||
|
aux_id: nil,
|
||||||
|
datapath_id: nil,
|
||||||
|
flags: [],
|
||||||
|
ports: [
|
||||||
|
%Openflow.Multipart.PortStats{
|
||||||
|
collisions: 0,
|
||||||
|
duration_nsec: 0,
|
||||||
|
duration_sec: 0,
|
||||||
|
port_number: 7,
|
||||||
|
rx_bytes: 0,
|
||||||
|
rx_crc_err: 0,
|
||||||
|
rx_dropped: 0,
|
||||||
|
rx_errors: 0,
|
||||||
|
rx_frame_err: 0,
|
||||||
|
rx_over_err: 0,
|
||||||
|
rx_packets: 0,
|
||||||
|
tx_bytes: 336,
|
||||||
|
tx_dropped: 0,
|
||||||
|
tx_errors: 0,
|
||||||
|
tx_packets: 4
|
||||||
|
},
|
||||||
|
%Openflow.Multipart.PortStats{
|
||||||
|
collisions: 0,
|
||||||
|
duration_nsec: 0,
|
||||||
|
duration_sec: 0,
|
||||||
|
port_number: 6,
|
||||||
|
rx_bytes: 336,
|
||||||
|
rx_crc_err: 0,
|
||||||
|
rx_dropped: 0,
|
||||||
|
rx_errors: 0,
|
||||||
|
rx_frame_err: 0,
|
||||||
|
rx_over_err: 0,
|
||||||
|
rx_packets: 4,
|
||||||
|
tx_bytes: 336,
|
||||||
|
tx_dropped: 0,
|
||||||
|
tx_errors: 0,
|
||||||
|
tx_packets: 4
|
||||||
|
}
|
||||||
|
],
|
||||||
|
version: 4,
|
||||||
|
xid: 0
|
||||||
|
} = port_stats
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
Loading…
Add table
Add a link
Reference in a new issue