You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sling.apache.org by ju...@apache.org on 2012/08/27 22:13:23 UTC
svn commit: r1377819 [1/2] - in /sling/trunk: ./ performance/
performance/base/ performance/base/src/ performance/base/src/main/
performance/base/src/main/java/ performance/base/src/main/java/org/
performance/base/src/main/java/org/apache/ performance/...
Author: justin
Date: Mon Aug 27 20:13:21 2012
New Revision: 1377819
URL: http://svn.apache.org/viewvc?rev=1377819&view=rev
Log:
SLING-2311 - adding small performance test suite. Based heavily on the work of Antonio Sanso and the Jackrabbit team (Thanks!!!)
Added:
sling/trunk/performance/
sling/trunk/performance/base/
sling/trunk/performance/base/pom.xml (with props)
sling/trunk/performance/base/src/
sling/trunk/performance/base/src/main/
sling/trunk/performance/base/src/main/java/
sling/trunk/performance/base/src/main/java/org/
sling/trunk/performance/base/src/main/java/org/apache/
sling/trunk/performance/base/src/main/java/org/apache/sling/
sling/trunk/performance/base/src/main/java/org/apache/sling/performance/
sling/trunk/performance/base/src/main/java/org/apache/sling/performance/AbstractPerformanceTest.java (with props)
sling/trunk/performance/base/src/main/java/org/apache/sling/performance/AbstractRepositoryTest.java (with props)
sling/trunk/performance/base/src/main/java/org/apache/sling/performance/AbstractTest.java (with props)
sling/trunk/performance/base/src/main/java/org/apache/sling/performance/ResourceResolverTestRequest.java (with props)
sling/trunk/performance/base/src/main/java/org/apache/sling/performance/TestHelper.java (with props)
sling/trunk/performance/base/src/main/java/org/apache/sling/performance/tests/
sling/trunk/performance/base/src/main/java/org/apache/sling/performance/tests/ResolveWith10000AliasTest.java (with props)
sling/trunk/performance/base/src/main/java/org/apache/sling/performance/tests/ResolveWith10000VanityPathTest.java (with props)
sling/trunk/performance/base/src/main/java/org/apache/sling/performance/tests/ResolveWith1000AliasTest.java (with props)
sling/trunk/performance/base/src/main/java/org/apache/sling/performance/tests/ResolveWith1000VanityPathTest.java (with props)
sling/trunk/performance/base/src/main/java/org/apache/sling/performance/tests/ResolveWith30000AliasTest.java (with props)
sling/trunk/performance/base/src/main/java/org/apache/sling/performance/tests/ResolveWith30000VanityPathTest.java (with props)
sling/trunk/performance/base/src/main/java/org/apache/sling/performance/tests/ResolveWith5000AliasTest.java (with props)
sling/trunk/performance/base/src/main/java/org/apache/sling/performance/tests/ResolveWith5000VanityPathTest.java (with props)
sling/trunk/performance/base/src/main/java/org/apache/sling/performance/tests/ResolveWithManyAliasTest.java (with props)
sling/trunk/performance/base/src/main/java/org/apache/sling/performance/tests/ResolveWithManyVanityPathTest.java (with props)
sling/trunk/performance/jcr-resource-2.0.10/
sling/trunk/performance/jcr-resource-2.0.10/pom.xml (with props)
sling/trunk/performance/jcr-resource-2.0.10/src/
sling/trunk/performance/jcr-resource-2.0.10/src/test/
sling/trunk/performance/jcr-resource-2.0.10/src/test/java/
sling/trunk/performance/jcr-resource-2.0.10/src/test/java/org/
sling/trunk/performance/jcr-resource-2.0.10/src/test/java/org/apache/
sling/trunk/performance/jcr-resource-2.0.10/src/test/java/org/apache/sling/
sling/trunk/performance/jcr-resource-2.0.10/src/test/java/org/apache/sling/performance/
sling/trunk/performance/jcr-resource-2.0.10/src/test/java/org/apache/sling/performance/PerformanceTest.java (with props)
sling/trunk/performance/jcr-resource-2.1.0/
sling/trunk/performance/jcr-resource-2.1.0/pom.xml (with props)
sling/trunk/performance/jcr-resource-2.1.0/src/
sling/trunk/performance/jcr-resource-2.1.0/src/test/
sling/trunk/performance/jcr-resource-2.1.0/src/test/java/
sling/trunk/performance/jcr-resource-2.1.0/src/test/java/org/
sling/trunk/performance/jcr-resource-2.1.0/src/test/java/org/apache/
sling/trunk/performance/jcr-resource-2.1.0/src/test/java/org/apache/sling/
sling/trunk/performance/jcr-resource-2.1.0/src/test/java/org/apache/sling/performance/
sling/trunk/performance/jcr-resource-2.1.0/src/test/java/org/apache/sling/performance/PerformanceTest.java (with props)
sling/trunk/performance/jcr-resource-2.2.0/
sling/trunk/performance/jcr-resource-2.2.0/pom.xml (with props)
sling/trunk/performance/jcr-resource-2.2.0/src/
sling/trunk/performance/jcr-resource-2.2.0/src/test/
sling/trunk/performance/jcr-resource-2.2.0/src/test/java/
sling/trunk/performance/jcr-resource-2.2.0/src/test/java/org/
sling/trunk/performance/jcr-resource-2.2.0/src/test/java/org/apache/
sling/trunk/performance/jcr-resource-2.2.0/src/test/java/org/apache/sling/
sling/trunk/performance/jcr-resource-2.2.0/src/test/java/org/apache/sling/performance/
sling/trunk/performance/jcr-resource-2.2.0/src/test/java/org/apache/sling/performance/PerformanceTest.java (with props)
sling/trunk/performance/pom.xml (with props)
Modified:
sling/trunk/pom.xml
Added: sling/trunk/performance/base/pom.xml
URL: http://svn.apache.org/viewvc/sling/trunk/performance/base/pom.xml?rev=1377819&view=auto
==============================================================================
--- sling/trunk/performance/base/pom.xml (added)
+++ sling/trunk/performance/base/pom.xml Mon Aug 27 20:13:21 2012
@@ -0,0 +1,110 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ 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.
+-->
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+
+ <modelVersion>4.0.0</modelVersion>
+ <parent>
+ <groupId>org.apache.sling</groupId>
+ <artifactId>sling-performance-tests</artifactId>
+ <version>0.0.1-SNAPSHOT</version>
+ </parent>
+
+ <artifactId>org.apache.sling.performance.base</artifactId>
+ <version>0.0.1-SNAPSHOT</version>
+
+ <name>Apache Sling Performance Test Utilities</name>
+
+ <properties>
+ <junit.version>4.8.2</junit.version>
+ </properties>
+
+ <scm>
+ <connection>scm:svn:http://svn.apache.org/repos/asf/sling/trunk/testing/performance/base</connection>
+ <developerConnection>scm:svn:https://svn.apache.org/repos/asf/sling/trunk/testing/performance/base</developerConnection>
+ <url>http://svn.apache.org/viewvc/sling/trunk/testing/performance/base</url>
+ </scm>
+
+ <dependencies>
+ <dependency>
+ <groupId>org.apache.commons</groupId>
+ <artifactId>commons-math</artifactId>
+ <version>2.0</version>
+ </dependency>
+ <dependency>
+ <groupId>commons-io</groupId>
+ <artifactId>commons-io</artifactId>
+ <version>1.4</version>
+ </dependency>
+ <dependency>
+ <groupId>junit</groupId>
+ <artifactId>junit</artifactId>
+ <version>${junit.version}</version>
+ <scope>compile</scope>
+ </dependency>
+ <dependency>
+ <groupId>junit-addons</groupId>
+ <artifactId>junit-addons</artifactId>
+ <version>1.4</version>
+ <scope>compile</scope>
+ </dependency>
+ <dependency>
+ <groupId>javax.servlet</groupId>
+ <artifactId>servlet-api</artifactId>
+ <scope>compile</scope>
+ </dependency>
+ <dependency>
+ <groupId>javax.jcr</groupId>
+ <artifactId>jcr</artifactId>
+ <version>2.0</version>
+ <scope>compile</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.sling</groupId>
+ <artifactId>org.apache.sling.commons.testing</artifactId>
+ <version>2.0.8</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.sling</groupId>
+ <artifactId>org.apache.sling.commons.classloader</artifactId>
+ <version>1.0.0</version>
+ </dependency>
+ <dependency>
+ <groupId>com.google.guava</groupId>
+ <artifactId>guava</artifactId>
+ <version>r09</version>
+ </dependency>
+ <dependency>
+ <groupId>org.osgi</groupId>
+ <artifactId>org.osgi.core</artifactId>
+ <scope>compile</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.osgi</groupId>
+ <artifactId>org.osgi.compendium</artifactId>
+ <scope>compile</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.mockito</groupId>
+ <artifactId>mockito-all</artifactId>
+ <version>1.8.2</version>
+ <scope>compile</scope>
+ </dependency>
+ </dependencies>
+</project>
Propchange: sling/trunk/performance/base/pom.xml
------------------------------------------------------------------------------
svn:eol-style = native
Added: sling/trunk/performance/base/src/main/java/org/apache/sling/performance/AbstractPerformanceTest.java
URL: http://svn.apache.org/viewvc/sling/trunk/performance/base/src/main/java/org/apache/sling/performance/AbstractPerformanceTest.java?rev=1377819&view=auto
==============================================================================
--- sling/trunk/performance/base/src/main/java/org/apache/sling/performance/AbstractPerformanceTest.java (added)
+++ sling/trunk/performance/base/src/main/java/org/apache/sling/performance/AbstractPerformanceTest.java Mon Aug 27 20:13:21 2012
@@ -0,0 +1,91 @@
+/*
+ * 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.sling.performance;
+
+import java.io.File;
+import java.io.IOException;
+import java.io.PrintWriter;
+import java.util.List;
+import junit.framework.TestCase;
+import org.apache.commons.io.output.FileWriterWithEncoding;
+import org.apache.commons.math.stat.descriptive.DescriptiveStatistics;
+
+public abstract class AbstractPerformanceTest extends TestCase {
+
+ private final int runtime = 5;
+
+ private final int warmup = 1;
+
+ private void runTest(String name, AbstractTest test) throws Exception {
+ DescriptiveStatistics statistics = new DescriptiveStatistics();
+
+ test.setUp();
+ try {
+ // Run a few iterations to warm up the system
+ long warmupEnd = System.currentTimeMillis() + warmup * 1000;
+ while (System.currentTimeMillis() < warmupEnd) {
+ test.execute();
+ }
+
+ // Run test iterations, and capture the execution times
+ long runtimeEnd = System.currentTimeMillis() + runtime * 1000;
+ while (System.currentTimeMillis() < runtimeEnd) {
+ statistics.addValue(test.execute());
+ }
+ } finally {
+ test.tearDown();
+ }
+
+ if (statistics.getN() > 0) {
+ writeReport(test.toString(), name, statistics);
+ }
+ }
+
+ protected void testPerformance(String name, List <AbstractTest> tests) throws Exception {
+ for (AbstractTest test:tests){
+ runTest(name,test);
+ }
+ }
+
+ private void writeReport(String test, String name, DescriptiveStatistics statistics)
+ throws IOException {
+ File report = new File("target", test + ".txt");
+
+ boolean needsPrefix = !report.exists();
+ PrintWriter writer = new PrintWriter(
+ new FileWriterWithEncoding(report, "UTF-8", true));
+ try {
+ if (needsPrefix) {
+ writer.format(
+ "# %-34.34s min 10%% 50%% 90%% max%n",
+ test);
+ }
+
+ writer.format(
+ "%-36.36s %6.0f %6.0f %6.0f %6.0f %6.0f%n",
+ name,
+ statistics.getMin(),
+ statistics.getPercentile(10.0),
+ statistics.getPercentile(50.0),
+ statistics.getPercentile(90.0),
+ statistics.getMax());
+ } finally {
+ writer.close();
+ }
+ }
+
+}
Propchange: sling/trunk/performance/base/src/main/java/org/apache/sling/performance/AbstractPerformanceTest.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: sling/trunk/performance/base/src/main/java/org/apache/sling/performance/AbstractPerformanceTest.java
------------------------------------------------------------------------------
svn:keywords = Author Date Id Revision Rev URL
Added: sling/trunk/performance/base/src/main/java/org/apache/sling/performance/AbstractRepositoryTest.java
URL: http://svn.apache.org/viewvc/sling/trunk/performance/base/src/main/java/org/apache/sling/performance/AbstractRepositoryTest.java?rev=1377819&view=auto
==============================================================================
--- sling/trunk/performance/base/src/main/java/org/apache/sling/performance/AbstractRepositoryTest.java (added)
+++ sling/trunk/performance/base/src/main/java/org/apache/sling/performance/AbstractRepositoryTest.java Mon Aug 27 20:13:21 2012
@@ -0,0 +1,90 @@
+/*
+ * 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.sling.performance;
+
+import javax.jcr.Node;
+import javax.jcr.RepositoryException;
+import javax.jcr.Session;
+import javax.naming.NamingException;
+
+import org.apache.sling.commons.testing.jcr.RepositoryUtil;
+import org.apache.sling.jcr.api.SlingRepository;
+
+
+
+public abstract class AbstractRepositoryTest extends AbstractTest {
+
+ private static class ShutdownThread extends Thread {
+ @Override
+ public void run() {
+ try {
+ RepositoryUtil.stopRepository();
+ } catch(Exception e) {
+ System.out.println("Exception in ShutdownThread:" + e);
+ }
+ }
+
+ }
+ private static SlingRepository repository;
+ private int counter;
+ protected Session session;
+
+ protected Node testRoot;;
+
+ /** Return a Repository - first call initializes it, and a JVM
+ * shutdown hook is registered to stop it
+ */
+ protected SlingRepository getRepository() throws RepositoryException, NamingException {
+ if(repository != null) {
+ return repository;
+ }
+
+ synchronized (AbstractRepositoryTest.class) {
+ if(repository == null) {
+ RepositoryUtil.startRepository();
+ repository = RepositoryUtil.getRepository();
+ Runtime.getRuntime().addShutdownHook(new ShutdownThread());
+ }
+ return repository;
+ }
+ }
+
+ /** Return a JCR Session, initialized on demand */
+ protected Session getSession() throws RepositoryException, NamingException {
+ if(session == null) {
+ session = getRepository().loginAdministrative(null);
+ }
+ return session;
+ }
+
+ /** Return a test root node, created on demand, with a unique path */
+ protected Node getTestRootNode() throws RepositoryException, NamingException {
+ if(testRoot==null) {
+ final Node root = getSession().getRootNode();
+ final Node classRoot = root.addNode(getClass().getSimpleName());
+ testRoot = classRoot.addNode(System.currentTimeMillis() + "_" + (++counter));
+ }
+ return testRoot;
+ }
+
+ @Override
+ public void tearDown() throws Exception {
+ super.tearDown();
+ if(session != null) {
+ session.logout();
+ }
+ }}
Propchange: sling/trunk/performance/base/src/main/java/org/apache/sling/performance/AbstractRepositoryTest.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: sling/trunk/performance/base/src/main/java/org/apache/sling/performance/AbstractRepositoryTest.java
------------------------------------------------------------------------------
svn:keywords = Author Date Id Revision Rev URL
Added: sling/trunk/performance/base/src/main/java/org/apache/sling/performance/AbstractTest.java
URL: http://svn.apache.org/viewvc/sling/trunk/performance/base/src/main/java/org/apache/sling/performance/AbstractTest.java?rev=1377819&view=auto
==============================================================================
--- sling/trunk/performance/base/src/main/java/org/apache/sling/performance/AbstractTest.java (added)
+++ sling/trunk/performance/base/src/main/java/org/apache/sling/performance/AbstractTest.java Mon Aug 27 20:13:21 2012
@@ -0,0 +1,134 @@
+/*
+ * 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.sling.performance;
+
+import java.util.LinkedList;
+import java.util.List;
+
+/**
+ * Abstract base class for individual performance benchmarks.
+ */
+public abstract class AbstractTest {
+
+ protected static int getScale(int def) {
+ int scale = Integer.getInteger("scale", 0);
+ if (scale == 0) {
+ scale = def;
+ }
+ return scale;
+ }
+
+ private volatile boolean running;
+
+ private List<Thread> threads;
+
+ /**
+ * Adds a background thread that repeatedly executes the given job
+ * until all the iterations of this test have been executed.
+ *
+ * @param job background job
+ */
+ protected void addBackgroundJob(final Runnable job) {
+ Thread thread = new Thread() {
+ @Override
+ public void run() {
+ while (running) {
+ job.run();
+ }
+ }
+ };
+ thread.start();
+ threads.add(thread);
+ }
+
+ /**
+ * Run after all iterations of this test have been executed. Subclasses can
+ * override this method to clean up static test content.
+ *
+ * @throws Exception if an error occurs
+ */
+ protected void afterSuite() throws Exception {
+ }
+
+ protected void afterTest() throws Exception {
+ }
+
+
+ /**
+ * Run before any iterations of this test get executed. Subclasses can
+ * override this method to set up static test content.
+ *
+ * @throws Exception if an error occurs
+ */
+ protected void beforeSuite() throws Exception {
+ }
+
+ protected void beforeTest() throws Exception {
+ }
+
+ /**
+ * Executes a single iteration of this test.
+ *
+ * @return number of milliseconds spent in this iteration
+ * @throws Exception if an error occurs
+ */
+ public long execute() throws Exception {
+ beforeTest();
+ try {
+ long start = System.currentTimeMillis();
+ runTest();
+ return System.currentTimeMillis() - start;
+ } finally {
+ afterTest();
+ }
+ }
+
+ protected abstract void runTest() throws Exception;
+
+ /**
+ * Prepares this performance benchmark.
+ *
+ * @param repository the repository to use
+ * @param credentials credentials of a user with write access
+ * @throws Exception if the benchmark can not be prepared
+ */
+ public void setUp()
+ throws Exception {
+ this.threads = new LinkedList<Thread>();
+ this.running = true;
+ beforeSuite();
+ }
+
+ /**
+ * Cleans up after this performance benchmark.
+ *
+ * @throws Exception if the benchmark can not be cleaned up
+ */
+ public void tearDown() throws Exception {
+ this.running = false;
+ for (Thread thread : threads) {
+ thread.join();
+ }
+ afterSuite();
+ this.threads = null;
+ }
+
+ public String toString() {
+ String name = getClass().getName();
+ return name.substring(name.lastIndexOf('.') + 1);
+ }
+ }
Propchange: sling/trunk/performance/base/src/main/java/org/apache/sling/performance/AbstractTest.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: sling/trunk/performance/base/src/main/java/org/apache/sling/performance/AbstractTest.java
------------------------------------------------------------------------------
svn:keywords = Author Date Id Revision Rev URL
Added: sling/trunk/performance/base/src/main/java/org/apache/sling/performance/ResourceResolverTestRequest.java
URL: http://svn.apache.org/viewvc/sling/trunk/performance/base/src/main/java/org/apache/sling/performance/ResourceResolverTestRequest.java?rev=1377819&view=auto
==============================================================================
--- sling/trunk/performance/base/src/main/java/org/apache/sling/performance/ResourceResolverTestRequest.java (added)
+++ sling/trunk/performance/base/src/main/java/org/apache/sling/performance/ResourceResolverTestRequest.java Mon Aug 27 20:13:21 2012
@@ -0,0 +1,285 @@
+/*
+ * 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.sling.performance;
+
+import java.io.BufferedReader;
+import java.security.Principal;
+import java.util.Enumeration;
+import java.util.HashMap;
+import java.util.Locale;
+import java.util.Map;
+
+import javax.servlet.RequestDispatcher;
+import javax.servlet.ServletInputStream;
+import javax.servlet.http.Cookie;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpSession;
+
+public class ResourceResolverTestRequest implements HttpServletRequest {
+
+ private final Map<String, Object> attrs = new HashMap<String, Object>();
+
+ private String contextPath;
+
+ private final String host;
+
+ private final String method;
+
+ private final String pathInfo;
+
+ private final int port;
+
+ private final String scheme;
+
+ public ResourceResolverTestRequest(String pathInfo) {
+ this(pathInfo, null);
+ }
+
+ public ResourceResolverTestRequest(String pathInfo, String httpMethod) {
+ this(null, null, -1, pathInfo, httpMethod);
+ }
+
+ public ResourceResolverTestRequest(String scheme, String host, int port, String pathInfo) {
+ this(scheme, host, port, pathInfo, null);
+ }
+
+ public ResourceResolverTestRequest(String scheme, String host, int port, String pathInfo, String httpMethod) {
+ this.scheme = (scheme == null) ? "http" : scheme;
+ this.host = (host == null) ? "localhost" : host;
+ this.port = port;
+ this.pathInfo = pathInfo;
+ this.method = httpMethod;
+ }
+
+ public Object getAttribute(String name) {
+ return attrs.get(name);
+ }
+
+ public Enumeration<?> getAttributeNames() {
+ return null;
+ }
+
+ public String getAuthType() {
+ return null;
+ }
+
+ public String getCharacterEncoding() {
+ return null;
+ }
+
+ public int getContentLength() {
+ return 0;
+ }
+
+ public String getContentType() {
+ return null;
+ }
+
+ public String getContextPath() {
+ return contextPath;
+ }
+
+ public Cookie[] getCookies() {
+ return null;
+ }
+
+ public long getDateHeader(String name) {
+ return 0;
+ }
+
+ public String getHeader(String name) {
+ return null;
+ }
+
+ public Enumeration<?> getHeaderNames() {
+ return null;
+ }
+
+ public Enumeration<?> getHeaders(String name) {
+ return null;
+ }
+
+ public ServletInputStream getInputStream() {
+ return null;
+ }
+
+ public int getIntHeader(String name) {
+ return 0;
+ }
+
+ public String getLocalAddr() {
+ return null;
+ }
+
+ public Locale getLocale() {
+ return null;
+ }
+
+ public Enumeration<?> getLocales() {
+ return null;
+ }
+
+ public String getLocalName() {
+ return null;
+ }
+
+ public int getLocalPort() {
+ return 0;
+ }
+
+ public String getMethod() {
+ return method;
+ }
+
+ public String getParameter(String name) {
+ return null;
+ }
+
+ public Map<?, ?> getParameterMap() {
+ return null;
+ }
+
+ public Enumeration<?> getParameterNames() {
+ return null;
+ }
+
+ public String[] getParameterValues(String name) {
+ return null;
+ }
+
+ public String getPathInfo() {
+ return pathInfo;
+ }
+
+ public String getPathTranslated() {
+ return null;
+ }
+
+ public String getProtocol() {
+ return null;
+ }
+
+ public String getQueryString() {
+ return null;
+ }
+
+ public BufferedReader getReader() {
+ return null;
+ }
+
+ public String getRealPath(String path) {
+ return null;
+ }
+
+ public String getRemoteAddr() {
+ return null;
+ }
+
+ public String getRemoteHost() {
+ return null;
+ }
+
+ public int getRemotePort() {
+ return 0;
+ }
+
+ public String getRemoteUser() {
+ return null;
+ }
+
+ public RequestDispatcher getRequestDispatcher(String path) {
+ return null;
+ }
+
+ public String getRequestedSessionId() {
+ return null;
+ }
+
+ public String getRequestURI() {
+ return null;
+ }
+
+ public StringBuffer getRequestURL() {
+ return null;
+ }
+
+ public String getScheme() {
+ return scheme;
+ }
+
+ public String getServerName() {
+ return host;
+ }
+
+ public int getServerPort() {
+ return port;
+ }
+
+ public String getServletPath() {
+ return null;
+ }
+
+ public HttpSession getSession() {
+ return null;
+ }
+
+ public HttpSession getSession(boolean create) {
+ return null;
+ }
+
+ public Principal getUserPrincipal() {
+ return null;
+ }
+
+ public boolean isRequestedSessionIdFromCookie() {
+ return false;
+ }
+
+ public boolean isRequestedSessionIdFromUrl() {
+ return false;
+ }
+
+ public boolean isRequestedSessionIdFromURL() {
+ return false;
+ }
+
+ public boolean isRequestedSessionIdValid() {
+ return false;
+ }
+
+ public boolean isSecure() {
+ return false;
+ }
+
+ public boolean isUserInRole(String role) {
+ return false;
+ }
+
+ public void removeAttribute(String name) {
+ }
+
+ public void setAttribute(String name, Object o) {
+ attrs.put(name, o);
+ }
+
+ public void setCharacterEncoding(String env) {
+ }
+
+ public void setContextPath(String contextPath) {
+ this.contextPath = contextPath;
+ }
+}
\ No newline at end of file
Propchange: sling/trunk/performance/base/src/main/java/org/apache/sling/performance/ResourceResolverTestRequest.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: sling/trunk/performance/base/src/main/java/org/apache/sling/performance/ResourceResolverTestRequest.java
------------------------------------------------------------------------------
svn:keywords = Author Date Id Revision Rev URL
Added: sling/trunk/performance/base/src/main/java/org/apache/sling/performance/TestHelper.java
URL: http://svn.apache.org/viewvc/sling/trunk/performance/base/src/main/java/org/apache/sling/performance/TestHelper.java?rev=1377819&view=auto
==============================================================================
--- sling/trunk/performance/base/src/main/java/org/apache/sling/performance/TestHelper.java (added)
+++ sling/trunk/performance/base/src/main/java/org/apache/sling/performance/TestHelper.java Mon Aug 27 20:13:21 2012
@@ -0,0 +1,32 @@
+/*
+ * 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.sling.performance;
+
+import javax.jcr.Session;
+
+import org.apache.sling.api.resource.ResourceResolver;
+import org.apache.sling.jcr.api.SlingRepository;
+
+public interface TestHelper {
+
+ void dispose();
+
+ ResourceResolver getResourceResolver();
+
+ void init(String rootPath, Session session, SlingRepository repository) throws Exception;
+
+}
Propchange: sling/trunk/performance/base/src/main/java/org/apache/sling/performance/TestHelper.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: sling/trunk/performance/base/src/main/java/org/apache/sling/performance/TestHelper.java
------------------------------------------------------------------------------
svn:keywords = Author Date Id Revision Rev URL
Added: sling/trunk/performance/base/src/main/java/org/apache/sling/performance/tests/ResolveWith10000AliasTest.java
URL: http://svn.apache.org/viewvc/sling/trunk/performance/base/src/main/java/org/apache/sling/performance/tests/ResolveWith10000AliasTest.java?rev=1377819&view=auto
==============================================================================
--- sling/trunk/performance/base/src/main/java/org/apache/sling/performance/tests/ResolveWith10000AliasTest.java (added)
+++ sling/trunk/performance/base/src/main/java/org/apache/sling/performance/tests/ResolveWith10000AliasTest.java Mon Aug 27 20:13:21 2012
@@ -0,0 +1,27 @@
+/*
+ * 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.sling.performance.tests;
+
+import org.apache.sling.performance.TestHelper;
+
+public class ResolveWith10000AliasTest extends ResolveWithManyAliasTest {
+
+ public ResolveWith10000AliasTest(TestHelper helper) {
+ super(helper, 10000);
+ }
+
+}
\ No newline at end of file
Propchange: sling/trunk/performance/base/src/main/java/org/apache/sling/performance/tests/ResolveWith10000AliasTest.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: sling/trunk/performance/base/src/main/java/org/apache/sling/performance/tests/ResolveWith10000AliasTest.java
------------------------------------------------------------------------------
svn:keywords = Author Date Id Revision Rev URL
Added: sling/trunk/performance/base/src/main/java/org/apache/sling/performance/tests/ResolveWith10000VanityPathTest.java
URL: http://svn.apache.org/viewvc/sling/trunk/performance/base/src/main/java/org/apache/sling/performance/tests/ResolveWith10000VanityPathTest.java?rev=1377819&view=auto
==============================================================================
--- sling/trunk/performance/base/src/main/java/org/apache/sling/performance/tests/ResolveWith10000VanityPathTest.java (added)
+++ sling/trunk/performance/base/src/main/java/org/apache/sling/performance/tests/ResolveWith10000VanityPathTest.java Mon Aug 27 20:13:21 2012
@@ -0,0 +1,27 @@
+/*
+ * 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.sling.performance.tests;
+
+import org.apache.sling.performance.TestHelper;
+
+public class ResolveWith10000VanityPathTest extends ResolveWithManyVanityPathTest {
+
+ public ResolveWith10000VanityPathTest(TestHelper helper) {
+ super(helper, 100, 100);
+ }
+
+}
Propchange: sling/trunk/performance/base/src/main/java/org/apache/sling/performance/tests/ResolveWith10000VanityPathTest.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: sling/trunk/performance/base/src/main/java/org/apache/sling/performance/tests/ResolveWith10000VanityPathTest.java
------------------------------------------------------------------------------
svn:keywords = Author Date Id Revision Rev URL
Added: sling/trunk/performance/base/src/main/java/org/apache/sling/performance/tests/ResolveWith1000AliasTest.java
URL: http://svn.apache.org/viewvc/sling/trunk/performance/base/src/main/java/org/apache/sling/performance/tests/ResolveWith1000AliasTest.java?rev=1377819&view=auto
==============================================================================
--- sling/trunk/performance/base/src/main/java/org/apache/sling/performance/tests/ResolveWith1000AliasTest.java (added)
+++ sling/trunk/performance/base/src/main/java/org/apache/sling/performance/tests/ResolveWith1000AliasTest.java Mon Aug 27 20:13:21 2012
@@ -0,0 +1,27 @@
+/*
+ * 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.sling.performance.tests;
+
+import org.apache.sling.performance.TestHelper;
+
+public class ResolveWith1000AliasTest extends ResolveWithManyAliasTest {
+
+ public ResolveWith1000AliasTest(TestHelper helper) {
+ super(helper, 1000);
+ }
+
+}
Propchange: sling/trunk/performance/base/src/main/java/org/apache/sling/performance/tests/ResolveWith1000AliasTest.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: sling/trunk/performance/base/src/main/java/org/apache/sling/performance/tests/ResolveWith1000AliasTest.java
------------------------------------------------------------------------------
svn:keywords = Author Date Id Revision Rev URL
Added: sling/trunk/performance/base/src/main/java/org/apache/sling/performance/tests/ResolveWith1000VanityPathTest.java
URL: http://svn.apache.org/viewvc/sling/trunk/performance/base/src/main/java/org/apache/sling/performance/tests/ResolveWith1000VanityPathTest.java?rev=1377819&view=auto
==============================================================================
--- sling/trunk/performance/base/src/main/java/org/apache/sling/performance/tests/ResolveWith1000VanityPathTest.java (added)
+++ sling/trunk/performance/base/src/main/java/org/apache/sling/performance/tests/ResolveWith1000VanityPathTest.java Mon Aug 27 20:13:21 2012
@@ -0,0 +1,27 @@
+/*
+ * 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.sling.performance.tests;
+
+import org.apache.sling.performance.TestHelper;
+
+public class ResolveWith1000VanityPathTest extends ResolveWithManyVanityPathTest {
+
+ public ResolveWith1000VanityPathTest(TestHelper helper) {
+ super(helper, 100, 10);
+ }
+
+}
Propchange: sling/trunk/performance/base/src/main/java/org/apache/sling/performance/tests/ResolveWith1000VanityPathTest.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: sling/trunk/performance/base/src/main/java/org/apache/sling/performance/tests/ResolveWith1000VanityPathTest.java
------------------------------------------------------------------------------
svn:keywords = Author Date Id Revision Rev URL
Added: sling/trunk/performance/base/src/main/java/org/apache/sling/performance/tests/ResolveWith30000AliasTest.java
URL: http://svn.apache.org/viewvc/sling/trunk/performance/base/src/main/java/org/apache/sling/performance/tests/ResolveWith30000AliasTest.java?rev=1377819&view=auto
==============================================================================
--- sling/trunk/performance/base/src/main/java/org/apache/sling/performance/tests/ResolveWith30000AliasTest.java (added)
+++ sling/trunk/performance/base/src/main/java/org/apache/sling/performance/tests/ResolveWith30000AliasTest.java Mon Aug 27 20:13:21 2012
@@ -0,0 +1,27 @@
+/*
+ * 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.sling.performance.tests;
+
+import org.apache.sling.performance.TestHelper;
+
+public class ResolveWith30000AliasTest extends ResolveWithManyAliasTest {
+
+ public ResolveWith30000AliasTest(TestHelper helper) {
+ super(helper, 30000);
+ }
+
+}
\ No newline at end of file
Propchange: sling/trunk/performance/base/src/main/java/org/apache/sling/performance/tests/ResolveWith30000AliasTest.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: sling/trunk/performance/base/src/main/java/org/apache/sling/performance/tests/ResolveWith30000AliasTest.java
------------------------------------------------------------------------------
svn:keywords = Author Date Id Revision Rev URL
Added: sling/trunk/performance/base/src/main/java/org/apache/sling/performance/tests/ResolveWith30000VanityPathTest.java
URL: http://svn.apache.org/viewvc/sling/trunk/performance/base/src/main/java/org/apache/sling/performance/tests/ResolveWith30000VanityPathTest.java?rev=1377819&view=auto
==============================================================================
--- sling/trunk/performance/base/src/main/java/org/apache/sling/performance/tests/ResolveWith30000VanityPathTest.java (added)
+++ sling/trunk/performance/base/src/main/java/org/apache/sling/performance/tests/ResolveWith30000VanityPathTest.java Mon Aug 27 20:13:21 2012
@@ -0,0 +1,27 @@
+/*
+ * 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.sling.performance.tests;
+
+import org.apache.sling.performance.TestHelper;
+
+public class ResolveWith30000VanityPathTest extends ResolveWithManyVanityPathTest {
+
+ public ResolveWith30000VanityPathTest(TestHelper helper) {
+ super(helper, 300, 100);
+ }
+
+}
Propchange: sling/trunk/performance/base/src/main/java/org/apache/sling/performance/tests/ResolveWith30000VanityPathTest.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: sling/trunk/performance/base/src/main/java/org/apache/sling/performance/tests/ResolveWith30000VanityPathTest.java
------------------------------------------------------------------------------
svn:keywords = Author Date Id Revision Rev URL
Added: sling/trunk/performance/base/src/main/java/org/apache/sling/performance/tests/ResolveWith5000AliasTest.java
URL: http://svn.apache.org/viewvc/sling/trunk/performance/base/src/main/java/org/apache/sling/performance/tests/ResolveWith5000AliasTest.java?rev=1377819&view=auto
==============================================================================
--- sling/trunk/performance/base/src/main/java/org/apache/sling/performance/tests/ResolveWith5000AliasTest.java (added)
+++ sling/trunk/performance/base/src/main/java/org/apache/sling/performance/tests/ResolveWith5000AliasTest.java Mon Aug 27 20:13:21 2012
@@ -0,0 +1,27 @@
+/*
+ * 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.sling.performance.tests;
+
+import org.apache.sling.performance.TestHelper;
+
+public class ResolveWith5000AliasTest extends ResolveWithManyAliasTest {
+
+ public ResolveWith5000AliasTest(TestHelper helper) {
+ super(helper, 5000);
+ }
+
+}
\ No newline at end of file
Propchange: sling/trunk/performance/base/src/main/java/org/apache/sling/performance/tests/ResolveWith5000AliasTest.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: sling/trunk/performance/base/src/main/java/org/apache/sling/performance/tests/ResolveWith5000AliasTest.java
------------------------------------------------------------------------------
svn:keywords = Author Date Id Revision Rev URL
Added: sling/trunk/performance/base/src/main/java/org/apache/sling/performance/tests/ResolveWith5000VanityPathTest.java
URL: http://svn.apache.org/viewvc/sling/trunk/performance/base/src/main/java/org/apache/sling/performance/tests/ResolveWith5000VanityPathTest.java?rev=1377819&view=auto
==============================================================================
--- sling/trunk/performance/base/src/main/java/org/apache/sling/performance/tests/ResolveWith5000VanityPathTest.java (added)
+++ sling/trunk/performance/base/src/main/java/org/apache/sling/performance/tests/ResolveWith5000VanityPathTest.java Mon Aug 27 20:13:21 2012
@@ -0,0 +1,27 @@
+/*
+ * 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.sling.performance.tests;
+
+import org.apache.sling.performance.TestHelper;
+
+public class ResolveWith5000VanityPathTest extends ResolveWithManyVanityPathTest {
+
+ public ResolveWith5000VanityPathTest(TestHelper helper) {
+ super(helper, 100, 50);
+ }
+
+}
Propchange: sling/trunk/performance/base/src/main/java/org/apache/sling/performance/tests/ResolveWith5000VanityPathTest.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: sling/trunk/performance/base/src/main/java/org/apache/sling/performance/tests/ResolveWith5000VanityPathTest.java
------------------------------------------------------------------------------
svn:keywords = Author Date Id Revision Rev URL
Added: sling/trunk/performance/base/src/main/java/org/apache/sling/performance/tests/ResolveWithManyAliasTest.java
URL: http://svn.apache.org/viewvc/sling/trunk/performance/base/src/main/java/org/apache/sling/performance/tests/ResolveWithManyAliasTest.java?rev=1377819&view=auto
==============================================================================
--- sling/trunk/performance/base/src/main/java/org/apache/sling/performance/tests/ResolveWithManyAliasTest.java (added)
+++ sling/trunk/performance/base/src/main/java/org/apache/sling/performance/tests/ResolveWithManyAliasTest.java Mon Aug 27 20:13:21 2012
@@ -0,0 +1,127 @@
+/*
+ * 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.sling.performance.tests;
+
+import java.math.BigInteger;
+import java.security.SecureRandom;
+
+import javax.jcr.Node;
+import javax.servlet.http.HttpServletRequest;
+
+import org.apache.jackrabbit.JcrConstants;
+import org.apache.sling.api.resource.Resource;
+import org.apache.sling.api.resource.ResourceResolver;
+import org.apache.sling.api.resource.ResourceUtil;
+import org.apache.sling.commons.testing.jcr.RepositoryUtil;
+import org.apache.sling.performance.AbstractRepositoryTest;
+import org.apache.sling.performance.TestHelper;
+import org.apache.sling.performance.ResourceResolverTestRequest;
+
+import static org.junit.Assert.assertNotNull;
+
+class ResolveWithManyAliasTest extends AbstractRepositoryTest {
+
+ private static final String PN_SLING_ALIAS = "sling:alias";
+
+ private final TestHelper helper;
+
+ private Node mapRoot;
+
+ private ResourceResolver resResolver;
+
+ private Node rootNode;
+
+ private String rootPath;
+
+ private final int nodeCount;
+
+ public ResolveWithManyAliasTest(TestHelper helper, int nodeCount) {
+ this.helper = helper;
+ this.nodeCount = nodeCount;
+ }
+
+ @Override
+ protected void afterSuite() throws Exception {
+ if (helper != null) {
+ helper.dispose();
+ }
+
+ if (rootNode != null) {
+ rootNode.remove();
+ }
+ if (mapRoot != null) {
+ mapRoot.remove();
+ }
+ /*
+ * if ( this.listener != null ) { this.listener.dispose(); }
+ */
+ session.save();
+ }
+
+ @Override
+ protected void beforeSuite() throws Exception {
+ RepositoryUtil.registerNodeType(getSession(),
+ this.getClass().getResourceAsStream("/SLING-INF/nodetypes/folder.cnd"));
+ RepositoryUtil.registerNodeType(getSession(),
+ this.getClass().getResourceAsStream("/SLING-INF/nodetypes/resource.cnd"));
+ RepositoryUtil.registerNodeType(getSession(),
+ this.getClass().getResourceAsStream("/SLING-INF/nodetypes/vanitypath.cnd"));
+ RepositoryUtil.registerNodeType(getSession(),
+ this.getClass().getResourceAsStream("/SLING-INF/nodetypes/mapping.cnd"));
+
+ // test data
+ rootPath = "/test" + System.currentTimeMillis();
+ rootNode = getSession().getRootNode().addNode(rootPath.substring(1), JcrConstants.NT_UNSTRUCTURED);
+
+ // test mappings
+ mapRoot = getSession().getRootNode().addNode("etc", "nt:folder");
+ Node map = mapRoot.addNode("map", "sling:Mapping");
+ Node http = map.addNode("http", "sling:Mapping");
+ http.addNode("localhost.80", "sling:Mapping");
+ Node https = map.addNode("https", "sling:Mapping");
+ https.addNode("localhost.443", "sling:Mapping");
+
+ // define a vanity path for the rootPath
+ SecureRandom random = new SecureRandom();
+ // creating <nodeCount> nodes
+ for (int j = 0; j < nodeCount; j++) {
+ Node content = rootNode.addNode("a" + j, JcrConstants.NT_UNSTRUCTURED);
+ String alias = new BigInteger(130, random).toString(32);
+ content.setProperty(PN_SLING_ALIAS, alias);
+
+ if (j % 10 == 0) {
+ session.save();
+ }
+ }
+
+ session.save();
+
+ helper.init(rootPath, session, getRepository());
+
+ resResolver = helper.getResourceResolver();
+
+ }
+
+ @Override
+ protected void runTest() throws Exception {
+ String path = ResourceUtil.normalize(ResourceUtil.getParent(rootPath) + "/" + "testNonExistingAlias"
+ + ".print.html");
+ HttpServletRequest request = new ResourceResolverTestRequest(path);
+ Resource res = resResolver.resolve(request, path);
+ assertNotNull(res);
+ }
+}
Propchange: sling/trunk/performance/base/src/main/java/org/apache/sling/performance/tests/ResolveWithManyAliasTest.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: sling/trunk/performance/base/src/main/java/org/apache/sling/performance/tests/ResolveWithManyAliasTest.java
------------------------------------------------------------------------------
svn:keywords = Author Date Id Revision Rev URL
Added: sling/trunk/performance/base/src/main/java/org/apache/sling/performance/tests/ResolveWithManyVanityPathTest.java
URL: http://svn.apache.org/viewvc/sling/trunk/performance/base/src/main/java/org/apache/sling/performance/tests/ResolveWithManyVanityPathTest.java?rev=1377819&view=auto
==============================================================================
--- sling/trunk/performance/base/src/main/java/org/apache/sling/performance/tests/ResolveWithManyVanityPathTest.java (added)
+++ sling/trunk/performance/base/src/main/java/org/apache/sling/performance/tests/ResolveWithManyVanityPathTest.java Mon Aug 27 20:13:21 2012
@@ -0,0 +1,137 @@
+/*
+ * 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.sling.performance.tests;
+
+import static org.junit.Assert.assertNotNull;
+
+import java.math.BigInteger;
+import java.security.SecureRandom;
+
+import javax.jcr.Node;
+import javax.servlet.http.HttpServletRequest;
+
+import org.apache.jackrabbit.JcrConstants;
+import org.apache.sling.api.resource.Resource;
+import org.apache.sling.api.resource.ResourceResolver;
+import org.apache.sling.api.resource.ResourceUtil;
+import org.apache.sling.commons.testing.jcr.RepositoryUtil;
+import org.apache.sling.performance.AbstractRepositoryTest;
+import org.apache.sling.performance.TestHelper;
+import org.apache.sling.performance.ResourceResolverTestRequest;
+
+class ResolveWithManyVanityPathTest extends AbstractRepositoryTest {
+
+ private static final String NT_VANITY_PATH = "sling:VanityPath";
+
+ private static final String PN_VANITY_PATH = "sling:vanityPath";
+
+ private final TestHelper helper;
+
+ private Node mapRoot;
+
+ // private JcrResourceListener listener;
+ private ResourceResolver resResolver;
+
+ private Node rootNode;
+
+ private String rootPath;
+
+ private final int nodeCount;
+
+ private final int childNodeCount;
+
+ public ResolveWithManyVanityPathTest(TestHelper helper, int nodeCount, int childNodeCount) {
+ this.helper = helper;
+ this.nodeCount = nodeCount;
+ this.childNodeCount = childNodeCount;
+ }
+
+ @Override
+ protected void afterSuite() throws Exception {
+ if (helper != null) {
+ helper.dispose();
+ }
+
+ if (rootNode != null) {
+ rootNode.remove();
+ }
+ if (mapRoot != null) {
+ mapRoot.remove();
+ }
+ session.save();
+ }
+
+ @Override
+ protected void beforeSuite() throws Exception {
+ RepositoryUtil.registerNodeType(getSession(),
+ this.getClass().getResourceAsStream("/SLING-INF/nodetypes/folder.cnd"));
+ RepositoryUtil.registerNodeType(getSession(),
+ this.getClass().getResourceAsStream("/SLING-INF/nodetypes/resource.cnd"));
+ RepositoryUtil.registerNodeType(getSession(),
+ this.getClass().getResourceAsStream("/SLING-INF/nodetypes/vanitypath.cnd"));
+ RepositoryUtil.registerNodeType(getSession(),
+ this.getClass().getResourceAsStream("/SLING-INF/nodetypes/mapping.cnd"));
+
+ // test data
+ rootPath = "/test" + System.currentTimeMillis();
+ rootNode = getSession().getRootNode().addNode(rootPath.substring(1), "nt:unstructured");
+
+ // test mappings
+ mapRoot = getSession().getRootNode().addNode("etc", JcrConstants.NT_FOLDER);
+ Node map = mapRoot.addNode("map", "sling:Mapping");
+ Node http = map.addNode("http", "sling:Mapping");
+ http.addNode("localhost.80", "sling:Mapping");
+ Node https = map.addNode("https", "sling:Mapping");
+ https.addNode("localhost.443", "sling:Mapping");
+
+ SecureRandom random = new SecureRandom();
+
+ // creating <nodeCount> x <childNodeCount> nodes with vanity
+ for (int j = 0; j < nodeCount; j++) {
+ Node content = rootNode.addNode("a" + j, JcrConstants.NT_UNSTRUCTURED);
+ String s = new BigInteger(130, random).toString(32);
+ content.addMixin(NT_VANITY_PATH);
+ content.setProperty(PN_VANITY_PATH, s);
+ for (int k = 0; k < childNodeCount; k++) {
+ Node content2 = content.addNode("b" + k, JcrConstants.NT_UNSTRUCTURED);
+ String ss = new BigInteger(130, random).toString(32);
+ content2.addMixin(NT_VANITY_PATH);
+ content2.setProperty(PN_VANITY_PATH, ss);
+ }
+ if (j % 10 == 0) {
+ session.save();
+ }
+ }
+
+ session.save();
+
+ helper.init(rootPath, session, getRepository());
+
+ resResolver = helper.getResourceResolver();
+
+ }
+
+ @Override
+ protected void runTest() throws Exception {
+ String path = ResourceUtil.normalize(ResourceUtil.getParent(rootPath) + "/" + "testNonExistingVanity"
+ + ".print.html");
+ HttpServletRequest request = new ResourceResolverTestRequest(path);
+ Resource res = resResolver.resolve(request, path);
+ assertNotNull(res);
+ }
+
+}
Propchange: sling/trunk/performance/base/src/main/java/org/apache/sling/performance/tests/ResolveWithManyVanityPathTest.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: sling/trunk/performance/base/src/main/java/org/apache/sling/performance/tests/ResolveWithManyVanityPathTest.java
------------------------------------------------------------------------------
svn:keywords = Author Date Id Revision Rev URL
Added: sling/trunk/performance/jcr-resource-2.0.10/pom.xml
URL: http://svn.apache.org/viewvc/sling/trunk/performance/jcr-resource-2.0.10/pom.xml?rev=1377819&view=auto
==============================================================================
--- sling/trunk/performance/jcr-resource-2.0.10/pom.xml (added)
+++ sling/trunk/performance/jcr-resource-2.0.10/pom.xml Mon Aug 27 20:13:21 2012
@@ -0,0 +1,52 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 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. -->
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+
+ <modelVersion>4.0.0</modelVersion>
+ <parent>
+ <groupId>org.apache.sling</groupId>
+ <artifactId>sling-performance-tests</artifactId>
+ <version>0.0.1-SNAPSHOT</version>
+ </parent>
+
+ <artifactId>org.apache.sling.performance.jcr.resource-2.0.10</artifactId>
+ <version>0.0.1-SNAPSHOT</version>
+
+ <name>Apache Sling Performance Test - JCR Resource 2.0.10</name>
+
+ <scm>
+ <connection>scm:svn:http://svn.apache.org/repos/asf/sling/trunk/performance/jcr-resource-2.0.10</connection>
+ <developerConnection>scm:svn:https://svn.apache.org/repos/asf/sling/trunk/performance/jcr-resource-2.0.10</developerConnection>
+ <url>http://svn.apache.org/viewvc/sling/trunk/performance/jcr-resource-2.0.10</url>
+ </scm>
+ <dependencies>
+ <dependency>
+ <groupId>org.apache.sling</groupId>
+ <artifactId>org.apache.sling.performance.base</artifactId>
+ <version>${project.version}</version>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.sling</groupId>
+ <artifactId>org.apache.sling.jcr.resource</artifactId>
+ <version>2.0.10</version>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>javax.jcr</groupId>
+ <artifactId>jcr</artifactId>
+ <version>2.0</version>
+ <scope>compile</scope>
+ </dependency>
+ </dependencies>
+</project>
Propchange: sling/trunk/performance/jcr-resource-2.0.10/pom.xml
------------------------------------------------------------------------------
svn:eol-style = native
Added: sling/trunk/performance/jcr-resource-2.0.10/src/test/java/org/apache/sling/performance/PerformanceTest.java
URL: http://svn.apache.org/viewvc/sling/trunk/performance/jcr-resource-2.0.10/src/test/java/org/apache/sling/performance/PerformanceTest.java?rev=1377819&view=auto
==============================================================================
--- sling/trunk/performance/jcr-resource-2.0.10/src/test/java/org/apache/sling/performance/PerformanceTest.java (added)
+++ sling/trunk/performance/jcr-resource-2.0.10/src/test/java/org/apache/sling/performance/PerformanceTest.java Mon Aug 27 20:13:21 2012
@@ -0,0 +1,104 @@
+/*
+ * 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.sling.performance;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import javax.jcr.NamespaceRegistry;
+import javax.jcr.Session;
+
+import junitx.util.PrivateAccessor;
+
+import org.apache.sling.api.SlingConstants;
+import org.apache.sling.api.resource.ResourceResolver;
+import org.apache.sling.jcr.api.SlingRepository;
+import org.apache.sling.jcr.resource.JcrResourceConstants;
+import org.apache.sling.jcr.resource.internal.JcrResourceResolverFactoryImpl;
+import org.apache.sling.jcr.resource.internal.helper.MapEntries;
+import org.apache.sling.jcr.resource.internal.helper.Mapping;
+import org.apache.sling.performance.tests.ResolveWith10000AliasTest;
+import org.apache.sling.performance.tests.ResolveWith10000VanityPathTest;
+import org.apache.sling.performance.tests.ResolveWith1000AliasTest;
+import org.apache.sling.performance.tests.ResolveWith1000VanityPathTest;
+import org.apache.sling.performance.tests.ResolveWith30000AliasTest;
+import org.apache.sling.performance.tests.ResolveWith30000VanityPathTest;
+import org.apache.sling.performance.tests.ResolveWith5000AliasTest;
+import org.apache.sling.performance.tests.ResolveWith5000VanityPathTest;
+
+public class PerformanceTest extends AbstractPerformanceTest {
+
+ private class Helper implements TestHelper {
+
+ private MapEntries mapEntries;
+
+ private ResourceResolver resourceResolver;
+
+ public void dispose() {
+ mapEntries.dispose();
+ }
+
+ public ResourceResolver getResourceResolver() {
+ return resourceResolver;
+ }
+
+ public void init(String rootPath, Session session, SlingRepository repository) throws Exception {
+ JcrResourceResolverFactoryImpl resFac = new JcrResourceResolverFactoryImpl();
+
+ PrivateAccessor.setField(resFac, "repository", repository);
+
+ // setup mappings
+ PrivateAccessor.setField(resFac, "mappings",
+ new Mapping[] { new Mapping("/-/"), new Mapping(rootPath + "/-/") });
+
+ // ensure namespace mangling
+ PrivateAccessor.setField(resFac, "mangleNamespacePrefixes", true);
+
+ // setup mapping root
+ PrivateAccessor.setField(resFac, "mapRoot", "/etc/map");
+
+ this.mapEntries = new MapEntries(resFac, repository);
+ PrivateAccessor.setField(resFac, "mapEntries", mapEntries);
+
+ try {
+ NamespaceRegistry nsr = session.getWorkspace().getNamespaceRegistry();
+ nsr.registerNamespace(SlingConstants.NAMESPACE_PREFIX, JcrResourceConstants.SLING_NAMESPACE_URI);
+ } catch (Exception e) {
+ // don't care for now
+ }
+
+ PrivateAccessor.setField(resFac, "useMultiWorkspaces", true);
+
+ resourceResolver = resFac.getResourceResolver(session);
+ }
+ }
+
+ public void testPerformance() throws Exception {
+ Helper helper = new Helper();
+
+ List<AbstractTest> tests = new ArrayList<AbstractTest>();
+ tests.add(new ResolveWith1000VanityPathTest(helper));
+ tests.add(new ResolveWith5000VanityPathTest(helper));
+ tests.add(new ResolveWith10000VanityPathTest(helper));
+ //tests.add(new ResolveWith30000VanityPathTest(helper));
+ tests.add(new ResolveWith1000AliasTest(helper));
+ tests.add(new ResolveWith5000AliasTest(helper));
+ tests.add(new ResolveWith10000AliasTest(helper));
+ //tests.add(new ResolveWith30000AliasTest(helper));
+ testPerformance("jcr.resource-2.1.0", tests);
+ }
+}
Propchange: sling/trunk/performance/jcr-resource-2.0.10/src/test/java/org/apache/sling/performance/PerformanceTest.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: sling/trunk/performance/jcr-resource-2.0.10/src/test/java/org/apache/sling/performance/PerformanceTest.java
------------------------------------------------------------------------------
svn:keywords = Author Date Id Revision Rev URL
Added: sling/trunk/performance/jcr-resource-2.1.0/pom.xml
URL: http://svn.apache.org/viewvc/sling/trunk/performance/jcr-resource-2.1.0/pom.xml?rev=1377819&view=auto
==============================================================================
--- sling/trunk/performance/jcr-resource-2.1.0/pom.xml (added)
+++ sling/trunk/performance/jcr-resource-2.1.0/pom.xml Mon Aug 27 20:13:21 2012
@@ -0,0 +1,54 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 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. -->
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+
+ <modelVersion>4.0.0</modelVersion>
+ <parent>
+ <groupId>org.apache.sling</groupId>
+ <artifactId>sling</artifactId>
+ <version>13</version>
+ <relativePath>../../../parent/pom.xml</relativePath>
+ </parent>
+
+ <artifactId>org.apache.sling.performance.jcr.resource-2.1.0</artifactId>
+ <version>0.0.1-SNAPSHOT</version>
+
+ <name>Apache Sling Performance Test - JCR Resource 2.1.0</name>
+
+ <scm>
+ <connection>scm:svn:http://svn.apache.org/repos/asf/sling/trunk/performance/jcr-resource-2.1.0</connection>
+ <developerConnection>scm:svn:https://svn.apache.org/repos/asf/sling/trunk/performance/jcr-resource-2.1.0</developerConnection>
+ <url>http://svn.apache.org/viewvc/sling/trunk/performance/jcr-resource-2.1.0</url>
+ </scm>
+
+ <dependencies>
+ <dependency>
+ <groupId>org.apache.sling</groupId>
+ <artifactId>org.apache.sling.performance.base</artifactId>
+ <version>${project.version}</version>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.sling</groupId>
+ <artifactId>org.apache.sling.jcr.resource</artifactId>
+ <version>2.1.0</version>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>javax.jcr</groupId>
+ <artifactId>jcr</artifactId>
+ <version>2.0</version>
+ <scope>compile</scope>
+ </dependency>
+ </dependencies>
+</project>
Propchange: sling/trunk/performance/jcr-resource-2.1.0/pom.xml
------------------------------------------------------------------------------
svn:eol-style = native
Added: sling/trunk/performance/jcr-resource-2.1.0/src/test/java/org/apache/sling/performance/PerformanceTest.java
URL: http://svn.apache.org/viewvc/sling/trunk/performance/jcr-resource-2.1.0/src/test/java/org/apache/sling/performance/PerformanceTest.java?rev=1377819&view=auto
==============================================================================
--- sling/trunk/performance/jcr-resource-2.1.0/src/test/java/org/apache/sling/performance/PerformanceTest.java (added)
+++ sling/trunk/performance/jcr-resource-2.1.0/src/test/java/org/apache/sling/performance/PerformanceTest.java Mon Aug 27 20:13:21 2012
@@ -0,0 +1,116 @@
+/*
+ * 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.sling.performance;
+
+import static org.mockito.Mockito.*;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import javax.jcr.NamespaceRegistry;
+import javax.jcr.Session;
+
+import junitx.util.PrivateAccessor;
+
+import org.apache.sling.api.SlingConstants;
+import org.apache.sling.api.resource.ResourceResolver;
+import org.apache.sling.jcr.api.SlingRepository;
+import org.apache.sling.jcr.resource.JcrResourceConstants;
+import org.apache.sling.jcr.resource.internal.JcrResourceResolverFactoryImpl;
+import org.apache.sling.jcr.resource.internal.helper.MapEntries;
+import org.apache.sling.jcr.resource.internal.helper.Mapping;
+import org.apache.sling.performance.tests.*;
+import org.osgi.framework.BundleContext;
+import org.osgi.service.event.Event;
+import org.osgi.service.event.EventAdmin;
+import org.osgi.util.tracker.ServiceTracker;
+
+public class PerformanceTest extends AbstractPerformanceTest {
+
+ private class Helper implements TestHelper {
+
+ private MapEntries mapEntries;
+
+ private ResourceResolver resourceResolver;
+
+ public void dispose() {
+ mapEntries.dispose();
+ }
+
+ public ResourceResolver getResourceResolver() {
+ return resourceResolver;
+ }
+
+ public void init(String rootPath, Session session, SlingRepository repository) throws Exception {
+ JcrResourceResolverFactoryImpl resFac = new JcrResourceResolverFactoryImpl();
+
+ PrivateAccessor.setField(resFac, "repository", repository);
+
+ // setup mappings
+ PrivateAccessor.setField(resFac, "mappings",
+ new Mapping[] { new Mapping("/-/"), new Mapping(rootPath + "/-/") });
+
+ // ensure namespace mangling
+ PrivateAccessor.setField(resFac, "mangleNamespacePrefixes", true);
+
+ // setup mapping root
+ PrivateAccessor.setField(resFac, "mapRoot", "/etc/map");
+
+ final EventAdmin mockVoidEA = new EventAdmin() {
+
+ public void postEvent(Event event) {
+ // nothing to do
+ }
+
+ public void sendEvent(Event event) {
+ // nothing to do
+ }
+ };
+ final ServiceTracker voidTracker = mock(ServiceTracker.class);
+ when(voidTracker.getService()).thenReturn(mockVoidEA);
+
+ mapEntries = new MapEntries(resFac, mock(BundleContext.class), voidTracker);
+ PrivateAccessor.setField(resFac, "mapEntries", mapEntries);
+
+ try {
+ NamespaceRegistry nsr = session.getWorkspace().getNamespaceRegistry();
+ nsr.registerNamespace(SlingConstants.NAMESPACE_PREFIX, JcrResourceConstants.SLING_NAMESPACE_URI);
+ } catch (Exception e) {
+ // don't care for now
+ }
+
+ PrivateAccessor.setField(resFac, "useMultiWorkspaces", true);
+
+ resourceResolver = resFac.getResourceResolver(session);
+ }
+ }
+
+ public void testPerformance() throws Exception {
+ Helper helper = new Helper();
+
+ List<AbstractTest> tests = new ArrayList<AbstractTest>();
+ tests.add(new ResolveWith1000VanityPathTest(helper));
+ tests.add(new ResolveWith5000VanityPathTest(helper));
+ tests.add(new ResolveWith10000VanityPathTest(helper));
+ //tests.add(new ResolveWith30000VanityPathTest(helper));
+ tests.add(new ResolveWith1000AliasTest(helper));
+ tests.add(new ResolveWith5000AliasTest(helper));
+ tests.add(new ResolveWith10000AliasTest(helper));
+ //tests.add(new ResolveWith30000AliasTest(helper));
+ testPerformance("jcr.resource-2.1.0", tests);
+ }
+}
Propchange: sling/trunk/performance/jcr-resource-2.1.0/src/test/java/org/apache/sling/performance/PerformanceTest.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: sling/trunk/performance/jcr-resource-2.1.0/src/test/java/org/apache/sling/performance/PerformanceTest.java
------------------------------------------------------------------------------
svn:keywords = Author Date Id Revision Rev URL
Added: sling/trunk/performance/jcr-resource-2.2.0/pom.xml
URL: http://svn.apache.org/viewvc/sling/trunk/performance/jcr-resource-2.2.0/pom.xml?rev=1377819&view=auto
==============================================================================
--- sling/trunk/performance/jcr-resource-2.2.0/pom.xml (added)
+++ sling/trunk/performance/jcr-resource-2.2.0/pom.xml Mon Aug 27 20:13:21 2012
@@ -0,0 +1,71 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 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. -->
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+
+ <modelVersion>4.0.0</modelVersion>
+ <parent>
+ <groupId>org.apache.sling</groupId>
+ <artifactId>sling-performance-tests</artifactId>
+ <version>0.0.1-SNAPSHOT</version>
+ </parent>
+
+ <artifactId>org.apache.sling.performance.jcr.resource-2.2.0</artifactId>
+ <version>0.0.1-SNAPSHOT</version>
+
+ <name>Apache Sling Performance Test - JCR Resource 2.2.0</name>
+
+ <scm>
+ <connection>scm:svn:http://svn.apache.org/repos/asf/sling/trunk/performance/jcr-resource-2.2.0</connection>
+ <developerConnection>scm:svn:https://svn.apache.org/repos/asf/sling/trunk/performance/jcr-resource-2.2.0</developerConnection>
+ <url>http://svn.apache.org/viewvc/sling/trunk/performance/jcr-resource-2.2.0</url>
+ </scm>
+
+ <dependencies>
+ <dependency>
+ <groupId>org.apache.sling</groupId>
+ <artifactId>org.apache.sling.performance.base</artifactId>
+ <version>${project.version}</version>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.sling</groupId>
+ <artifactId>org.apache.sling.jcr.resource</artifactId>
+ <version>2.1.1-SNAPSHOT</version>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.sling</groupId>
+ <artifactId>org.apache.sling.api</artifactId>
+ <version>2.2.5-SNAPSHOT</version>
+ <scope>provided</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.sling</groupId>
+ <artifactId>org.apache.sling.resourceresolver</artifactId>
+ <version>0.1.0-SNAPSHOT</version>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>javax.jcr</groupId>
+ <artifactId>jcr</artifactId>
+ <version>2.0</version>
+ <scope>compile</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.sling</groupId>
+ <artifactId>org.apache.sling.commons.osgi</artifactId>
+ <version>2.1.0</version>
+ <scope>compile</scope>
+ </dependency>
+ </dependencies>
+</project>
Propchange: sling/trunk/performance/jcr-resource-2.2.0/pom.xml
------------------------------------------------------------------------------
svn:eol-style = native