Author: miroslav
Date: Thu Jan 7 14:31:37 2021
New Revision: 1885241
URL: http://svn.apache.org/viewvc?rev=1885241&view=rev
Log:
OAK-9309 Added cases when parent node is not visible.
Modified:
jackrabbit/oak/trunk/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/benchmark/BenchmarkRunner.java
jackrabbit/oak/trunk/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/benchmark/GetParentNodeTest.java
Modified:
jackrabbit/oak/trunk/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/benchmark/BenchmarkRunner.java
URL:
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/benchmark/BenchmarkRunner.java?rev=1885241&r1=1885240&r2=1885241&view=diff
==============================================================================
---
jackrabbit/oak/trunk/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/benchmark/BenchmarkRunner.java
(original)
+++
jackrabbit/oak/trunk/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/benchmark/BenchmarkRunner.java
Thu Jan 7 14:31:37 2021
@@ -180,8 +180,10 @@ public class BenchmarkRunner {
new ReadPropertyTest(),
GetNodeTest.withAdmin(),
GetNodeTest.withAnonymous(),
- GetParentNodeTest.withNodeAPI(),
- GetParentNodeTest.withSessionAPI(),
+
GetParentNodeTest.withNodeAPIAndParentVisible(benchmarkOptions.getRunAsAdmin().value(options)),
+
GetParentNodeTest.withSessionAPIAndParentVisible(benchmarkOptions.getRunAsAdmin().value(options)),
+
GetParentNodeTest.withNodeAPIAndParentNotVisible(benchmarkOptions.getRunAsAdmin().value(options)),
+
GetParentNodeTest.withSessionAPIAndParentNotVisible(benchmarkOptions.getRunAsAdmin().value(options)),
new GetMixinNodeTypesTest(),
new GetDeepNodeTest(),
new SetPropertyTest(),
Modified:
jackrabbit/oak/trunk/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/benchmark/GetParentNodeTest.java
URL:
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/benchmark/GetParentNodeTest.java?rev=1885241&r1=1885240&r2=1885241&view=diff
==============================================================================
---
jackrabbit/oak/trunk/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/benchmark/GetParentNodeTest.java
(original)
+++
jackrabbit/oak/trunk/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/benchmark/GetParentNodeTest.java
Thu Jan 7 14:31:37 2021
@@ -40,30 +40,81 @@ public abstract class GetParentNodeTest
protected String parentNodePath;
private String childNodePath;
- public static Benchmark withNodeAPI() {
- return new GetParentNodeTest("GetParentNodeWithNodeAPI") {
+ private boolean runAsAdmin;
+
+ public static Benchmark withNodeAPIAndParentVisible(boolean runAsAdmin) {
+ return new GetParentNodeTest("GetParentVisibleNodeAPI", runAsAdmin) {
@Override
protected Node getParentNode(Node childNode) throws
RepositoryException {
return childNode.getParent();
}
+
+ @Override
+ protected boolean isParentNodeVisible() {
+ return true;
+ }
};
}
- public static Benchmark withSessionAPI() {
- return new GetParentNodeTest("GetParentNodeWithSessionAPI") {
+ public static Benchmark withSessionAPIAndParentVisible(boolean runAsAdmin)
{
+ return new GetParentNodeTest("GetParentVisibleSessionAPI", runAsAdmin)
{
@Override
protected Node getParentNode(Node childNode) throws
RepositoryException {
return childNode.getSession().getNode(parentNodePath);
}
+
+ @Override
+ protected boolean isParentNodeVisible() {
+ return true;
+ }
+ };
+ }
+
+ public static Benchmark withNodeAPIAndParentNotVisible(boolean runAsAdmin)
{
+ return new GetParentNodeTest("GetParentNotVisibleNodeAPI", runAsAdmin)
{
+ @Override
+ protected Node getParentNode(Node childNode) throws
RepositoryException {
+ return childNode.getParent();
+ }
+
+ @Override
+ protected boolean isParentNodeVisible() {
+ return false;
+ }
};
}
- protected GetParentNodeTest(String name) {
+ public static Benchmark withSessionAPIAndParentNotVisible(boolean
runAsAdmin) {
+ return new GetParentNodeTest("GetParentNotVisibleSessionAPI",
runAsAdmin) {
+ @Override
+ protected Node getParentNode(Node childNode) throws
RepositoryException {
+ return childNode.getSession().getNode(parentNodePath);
+ }
+
+ @Override
+ protected boolean isParentNodeVisible() {
+ return false;
+ }
+ };
+ }
+
+ protected GetParentNodeTest(String name, boolean runAsAdmin) {
this.name = name;
+ this.runAsAdmin = runAsAdmin;
}
protected abstract Node getParentNode(Node childNode) throws
RepositoryException;
+ protected Session login() {
+ if (runAsAdmin) {
+ return loginAdministrative();
+ } else {
+ return loginAnonymous();
+ }
+ }
+
+ protected abstract boolean isParentNodeVisible();
+
@Override
public String toString() {
return name;
@@ -82,6 +133,13 @@ public abstract class GetParentNodeTest
addAccessControlEntry(session, testRoot.getPath(),
EveryonePrincipal.getInstance(),
new String[] {JCR_READ}, true);
+
+ if (!isParentNodeVisible()) {
+ addAccessControlEntry(session, parentNodePath,
EveryonePrincipal.getInstance(),
+ new String[]{JCR_READ}, false);
+ addAccessControlEntry(session, childNodePath,
EveryonePrincipal.getInstance(),
+ new String[]{JCR_READ}, true);
+ }
session.save();
session.logout();
@@ -89,10 +147,15 @@ public abstract class GetParentNodeTest
@Override
protected void runTest() throws Exception {
- Session session = loginAnonymous();
+ Session session = login();
Node child = session.getNode(childNodePath);
for (int i = 0; i < 10000; i++) {
- getParentNode(child);
+ try {
+ getParentNode(child);
+ } catch (RepositoryException e){
+ //If parent node is not visible
+ }
+
}
session.logout();
}