quality: Add test cases for group_desc and group_features messages

This commit is contained in:
Eishun Kondoh 2019-05-05 22:56:16 +09:00
parent 87ff193b63
commit b5d0a5654a
9 changed files with 1073 additions and 463 deletions

View file

@ -4,6 +4,7 @@ defmodule Openflow.Multipart.GroupDesc.Reply do
xid: 0,
# virtual field
datapath_id: nil,
aux_id: nil,
flags: [],
groups: []
)

View file

@ -4,11 +4,20 @@ defmodule Openflow.Multipart.GroupDesc.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,
flags: [:more]
}
def ofp_type, do: 18
def new(xid \\ 0) do

View file

@ -19,29 +19,29 @@ defmodule Openflow.Multipart.GroupFeatures.Reply do
)
alias __MODULE__
alias Openflow.Enums
def ofp_type, do: 18
def read(
<<types_int::32, capabilities_int::32, max_groups_for_all_int::32,
max_groups_for_select_int::32, max_groups_for_indirect_int::32,
max_groups_for_fast_failover_int::32, actions_for_all_int::32,
<<types_int::32, capabilities_int::32, max_groups_for_all::32, max_groups_for_select::32,
max_groups_for_indirect::32, max_groups_for_fast_failover::32, actions_for_all_int::32,
actions_for_select_int::32, actions_for_indirect_int::32,
actions_for_fast_failover_int::32>>
) do
capabilities = Openflow.Enums.int_to_flags(capabilities_int, :group_capabilities)
%Reply{
types: types_int,
types: Enums.int_to_flags(types_int, :group_type_flags),
capabilities: capabilities,
max_groups_for_all: max_groups_for_all_int,
max_groups_for_select: max_groups_for_select_int,
max_groups_for_indirect: max_groups_for_indirect_int,
max_groups_for_fast_failover: max_groups_for_fast_failover_int,
actions_for_all: actions_for_all_int,
actions_for_select: actions_for_select_int,
actions_for_indirect: actions_for_indirect_int,
actions_for_fast_failover: actions_for_fast_failover_int
max_groups_for_all: max_groups_for_all,
max_groups_for_select: max_groups_for_select,
max_groups_for_indirect: max_groups_for_indirect,
max_groups_for_fast_failover: max_groups_for_fast_failover,
actions_for_all: Enums.int_to_flags(actions_for_all_int, :action_flags),
actions_for_select: Enums.int_to_flags(actions_for_select_int, :action_flags),
actions_for_indirect: Enums.int_to_flags(actions_for_indirect_int, :action_flags),
actions_for_fast_failover: Enums.int_to_flags(actions_for_fast_failover_int, :action_flags)
}
end
end

View file

@ -4,22 +4,28 @@ defmodule Openflow.Multipart.GroupFeatures.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(xid :: 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()) :: binary()
def to_binary(%Request{} = msg), do: Openflow.Multipart.Request.header(msg)
end