quality: Add test cases for queue_stats messages

This commit is contained in:
Eishun Kondoh 2019-05-05 23:46:50 +09:00
parent 599f1947db
commit 2bfccd693f
3 changed files with 75 additions and 12 deletions

View file

@ -13,12 +13,8 @@ defmodule Openflow.Multipart.Queue.Reply do
def ofp_type, do: 18 def ofp_type, do: 18
def new(queues \\ []) do
%Reply{queues: queues}
end
def read(<<queues_bin::bytes>>) do def read(<<queues_bin::bytes>>) do
queues = Openflow.Multipart.Queue.read(queues_bin) queues = Openflow.Multipart.QueueStats.read(queues_bin)
%Reply{queues: queues} %Reply{queues: queues}
end end
@ -36,7 +32,7 @@ defmodule Openflow.Multipart.Queue.Reply do
end end
end end
defmodule Openflow.Multipart.Queue do defmodule Openflow.Multipart.QueueStats do
defstruct( defstruct(
port_number: 0, port_number: 0,
queue_id: 0, queue_id: 0,
@ -65,7 +61,7 @@ defmodule Openflow.Multipart.Queue do
<<port_no::32, queue_id::32, tx_bytes::64, tx_packets::64, tx_errors::64, <<port_no::32, queue_id::32, tx_bytes::64, tx_packets::64, tx_errors::64,
duration_sec::32, duration_nsec::32>> duration_sec::32, duration_nsec::32>>
) do ) do
%Queue{ %QueueStats{
port_number: port_no, port_number: port_no,
queue_id: queue_id, queue_id: queue_id,
tx_bytes: tx_bytes, tx_bytes: tx_bytes,

View file

@ -13,11 +13,12 @@ defmodule Openflow.Multipart.Queue.Request do
def ofp_type, do: 18 def ofp_type, do: 18
def new(options) do def new(options \\ []) do
xid = Keyword.get(options, :xid, 0) %Request{
port_no = Keyword.get(options, :port_number, :any) xid: options[:xid] || 0,
queue_id = Keyword.get(options, :queue_id, :all) port_number: options[:port_number] || :any,
%Request{xid: xid, port_number: port_no, queue_id: queue_id} queue_id: options[:queue_id] || :all
}
end end
def read(<<port_no_int::32, queue_id_int::32>>) do def read(<<port_no_int::32, queue_id_int::32>>) do

View file

@ -0,0 +1,66 @@
defmodule OfpQueueStatsTest do
use ExUnit.Case
describe "Openflow.Multipart.Queue.Request" do
test "with default values" do
queue_stats =
%Openflow.Multipart.Queue.Request{}
|> Map.to_list()
|> Openflow.Multipart.Queue.Request.new()
|> Openflow.to_binary()
|> Openflow.read()
|> Kernel.elem(1)
assert queue_stats.xid == 0
assert queue_stats.port_number == :any
assert queue_stats.queue_id == :all
end
end
describe "Openflow.Multipart.Queue.Reply" do
test "with test packet_data" do
queue_stats =
"test/packet_data/4-38-ofp_queue_stats_reply.packet"
|> File.read!()
|> Openflow.read()
|> Kernel.elem(1)
%Openflow.Multipart.Queue.Reply{
aux_id: nil,
datapath_id: nil,
flags: [],
queues: [
%Openflow.Multipart.QueueStats{
duration_nsec: 0,
duration_sec: 0,
port_number: 7,
queue_id: 1,
tx_bytes: 0,
tx_errors: 0,
tx_packets: 0
},
%Openflow.Multipart.QueueStats{
duration_nsec: 0,
duration_sec: 0,
port_number: 6,
queue_id: 1,
tx_bytes: 0,
tx_errors: 0,
tx_packets: 0
},
%Openflow.Multipart.QueueStats{
duration_nsec: 0,
duration_sec: 0,
port_number: 7,
queue_id: 2,
tx_bytes: 0,
tx_errors: 0,
tx_packets: 0
}
],
version: 4,
xid: 0
} = queue_stats
end
end
end