Author: bdelacretaz
Date: Wed Sep 10 08:02:18 2008
New Revision: 693865
URL: http://svn.apache.org/viewvc?rev=693865&view=rev
Log:
SLING-646 - fix failing tests
Added:
incubator/sling/trunk/extensions/jcrinstall/src/test/java/org/apache/sling/jcr/jcrinstall/jcr/impl/MockRepositoryObserver.java
(with props)
Modified:
incubator/sling/trunk/extensions/jcrinstall/src/main/java/org/apache/sling/jcr/jcrinstall/jcr/impl/RepositoryObserver.java
incubator/sling/trunk/extensions/jcrinstall/src/main/java/org/apache/sling/jcr/jcrinstall/jcr/impl/WatchedFolder.java
incubator/sling/trunk/extensions/jcrinstall/src/test/java/org/apache/sling/jcr/jcrinstall/jcr/impl/ContentHelper.java
incubator/sling/trunk/extensions/jcrinstall/src/test/java/org/apache/sling/jcr/jcrinstall/jcr/impl/FindWatchedFoldersTest.java
incubator/sling/trunk/extensions/jcrinstall/src/test/java/org/apache/sling/jcr/jcrinstall/jcr/impl/MiscHelper.java
incubator/sling/trunk/extensions/jcrinstall/src/test/java/org/apache/sling/jcr/jcrinstall/jcr/impl/ResourceDetectionTest.java
incubator/sling/trunk/extensions/jcrinstall/src/test/java/org/apache/sling/jcr/jcrinstall/osgi/impl/BundleResourceProcessorTest.java
Modified:
incubator/sling/trunk/extensions/jcrinstall/src/main/java/org/apache/sling/jcr/jcrinstall/jcr/impl/RepositoryObserver.java
URL:
http://svn.apache.org/viewvc/incubator/sling/trunk/extensions/jcrinstall/src/main/java/org/apache/sling/jcr/jcrinstall/jcr/impl/RepositoryObserver.java?rev=693865&r1=693864&r2=693865&view=diff
==============================================================================
---
incubator/sling/trunk/extensions/jcrinstall/src/main/java/org/apache/sling/jcr/jcrinstall/jcr/impl/RepositoryObserver.java
(original)
+++
incubator/sling/trunk/extensions/jcrinstall/src/main/java/org/apache/sling/jcr/jcrinstall/jcr/impl/RepositoryObserver.java
Wed Sep 10 08:02:18 2008
@@ -53,16 +53,16 @@
*/
public class RepositoryObserver implements Runnable {
- private Set<WatchedFolder> folders;
+ protected Set<WatchedFolder> folders;
private RegexpFilter folderNameFilter;
private RegexpFilter filenameFilter;
private boolean running;
/** @scr.reference */
- private OsgiController osgiController;
+ protected OsgiController osgiController;
/** @scr.reference */
- private SlingRepository repository;
+ protected SlingRepository repository;
private Session session;
@@ -76,7 +76,7 @@
public static final String DEFAULT_FILENAME_REGEXP =
"[a-zA-Z0-9].*\\.[a-zA-Z][a-zA-Z][a-zA-Z]?";
/** Scan delay for watched folders */
- private final long scanDelayMsec = 1000L;
+ protected long scanDelayMsec = 1000L;
protected static final Logger log =
LoggerFactory.getLogger(WatchedFolder.class);
@@ -225,9 +225,8 @@
log.warn("IllegalArgumentException in " +
getClass().getSimpleName(), ie);
} catch (RepositoryException re) {
log.warn("RepositoryException in " +
getClass().getSimpleName(), re);
- } catch (Throwable t) {
- log.error("Unhandled Throwable in runOneCycle() - "
- + getClass().getSimpleName() + " thread will be
stopped", t);
+ } catch (Exception e) {
+ log.error("Unhandled Exception in runOneCycle()", e);
} finally {
try {
Thread.sleep(1000L);
Modified:
incubator/sling/trunk/extensions/jcrinstall/src/main/java/org/apache/sling/jcr/jcrinstall/jcr/impl/WatchedFolder.java
URL:
http://svn.apache.org/viewvc/incubator/sling/trunk/extensions/jcrinstall/src/main/java/org/apache/sling/jcr/jcrinstall/jcr/impl/WatchedFolder.java?rev=693865&r1=693864&r2=693865&view=diff
==============================================================================
---
incubator/sling/trunk/extensions/jcrinstall/src/main/java/org/apache/sling/jcr/jcrinstall/jcr/impl/WatchedFolder.java
(original)
+++
incubator/sling/trunk/extensions/jcrinstall/src/main/java/org/apache/sling/jcr/jcrinstall/jcr/impl/WatchedFolder.java
Wed Sep 10 08:02:18 2008
@@ -63,10 +63,11 @@
this.scanDelayMsec = scanDelayMsec;
session =
repository.loginAdministrative(repository.getDefaultWorkspace());
- // observe any changes in our folder, but not recursively
+ // observe any changes in our folder (and under it, as changes to
properties
+ // might be lower in the hierarchy)
final int eventTypes = Event.NODE_ADDED | Event.NODE_REMOVED
| Event.PROPERTY_ADDED | Event.PROPERTY_CHANGED |
Event.PROPERTY_REMOVED;
- final boolean isDeep = false;
+ final boolean isDeep = true;
final boolean noLocal = true;
session.getWorkspace().getObservationManager().addEventListener(this,
eventTypes, path,
isDeep, null, null, noLocal);
Modified:
incubator/sling/trunk/extensions/jcrinstall/src/test/java/org/apache/sling/jcr/jcrinstall/jcr/impl/ContentHelper.java
URL:
http://svn.apache.org/viewvc/incubator/sling/trunk/extensions/jcrinstall/src/test/java/org/apache/sling/jcr/jcrinstall/jcr/impl/ContentHelper.java?rev=693865&r1=693864&r2=693865&view=diff
==============================================================================
---
incubator/sling/trunk/extensions/jcrinstall/src/test/java/org/apache/sling/jcr/jcrinstall/jcr/impl/ContentHelper.java
(original)
+++
incubator/sling/trunk/extensions/jcrinstall/src/test/java/org/apache/sling/jcr/jcrinstall/jcr/impl/ContentHelper.java
Wed Sep 10 08:02:18 2008
@@ -100,6 +100,7 @@
c.setTimeInMillis(lastModified);
res.setProperty(JCR_LASTMODIFIED, c);
res.setProperty(JCR_DATA, data);
+
f.getParent().save();
}
}
\ No newline at end of file
Modified:
incubator/sling/trunk/extensions/jcrinstall/src/test/java/org/apache/sling/jcr/jcrinstall/jcr/impl/FindWatchedFoldersTest.java
URL:
http://svn.apache.org/viewvc/incubator/sling/trunk/extensions/jcrinstall/src/test/java/org/apache/sling/jcr/jcrinstall/jcr/impl/FindWatchedFoldersTest.java?rev=693865&r1=693864&r2=693865&view=diff
==============================================================================
---
incubator/sling/trunk/extensions/jcrinstall/src/test/java/org/apache/sling/jcr/jcrinstall/jcr/impl/FindWatchedFoldersTest.java
(original)
+++
incubator/sling/trunk/extensions/jcrinstall/src/test/java/org/apache/sling/jcr/jcrinstall/jcr/impl/FindWatchedFoldersTest.java
Wed Sep 10 08:02:18 2008
@@ -67,34 +67,34 @@
public void testInitialFind() throws Exception {
contentHelper.setupContent();
- final RepositoryObserver ro =
MiscHelper.createRepositoryObserver(repo, osgiController);
+ final MockRepositoryObserver ro = new MockRepositoryObserver(repo,
osgiController);
ro.activate(null);
- final Set<WatchedFolder> wfSet = MiscHelper.getWatchedFolders(ro);
+ final Set<WatchedFolder> wfSet = ro.getWatchedFolders();
assertEquals("activate() must find all watched folders",
contentHelper.WATCHED_FOLDERS.length, wfSet.size());
for(String folder : contentHelper.WATCHED_FOLDERS) {
assertTrue("Folder " + folder + " must be watched (watched=" +
wfSet + ")",
- MiscHelper.folderIsWatched(ro, folder));
+ ro.folderIsWatched(folder));
}
}
public void testNewWatchedFolderDetection() throws Exception {
contentHelper.setupContent();
- final RepositoryObserver ro =
MiscHelper.createRepositoryObserver(repo, osgiController);
+ final MockRepositoryObserver ro = new MockRepositoryObserver(repo,
osgiController);
ro.activate(null);
final String newPaths [] = { "libs/tnwf/install", "apps/tnwf/install"
};
for(String newPath : newPaths) {
- assertFalse(newPath + " must not be watched before test",
MiscHelper.folderIsWatched(ro, newPath));
+ assertFalse(newPath + " must not be watched before test",
ro.folderIsWatched(newPath));
// Create folder, wait for observation event and check that
// it is detected
contentHelper.createFolder(newPath);
eventHelper.waitForEvents(5000L);
- assertFalse(newPath + " must not be watched before calling
addNewWatchedFolders()", MiscHelper.folderIsWatched(ro, newPath));
+ assertFalse(newPath + " must not be watched before calling
addNewWatchedFolders()", ro.folderIsWatched(newPath));
ro.addNewWatchedFolders();
- assertTrue(newPath + " must be watched before calling
addNewWatchedFolders()", MiscHelper.folderIsWatched(ro, newPath));
+ assertTrue(newPath + " must be watched before calling
addNewWatchedFolders()", ro.folderIsWatched(newPath));
}
}
}
\ No newline at end of file
Modified:
incubator/sling/trunk/extensions/jcrinstall/src/test/java/org/apache/sling/jcr/jcrinstall/jcr/impl/MiscHelper.java
URL:
http://svn.apache.org/viewvc/incubator/sling/trunk/extensions/jcrinstall/src/test/java/org/apache/sling/jcr/jcrinstall/jcr/impl/MiscHelper.java?rev=693865&r1=693864&r2=693865&view=diff
==============================================================================
---
incubator/sling/trunk/extensions/jcrinstall/src/test/java/org/apache/sling/jcr/jcrinstall/jcr/impl/MiscHelper.java
(original)
+++
incubator/sling/trunk/extensions/jcrinstall/src/test/java/org/apache/sling/jcr/jcrinstall/jcr/impl/MiscHelper.java
Wed Sep 10 08:02:18 2008
@@ -21,38 +21,9 @@
import java.lang.reflect.Field;
import java.util.Set;
-import org.apache.sling.jcr.api.SlingRepository;
-import org.apache.sling.jcr.jcrinstall.osgi.OsgiController;
-
/** Miscellaneous test helper functions */
class MiscHelper {
- static boolean folderIsWatched(RepositoryObserver ro, String path) throws
Exception {
- boolean result = false;
- final Set<WatchedFolder> wfSet = getWatchedFolders(ro);
- for(WatchedFolder wf : wfSet) {
- if(wf.getPath().equals("/" + path)) {
- result = true;
- break;
- }
- }
- return result;
- }
-
- @SuppressWarnings("unchecked")
- static Set<WatchedFolder> getWatchedFolders(RepositoryObserver ro) throws
Exception {
- final Field f = ro.getClass().getDeclaredField("folders");
- f.setAccessible(true);
- return (Set<WatchedFolder>)f.get(ro);
- }
-
- static RepositoryObserver createRepositoryObserver(SlingRepository repo,
OsgiController c) throws Exception {
- final RepositoryObserver result = new RepositoryObserver();
- setField(result, "repository", repo);
- setField(result, "osgiController", c);
- return result;
- }
-
- static void setField(Object target, String name, Object value) throws
Exception, IllegalAccessException {
+ static void XXsetField(Object target, String name, Object value) throws
Exception, IllegalAccessException {
final Field f = target.getClass().getDeclaredField(name);
f.setAccessible(true);
f.set(target, value);
Added:
incubator/sling/trunk/extensions/jcrinstall/src/test/java/org/apache/sling/jcr/jcrinstall/jcr/impl/MockRepositoryObserver.java
URL:
http://svn.apache.org/viewvc/incubator/sling/trunk/extensions/jcrinstall/src/test/java/org/apache/sling/jcr/jcrinstall/jcr/impl/MockRepositoryObserver.java?rev=693865&view=auto
==============================================================================
---
incubator/sling/trunk/extensions/jcrinstall/src/test/java/org/apache/sling/jcr/jcrinstall/jcr/impl/MockRepositoryObserver.java
(added)
+++
incubator/sling/trunk/extensions/jcrinstall/src/test/java/org/apache/sling/jcr/jcrinstall/jcr/impl/MockRepositoryObserver.java
Wed Sep 10 08:02:18 2008
@@ -0,0 +1,54 @@
+/*
+ * 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.jcr.jcrinstall.jcr.impl;
+
+import java.util.Set;
+
+import org.apache.sling.jcr.api.SlingRepository;
+import org.apache.sling.jcr.jcrinstall.osgi.OsgiController;
+
+/** Slightly customized RepositoryObserver
+ * used for testing.
+ */
+public class MockRepositoryObserver extends RepositoryObserver {
+ MockRepositoryObserver(SlingRepository repo, final OsgiController c) {
+ repository = repo;
+ osgiController = c;
+ scanDelayMsec = 0;
+ }
+
+ public void run() {
+ // Do not run the observation cycle - we do that ourselves in testing
+ }
+
+ Set<WatchedFolder> getWatchedFolders() {
+ return folders;
+ }
+
+ boolean folderIsWatched(String path) throws Exception {
+ boolean result = false;
+ for(WatchedFolder wf : folders) {
+ if(wf.getPath().equals("/" + path)) {
+ result = true;
+ break;
+ }
+ }
+ return result;
+ }
+}
Propchange:
incubator/sling/trunk/extensions/jcrinstall/src/test/java/org/apache/sling/jcr/jcrinstall/jcr/impl/MockRepositoryObserver.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange:
incubator/sling/trunk/extensions/jcrinstall/src/test/java/org/apache/sling/jcr/jcrinstall/jcr/impl/MockRepositoryObserver.java
------------------------------------------------------------------------------
svn:keywords = Author Date Id Revision Rev URL
Modified:
incubator/sling/trunk/extensions/jcrinstall/src/test/java/org/apache/sling/jcr/jcrinstall/jcr/impl/ResourceDetectionTest.java
URL:
http://svn.apache.org/viewvc/incubator/sling/trunk/extensions/jcrinstall/src/test/java/org/apache/sling/jcr/jcrinstall/jcr/impl/ResourceDetectionTest.java?rev=693865&r1=693864&r2=693865&view=diff
==============================================================================
---
incubator/sling/trunk/extensions/jcrinstall/src/test/java/org/apache/sling/jcr/jcrinstall/jcr/impl/ResourceDetectionTest.java
(original)
+++
incubator/sling/trunk/extensions/jcrinstall/src/test/java/org/apache/sling/jcr/jcrinstall/jcr/impl/ResourceDetectionTest.java
Wed Sep 10 08:02:18 2008
@@ -108,7 +108,7 @@
inSequence(sequence);
}});
- final RepositoryObserver ro =
MiscHelper.createRepositoryObserver(repo, c);
+ final RepositoryObserver ro = new MockRepositoryObserver(repo, c);
ro.activate(null);
// Add two files, run one cycle must install the bundles
@@ -156,7 +156,7 @@
one(c).installOrUpdate(with(equal(resources[2])),
with(equal(lastModifiedA)), with(any(InputStream.class)));
}});
- final RepositoryObserver ro =
MiscHelper.createRepositoryObserver(repo, c);
+ final RepositoryObserver ro = new MockRepositoryObserver(repo, c);
ro.activate(null);
// Add two files, run one cycle must install the bundles
@@ -197,7 +197,7 @@
one(c).installOrUpdate(with(equal(resources[2])),
with(equal(lastModifiedA)), with(any(InputStream.class)));
}});
- final RepositoryObserver ro =
MiscHelper.createRepositoryObserver(repo, c);
+ final RepositoryObserver ro = new MockRepositoryObserver(repo, c);
ro.activate(null);
for(String file : resources) {
@@ -220,7 +220,7 @@
installedUri.add("/libs/foo/bar/install/dummy.cfg");
final OsgiController c = mockery.mock(OsgiController.class);
- final RepositoryObserver ro =
MiscHelper.createRepositoryObserver(repo, c);
+ final RepositoryObserver ro = new MockRepositoryObserver(repo, c);
mockery.checking(new Expectations() {{
allowing(c).getInstalledUris(); will(returnValue(installedUri));
Modified:
incubator/sling/trunk/extensions/jcrinstall/src/test/java/org/apache/sling/jcr/jcrinstall/osgi/impl/BundleResourceProcessorTest.java
URL:
http://svn.apache.org/viewvc/incubator/sling/trunk/extensions/jcrinstall/src/test/java/org/apache/sling/jcr/jcrinstall/osgi/impl/BundleResourceProcessorTest.java?rev=693865&r1=693864&r2=693865&view=diff
==============================================================================
---
incubator/sling/trunk/extensions/jcrinstall/src/test/java/org/apache/sling/jcr/jcrinstall/osgi/impl/BundleResourceProcessorTest.java
(original)
+++
incubator/sling/trunk/extensions/jcrinstall/src/test/java/org/apache/sling/jcr/jcrinstall/osgi/impl/BundleResourceProcessorTest.java
Wed Sep 10 08:02:18 2008
@@ -37,6 +37,7 @@
import org.jmock.Sequence;
import org.osgi.framework.Bundle;
import org.osgi.framework.BundleContext;
+import org.osgi.service.packageadmin.PackageAdmin;
/** Test the BundleResourceProcessor */
public class BundleResourceProcessorTest {
@@ -67,7 +68,8 @@
final OsgiControllerImpl c = new OsgiControllerImpl();
final BundleContext bc = mockery.mock(BundleContext.class);
- final BundleResourceProcessor p = new BundleResourceProcessor(bc);
+ final PackageAdmin pa = mockery.mock(PackageAdmin.class);
+ final BundleResourceProcessor p = new BundleResourceProcessor(bc, pa);
Utilities.setProcessors(c, p);
final TestStorage s = new TestStorage(Utilities.getTestFile());
Utilities.setStorage(c, s);
@@ -80,6 +82,8 @@
// We'll try installing a bundle, re-installing to cause
// it to be updated, and removing
mockery.checking(new Expectations() {{
+ allowing(pa).refreshPackages(null);
+ allowing(pa).resolveBundles(null);
allowing(b).getBundleId() ;
will(returnValue(bundleId));
@@ -129,6 +133,7 @@
// Fill the pending bundles queue with one bundle in each of the
// possible states, process the queue and verify results
+ final PackageAdmin pa = mockery.mock(PackageAdmin.class);
final BundleContext bc = mockery.mock(BundleContext.class);
final Bundle [] b = new Bundle[6];
for(int i = 0; i < b.length; i++) {
@@ -136,6 +141,9 @@
};
mockery.checking(new Expectations() {{
+ allowing(pa).refreshPackages(null);
+ allowing(pa).resolveBundles(null);
+
allowing(bc).getBundle(0L); will(returnValue(b[0]));
allowing(bc).getBundle(1L); will(returnValue(b[1]));
allowing(bc).getBundle(2L); will(returnValue(b[2]));
@@ -167,7 +175,7 @@
one(b[5]).start();
}});
- final BundleResourceProcessor p = new BundleResourceProcessor(bc);
+ final BundleResourceProcessor p = new BundleResourceProcessor(bc, pa);
final Map<Long, Bundle> pendingBundles = new HashMap<Long, Bundle>();
Utilities.setField(p, "pendingBundles", pendingBundles);