From 2e3f772b1fd2634cdaf37c5bb89cbe9204fbc438 Mon Sep 17 00:00:00 2001 From: Eishun Kondoh Date: Sun, 5 May 2019 23:22:01 +0900 Subject: [PATCH] quality: Add test cases for meter stats messages --- lib/openflow/multipart/meter/request.ex | 6 +-- .../multipart/meter_config/request.ex | 37 --------------- test/lib/openflow/ofp_meter_stats_test.exs | 47 +++++++++++++++++++ 3 files changed, 48 insertions(+), 42 deletions(-) delete mode 100644 lib/openflow/multipart/meter_config/request.ex create mode 100644 test/lib/openflow/ofp_meter_stats_test.exs diff --git a/lib/openflow/multipart/meter/request.ex b/lib/openflow/multipart/meter/request.ex index ea7bbdf..383e4de 100644 --- a/lib/openflow/multipart/meter/request.ex +++ b/lib/openflow/multipart/meter/request.ex @@ -12,11 +12,7 @@ defmodule Openflow.Multipart.Meter.Request do def ofp_type, do: 18 - def new(meter_id) when is_integer(meter_id) or is_atom(meter_id) do - %Request{meter_id: meter_id} - end - - def new(options) when is_list(options) do + def new(options \\ []) do %Request{ xid: options[:xid] || 0, meter_id: options[:meter_id] || :all diff --git a/lib/openflow/multipart/meter_config/request.ex b/lib/openflow/multipart/meter_config/request.ex deleted file mode 100644 index bd4c7a2..0000000 --- a/lib/openflow/multipart/meter_config/request.ex +++ /dev/null @@ -1,37 +0,0 @@ -defmodule Openflow.Multipart.MeterConfig.Request do - defstruct( - version: 4, - xid: 0, - # virtual field - datapath_id: nil, - flags: [], - meter_id: :all - ) - - alias __MODULE__ - - def ofp_type, do: 18 - - def new(meter_id) when is_integer(meter_id) or is_atom(meter_id) do - %Request{meter_id: meter_id} - end - - def new(options) when is_list(options) do - %Request{ - xid: options[:xid] || 0, - meter_id: options[:meter_id] || :all - } - end - - def read(<>) do - meter_id = Openflow.Utils.get_enum(meter_id_int, :meter_id) - %Request{meter_id: meter_id} - end - - def to_binary(%Request{meter_id: meter_id} = msg) do - meter_id_int = Openflow.Utils.get_enum(meter_id, :meter_id) - body_bin = <> - header_bin = Openflow.Multipart.Request.header(msg) - <> - end -end diff --git a/test/lib/openflow/ofp_meter_stats_test.exs b/test/lib/openflow/ofp_meter_stats_test.exs new file mode 100644 index 0000000..1070c81 --- /dev/null +++ b/test/lib/openflow/ofp_meter_stats_test.exs @@ -0,0 +1,47 @@ +defmodule OfpMeterStatsTest do + use ExUnit.Case + + describe "Openflow.Multipart.Meter.Request" do + test "with default values" do + meter_stats = + %Openflow.Multipart.Meter.Request{} + |> Map.to_list() + |> Openflow.Multipart.Meter.Request.new() + |> Openflow.to_binary() + |> Openflow.read() + |> Kernel.elem(1) + + assert meter_stats.xid == 0 + assert meter_stats.meter_id == :all + end + end + + describe "Openflow.Multipart.Meter.Reply" do + test "with test packet_data" do + meter_stats = + "test/packet_data/4-50-ofp_meter_stats_reply.packet" + |> File.read!() + |> Openflow.read() + |> Kernel.elem(1) + + %Openflow.Multipart.Meter.Reply{ + aux_id: nil, + datapath_id: nil, + flags: [], + meters: [ + %Openflow.Multipart.Meter{ + band_stats: [%{byte_band_count: 0, packet_band_count: 0}], + byte_in_count: 0, + duration_nsec: 480000, + duration_sec: 0, + flow_count: 0, + meter_id: 100, + packet_in_count: 0 +} + ], + version: 4, + xid: 0 + } = meter_stats + end + end +end