You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cloudstack.apache.org by ah...@apache.org on 2013/07/04 00:26:16 UTC
[37/50] [abbrv] git commit: updated refs/heads/vmsync to 78fa5e1
cidr compare fixme addressed
Project: http://git-wip-us.apache.org/repos/asf/cloudstack/repo
Commit: http://git-wip-us.apache.org/repos/asf/cloudstack/commit/141fbc7e
Tree: http://git-wip-us.apache.org/repos/asf/cloudstack/tree/141fbc7e
Diff: http://git-wip-us.apache.org/repos/asf/cloudstack/diff/141fbc7e
Branch: refs/heads/vmsync
Commit: 141fbc7ef7a89ee1e046366f1e2e6dffbe4e5be7
Parents: 90a15bf
Author: Daan Hoogland <da...@onecht.net>
Authored: Wed Jul 3 14:03:30 2013 +0200
Committer: Chip Childers <ch...@apache.org>
Committed: Wed Jul 3 09:28:49 2013 -0400
----------------------------------------------------------------------
.../security/SecurityGroupManagerImpl.java | 13 +++-
.../security/SecurityGroupManagerImplTest.java | 62 ++++++++++++++++++++
2 files changed, 74 insertions(+), 1 deletion(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/141fbc7e/server/src/com/cloud/network/security/SecurityGroupManagerImpl.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/network/security/SecurityGroupManagerImpl.java b/server/src/com/cloud/network/security/SecurityGroupManagerImpl.java
index 1c189c4..ce6f8ac 100755
--- a/server/src/com/cloud/network/security/SecurityGroupManagerImpl.java
+++ b/server/src/com/cloud/network/security/SecurityGroupManagerImpl.java
@@ -322,7 +322,18 @@ public class SecurityGroupManagerImpl extends ManagerBase implements SecurityGro
@Override
public int compare(String cidr1, String cidr2) {
- return cidr1.compareTo(cidr2); // FIXME
+ // parse both to find significance first (low number of bits is high)
+ // if equal then just do a string compare
+ if(significance(cidr1) == significance(cidr2)) {
+ return cidr1.compareTo(cidr2);
+ }
+ else {
+ return significance(cidr2) - significance(cidr1);
+ }
+ }
+ private int significance(String cidr)
+ {
+ return Integer.parseInt(cidr.substring(cidr.indexOf('/')+1));
}
}
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/141fbc7e/server/test/com/cloud/network/security/SecurityGroupManagerImplTest.java
----------------------------------------------------------------------
diff --git a/server/test/com/cloud/network/security/SecurityGroupManagerImplTest.java b/server/test/com/cloud/network/security/SecurityGroupManagerImplTest.java
new file mode 100644
index 0000000..8a6b95b
--- /dev/null
+++ b/server/test/com/cloud/network/security/SecurityGroupManagerImplTest.java
@@ -0,0 +1,62 @@
+/**
+ *
+ */
+package com.cloud.network.security;
+
+import java.util.Set;
+import java.util.TreeSet;
+
+import javax.inject.Inject;
+
+import junit.framework.TestCase;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.springframework.test.context.ContextConfiguration;
+import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
+
+import com.cloud.network.security.SecurityGroupManagerImpl.CidrComparator;
+
+/**
+ * @author daan
+ *
+ */
+@RunWith(SpringJUnit4ClassRunner.class)
+@ContextConfiguration(locations = "classpath:/SecurityGroupManagerTestContext.xml")
+public class SecurityGroupManagerImplTest extends TestCase {
+ @Inject
+ SecurityGroupManagerImpl2 _sgMgr = null;
+ Set<String> cidrs;
+ @Before
+ public void setup() throws Exception {
+ cidrs = new TreeSet<String>(new CidrComparator());
+ }
+ @Test (expected=NumberFormatException.class)
+ public void emptyCidrCompareTest() {
+ cidrs.add("");
+ cidrs.add("");
+ }
+ @Test (expected=NumberFormatException.class)
+ public void faultyCidrCompareTest() {
+ cidrs.add("111.222.333.444");
+ cidrs.add("111.222.333.444");
+ }
+ @Test
+ public void sameCidrCompareTest() {
+ cidrs.add("1.2.3.4/5");
+ cidrs.add("1.2.3.4/5");
+ assertEquals("only one element expected",1,cidrs.size());
+ CidrComparator cmp = new CidrComparator();
+ assertEquals("should be 0",0,cmp.compare("1.2.3.4/5","1.2.3.4/5"));
+ }
+ @Test
+ public void CidrCompareTest() {
+ cidrs.add("1.2.3.4/5");
+ cidrs.add("1.2.3.4/6");
+ assertEquals("two element expected",2,cidrs.size());
+ CidrComparator cmp = new CidrComparator();
+ assertEquals("should be 1",1,cmp.compare("1.2.3.4/5","1.2.3.4/6"));
+ assertEquals("should be -2",-2,cmp.compare("1.2.3.4/5","1.2.3.4/3"));
+ }
+}