diff --git a/lib/openflow/multipart/queue/reply.ex b/lib/openflow/multipart/queue/reply.ex index a420ba1..3e6e83e 100644 --- a/lib/openflow/multipart/queue/reply.ex +++ b/lib/openflow/multipart/queue/reply.ex @@ -13,12 +13,8 @@ defmodule Openflow.Multipart.Queue.Reply do def ofp_type, do: 18 - def new(queues \\ []) do - %Reply{queues: queues} - end - def read(<>) do - queues = Openflow.Multipart.Queue.read(queues_bin) + queues = Openflow.Multipart.QueueStats.read(queues_bin) %Reply{queues: queues} end @@ -36,7 +32,7 @@ defmodule Openflow.Multipart.Queue.Reply do end end -defmodule Openflow.Multipart.Queue do +defmodule Openflow.Multipart.QueueStats do defstruct( port_number: 0, queue_id: 0, @@ -65,7 +61,7 @@ defmodule Openflow.Multipart.Queue do <> ) do - %Queue{ + %QueueStats{ port_number: port_no, queue_id: queue_id, tx_bytes: tx_bytes, diff --git a/lib/openflow/multipart/queue/request.ex b/lib/openflow/multipart/queue/request.ex index 4240ede..dce2ef2 100644 --- a/lib/openflow/multipart/queue/request.ex +++ b/lib/openflow/multipart/queue/request.ex @@ -13,11 +13,12 @@ defmodule Openflow.Multipart.Queue.Request do def ofp_type, do: 18 - def new(options) do - xid = Keyword.get(options, :xid, 0) - port_no = Keyword.get(options, :port_number, :any) - queue_id = Keyword.get(options, :queue_id, :all) - %Request{xid: xid, port_number: port_no, queue_id: queue_id} + def new(options \\ []) do + %Request{ + xid: options[:xid] || 0, + port_number: options[:port_number] || :any, + queue_id: options[:queue_id] || :all + } end def read(<>) do diff --git a/test/lib/openflow/ofp_queue_stats_test.exs b/test/lib/openflow/ofp_queue_stats_test.exs new file mode 100644 index 0000000..07154e0 --- /dev/null +++ b/test/lib/openflow/ofp_queue_stats_test.exs @@ -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