Skip to content
Snippets Groups Projects
Commit 6eb6c285 authored by Alex Reimers's avatar Alex Reimers
Browse files

Merge pull request #8 from amertahir/master

ruleId db column bugfix and DB read/write test case
parents a2bffd82 c9acf455
No related branches found
No related tags found
No related merge requests found
...@@ -333,7 +333,7 @@ public class Firewall implements IFirewallService, IOFMessageListener, IFloodlig ...@@ -333,7 +333,7 @@ public class Firewall implements IFirewallService, IOFMessageListener, IFloodlig
} }
// add rule to database // add rule to database
Map<String, Object> entry = new HashMap<String, Object>(); 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_SWITCHID, Long.toString(rule.switchid));
entry.put(COLUMN_SRC_INPORT, Short.toString(rule.src_inport)); entry.put(COLUMN_SRC_INPORT, Short.toString(rule.src_inport));
entry.put(COLUMN_SRC_MAC, Long.toString(rule.src_mac)); entry.put(COLUMN_SRC_MAC, Long.toString(rule.src_mac));
...@@ -369,7 +369,7 @@ public class Firewall implements IFirewallService, IOFMessageListener, IFloodlig ...@@ -369,7 +369,7 @@ public class Firewall implements IFirewallService, IOFMessageListener, IFloodlig
} }
} }
// delete from database // delete from database
storageSource.deleteRow(TABLE_NAME, ruleid); storageSource.deleteRow(TABLE_NAME, Integer.toString(ruleid));
} }
/** /**
......
...@@ -62,9 +62,9 @@ public class FirewallRule implements Comparable<FirewallRule> { ...@@ -62,9 +62,9 @@ public class FirewallRule implements Comparable<FirewallRule> {
*/ */
public int genID() { public int genID() {
int uid = this.hashCode(); int uid = this.hashCode();
if (uid <= 0) { if (uid < 0) {
uid = Math.abs(uid); uid = Math.abs(uid);
uid *= 15551; uid = uid * 15551;
} }
return uid; return uid;
} }
......
...@@ -221,6 +221,47 @@ public class FirewallTest extends FloodlightTestCase { ...@@ -221,6 +221,47 @@ public class FirewallTest extends FloodlightTestCase {
// no rules to match, so firewall should deny // no rules to match, so firewall should deny
assertEquals(decision.getRoutingAction(), IRoutingDecision.RoutingAction.DROP); 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 @Test
public void testRuleInsertionIntoStorage() throws Exception { public void testRuleInsertionIntoStorage() throws Exception {
...@@ -233,7 +274,7 @@ public class FirewallTest extends FloodlightTestCase { ...@@ -233,7 +274,7 @@ public class FirewallTest extends FloodlightTestCase {
List<Map<String, Object>> rulesFromStorage = firewall.getStorageRules(); List<Map<String, Object>> rulesFromStorage = firewall.getStorageRules();
assertEquals(1, rulesFromStorage.size()); assertEquals(1, rulesFromStorage.size());
assertEquals(rulesFromStorage.get(0).get("ruleid"), rule.ruleid); assertEquals(Integer.parseInt((String)rulesFromStorage.get(0).get("ruleid")), rule.ruleid);
} }
@Test @Test
...@@ -248,7 +289,7 @@ public class FirewallTest extends FloodlightTestCase { ...@@ -248,7 +289,7 @@ public class FirewallTest extends FloodlightTestCase {
List<Map<String, Object>> rulesFromStorage = firewall.getStorageRules(); List<Map<String, Object>> rulesFromStorage = firewall.getStorageRules();
assertEquals(1, rulesFromStorage.size()); assertEquals(1, rulesFromStorage.size());
assertEquals(rulesFromStorage.get(0).get("ruleid"), rid); assertEquals(Integer.parseInt((String)rulesFromStorage.get(0).get("ruleid")), rid);
// delete rule // delete rule
firewall.deleteRule(rid); firewall.deleteRule(rid);
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment