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"));
+    }
+}