You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ranger.apache.org by ma...@apache.org on 2015/02/17 09:16:53 UTC
[20/55] [abbrv] incubator-ranger git commit: RANGER-230: Added new
tests for a few Coprocessor related classes
RANGER-230: Added new tests for a few Coprocessor related classes
Project: http://git-wip-us.apache.org/repos/asf/incubator-ranger/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-ranger/commit/5d6881ba
Tree: http://git-wip-us.apache.org/repos/asf/incubator-ranger/tree/5d6881ba
Diff: http://git-wip-us.apache.org/repos/asf/incubator-ranger/diff/5d6881ba
Branch: refs/heads/master
Commit: 5d6881babb239108096542be1b051e2fc3266512
Parents: 5c4b59a
Author: Alok Lal <al...@hortonworks.com>
Authored: Thu Feb 5 22:38:39 2015 -0800
Committer: Madhan Neethiraj <ma...@apache.org>
Committed: Thu Feb 5 22:38:39 2015 -0800
----------------------------------------------------------------------
.../authorization/hbase/ColumnIterator.java | 8 +-
.../hbase/RangerAuthorizationCoprocessor.java | 3 +-
.../authorization/hbase/ColumnIteratorTest.java | 143 +++++++++++++++++++
.../RangerAuthorizationCoprocessorTest.java | 53 +++++++
.../hbase/RangerAuthorizationFilterTest.java | 1 -
.../hbase/RangerCoprocessorTest.java | 33 -----
.../authorization/hbase/TestPolicyEngine.java | 10 +-
7 files changed, 205 insertions(+), 46 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/5d6881ba/hbase-agent/src/main/java/org/apache/ranger/authorization/hbase/ColumnIterator.java
----------------------------------------------------------------------
diff --git a/hbase-agent/src/main/java/org/apache/ranger/authorization/hbase/ColumnIterator.java b/hbase-agent/src/main/java/org/apache/ranger/authorization/hbase/ColumnIterator.java
index 2c6f805..533a1c1 100644
--- a/hbase-agent/src/main/java/org/apache/ranger/authorization/hbase/ColumnIterator.java
+++ b/hbase-agent/src/main/java/org/apache/ranger/authorization/hbase/ColumnIterator.java
@@ -54,11 +54,11 @@ public class ColumnIterator implements Iterator<String> {
public boolean hasNext() {
if (_setIterator != null) {
return _setIterator.hasNext();
+ } else if (_listIterator != null) {
+ return _listIterator.hasNext();
+ } else {
+ return false;
}
- if (_listIterator != null) {
- _listIterator.hasNext();
- }
- return false;
}
/**
http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/5d6881ba/hbase-agent/src/main/java/org/apache/ranger/authorization/hbase/RangerAuthorizationCoprocessor.java
----------------------------------------------------------------------
diff --git a/hbase-agent/src/main/java/org/apache/ranger/authorization/hbase/RangerAuthorizationCoprocessor.java b/hbase-agent/src/main/java/org/apache/ranger/authorization/hbase/RangerAuthorizationCoprocessor.java
index 2e128ec..08c40e2 100644
--- a/hbase-agent/src/main/java/org/apache/ranger/authorization/hbase/RangerAuthorizationCoprocessor.java
+++ b/hbase-agent/src/main/java/org/apache/ranger/authorization/hbase/RangerAuthorizationCoprocessor.java
@@ -899,7 +899,8 @@ public class RangerAuthorizationCoprocessor extends RangerAuthorizationCoprocess
}
}
// create and initialize the plugin class
- new RangerBasePlugin("hbase", appType) {}.init(_authorizer);
+ new RangerBasePlugin("hbase", appType) {}
+ .init(_authorizer);
if (LOG.isDebugEnabled()) {
LOG.debug("Start of Coprocessor: [" + coprocessorType + "] with superUserList [" + superUserList + "]");
}
http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/5d6881ba/hbase-agent/src/test/java/org/apache/ranger/authorization/hbase/ColumnIteratorTest.java
----------------------------------------------------------------------
diff --git a/hbase-agent/src/test/java/org/apache/ranger/authorization/hbase/ColumnIteratorTest.java b/hbase-agent/src/test/java/org/apache/ranger/authorization/hbase/ColumnIteratorTest.java
new file mode 100644
index 0000000..a94118b
--- /dev/null
+++ b/hbase-agent/src/test/java/org/apache/ranger/authorization/hbase/ColumnIteratorTest.java
@@ -0,0 +1,143 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.ranger.authorization.hbase;
+
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.times;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
+
+import java.util.Iterator;
+import java.util.List;
+import java.util.Set;
+
+import org.apache.hadoop.hbase.KeyValue;
+import org.junit.Test;
+import org.mockito.invocation.InvocationOnMock;
+import org.mockito.stubbing.Answer;
+
+public class ColumnIteratorTest {
+
+ @Test
+ public void test_firewalling() {
+ // passing null collection
+ ColumnIterator iterator = new ColumnIterator(null);
+ assertFalse(iterator.hasNext());
+ }
+
+ @SuppressWarnings("unchecked")
+ @Test
+ public void test_setOfBytes() {
+ /*
+ * It is pointless to test the functionality of base iterator! What we want to assert is that ColumnIterator delegates to the real iterators appropriately.
+ */
+ Iterator<byte[]> iterator = mock(Iterator.class);
+ // We want to make sure ColumnIterator will return exactly what the real iterator gives it. Let's us doctor mock iteracor to return items in a particular order.
+ final String[] values = new String[] {"a", "b", "c"};
+ when(iterator.next()).thenAnswer(new Answer<byte[]>() {
+ // return all the items of the values array in order as byte[]. After which return null.
+ int index = 0;
+ @Override
+ public byte[] answer(InvocationOnMock invocation) throws Throwable {
+ if (index < values.length) {
+ return values[index++].getBytes(); // we need post increment
+ } else {
+ return null;
+ }
+ }
+ });
+
+ // We want hasNext() to return false after as many times as values were stuffed into it.
+ when(iterator.hasNext()).thenAnswer(new Answer<Boolean>() {
+ int i = 0;
+ @Override
+ public Boolean answer(InvocationOnMock invocation) throws Throwable {
+ return i++ < values.length; // we want post increment
+ }
+ });
+
+ // let's stuff this iterator into the collection that we would pass to the ColumnIterator
+ Set<byte[]> collection = mock(Set.class);
+ when(collection.iterator()).thenReturn(iterator);
+ ColumnIterator columnIterator = new ColumnIterator(collection);
+ int i = 0;
+ while (columnIterator.hasNext()) {
+ String value = columnIterator.next();
+ assertEquals(values[i++], value);
+ }
+ // We should get back exactly as many items as were in the real iterator, no more no less
+ assertEquals(3, i);
+
+ // this should be called only once!
+ verify(collection, times(1)).iterator();
+ // verify next() was called on the iterator exactly 3 times
+ verify(iterator, times(3)).next();
+
+ }
+
+ @SuppressWarnings("unchecked")
+ @Test
+ public void test_ListOfKeyValue() {
+ /*
+ * We are not interested in validating the behavior of the real iterator. Instead just the behavior specific to the column iterator.
+ */
+ final String[] qualifiers = new String[] {"a", "b", "c"};
+ Iterator<KeyValue> iterator = mock(Iterator.class);
+ // Have the iterator return true as many times as the size of keys array
+ when(iterator.hasNext()).thenAnswer(new Answer<Boolean>() {
+ int i = 0;
+ @Override
+ public Boolean answer(InvocationOnMock invocation) throws Throwable {
+ return i++ < qualifiers.length;
+ }
+ });
+ // have the iterator return a KeyValue composed of the key and value arrays
+ when(iterator.next()).thenAnswer(new Answer<KeyValue>() {
+ int i = 0;
+ @Override
+ public KeyValue answer(InvocationOnMock invocation)
+ throws Throwable {
+ KeyValue kv = mock(KeyValue.class);
+ when(kv.getQualifier()).thenReturn(qualifiers[i++].getBytes());
+ return kv;
+ }
+ });
+ // stuff it into the collection
+ List<KeyValue> list = mock(List.class);
+ when(list.iterator()).thenReturn(iterator);
+ // now let's check the behavior
+ ColumnIterator columnIterator = new ColumnIterator(list);
+ int i = 0;
+ while (columnIterator.hasNext()) {
+ String value = columnIterator.next();
+ assertEquals(qualifiers[i++], value);
+ }
+ // We should get back exactly as many items as were in the real iterator, no more no less
+ assertEquals(3, i);
+
+ // this should be called only once!
+ verify(list, times(1)).iterator();
+ // verify next() was called on the iterator exactly 3 times
+ verify(iterator, times(3)).next();
+
+ }
+}
http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/5d6881ba/hbase-agent/src/test/java/org/apache/ranger/authorization/hbase/RangerAuthorizationCoprocessorTest.java
----------------------------------------------------------------------
diff --git a/hbase-agent/src/test/java/org/apache/ranger/authorization/hbase/RangerAuthorizationCoprocessorTest.java b/hbase-agent/src/test/java/org/apache/ranger/authorization/hbase/RangerAuthorizationCoprocessorTest.java
new file mode 100644
index 0000000..72b86d1
--- /dev/null
+++ b/hbase-agent/src/test/java/org/apache/ranger/authorization/hbase/RangerAuthorizationCoprocessorTest.java
@@ -0,0 +1,53 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.ranger.authorization.hbase;
+
+import static org.junit.Assert.*;
+
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.Set;
+
+import org.junit.Test;
+
+public class RangerAuthorizationCoprocessorTest {
+
+ @Test
+ public void test_canBeNewed() {
+ RangerAuthorizationCoprocessor _coprocessor = new RangerAuthorizationCoprocessor();
+ assertNotNull(_coprocessor);
+ }
+
+ @Test
+ public void test_getColumnFamilies_happypath() {
+
+ }
+
+ @Test
+ public void test_getColumnFamilies_firewalling() {
+ // passing null collection should return back an empty map
+ RangerAuthorizationCoprocessor _coprocessor = new RangerAuthorizationCoprocessor();
+ Map<String, Set<String>> result = _coprocessor.getColumnFamilies(null);
+ assertNotNull(result);
+ assertTrue(result.isEmpty());
+ // same for passing in an empty collection
+// result = _coprocessor.getColumnFamilies(new HashMap<byte[], ? extends Collection<?>>());
+ }
+}
http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/5d6881ba/hbase-agent/src/test/java/org/apache/ranger/authorization/hbase/RangerAuthorizationFilterTest.java
----------------------------------------------------------------------
diff --git a/hbase-agent/src/test/java/org/apache/ranger/authorization/hbase/RangerAuthorizationFilterTest.java b/hbase-agent/src/test/java/org/apache/ranger/authorization/hbase/RangerAuthorizationFilterTest.java
index 5575ea7..4b49721 100644
--- a/hbase-agent/src/test/java/org/apache/ranger/authorization/hbase/RangerAuthorizationFilterTest.java
+++ b/hbase-agent/src/test/java/org/apache/ranger/authorization/hbase/RangerAuthorizationFilterTest.java
@@ -16,7 +16,6 @@
* specific language governing permissions and limitations
* under the License.
*/
-
package org.apache.ranger.authorization.hbase;
import static org.junit.Assert.assertEquals;
http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/5d6881ba/hbase-agent/src/test/java/org/apache/ranger/authorization/hbase/RangerCoprocessorTest.java
----------------------------------------------------------------------
diff --git a/hbase-agent/src/test/java/org/apache/ranger/authorization/hbase/RangerCoprocessorTest.java b/hbase-agent/src/test/java/org/apache/ranger/authorization/hbase/RangerCoprocessorTest.java
deleted file mode 100644
index 15d4f93..0000000
--- a/hbase-agent/src/test/java/org/apache/ranger/authorization/hbase/RangerCoprocessorTest.java
+++ /dev/null
@@ -1,33 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.ranger.authorization.hbase;
-
-import static org.junit.Assert.assertNotNull;
-
-import org.junit.Test;
-
-public class RangerCoprocessorTest {
-
- @Test
- public void test_canBeNewed() {
- RangerAuthorizationCoprocessor _coprocessor = new RangerAuthorizationCoprocessor();
- assertNotNull(_coprocessor);
- }
-
-}
http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/5d6881ba/hbase-agent/src/test/java/org/apache/ranger/authorization/hbase/TestPolicyEngine.java
----------------------------------------------------------------------
diff --git a/hbase-agent/src/test/java/org/apache/ranger/authorization/hbase/TestPolicyEngine.java b/hbase-agent/src/test/java/org/apache/ranger/authorization/hbase/TestPolicyEngine.java
index ed6bcf0..b2eaaef 100644
--- a/hbase-agent/src/test/java/org/apache/ranger/authorization/hbase/TestPolicyEngine.java
+++ b/hbase-agent/src/test/java/org/apache/ranger/authorization/hbase/TestPolicyEngine.java
@@ -19,13 +19,9 @@
package org.apache.ranger.authorization.hbase;
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertTrue;
-import static org.junit.Assert.fail;
-import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.when;
+
+import static org.junit.Assert.*;
+import static org.mockito.Mockito.*;
import java.io.InputStream;
import java.io.InputStreamReader;