From 4da7a667ed36342ffda88f7d6c5c76b449d51eb6 Mon Sep 17 00:00:00 2001 From: Amer Tahir <amertahir@gmail.com> Date: Thu, 30 Aug 2012 17:17:35 -0400 Subject: [PATCH] small bug-fix and additional test case fixed bug in ruleId column storage type in db. added new test case to cover db storage/read --- .../firewall/Firewall.java | 4 +- .../firewall/FirewallTest.java | 46 ++++++++++++++++++- 2 files changed, 46 insertions(+), 4 deletions(-) diff --git a/src/main/java/net/floodlightcontroller/firewall/Firewall.java b/src/main/java/net/floodlightcontroller/firewall/Firewall.java index 2d7d4d857..d931bb1b1 100644 --- a/src/main/java/net/floodlightcontroller/firewall/Firewall.java +++ b/src/main/java/net/floodlightcontroller/firewall/Firewall.java @@ -349,7 +349,7 @@ public class Firewall implements IFirewallService, IOFMessageListener, IFloodlig } // add rule to database Map<String, Object> entry = new HashMap<String, Object>(); - entry.put(COLUMN_RULEID, rule.ruleid); + entry.put(COLUMN_RULEID, Integer.toString(rule.ruleid)); entry.put(COLUMN_SWITCHID, Long.toString(rule.switchid)); entry.put(COLUMN_SRC_INPORT, Short.toString(rule.src_inport)); entry.put(COLUMN_SRC_MAC, Long.toString(rule.src_mac)); @@ -385,7 +385,7 @@ public class Firewall implements IFirewallService, IOFMessageListener, IFloodlig } } // delete from database - storageSource.deleteRow(TABLE_NAME, ruleid); + storageSource.deleteRow(TABLE_NAME, Integer.toString(ruleid)); } /** diff --git a/src/test/java/net/floodlightcontroller/firewall/FirewallTest.java b/src/test/java/net/floodlightcontroller/firewall/FirewallTest.java index 21c54f1f3..3b1ba90f6 100644 --- a/src/test/java/net/floodlightcontroller/firewall/FirewallTest.java +++ b/src/test/java/net/floodlightcontroller/firewall/FirewallTest.java @@ -6,6 +6,7 @@ import static org.easymock.EasyMock.replay; import static org.easymock.EasyMock.verify; import java.util.HashMap; +import java.util.Iterator; import java.util.List; import java.util.Map; @@ -222,6 +223,47 @@ public class FirewallTest extends FloodlightTestCase { // no rules to match, so firewall should deny assertEquals(decision.getRoutingAction(), IRoutingDecision.RoutingAction.DROP); } + + @Test + public void testReadRulesFromStorage() throws Exception { + // add 2 rules first + FirewallRule rule = new FirewallRule(); + rule.src_inport = 2; + rule.src_mac = MACAddress.valueOf("00:00:00:00:00:01").toLong(); + rule.dst_mac = MACAddress.valueOf("00:00:00:00:00:02").toLong(); + rule.priority = 1; + rule.is_denyrule = true; + firewall.addRule(rule); + rule = new FirewallRule(); + rule.src_inport = 3; + rule.src_mac = MACAddress.valueOf("00:00:00:00:00:02").toLong(); + rule.dst_mac = MACAddress.valueOf("00:00:00:00:00:01").toLong(); + rule.proto_type = IPv4.PROTOCOL_TCP; + rule.wildcard_proto_type = false; + rule.proto_dstport = 80; + rule.priority = 2; + rule.is_denyrule = false; + firewall.addRule(rule); + + List<FirewallRule> rules = firewall.readRulesFromStorage(); + // verify rule 1 + FirewallRule r = rules.get(0); + assertEquals(r.src_inport, 2); + assertEquals(r.priority, 1); + assertEquals(r.src_mac, MACAddress.valueOf("00:00:00:00:00:01").toLong()); + assertEquals(r.dst_mac, MACAddress.valueOf("00:00:00:00:00:02").toLong()); + assertEquals(r.is_denyrule, true); + // verify rule 2 + r = rules.get(1); + assertEquals(r.src_inport, 3); + assertEquals(r.priority, 2); + assertEquals(r.src_mac, MACAddress.valueOf("00:00:00:00:00:02").toLong()); + assertEquals(r.dst_mac, MACAddress.valueOf("00:00:00:00:00:01").toLong()); + assertEquals(r.proto_type, IPv4.PROTOCOL_TCP); + assertEquals(r.proto_dstport, 80); + assertEquals(r.wildcard_proto_type, false); + assertEquals(r.is_denyrule, false); + } @Test public void testRuleInsertionIntoStorage() throws Exception { @@ -234,7 +276,7 @@ public class FirewallTest extends FloodlightTestCase { List<Map<String, Object>> rulesFromStorage = firewall.getStorageRules(); assertEquals(1, rulesFromStorage.size()); - assertEquals(rulesFromStorage.get(0).get("ruleid"), rule.ruleid); + assertEquals(Integer.parseInt((String)rulesFromStorage.get(0).get("ruleid")), rule.ruleid); } @Test @@ -249,7 +291,7 @@ public class FirewallTest extends FloodlightTestCase { List<Map<String, Object>> rulesFromStorage = firewall.getStorageRules(); assertEquals(1, rulesFromStorage.size()); - assertEquals(rulesFromStorage.get(0).get("ruleid"), rid); + assertEquals(Integer.parseInt((String)rulesFromStorage.get(0).get("ruleid")), rid); // delete rule firewall.deleteRule(rid); -- GitLab