From 211d70336662476dde6f769a2166d4fa031bb27d Mon Sep 17 00:00:00 2001 From: Eishun Kondoh Date: Fri, 26 Apr 2019 23:42:04 +0900 Subject: [PATCH] quality: Add test cases for openflow actions --- lib/openflow/actions/nx_sample.ex | 15 +++++++- lib/openflow/actions/nx_sample2.ex | 2 +- test/ofp_action_test.exs | 60 ++++++++++++++++++++++++++++++ 3 files changed, 74 insertions(+), 3 deletions(-) diff --git a/lib/openflow/actions/nx_sample.ex b/lib/openflow/actions/nx_sample.ex index a1068bb..7c9c04b 100644 --- a/lib/openflow/actions/nx_sample.ex +++ b/lib/openflow/actions/nx_sample.ex @@ -12,12 +12,23 @@ defmodule Openflow.Action.NxSample do alias __MODULE__ alias Openflow.Action.Experimenter - def new(options \\ []) do + @spec new( + probability: 1..0xFFFF, + collector_set_id: 0..0xFFFFFFFF, + obs_domain_id: 0..0xFFFFFFFF, + obs_point_id: 0..0xFFFFFFFF + ) :: %NxSample{ + probability: 1..0xFFFF, + collector_set_id: 0..0xFFFFFFFF, + obs_domain_id: 0..0xFFFFFFFF, + obs_point_id: 0..0xFFFFFFFF + } + def new(options) do (is_integer(options[:probability]) and options[:probability] > 0) || raise("probability must be greater than 0") %NxSample{ - probability: options[:probability] || 0, + probability: options[:probability], collector_set_id: options[:collector_set_id] || 0, obs_domain_id: options[:obs_domain_id] || 0, obs_point_id: options[:obs_point_id] || 0 diff --git a/lib/openflow/actions/nx_sample2.ex b/lib/openflow/actions/nx_sample2.ex index 0cc7b6f..6005efb 100644 --- a/lib/openflow/actions/nx_sample2.ex +++ b/lib/openflow/actions/nx_sample2.ex @@ -18,7 +18,7 @@ defmodule Openflow.Action.NxSample2 do raise("probability must be greater than 0") %NxSample2{ - probability: options[:probability] || 0, + probability: options[:probability], collector_set_id: options[:collector_set_id] || 0, obs_domain_id: options[:obs_domain_id] || 0, obs_point_id: options[:obs_point_id] || 0, diff --git a/test/ofp_action_test.exs b/test/ofp_action_test.exs index 2288e8a..181f90a 100644 --- a/test/ofp_action_test.exs +++ b/test/ofp_action_test.exs @@ -1242,4 +1242,64 @@ defmodule OfpActionTest do Openflow.Action.NxConjunction.new(id: 1, clause: 0, n_clauses: 1) end end + + describe "Opefnlow.Action.NxSample" do + test "with sample(probability=1,collector_set_id=0,obs_domain_id=0,obs_point_id=0)" do + sample = + Openflow.Action.NxSample.new( + probability: 1, + collector_set_id: 0, + obs_domain_id: 0, + obs_point_id: 0 + ) + + sample + |> Openflow.Action.to_binary() + |> Openflow.Action.read() + |> Enum.at(0) + |> Kernel.==(sample) + |> assert() + end + end + + describe "Opefnlow.Action.NxSample2" do + test "with sample(probability=1,collector_set_id=0,obs_domain_id=0,obs_point_id=0, sampling_port=100)" do + sample = + Openflow.Action.NxSample2.new( + probability: 1, + collector_set_id: 0, + obs_domain_id: 0, + obs_point_id: 0, + sampling_port: 100 + ) + + sample + |> Openflow.Action.to_binary() + |> Openflow.Action.read() + |> Enum.at(0) + |> Kernel.==(sample) + |> assert() + end + end + + describe "Opefnlow.Action.NxSample3" do + test "with sample(probability=1,collector_set_id=0,obs_domain_id=0,obs_point_id=0, sampling_port=100,egress)" do + sample = + Openflow.Action.NxSample3.new( + probability: 1, + collector_set_id: 0, + obs_domain_id: 0, + obs_point_id: 0, + sampling_port: 100, + direction: :egress + ) + + sample + |> Openflow.Action.to_binary() + |> Openflow.Action.read() + |> Enum.at(0) + |> Kernel.==(sample) + |> assert() + end + end end