From db8aa3561bc5ecece178db3fbd8269f992b816ec Mon Sep 17 00:00:00 2001 From: Eishun Kondoh Date: Wed, 8 May 2019 22:29:44 +0900 Subject: [PATCH] quality: Add testcases for table_mod, set_controller_id and resume message handlers --- coveralls.json | 11 ++++++++++ lib/openflow/nx_set_controller_id.ex | 4 ---- lib/openflow/table_mod.ex | 8 ++----- test/lib/tres/handler_test.exs | 31 ++++++++++++++++++++++++---- 4 files changed, 40 insertions(+), 14 deletions(-) create mode 100644 coveralls.json diff --git a/coveralls.json b/coveralls.json new file mode 100644 index 0000000..4143d55 --- /dev/null +++ b/coveralls.json @@ -0,0 +1,11 @@ +{ + "skip_files": [ + "lib/openflow/enums.ex" + ], + + "coverage_options": { + "output_dir": "cover/", + "template_path": "lib/templates/html/htmlcov/", + "minimum_coverage": 0 + } +} diff --git a/lib/openflow/nx_set_controller_id.ex b/lib/openflow/nx_set_controller_id.ex index f249960..b036a70 100644 --- a/lib/openflow/nx_set_controller_id.ex +++ b/lib/openflow/nx_set_controller_id.ex @@ -16,10 +16,6 @@ defmodule Openflow.NxSetControllerId do %NxSetControllerId{id: controller_id} end - def read(<<@experimenter::32, @nx_type::32, _::size(6)-unit(8), controller_id::16>>) do - %NxSetControllerId{id: controller_id} - end - def to_binary(%NxSetControllerId{id: controller_id}) do <<@experimenter::32, @nx_type::32, 0::size(6)-unit(8), controller_id::16>> end diff --git a/lib/openflow/table_mod.ex b/lib/openflow/table_mod.ex index f0e148e..4242b61 100644 --- a/lib/openflow/table_mod.ex +++ b/lib/openflow/table_mod.ex @@ -14,15 +14,11 @@ defmodule Openflow.TableMod do def new(options) when is_list(options) do %TableMod{ - xid: options[:xid] || 0, - table_id: options[:table_id] || 0 + xid: Keyword.get(options, :xid, 0), + table_id: Keyword.get(options, :table_id, 0) } end - def new(table_id) when is_integer(table_id) or is_atom(table_id) do - %TableMod{table_id: table_id} - end - def read(<>) do table_id = Openflow.Utils.get_enum(table_id_int, :table_id) %TableMod{table_id: table_id, config: config} diff --git a/test/lib/tres/handler_test.exs b/test/lib/tres/handler_test.exs index 44b6546..9b9401b 100644 --- a/test/lib/tres/handler_test.exs +++ b/test/lib/tres/handler_test.exs @@ -1,5 +1,5 @@ defmodule Tres.HanderTest do - use ExUnit.Case + use ExUnit.Case, async: false @datapath_id "0000000000000001" @@ -16,6 +16,18 @@ defmodule Tres.HanderTest do end end + describe "Openflow TableMod message" do + test "with table_id" do + {:ok, :noreply} = sync_send_message(Openflow.TableMod.new(table_id: :all)) + end + end + + describe "Openflow NxSetControllerId message" do + test "with controller_id" do + {:ok, :noreply} = sync_send_message(Openflow.NxSetControllerId.new(0)) + end + end + describe "Openflow Error message" do test "with a flow" do send_message(Openflow.FlowMod.new(match: Openflow.Match.new(arp_tpa: {10, 10, 10, 10}))) @@ -68,20 +80,31 @@ defmodule Tres.HanderTest do send_message( Openflow.FlowMod.new( - instructions: Openflow.Instruction.ApplyActions.new(Openflow.Action.NxController2.new()) + priority: 0xFFFF, + match: Openflow.Match.new(in_port: 0xF, reg0: 99, eth_type: 0x0806), + instructions: Openflow.Instruction.ApplyActions.new([ + Openflow.Action.NxController2.new(pause: true), + Openflow.Action.NxResubmitTable.new() + ]) ) ) send_message( Openflow.PacketOut.new( buffer_id: :no_buffer, - in_port: :controller, - actions: [Openflow.Action.Output.new(:controller)], + in_port: 0xF, + actions: [ + Openflow.Action.SetField.new(reg0: 99), + Openflow.Action.Output.new(:table) + ], data: File.read!("test/packet_data/arp_packet.raw") ) ) + %Openflow.NxPacketIn2{} = packet_in2 = get_message() + {:ok, :noreply} = sync_send_message(Openflow.NxResume.new(packet_in: packet_in2)) %Openflow.NxPacketIn2{} = get_message() + send_message(Openflow.NxSetPacketInFormat.new(:standard)) end end