quality: Add test cases for desc stats message
This commit is contained in:
parent
794f2f3fca
commit
7055dfd93b
4 changed files with 115 additions and 20 deletions
|
|
@ -44,7 +44,7 @@ defmodule Openflow.Multipart.Aggregate.Reply do
|
|||
}
|
||||
end
|
||||
|
||||
@spec to_binary(t()) :: <<_::192>>
|
||||
@spec to_binary(t()) :: <<_::64, _::_*8>>
|
||||
def to_binary(aggregate) do
|
||||
<<
|
||||
Openflow.Multipart.Reply.header(aggregate)::bytes,
|
||||
|
|
|
|||
|
|
@ -15,22 +15,70 @@ defmodule Openflow.Multipart.Desc.Reply do
|
|||
|
||||
alias __MODULE__
|
||||
|
||||
@type t :: %Reply{
|
||||
version: 4,
|
||||
datapath_id: String.t() | nil,
|
||||
aux_id: 0..0xFF | nil,
|
||||
xid: 0..0xFFFFFFFF,
|
||||
flags: [],
|
||||
mfr_desc: String.t(),
|
||||
hw_desc: String.t(),
|
||||
sw_desc: String.t(),
|
||||
serial_num: String.t(),
|
||||
dp_desc: String.t()
|
||||
}
|
||||
|
||||
@desc_str_len 256
|
||||
@serial_num_len 32
|
||||
|
||||
@spec ofp_type() :: 19
|
||||
def ofp_type, do: 19
|
||||
|
||||
def read(
|
||||
<<mfr_desc::size(@desc_str_len)-bytes, hw_desc::size(@desc_str_len)-bytes,
|
||||
sw_desc::size(@desc_str_len)-bytes, serial_num::size(@serial_num_len)-bytes,
|
||||
dp_desc::size(@desc_str_len)-bytes>>
|
||||
) do
|
||||
@spec new(
|
||||
xid: 0..0xFFFFFFFF,
|
||||
mfr_desc: String.t(),
|
||||
hw_desc: String.t(),
|
||||
sw_desc: String.t(),
|
||||
serial_num: String.t(),
|
||||
dp_desc: String.t()
|
||||
) :: t()
|
||||
def new(options \\ []) do
|
||||
%Reply{
|
||||
mfr_desc: Openflow.Utils.decode_string(mfr_desc),
|
||||
hw_desc: Openflow.Utils.decode_string(hw_desc),
|
||||
sw_desc: Openflow.Utils.decode_string(sw_desc),
|
||||
serial_num: Openflow.Utils.decode_string(serial_num),
|
||||
dp_desc: Openflow.Utils.decode_string(dp_desc)
|
||||
xid: options[:xid] || 0,
|
||||
mfr_desc: options[:mfr_desc] || "",
|
||||
hw_desc: options[:hw_desc] || "",
|
||||
sw_desc: options[:sw_desc] || "",
|
||||
serial_num: options[:serial_num] || "",
|
||||
dp_desc: options[:dp_desc] || ""
|
||||
}
|
||||
end
|
||||
|
||||
@spec to_binary(t()) :: <<_::64, _::_*8>>
|
||||
def to_binary(%Reply{} = desc) do
|
||||
<<
|
||||
Openflow.Multipart.Reply.header(desc)::bytes,
|
||||
String.pad_trailing(desc.mfr_desc, @desc_str_len, <<0>>)::bytes,
|
||||
String.pad_trailing(desc.hw_desc, @desc_str_len, <<0>>)::bytes,
|
||||
String.pad_trailing(desc.sw_desc, @desc_str_len, <<0>>)::bytes,
|
||||
String.pad_trailing(desc.serial_num, @serial_num_len, <<0>>)::bytes,
|
||||
String.pad_trailing(desc.dp_desc, @desc_str_len, <<0>>)::bytes
|
||||
>>
|
||||
end
|
||||
|
||||
@spec read(<<_::8448>>) :: t()
|
||||
def read(<<
|
||||
mfr_desc::size(@desc_str_len)-bytes,
|
||||
hw_desc::size(@desc_str_len)-bytes,
|
||||
sw_desc::size(@desc_str_len)-bytes,
|
||||
serial_num::size(@serial_num_len)-bytes,
|
||||
dp_desc::size(@desc_str_len)-bytes
|
||||
>>) do
|
||||
%Reply{
|
||||
mfr_desc: hd(String.split(mfr_desc, <<0>>, parts: 2)),
|
||||
hw_desc: hd(String.split(hw_desc, <<0>>, parts: 2)),
|
||||
sw_desc: hd(String.split(sw_desc, <<0>>, parts: 2)),
|
||||
serial_num: hd(String.split(serial_num, <<0>>, parts: 2)),
|
||||
dp_desc: hd(String.split(dp_desc, <<0>>, parts: 2))
|
||||
}
|
||||
end
|
||||
end
|
||||
|
|
|
|||
|
|
@ -4,22 +4,28 @@ defmodule Openflow.Multipart.Desc.Request do
|
|||
xid: 0,
|
||||
# virtual field
|
||||
datapath_id: nil,
|
||||
aux_id: nil,
|
||||
flags: []
|
||||
)
|
||||
|
||||
alias __MODULE__
|
||||
|
||||
@type t :: %Request{
|
||||
version: 4,
|
||||
datapath_id: String.t(),
|
||||
aux_id: 0..0xFF | nil,
|
||||
xid: 0..0xFFFFFFFF
|
||||
}
|
||||
|
||||
@spec ofp_type() :: 18
|
||||
def ofp_type, do: 18
|
||||
|
||||
def new(xid \\ 0) do
|
||||
%Request{xid: xid}
|
||||
end
|
||||
@spec new(0..0xFFFFFFFF) :: t()
|
||||
def new(xid \\ 0), do: %Request{xid: xid}
|
||||
|
||||
def read("") do
|
||||
%Request{}
|
||||
end
|
||||
@spec read(<<>>) :: t()
|
||||
def read(""), do: %Request{}
|
||||
|
||||
def to_binary(%Request{} = msg) do
|
||||
Openflow.Multipart.Request.header(msg)
|
||||
end
|
||||
@spec to_binary(t()) :: <<_::64>>
|
||||
def to_binary(%Request{} = msg), do: Openflow.Multipart.Request.header(msg)
|
||||
end
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue