[rhq] Branch 'jsanda/pinned-snapshot' - 11 commits - modules/common modules/core modules/enterprise modules/plugins
by John Sanda
modules/common/drift/src/main/java/org/rhq/common/drift/ChangeSetReaderImpl.java | 1
modules/common/drift/src/main/java/org/rhq/common/drift/ChangeSetWriter.java | 7
modules/common/drift/src/main/java/org/rhq/common/drift/ChangeSetWriterImpl.java | 1
modules/common/drift/src/main/java/org/rhq/common/drift/Headers.java | 22
modules/common/drift/src/test/java/org/rhq/common/drift/ChangeSetReaderImplTest.java | 15
modules/common/drift/src/test/java/org/rhq/common/drift/ChangeSetWriterImplTest.java | 43 -
modules/core/client-api/src/main/java/org/rhq/core/clientapi/agent/drift/DriftAgentService.java | 2
modules/core/client-api/src/main/java/org/rhq/core/clientapi/agent/metadata/DriftMetadataParser.java | 8
modules/core/client-api/src/main/java/org/rhq/core/clientapi/agent/metadata/PluginMetadataParser.java | 14
modules/core/client-api/src/main/resources/rhq-plugin.xsd | 4
modules/core/client-api/src/test/java/org/rhq/core/clientapi/agent/metadata/test/PluginMetadataParserTest.java | 93 +-
modules/core/domain/src/main/java/org/rhq/core/domain/alert/AlertCondition.java | 6
modules/core/domain/src/main/java/org/rhq/core/domain/drift/DriftChangeSetCategory.java | 2
modules/core/domain/src/main/java/org/rhq/core/domain/drift/DriftComposite.java | 12
modules/core/domain/src/main/java/org/rhq/core/domain/drift/DriftConfigurationDefinition.java | 6
modules/core/domain/src/test/java/org/rhq/core/domain/drift/DriftConfigurationTest.java | 322 ----------
modules/core/domain/src/test/java/org/rhq/core/domain/drift/DriftDefinitionTest.java | 320 +++++++++
modules/core/domain/src/test/java/org/rhq/core/domain/resource/ResourceTypeTest.java | 2
modules/core/plugin-container/src/main/java/org/rhq/core/pc/drift/DriftManager.java | 7
modules/core/plugin-container/src/main/java/org/rhq/core/pc/inventory/InventoryManager.java | 10
modules/core/plugin-container/src/test/java/org/rhq/core/pc/drift/ChangeSetManagerImplTest.java | 22
modules/core/plugin-container/src/test/java/org/rhq/core/pc/drift/DriftDetectorTest.java | 27
modules/core/plugin-container/src/test/java/org/rhq/core/pc/drift/DriftFilesSenderTest.java | 22
modules/core/plugin-container/src/test/java/org/rhq/core/pc/drift/DriftManagerTest.java | 22
modules/core/plugin-container/src/test/java/org/rhq/core/pc/drift/DriftTest.java | 34 -
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/alert/definitions/ConditionsEditor.java | 10
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/alert/definitions/NewConditionEditor.java | 21
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/components/carousel/Carousel.java | 6
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/drift/DriftCarouselMemberView.java | 10
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/drift/DriftCarouselView.java | 21
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/drift/DriftHistoryView.java | 17
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/drift/wizard/AbstractDriftAddDefinitionWizard.java | 4
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/groups/detail/ResourceGroupDetailView.java | 10
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/type/ResourceTypeRepository.java | 6
modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/alert/engine/internal/AgentConditionCache.java | 8
modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/alert/engine/model/DriftCacheElement.java | 16
modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/alert/i18n/AlertI18NResourceKeys.java | 4
modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/drift/DriftFileBean.java | 2
modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/drift/DriftManagerBean.java | 30
modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/drift/DriftManagerLocal.java | 4
modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/drift/DriftUploadRequest.java | 10
modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/drift/JPADriftServerLocal.java | 4
modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/resource/ResourceManagerBean.java | 10
modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/resource/metadata/ResourceMetadataManagerBean.java | 8
modules/enterprise/server/jar/src/test/java/org/rhq/enterprise/server/alert/test/AlertManagerBeanTest.java | 4
modules/enterprise/server/jar/src/test/java/org/rhq/enterprise/server/drift/DriftManagerBeanTest.java | 4
modules/enterprise/server/jar/src/test/java/org/rhq/enterprise/server/resource/metadata/ResourceMetadataManagerBeanTest.java | 100 +--
modules/enterprise/server/jar/src/test/java/org/rhq/enterprise/server/test/TestAgentClient.java | 12
modules/enterprise/server/jar/src/test/resources/org/rhq/enterprise/server/resource/metadata/ResourceMetadataManagerBeanTest/dup_drift.xml | 8
modules/enterprise/server/jar/src/test/resources/org/rhq/enterprise/server/resource/metadata/ResourceMetadataManagerBeanTest/plugin_v1.xml | 8
modules/enterprise/server/jar/src/test/resources/org/rhq/enterprise/server/resource/metadata/ResourceMetadataManagerBeanTest/plugin_v2.xml | 8
modules/enterprise/server/jar/src/test/resources/org/rhq/enterprise/server/resource/metadata/ResourceMetadataManagerBeanTest/remove_bundle_drift_config_v1.xml | 4
modules/enterprise/server/plugins/drift-mongodb/pom.xml | 7
modules/enterprise/server/plugins/drift-mongodb/src/main/java/org/rhq/enterprise/server/plugins/drift/mongodb/dao/CategoryFilter.java | 42 +
modules/enterprise/server/plugins/drift-mongodb/src/main/java/org/rhq/enterprise/server/plugins/drift/mongodb/dao/ChangeSetDAO.java | 90 ++
modules/enterprise/server/plugins/drift-mongodb/src/main/java/org/rhq/enterprise/server/plugins/drift/mongodb/dao/ChangeSetEntryFilter.java | 28
modules/enterprise/server/plugins/drift-mongodb/src/main/java/org/rhq/enterprise/server/plugins/drift/mongodb/dao/ChangeSetEntryFilters.java | 45 +
modules/enterprise/server/plugins/drift-mongodb/src/main/java/org/rhq/enterprise/server/plugins/drift/mongodb/dao/CreatedAfterFilter.java | 37 +
modules/enterprise/server/plugins/drift-mongodb/src/main/java/org/rhq/enterprise/server/plugins/drift/mongodb/dao/CreatedBeforeFilter.java | 36 +
modules/enterprise/server/plugins/drift-mongodb/src/main/java/org/rhq/enterprise/server/plugins/drift/mongodb/dao/PathFilter.java | 37 +
modules/enterprise/server/plugins/drift-mongodb/src/main/java/org/rhq/enterprise/server/plugins/drift/mongodb/entities/MongoDBChangeSet.java | 14
modules/enterprise/server/plugins/drift-mongodb/src/test/java/org/rhq/enterprise/server/plugins/drift/mongodb/dao/ChangeSetDAOTest.java | 228 ++++---
modules/plugins/jboss-as-5/src/main/resources/META-INF/rhq-plugin.xml | 4
modules/plugins/jboss-as/src/main/resources/META-INF/rhq-plugin.xml | 4
modules/plugins/platform/src/main/resources/META-INF/rhq-plugin.xml | 4
65 files changed, 1206 insertions(+), 743 deletions(-)
New commits:
commit 6f4202f72d6d9adf6d9ce7ffe847e62364e9caff
Author: John Sanda <jsanda(a)redhat.com>
Date: Mon Oct 3 10:47:29 2011 -0400
Adding a new change set header, "repeated"
The repeated flag indicates whether or not the change set is a repeat of
a previous change set. This is in support of pinned snapshots where the
same drift can be detected repeatedly. When we detect the same drift
back to back during two drift detection runs, we do not want to
increment the current snapshot version the second time, but we do
however want to report to the server that there is still drift. This new
header faciliates that.
diff --git a/modules/common/drift/src/main/java/org/rhq/common/drift/ChangeSetReaderImpl.java b/modules/common/drift/src/main/java/org/rhq/common/drift/ChangeSetReaderImpl.java
index 5da6078..12e22e1 100644
--- a/modules/common/drift/src/main/java/org/rhq/common/drift/ChangeSetReaderImpl.java
+++ b/modules/common/drift/src/main/java/org/rhq/common/drift/ChangeSetReaderImpl.java
@@ -100,6 +100,7 @@ public class ChangeSetReaderImpl implements ChangeSetReader {
headers.setBasedir(reader.readLine());
headers.setType(DriftChangeSetCategory.fromCode(reader.readLine()));
headers.setVersion(Integer.parseInt(reader.readLine()));
+ headers.setRepeated(Boolean.valueOf(reader.readLine()));
} catch (IOException e) {
throw e;
} catch (Throwable t) {
diff --git a/modules/common/drift/src/main/java/org/rhq/common/drift/ChangeSetWriter.java b/modules/common/drift/src/main/java/org/rhq/common/drift/ChangeSetWriter.java
index 5e9c6ed..df8a477 100644
--- a/modules/common/drift/src/main/java/org/rhq/common/drift/ChangeSetWriter.java
+++ b/modules/common/drift/src/main/java/org/rhq/common/drift/ChangeSetWriter.java
@@ -43,6 +43,7 @@ import java.io.IOException;
* <li>drift definition base directory</li>
* <li>change set type flag indicating whether this is a coverage or drift changeset</li>
* <li>change set version number</li>
+ * <li>boolean flag indicating whether or not this change set is a repeat</li>
* </ul>
* <br/>
* <br/>
diff --git a/modules/common/drift/src/main/java/org/rhq/common/drift/ChangeSetWriterImpl.java b/modules/common/drift/src/main/java/org/rhq/common/drift/ChangeSetWriterImpl.java
index c0fdf50..a4337ee 100644
--- a/modules/common/drift/src/main/java/org/rhq/common/drift/ChangeSetWriterImpl.java
+++ b/modules/common/drift/src/main/java/org/rhq/common/drift/ChangeSetWriterImpl.java
@@ -52,6 +52,7 @@ public class ChangeSetWriterImpl implements ChangeSetWriter {
writer.write(headers.getBasedir() + "\n");
writer.write(headers.getType().code() + "\n");
writer.write(headers.getVersion() + "\n");
+ writer.write(headers.isRepeated() + "\n");
}
public void write(FileEntry entry) throws IOException {
diff --git a/modules/common/drift/src/main/java/org/rhq/common/drift/Headers.java b/modules/common/drift/src/main/java/org/rhq/common/drift/Headers.java
index fb13e94..b4484c3 100644
--- a/modules/common/drift/src/main/java/org/rhq/common/drift/Headers.java
+++ b/modules/common/drift/src/main/java/org/rhq/common/drift/Headers.java
@@ -44,6 +44,8 @@ public class Headers implements Serializable {
private int version;
+ private boolean repeated;
+
/**
* This is the id of the resource to which the change set belongs
*
@@ -128,4 +130,24 @@ public class Headers implements Serializable {
this.version = version;
}
+ /**
+ * @return True is the change set of a repeat of a previous change set. This can occur
+ * with a pinned snapshot. With a pinned snaspshot, the agent always compares the file
+ * system against that same snapshot version. So if during a scan the agent detects a
+ * new file, then in the subsequent scan the agent will "redetect" that same file
+ * because it is not in the pinned snapshot. When this flag is set, is assumed that no
+ * entries are included since they were already specified in a previous change set.
+ */
+ public boolean isRepeated() {
+ return repeated;
+ }
+
+ /**
+ * @param repeated Indicates whether or not this is a repeat of a previous change set
+ * which may happen when using pinned snapshots.
+ */
+ public void setRepeated(boolean repeated) {
+ this.repeated = repeated;
+ }
+
}
diff --git a/modules/common/drift/src/test/java/org/rhq/common/drift/ChangeSetReaderImplTest.java b/modules/common/drift/src/test/java/org/rhq/common/drift/ChangeSetReaderImplTest.java
index 5df79fa..c263971 100644
--- a/modules/common/drift/src/test/java/org/rhq/common/drift/ChangeSetReaderImplTest.java
+++ b/modules/common/drift/src/test/java/org/rhq/common/drift/ChangeSetReaderImplTest.java
@@ -24,6 +24,7 @@ public class ChangeSetReaderImplTest {
"myresource\n" +
"C\n" +
"1\n" +
+ "false\n" +
"A " + sha + " 0 conf/myconf.conf";
ChangeSetReaderImpl reader = new ChangeSetReaderImpl(new StringReader(changeset));
@@ -36,6 +37,7 @@ public class ChangeSetReaderImplTest {
expectedHeaders.setBasedir("myresource");
expectedHeaders.setType(COVERAGE);
expectedHeaders.setVersion(1);
+ expectedHeaders.setRepeated(false);
assertHeadersEquals(actualHeaders, expectedHeaders);
@@ -56,6 +58,7 @@ public class ChangeSetReaderImplTest {
"myresource\n" +
"C\n" +
"1\n" +
+ "false\n" +
"R 0 " + sha + " conf/myconf.conf";
ChangeSetReaderImpl reader = new ChangeSetReaderImpl(new StringReader(changeset));
@@ -68,6 +71,7 @@ public class ChangeSetReaderImplTest {
expectedHeaders.setBasedir("myresource");
expectedHeaders.setType(COVERAGE);
expectedHeaders.setVersion(1);
+ expectedHeaders.setRepeated(false);
assertHeadersEquals(actualHeaders, expectedHeaders);
@@ -89,6 +93,7 @@ public class ChangeSetReaderImplTest {
"myresource\n" +
"C\n" +
"1\n" +
+ "false\n" +
"C " + newSha + " " + oldSha + " conf/myconf.conf";
ChangeSetReaderImpl reader = new ChangeSetReaderImpl(new StringReader(changeset));
@@ -101,6 +106,7 @@ public class ChangeSetReaderImplTest {
expectedHeaders.setBasedir("myresource");
expectedHeaders.setType(COVERAGE);
expectedHeaders.setVersion(1);
+ expectedHeaders.setRepeated(false);
assertHeadersEquals(actualHeaders, expectedHeaders);
@@ -121,6 +127,7 @@ public class ChangeSetReaderImplTest {
"myresource\n" +
"C\n" +
"1\n" +
+ "false\n" +
"A " + sha + " 0 conf/file with spaces.conf";
ChangeSetReaderImpl reader = new ChangeSetReaderImpl(new StringReader(changeset));
@@ -133,6 +140,7 @@ public class ChangeSetReaderImplTest {
expectedHeaders.setBasedir("myresource");
expectedHeaders.setType(COVERAGE);
expectedHeaders.setVersion(1);
+ expectedHeaders.setRepeated(false);
assertHeadersEquals(actualHeaders, expectedHeaders);
@@ -162,6 +170,7 @@ public class ChangeSetReaderImplTest {
"myresource\n" +
"C\n" +
"1\n" +
+ "false\n" +
"A " + sha256("resource.conf") + " 0 conf/resource.conf\n" +
"A " + sha256("resource.jar") + " 0 lib/resource.jar";
@@ -185,6 +194,7 @@ public class ChangeSetReaderImplTest {
"myresource\n" +
"C\n" +
"1\n" +
+ "false\n" +
"A " + sha + " 0 conf/resource.conf\n";
ChangeSetReaderImpl reader = new ChangeSetReaderImpl(new StringReader(changeset));
@@ -209,7 +219,8 @@ public class ChangeSetReaderImplTest {
"empty-changeset-test\n" +
"myresouce\n" +
"C\n" +
- "1\n";
+ "1\n" +
+ "false\n";
ChangeSetReaderImpl reader = new ChangeSetReaderImpl(new StringReader(changeset));
int numEntries = 0;
@@ -228,7 +239,7 @@ public class ChangeSetReaderImplTest {
void assertFileEntryEquals(FileEntry actual, FileEntry expected) {
assertEquals(actual.getType(), expected.getType(), "The first column, the entry type, is wrong");
assertEquals(actual.getNewSHA(), expected.getNewSHA(), "The second column, the new SHA-256, is wrong");
- assertEquals(actual.getOldSHA(), expected.getOldSHA(), "The third column, the old SHA-256, is wrong");
+ assertEquals(actual.getOldSHA (), expected.getOldSHA(), "The third column, the old SHA-256, is wrong");
assertEquals(actual.getFile(), expected.getFile(), "The fourth column, the file name, is wrong");
}
diff --git a/modules/common/drift/src/test/java/org/rhq/common/drift/ChangeSetWriterImplTest.java b/modules/common/drift/src/test/java/org/rhq/common/drift/ChangeSetWriterImplTest.java
index 7942d68..d4378b0 100644
--- a/modules/common/drift/src/test/java/org/rhq/common/drift/ChangeSetWriterImplTest.java
+++ b/modules/common/drift/src/test/java/org/rhq/common/drift/ChangeSetWriterImplTest.java
@@ -19,6 +19,13 @@
package org.rhq.common.drift;
+import java.io.File;
+import java.io.FileInputStream;
+import java.util.List;
+
+import org.testng.annotations.BeforeClass;
+import org.testng.annotations.Test;
+
import static org.apache.commons.io.FileUtils.deleteDirectory;
import static org.apache.commons.io.IOUtils.readLines;
import static org.rhq.common.drift.FileEntry.addedFileEntry;
@@ -27,13 +34,6 @@ import static org.rhq.common.drift.FileEntry.removedFileEntry;
import static org.rhq.core.domain.drift.DriftChangeSetCategory.COVERAGE;
import static org.testng.Assert.assertEquals;
-import java.io.File;
-import java.io.FileInputStream;
-import java.util.List;
-
-import org.testng.annotations.BeforeClass;
-import org.testng.annotations.Test;
-
public class ChangeSetWriterImplTest {
File changeSetsDir;
@@ -68,6 +68,7 @@ public class ChangeSetWriterImplTest {
headers.setBasedir(resourceDir.getAbsolutePath());
headers.setType(COVERAGE);
headers.setVersion(1);
+ headers.setRepeated(false);
ChangeSetWriterImpl writer = new ChangeSetWriterImpl(changeSetFile, headers);
@@ -77,10 +78,10 @@ public class ChangeSetWriterImplTest {
File metaDataFile = writer.getChangeSetFile();
List<String> lines = readLines(new FileInputStream(metaDataFile));
- assertEquals(lines.size(), 7, "Expected to find seven lines in " + metaDataFile.getPath()
+ assertEquals(lines.size(), 8, "Expected to find eight lines in " + metaDataFile.getPath()
+ " - six for the header followed by one file entry.");
assertHeadersEquals(lines, headers);
- assertFileEntryEquals(lines.get(6), "A a34ef6 0 conf/myconf.conf");
+ assertFileEntryEquals(lines.get(7), "A a34ef6 0 conf/myconf.conf");
}
@Test
@@ -96,6 +97,7 @@ public class ChangeSetWriterImplTest {
headers.setBasedir(resourceDir.getAbsolutePath());
headers.setType(COVERAGE);
headers.setVersion(1);
+ headers.setRepeated(true);
ChangeSetWriterImpl writer = new ChangeSetWriterImpl(changeSetFile, headers);
@@ -105,10 +107,10 @@ public class ChangeSetWriterImplTest {
File metaDataFile = writer.getChangeSetFile();
List<String> lines = readLines(new FileInputStream(metaDataFile));
- assertEquals(lines.size(), 7, "Expected to find seven lines in " + metaDataFile.getPath()
+ assertEquals(lines.size(), 8, "Expected to find eight lines in " + metaDataFile.getPath()
+ " - six for the header followed by one file entry.");
assertHeadersEquals(lines, headers);
- assertFileEntryEquals(lines.get(6), "R 0 a34ef6 conf/myconf.conf");
+ assertFileEntryEquals(lines.get(7), "R 0 a34ef6 conf/myconf.conf");
}
@Test
@@ -124,6 +126,7 @@ public class ChangeSetWriterImplTest {
headers.setBasedir(resourceDir.getAbsolutePath());
headers.setType(COVERAGE);
headers.setVersion(1);
+ headers.setRepeated(true);
ChangeSetWriterImpl writer = new ChangeSetWriterImpl(changeSetFile, headers);
@@ -133,10 +136,10 @@ public class ChangeSetWriterImplTest {
File metaDataFile = writer.getChangeSetFile();
List<String> lines = readLines(new FileInputStream(metaDataFile));
- assertEquals(lines.size(), 7, "Expected to find seven lines in " + metaDataFile.getPath()
+ assertEquals(lines.size(), 8, "Expected to find eight lines in " + metaDataFile.getPath()
+ " - six for the header followed by one file entry.");
assertHeadersEquals(lines, headers);
- assertFileEntryEquals(lines.get(6), "C c2d55f a34ef6 conf/myconf.conf");
+ assertFileEntryEquals(lines.get(7), "C c2d55f a34ef6 conf/myconf.conf");
}
/**
@@ -159,6 +162,8 @@ public class ChangeSetWriterImplTest {
+ "category code");
assertEquals(Integer.parseInt(lines.get(5)), headers.getVersion(),
"The sixth header entry should be the change set version.");
+ assertEquals((boolean) Boolean.valueOf(lines.get(6)), headers.isRepeated(), "The seventh header entry " +
+ "should be a boolean flag indicating whether or not the change set is a repeat");
}
/**
diff --git a/modules/core/plugin-container/src/main/java/org/rhq/core/pc/drift/DriftManager.java b/modules/core/plugin-container/src/main/java/org/rhq/core/pc/drift/DriftManager.java
index 72f605c..58bdfc0 100644
--- a/modules/core/plugin-container/src/main/java/org/rhq/core/pc/drift/DriftManager.java
+++ b/modules/core/plugin-container/src/main/java/org/rhq/core/pc/drift/DriftManager.java
@@ -19,12 +19,6 @@
package org.rhq.core.pc.drift;
-import static org.rhq.common.drift.FileEntry.addedFileEntry;
-import static org.rhq.common.drift.FileEntry.changedFileEntry;
-import static org.rhq.common.drift.FileEntry.removedFileEntry;
-import static org.rhq.core.domain.drift.DriftChangeSetCategory.COVERAGE;
-import static org.rhq.core.util.file.FileUtil.purge;
-
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
@@ -67,7 +61,6 @@ import static org.rhq.common.drift.FileEntry.changedFileEntry;
import static org.rhq.common.drift.FileEntry.removedFileEntry;
import static org.rhq.core.domain.drift.DriftChangeSetCategory.COVERAGE;
import static org.rhq.core.util.file.FileUtil.copyFile;
-import static org.rhq.core.util.file.FileUtil.purge;
public class DriftManager extends AgentService implements DriftAgentService, DriftClient, ContainerService {
diff --git a/modules/core/plugin-container/src/test/java/org/rhq/core/pc/drift/DriftDetectorTest.java b/modules/core/plugin-container/src/test/java/org/rhq/core/pc/drift/DriftDetectorTest.java
index abe2b68..8af942d 100644
--- a/modules/core/plugin-container/src/test/java/org/rhq/core/pc/drift/DriftDetectorTest.java
+++ b/modules/core/plugin-container/src/test/java/org/rhq/core/pc/drift/DriftDetectorTest.java
@@ -33,7 +33,6 @@ import org.rhq.common.drift.ChangeSetReaderImpl;
import org.rhq.common.drift.ChangeSetWriter;
import org.rhq.common.drift.FileEntry;
import org.rhq.common.drift.Headers;
-import org.rhq.core.domain.drift.DriftChangeSetCategory;
import org.rhq.core.domain.drift.DriftDefinition;
import org.rhq.core.system.OperatingSystemType;
import org.rhq.core.system.SystemInfoFactory;
@@ -771,20 +770,4 @@ public class DriftDetectorTest extends DriftTest {
assertCollectionMatchesNoOrder(msg, expected, actual);
}
- Headers createHeaders(DriftDefinition driftDef, DriftChangeSetCategory type) {
- return createHeaders(driftDef, type, 0);
- }
-
- Headers createHeaders(DriftDefinition driftDef, DriftChangeSetCategory type, int version) {
- Headers headers = new Headers();
- headers.setResourceId(resourceId());
- headers.setDriftDefinitionId(driftDef.getId());
- headers.setDriftDefinitionName(driftDef.getName());
- headers.setBasedir(resourceDir.getAbsolutePath());
- headers.setType(type);
- headers.setVersion(version);
-
- return headers;
- }
-
}
diff --git a/modules/core/plugin-container/src/test/java/org/rhq/core/pc/drift/DriftTest.java b/modules/core/plugin-container/src/test/java/org/rhq/core/pc/drift/DriftTest.java
index 7069503..14e3eab 100644
--- a/modules/core/plugin-container/src/test/java/org/rhq/core/pc/drift/DriftTest.java
+++ b/modules/core/plugin-container/src/test/java/org/rhq/core/pc/drift/DriftTest.java
@@ -19,13 +19,6 @@
package org.rhq.core.pc.drift;
-import static java.util.Arrays.asList;
-import static org.apache.commons.io.FileUtils.deleteDirectory;
-import static org.apache.commons.io.IOUtils.write;
-import static org.apache.commons.io.IOUtils.writeLines;
-import static org.rhq.core.domain.drift.DriftChangeSetCategory.COVERAGE;
-import static org.rhq.core.domain.drift.DriftConfigurationDefinition.BaseDirValueContext.fileSystem;
-
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileOutputStream;
@@ -36,11 +29,19 @@ import java.util.Random;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.BeforeMethod;
+import org.rhq.common.drift.Headers;
import org.rhq.core.domain.configuration.Configuration;
import org.rhq.core.domain.drift.DriftChangeSetCategory;
import org.rhq.core.domain.drift.DriftDefinition;
import org.rhq.core.util.MessageDigestGenerator;
+import static java.util.Arrays.asList;
+import static org.apache.commons.io.FileUtils.deleteDirectory;
+import static org.apache.commons.io.IOUtils.write;
+import static org.apache.commons.io.IOUtils.writeLines;
+import static org.rhq.core.domain.drift.DriftChangeSetCategory.COVERAGE;
+import static org.rhq.core.domain.drift.DriftConfigurationDefinition.BaseDirValueContext.fileSystem;
+
/**
* A base test class that provides a framework for drift related tests. DriftTest sets up
* directories for change sets and for fake resources. Before each test method is run, a
@@ -261,4 +262,19 @@ public class DriftTest {
return config;
}
+ protected Headers createHeaders(DriftDefinition driftDef, DriftChangeSetCategory type) {
+ return createHeaders(driftDef, type, 0);
+ }
+
+ protected Headers createHeaders(DriftDefinition driftDef, DriftChangeSetCategory type, int version) {
+ Headers headers = new Headers();
+ headers.setResourceId(resourceId());
+ headers.setDriftDefinitionId(driftDef.getId());
+ headers.setDriftDefinitionName(driftDef.getName());
+ headers.setBasedir(resourceDir.getAbsolutePath());
+ headers.setType(type);
+ headers.setVersion(version);
+
+ return headers;
+ }
}
diff --git a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/drift/DriftManagerBean.java b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/drift/DriftManagerBean.java
index d2f9c14..b184aa3 100644
--- a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/drift/DriftManagerBean.java
+++ b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/drift/DriftManagerBean.java
@@ -18,10 +18,6 @@
*/
package org.rhq.enterprise.server.drift;
-import static java.util.Arrays.asList;
-import static javax.ejb.TransactionAttributeType.NOT_SUPPORTED;
-import static javax.ejb.TransactionAttributeType.REQUIRES_NEW;
-
import java.io.File;
import java.io.InputStream;
import java.util.HashSet;
@@ -41,9 +37,6 @@ import javax.jms.Session;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
-import difflib.DiffUtils;
-import difflib.Patch;
-
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
@@ -61,14 +54,14 @@ import org.rhq.core.domain.drift.Drift;
import org.rhq.core.domain.drift.DriftChangeSet;
import org.rhq.core.domain.drift.DriftComposite;
import org.rhq.core.domain.drift.DriftConfigurationDefinition;
+import org.rhq.core.domain.drift.DriftConfigurationDefinition.DriftHandlingMode;
import org.rhq.core.domain.drift.DriftDefinition;
import org.rhq.core.domain.drift.DriftDefinitionComparator;
+import org.rhq.core.domain.drift.DriftDefinitionComparator.CompareMode;
import org.rhq.core.domain.drift.DriftDetails;
import org.rhq.core.domain.drift.DriftFile;
import org.rhq.core.domain.drift.DriftSnapshot;
import org.rhq.core.domain.drift.FileDiffReport;
-import org.rhq.core.domain.drift.DriftConfigurationDefinition.DriftHandlingMode;
-import org.rhq.core.domain.drift.DriftDefinitionComparator.CompareMode;
import org.rhq.core.domain.resource.Resource;
import org.rhq.core.domain.util.PageList;
import org.rhq.enterprise.server.RHQConstants;
@@ -86,6 +79,13 @@ import org.rhq.enterprise.server.util.CriteriaQueryGenerator;
import org.rhq.enterprise.server.util.CriteriaQueryRunner;
import org.rhq.enterprise.server.util.LookupUtil;
+import difflib.DiffUtils;
+import difflib.Patch;
+
+import static java.util.Arrays.asList;
+import static javax.ejb.TransactionAttributeType.NOT_SUPPORTED;
+import static javax.ejb.TransactionAttributeType.REQUIRES_NEW;
+
/**
* The SLSB supporting Drift management to clients.
*
@@ -417,8 +417,6 @@ public class DriftManagerBean implements DriftManagerLocal, DriftManagerRemote {
@Override
public void pinSnapshot(Subject subject, String changeSetId) {
- DriftServerPluginFacet driftServerPlugin = getServerPlugin();
-
GenericDriftChangeSetCriteria criteria = new GenericDriftChangeSetCriteria();
criteria.addFilterId(changeSetId);
PageList<? extends DriftChangeSet<?>> changeSets = findDriftChangeSetsByCriteria(subject, criteria);
commit 2831f93dc65ffa48626f130d2bb9cabb8156636f
Merge: 1ea2ef9 702edd7
Author: John Sanda <jsanda(a)redhat.com>
Date: Mon Oct 3 08:00:00 2011 -0400
Merge branch 'master' into pinned-snapshot
diff --cc modules/enterprise/server/jar/src/test/java/org/rhq/enterprise/server/drift/DriftManagerBeanTest.java
index 612967c,a767c35..0daad89
--- a/modules/enterprise/server/jar/src/test/java/org/rhq/enterprise/server/drift/DriftManagerBeanTest.java
+++ b/modules/enterprise/server/jar/src/test/java/org/rhq/enterprise/server/drift/DriftManagerBeanTest.java
@@@ -450,11 -449,7 +450,11 @@@ public class DriftManagerBeanTest exten
}
@Override
- public void ackChangeSetContent(int resourceId, String driftConfigName, String token) {
+ public void ackChangeSetContent(int resourceId, String driftDefName, String token) {
}
+
+ @Override
+ public void pinSnapshot(int resourceId, String configName, DriftSnapshot snapshot) {
+ }
}
}
diff --cc modules/enterprise/server/jar/src/test/java/org/rhq/enterprise/server/test/TestAgentClient.java
index c1a9db6,9b6400a..b66b4cd
--- a/modules/enterprise/server/jar/src/test/java/org/rhq/enterprise/server/test/TestAgentClient.java
+++ b/modules/enterprise/server/jar/src/test/java/org/rhq/enterprise/server/test/TestAgentClient.java
@@@ -357,10 -356,6 +357,10 @@@ public class TestAgentClient implement
}
@Override
- public void ackChangeSetContent(int resourceId, String driftConfigName, String token) {
+ public void ackChangeSetContent(int resourceId, String driftDefName, String token) {
}
+
+ @Override
+ public void pinSnapshot(int resourceId, String configName, DriftSnapshot snapshot) {
+ }
}
commit 702edd731c109c7a001f1af3867793731e265f9b
Author: John Sanda <jsanda(a)redhat.com>
Date: Sun Oct 2 22:06:08 2011 -0400
Adding support for filtering on creation time and path for drift criteria queries
diff --git a/modules/enterprise/server/plugins/drift-mongodb/src/main/java/org/rhq/enterprise/server/plugins/drift/mongodb/dao/ChangeSetDAO.java b/modules/enterprise/server/plugins/drift-mongodb/src/main/java/org/rhq/enterprise/server/plugins/drift/mongodb/dao/ChangeSetDAO.java
index 384128e..85ab7cb 100644
--- a/modules/enterprise/server/plugins/drift-mongodb/src/main/java/org/rhq/enterprise/server/plugins/drift/mongodb/dao/ChangeSetDAO.java
+++ b/modules/enterprise/server/plugins/drift-mongodb/src/main/java/org/rhq/enterprise/server/plugins/drift/mongodb/dao/ChangeSetDAO.java
@@ -21,8 +21,6 @@ package org.rhq.enterprise.server.plugins.drift.mongodb.dao;
import java.util.ArrayList;
import java.util.List;
-import java.util.Set;
-import java.util.TreeSet;
import com.google.code.morphia.Morphia;
import com.google.code.morphia.dao.BasicDAO;
@@ -34,7 +32,6 @@ import com.mongodb.Mongo;
import org.bson.types.ObjectId;
import org.rhq.core.domain.criteria.DriftCriteria;
-import org.rhq.core.domain.drift.DriftCategory;
import org.rhq.enterprise.server.plugins.drift.mongodb.entities.MongoDBChangeSet;
import org.rhq.enterprise.server.plugins.drift.mongodb.entities.MongoDBChangeSetEntry;
@@ -113,12 +110,29 @@ public class ChangeSetDAO extends BasicDAO<MongoDBChangeSet, ObjectId> {
}
if (criteria.getFilterCategories().length > 0) {
- List<DriftCategory> list = asList(criteria.getFilterCategories());
- query.field("files.category").in(list);
+ query.field("files.category").in(asList(criteria.getFilterCategories()));
entriesFiltered = true;
filters.add(new CategoryFilter(criteria.getFilterCategories()));
}
+ if (criteria.getFilterEndTime() != null) {
+ query.field("files.ctime").lessThanOrEq(criteria.getFilterEndTime());
+ entriesFiltered = true;
+ filters.add(new CreatedBeforeFilter(criteria.getFilterEndTime()));
+ }
+
+ if (criteria.getFilterStartTime() != null) {
+ query.field("files.ctime").greaterThanOrEq(criteria.getFilterStartTime());
+ entriesFiltered = true;
+ filters.add(new CreatedAfterFilter(criteria.getFilterStartTime()));
+ }
+
+ if (criteria.getFilterPath() != null && !criteria.getFilterPath().isEmpty()) {
+ query.field("files.path").equal(criteria.getFilterPath());
+ entriesFiltered = true;
+ filters.add(new PathFilter(criteria.getFilterPath()));
+ }
+
List<MongoDBChangeSetEntry> entries = new ArrayList<MongoDBChangeSetEntry>();
if (changeSetsFiltered && !entriesFiltered) {
diff --git a/modules/enterprise/server/plugins/drift-mongodb/src/main/java/org/rhq/enterprise/server/plugins/drift/mongodb/dao/CreatedAfterFilter.java b/modules/enterprise/server/plugins/drift-mongodb/src/main/java/org/rhq/enterprise/server/plugins/drift/mongodb/dao/CreatedAfterFilter.java
new file mode 100644
index 0000000..eeb40a3
--- /dev/null
+++ b/modules/enterprise/server/plugins/drift-mongodb/src/main/java/org/rhq/enterprise/server/plugins/drift/mongodb/dao/CreatedAfterFilter.java
@@ -0,0 +1,37 @@
+/*
+ * RHQ Management Platform
+ * Copyright (C) 2011 Red Hat, Inc.
+ * All rights reserved.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation version 2 of the License.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+package org.rhq.enterprise.server.plugins.drift.mongodb.dao;
+
+import org.rhq.enterprise.server.plugins.drift.mongodb.entities.MongoDBChangeSetEntry;
+
+class CreatedAfterFilter implements ChangeSetEntryFilter {
+
+ private long ctime;
+
+ public CreatedAfterFilter(long ctime) {
+ this.ctime = ctime;
+ }
+
+ @Override
+ public boolean matches(MongoDBChangeSetEntry entry) {
+ return entry.getCtime() >= ctime;
+ }
+
+}
diff --git a/modules/enterprise/server/plugins/drift-mongodb/src/main/java/org/rhq/enterprise/server/plugins/drift/mongodb/dao/CreatedBeforeFilter.java b/modules/enterprise/server/plugins/drift-mongodb/src/main/java/org/rhq/enterprise/server/plugins/drift/mongodb/dao/CreatedBeforeFilter.java
new file mode 100644
index 0000000..9dc72cf
--- /dev/null
+++ b/modules/enterprise/server/plugins/drift-mongodb/src/main/java/org/rhq/enterprise/server/plugins/drift/mongodb/dao/CreatedBeforeFilter.java
@@ -0,0 +1,36 @@
+/*
+ * RHQ Management Platform
+ * Copyright (C) 2011 Red Hat, Inc.
+ * All rights reserved.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation version 2 of the License.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+package org.rhq.enterprise.server.plugins.drift.mongodb.dao;
+
+import org.rhq.enterprise.server.plugins.drift.mongodb.entities.MongoDBChangeSetEntry;
+
+class CreatedBeforeFilter implements ChangeSetEntryFilter {
+
+ private long ctime;
+
+ public CreatedBeforeFilter(long ctime) {
+ this.ctime = ctime;
+ }
+
+ @Override
+ public boolean matches(MongoDBChangeSetEntry entry) {
+ return entry.getCtime() <= ctime;
+ }
+}
diff --git a/modules/enterprise/server/plugins/drift-mongodb/src/main/java/org/rhq/enterprise/server/plugins/drift/mongodb/dao/PathFilter.java b/modules/enterprise/server/plugins/drift-mongodb/src/main/java/org/rhq/enterprise/server/plugins/drift/mongodb/dao/PathFilter.java
new file mode 100644
index 0000000..076101f
--- /dev/null
+++ b/modules/enterprise/server/plugins/drift-mongodb/src/main/java/org/rhq/enterprise/server/plugins/drift/mongodb/dao/PathFilter.java
@@ -0,0 +1,37 @@
+/*
+ * RHQ Management Platform
+ * Copyright (C) 2011 Red Hat, Inc.
+ * All rights reserved.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation version 2 of the License.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+package org.rhq.enterprise.server.plugins.drift.mongodb.dao;
+
+import org.rhq.enterprise.server.plugins.drift.mongodb.entities.MongoDBChangeSetEntry;
+
+class PathFilter implements ChangeSetEntryFilter {
+
+ private String path;
+
+ public PathFilter(String path) {
+ this.path = path;
+ }
+
+ @Override
+ public boolean matches(MongoDBChangeSetEntry entry) {
+ return entry.getPath().equals(path);
+ }
+
+}
diff --git a/modules/enterprise/server/plugins/drift-mongodb/src/test/java/org/rhq/enterprise/server/plugins/drift/mongodb/dao/ChangeSetDAOTest.java b/modules/enterprise/server/plugins/drift-mongodb/src/test/java/org/rhq/enterprise/server/plugins/drift/mongodb/dao/ChangeSetDAOTest.java
index b89f40c..4118e57 100644
--- a/modules/enterprise/server/plugins/drift-mongodb/src/test/java/org/rhq/enterprise/server/plugins/drift/mongodb/dao/ChangeSetDAOTest.java
+++ b/modules/enterprise/server/plugins/drift-mongodb/src/test/java/org/rhq/enterprise/server/plugins/drift/mongodb/dao/ChangeSetDAOTest.java
@@ -352,79 +352,86 @@ public class ChangeSetDAOTest {
asList(e1, e2, e4), entries);
}
-// @Test(enabled = ENABLED)
-// public void findEntriesWithResourceIdAndStartTimeFilters() throws Exception {
-// MongoDBChangeSet c1 = createChangeSet(COVERAGE, 1, 1, 1);
-// MongoDBChangeSetEntry e1 = new MongoDBChangeSetEntry("c1-1.txt", FILE_ADDED);
-// c1.add(e1);
-// dao.save(c1);
-//
-// long startTime = System.currentTimeMillis();
-// Thread.sleep(10);
-//
-// MongoDBChangeSet c2 = createChangeSet(DRIFT, 2, 2, 1);
-// MongoDBChangeSetEntry e2 = new MongoDBChangeSetEntry("c1-1.txt", FILE_CHANGED);
-// c2.add(e2);
-// dao.save(c2);
-//
-// GenericDriftCriteria criteria = new GenericDriftCriteria();
-// criteria.addFilterResourceIds(resourceId);
-// }
-
@Test(enabled = ENABLED)
- public void findByDriftCriteriaWithEndTimeFilter() throws Exception {
- int resourceId = 1;
-
- MongoDBChangeSet c1 = createChangeSet(COVERAGE, 1, resourceId, 1);
+ public void findEntriesWithResourceIdAndStartTimeFilter() throws Exception {
+ MongoDBChangeSet c1 = createChangeSet(COVERAGE, 1, 1, 1);
MongoDBChangeSetEntry e1 = new MongoDBChangeSetEntry("c1-1.txt", FILE_ADDED);
c1.add(e1);
-
dao.save(c1);
- long endTime = System.currentTimeMillis();
+ long startTime = System.currentTimeMillis();
Thread.sleep(10);
- MongoDBChangeSet c2 = createChangeSet(DRIFT, 2, resourceId, 1);
- MongoDBChangeSetEntry e2 = new MongoDBChangeSetEntry("c1-1.txt", FILE_CHANGED);
- c2.add(e2);
-
+ MongoDBChangeSet c2 = createChangeSet(COVERAGE, 1, 2, 1);
+ c2.add(new MongoDBChangeSetEntry("c2-1.txt", FILE_ADDED));
dao.save(c2);
+ MongoDBChangeSet c3 = createChangeSet(DRIFT, 2, 1, 1);
+ MongoDBChangeSetEntry e3 = new MongoDBChangeSetEntry("c1-1.txt", FILE_CHANGED);
+ c3.add(e3);
+ dao.save(c3);
+
GenericDriftCriteria criteria = new GenericDriftCriteria();
- criteria.addFilterEndTime(endTime);
- criteria.addFilterResourceIds(resourceId);
+ criteria.addFilterStartTime(startTime);
+ criteria.addFilterResourceIds(1);
- List<MongoDBChangeSet> actual = dao.findByDriftCriteria(criteria);
+ List<MongoDBChangeSetEntry> entries = dao.findEntries(criteria);
+ assertEntriesMatch("Failed to find change set entries with resource id and start time filters", asList(e3),
+ entries);
+ }
- assertEquals(actual.size(), 1, "Expected to get back one change set");
- MongoDBChangeSet actualChangeSet = actual.get(0);
+ @Test(enabled = ENABLED)
+ public void findEntriesWithResourceIdAndEndTimeFilter() throws Exception {
+ MongoDBChangeSet c1 = createChangeSet(COVERAGE, 1, 1, 1);
+ MongoDBChangeSetEntry e1 = new MongoDBChangeSetEntry("c1-1.txt", FILE_ADDED);
+ c1.add(e1);
+ dao.save(c1);
+
+ MongoDBChangeSet c2 = createChangeSet(COVERAGE, 1, 2, 1);
+ c2.add(new MongoDBChangeSetEntry("c2-1.txt", FILE_ADDED));
+ dao.save(c2);
+
+ long endTime = System.currentTimeMillis();
+ Thread.sleep(10);
+
+ MongoDBChangeSet c3 = createChangeSet(DRIFT, 2, 1, 1);
+ MongoDBChangeSetEntry e3 = new MongoDBChangeSetEntry("c1-1.txt", FILE_CHANGED);
+ c3.add(e3);
+ dao.save(c3);
+
+ GenericDriftCriteria criteria = new GenericDriftCriteria();
+ criteria.addFilterEndTime(endTime);
+ criteria.addFilterResourceIds(1);
- assertChangeSetMatches("Failed to find drift entries with end time filter", c1, actualChangeSet);
+ List<MongoDBChangeSetEntry> entries = dao.findEntries(criteria);
+ assertEntriesMatch("Failed to find change set entries with resource id and end time filters", asList(e1),
+ entries);
}
@Test(enabled = ENABLED)
- public void findByDriftCriteriaWithPathFilter() throws Exception {
+ public void findEntriesWithPathFilter() throws Exception {
MongoDBChangeSet c1 = createChangeSet(COVERAGE, 1, 1, 1);
- c1.add(new MongoDBChangeSetEntry("c1-1.txt", FILE_ADDED));
-
+ MongoDBChangeSetEntry e1 = new MongoDBChangeSetEntry("c1-1.txt", FILE_ADDED);
+ c1.add(e1);
dao.save(c1);
MongoDBChangeSet c2 = createChangeSet(DRIFT, 2, 1, 1);
- c2.add(new MongoDBChangeSetEntry("c1-1.txt", FILE_CHANGED));
-
+ MongoDBChangeSetEntry e2 = new MongoDBChangeSetEntry("c1-1.txt", FILE_CHANGED);
+ MongoDBChangeSetEntry e3 = new MongoDBChangeSetEntry("c2-1.txt", FILE_ADDED);
+ c2.add(e2).add(e3);
dao.save(c2);
- MongoDBChangeSet c3 = createChangeSet(DRIFT, 3, 1, 1);
- c3.add(new MongoDBChangeSetEntry("c2-1.txt", FILE_ADDED));
-
+ MongoDBChangeSet c3 = createChangeSet(COVERAGE, 1, 2, 1);
+ MongoDBChangeSetEntry e4 = new MongoDBChangeSetEntry("c2-1.txt", FILE_ADDED);
+ MongoDBChangeSetEntry e5 = new MongoDBChangeSetEntry("c3-1.txt", FILE_ADDED);
+ c3.add(e4).add(e5);
dao.save(c3);
GenericDriftCriteria criteria = new GenericDriftCriteria();
- criteria.addFilterPath("c1-1.txt");
+ criteria.addFilterPath("c2-1.txt");
- List<MongoDBChangeSet> actual = dao.findByDriftCriteria(criteria);
-
- assertChangeSetsMatch("Failed to find change sets with drift path filter", asList(c1, c2), actual);
+ List<MongoDBChangeSetEntry> entries = dao.findEntries(criteria);
+ assertEntriesMatch("Failed to find change set entries with path filter", asList(e3, e4), entries);
}
@Test(enabled = ENABLED)
commit 0d438503bdd2ac59ea27647b1b11b4cce81dddf7
Author: John Sanda <jsanda(a)redhat.com>
Date: Sat Oct 1 18:11:17 2011 -0400
Adding better support for filtering change set entries in memory
When querying for drift entries by criteria and when the criteria
specifies filters that include at least one of the drift entry fields,
we have to filter the result set again once it is returned from the
database. This is due to the schema design I have chosen. In the MongoDB
design for drift, a change set along with its entries are stored as a
single document in the db. If you query for change set drift entries,
the datbase (by default) returns the entire document which may include
drift entries that should be exlucded from the result; thus, we need to
filter again after the results are returned from the db.
diff --git a/modules/enterprise/server/plugins/drift-mongodb/src/main/java/org/rhq/enterprise/server/plugins/drift/mongodb/dao/CategoryFilter.java b/modules/enterprise/server/plugins/drift-mongodb/src/main/java/org/rhq/enterprise/server/plugins/drift/mongodb/dao/CategoryFilter.java
new file mode 100644
index 0000000..ea2b462
--- /dev/null
+++ b/modules/enterprise/server/plugins/drift-mongodb/src/main/java/org/rhq/enterprise/server/plugins/drift/mongodb/dao/CategoryFilter.java
@@ -0,0 +1,42 @@
+/*
+ * RHQ Management Platform
+ * Copyright (C) 2011 Red Hat, Inc.
+ * All rights reserved.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation version 2 of the License.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+package org.rhq.enterprise.server.plugins.drift.mongodb.dao;
+
+import org.rhq.core.domain.drift.DriftCategory;
+import org.rhq.enterprise.server.plugins.drift.mongodb.entities.MongoDBChangeSetEntry;
+
+class CategoryFilter implements ChangeSetEntryFilter {
+
+ private DriftCategory[] categories;
+
+ public CategoryFilter(DriftCategory[] categories) {
+ this.categories = categories;
+ }
+
+ @Override
+ public boolean matches(MongoDBChangeSetEntry entry) {
+ for (DriftCategory category : categories) {
+ if (entry.getCategory() == category) {
+ return true;
+ }
+ }
+ return false;
+ }
+}
diff --git a/modules/enterprise/server/plugins/drift-mongodb/src/main/java/org/rhq/enterprise/server/plugins/drift/mongodb/dao/ChangeSetDAO.java b/modules/enterprise/server/plugins/drift-mongodb/src/main/java/org/rhq/enterprise/server/plugins/drift/mongodb/dao/ChangeSetDAO.java
index 1a0815d..384128e 100644
--- a/modules/enterprise/server/plugins/drift-mongodb/src/main/java/org/rhq/enterprise/server/plugins/drift/mongodb/dao/ChangeSetDAO.java
+++ b/modules/enterprise/server/plugins/drift-mongodb/src/main/java/org/rhq/enterprise/server/plugins/drift/mongodb/dao/ChangeSetDAO.java
@@ -104,23 +104,19 @@ public class ChangeSetDAO extends BasicDAO<MongoDBChangeSet, ObjectId> {
Query<MongoDBChangeSet> query = createQuery();
boolean changeSetsFiltered = false;
boolean entriesFiltered = false;
- boolean filterOnResourceId = false;
- boolean filterOnCategory = false;
- Set<DriftCategory> categories = new TreeSet<DriftCategory>();
+ ChangeSetEntryFilters filters = new ChangeSetEntryFilters();
if (criteria.getFilterResourceIds().length > 0) {
query.field("resourceId").in(asList(criteria.getFilterResourceIds()));
changeSetsFiltered = true;
- filterOnResourceId = true;
}
if (criteria.getFilterCategories().length > 0) {
List<DriftCategory> list = asList(criteria.getFilterCategories());
query.field("files.category").in(list);
entriesFiltered = true;
- filterOnCategory = true;
- categories = new TreeSet<DriftCategory>(list);
+ filters.add(new CategoryFilter(criteria.getFilterCategories()));
}
List<MongoDBChangeSetEntry> entries = new ArrayList<MongoDBChangeSetEntry>();
@@ -134,7 +130,7 @@ public class ChangeSetDAO extends BasicDAO<MongoDBChangeSet, ObjectId> {
} else {
for (MongoDBChangeSet c : query.asList()) {
for (MongoDBChangeSetEntry e : c.getDrifts()) {
- if (filterOnCategory && categories.contains(e.getCategory())) {
+ if (filters.matchesAll(e)) {
entries.add(e);
}
}
diff --git a/modules/enterprise/server/plugins/drift-mongodb/src/main/java/org/rhq/enterprise/server/plugins/drift/mongodb/dao/ChangeSetEntryFilter.java b/modules/enterprise/server/plugins/drift-mongodb/src/main/java/org/rhq/enterprise/server/plugins/drift/mongodb/dao/ChangeSetEntryFilter.java
new file mode 100644
index 0000000..edd4b1d
--- /dev/null
+++ b/modules/enterprise/server/plugins/drift-mongodb/src/main/java/org/rhq/enterprise/server/plugins/drift/mongodb/dao/ChangeSetEntryFilter.java
@@ -0,0 +1,28 @@
+/*
+ * RHQ Management Platform
+ * Copyright (C) 2011 Red Hat, Inc.
+ * All rights reserved.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation version 2 of the License.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+package org.rhq.enterprise.server.plugins.drift.mongodb.dao;
+
+import org.rhq.enterprise.server.plugins.drift.mongodb.entities.MongoDBChangeSetEntry;
+
+public interface ChangeSetEntryFilter {
+
+ boolean matches(MongoDBChangeSetEntry entry);
+
+}
diff --git a/modules/enterprise/server/plugins/drift-mongodb/src/main/java/org/rhq/enterprise/server/plugins/drift/mongodb/dao/ChangeSetEntryFilters.java b/modules/enterprise/server/plugins/drift-mongodb/src/main/java/org/rhq/enterprise/server/plugins/drift/mongodb/dao/ChangeSetEntryFilters.java
new file mode 100644
index 0000000..c1d9686
--- /dev/null
+++ b/modules/enterprise/server/plugins/drift-mongodb/src/main/java/org/rhq/enterprise/server/plugins/drift/mongodb/dao/ChangeSetEntryFilters.java
@@ -0,0 +1,45 @@
+/*
+ * RHQ Management Platform
+ * Copyright (C) 2011 Red Hat, Inc.
+ * All rights reserved.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation version 2 of the License.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+package org.rhq.enterprise.server.plugins.drift.mongodb.dao;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.rhq.enterprise.server.plugins.drift.mongodb.entities.MongoDBChangeSetEntry;
+
+class ChangeSetEntryFilters {
+
+ private List<ChangeSetEntryFilter> filters = new ArrayList<ChangeSetEntryFilter>();
+
+ public ChangeSetEntryFilters add(ChangeSetEntryFilter filter) {
+ filters.add(filter);
+ return this;
+ }
+
+ public boolean matchesAll(MongoDBChangeSetEntry entry) {
+ for (ChangeSetEntryFilter filter : filters) {
+ if (!filter.matches(entry)) {
+ return false;
+ }
+ }
+ return true;
+ }
+
+}
commit 592e8bb7557070f32151bcba9e72539d74ff78ac
Author: John Sanda <jsanda(a)redhat.com>
Date: Sat Oct 1 11:47:46 2011 -0400
Adding initial suport for filtering on change set and entry fiels in drift criteria queries
diff --git a/modules/enterprise/server/plugins/drift-mongodb/src/main/java/org/rhq/enterprise/server/plugins/drift/mongodb/dao/ChangeSetDAO.java b/modules/enterprise/server/plugins/drift-mongodb/src/main/java/org/rhq/enterprise/server/plugins/drift/mongodb/dao/ChangeSetDAO.java
index 6c9b5bc..1a0815d 100644
--- a/modules/enterprise/server/plugins/drift-mongodb/src/main/java/org/rhq/enterprise/server/plugins/drift/mongodb/dao/ChangeSetDAO.java
+++ b/modules/enterprise/server/plugins/drift-mongodb/src/main/java/org/rhq/enterprise/server/plugins/drift/mongodb/dao/ChangeSetDAO.java
@@ -105,6 +105,7 @@ public class ChangeSetDAO extends BasicDAO<MongoDBChangeSet, ObjectId> {
boolean changeSetsFiltered = false;
boolean entriesFiltered = false;
boolean filterOnResourceId = false;
+ boolean filterOnCategory = false;
Set<DriftCategory> categories = new TreeSet<DriftCategory>();
@@ -115,22 +116,25 @@ public class ChangeSetDAO extends BasicDAO<MongoDBChangeSet, ObjectId> {
}
if (criteria.getFilterCategories().length > 0) {
- query.field("files.category").in(asList(criteria.getFilterCategories()));
- categories.addAll(asList(criteria.getFilterCategories()));
+ List<DriftCategory> list = asList(criteria.getFilterCategories());
+ query.field("files.category").in(list);
+ entriesFiltered = true;
+ filterOnCategory = true;
+ categories = new TreeSet<DriftCategory>(list);
}
List<MongoDBChangeSetEntry> entries = new ArrayList<MongoDBChangeSetEntry>();
- // If the query only filters on change set fields, we do not need to do any
- // additional filtering since it was already done by the database.
if (changeSetsFiltered && !entriesFiltered) {
+ // If the query only filters on change set fields, we do not need to do any
+ // additional filtering since it was already done by the database.
for (MongoDBChangeSet c : query.asList()) {
entries.addAll(c.getDrifts());
}
} else {
for (MongoDBChangeSet c : query.asList()) {
for (MongoDBChangeSetEntry e : c.getDrifts()) {
- if (categories.contains(e.getCategory())) {
+ if (filterOnCategory && categories.contains(e.getCategory())) {
entries.add(e);
}
}
diff --git a/modules/enterprise/server/plugins/drift-mongodb/src/test/java/org/rhq/enterprise/server/plugins/drift/mongodb/dao/ChangeSetDAOTest.java b/modules/enterprise/server/plugins/drift-mongodb/src/test/java/org/rhq/enterprise/server/plugins/drift/mongodb/dao/ChangeSetDAOTest.java
index 6f13944..b89f40c 100644
--- a/modules/enterprise/server/plugins/drift-mongodb/src/test/java/org/rhq/enterprise/server/plugins/drift/mongodb/dao/ChangeSetDAOTest.java
+++ b/modules/enterprise/server/plugins/drift-mongodb/src/test/java/org/rhq/enterprise/server/plugins/drift/mongodb/dao/ChangeSetDAOTest.java
@@ -324,6 +324,34 @@ public class ChangeSetDAOTest {
assertEntriesMatch("Failed to find change set entries with resource id filter", asList(e1), entries);
}
+ @Test(enabled = ENABLED)
+ public void findEntriesWithResourceIdAndCategoryFilters() {
+ MongoDBChangeSet c1 = createChangeSet(COVERAGE, 1, 1, 1);
+ MongoDBChangeSetEntry e1 = new MongoDBChangeSetEntry("c1-1.txt", FILE_ADDED);
+ MongoDBChangeSetEntry e2 = new MongoDBChangeSetEntry("c1-2.txt", FILE_ADDED);
+ c1.add(e1).add(e2);
+ dao.save(c1);
+
+ MongoDBChangeSet c2 = createChangeSet(COVERAGE, 1, 2, 1);
+ MongoDBChangeSetEntry e3 = new MongoDBChangeSetEntry("c2-1.txt", FILE_ADDED);
+ c2.add(e3);
+ dao.save(c2);
+
+ MongoDBChangeSet c3 = createChangeSet(DRIFT, 2, 1, 1);
+ MongoDBChangeSetEntry e4 = new MongoDBChangeSetEntry("c1-1.txt", FILE_CHANGED);
+ MongoDBChangeSetEntry e5 = new MongoDBChangeSetEntry("c1-2.txt", FILE_REMOVED);
+ c3.add(e4).add(e5);
+ dao.save(c3);
+
+ GenericDriftCriteria criteria = new GenericDriftCriteria();
+ criteria.addFilterResourceIds(1);
+ criteria.addFilterCategories(FILE_ADDED, FILE_CHANGED);
+
+ List<MongoDBChangeSetEntry> entries = dao.findEntries(criteria);
+ assertEntriesMatch("Failed to find change set entries with resource id and category filters",
+ asList(e1, e2, e4), entries);
+ }
+
// @Test(enabled = ENABLED)
// public void findEntriesWithResourceIdAndStartTimeFilters() throws Exception {
// MongoDBChangeSet c1 = createChangeSet(COVERAGE, 1, 1, 1);
commit dc0367d15cff8262608899b6b95f2e365bd86c9a
Author: John Sanda <jsanda(a)redhat.com>
Date: Sat Oct 1 11:13:57 2011 -0400
Adding more filterin support for drift criteria queries
diff --git a/modules/enterprise/server/plugins/drift-mongodb/src/main/java/org/rhq/enterprise/server/plugins/drift/mongodb/dao/ChangeSetDAO.java b/modules/enterprise/server/plugins/drift-mongodb/src/main/java/org/rhq/enterprise/server/plugins/drift/mongodb/dao/ChangeSetDAO.java
index 57de79f..6c9b5bc 100644
--- a/modules/enterprise/server/plugins/drift-mongodb/src/main/java/org/rhq/enterprise/server/plugins/drift/mongodb/dao/ChangeSetDAO.java
+++ b/modules/enterprise/server/plugins/drift-mongodb/src/main/java/org/rhq/enterprise/server/plugins/drift/mongodb/dao/ChangeSetDAO.java
@@ -19,7 +19,10 @@
package org.rhq.enterprise.server.plugins.drift.mongodb.dao;
+import java.util.ArrayList;
import java.util.List;
+import java.util.Set;
+import java.util.TreeSet;
import com.google.code.morphia.Morphia;
import com.google.code.morphia.dao.BasicDAO;
@@ -31,6 +34,7 @@ import com.mongodb.Mongo;
import org.bson.types.ObjectId;
import org.rhq.core.domain.criteria.DriftCriteria;
+import org.rhq.core.domain.drift.DriftCategory;
import org.rhq.enterprise.server.plugins.drift.mongodb.entities.MongoDBChangeSet;
import org.rhq.enterprise.server.plugins.drift.mongodb.entities.MongoDBChangeSetEntry;
@@ -91,15 +95,49 @@ public class ChangeSetDAO extends BasicDAO<MongoDBChangeSet, ObjectId> {
}
public List<MongoDBChangeSetEntry> findEntries(DriftCriteria criteria) {
- Query<MongoDBChangeSet> query = createQuery();
-
if (criteria.getFilterId() != null) {
String[] ids = criteria.getFilterId().split(":");
ObjectId changeSetId = new ObjectId(ids[0]);
return asList(findEntryById(changeSetId, ids[1]));
}
- return null;
+ Query<MongoDBChangeSet> query = createQuery();
+ boolean changeSetsFiltered = false;
+ boolean entriesFiltered = false;
+ boolean filterOnResourceId = false;
+
+ Set<DriftCategory> categories = new TreeSet<DriftCategory>();
+
+ if (criteria.getFilterResourceIds().length > 0) {
+ query.field("resourceId").in(asList(criteria.getFilterResourceIds()));
+ changeSetsFiltered = true;
+ filterOnResourceId = true;
+ }
+
+ if (criteria.getFilterCategories().length > 0) {
+ query.field("files.category").in(asList(criteria.getFilterCategories()));
+ categories.addAll(asList(criteria.getFilterCategories()));
+ }
+
+ List<MongoDBChangeSetEntry> entries = new ArrayList<MongoDBChangeSetEntry>();
+
+ // If the query only filters on change set fields, we do not need to do any
+ // additional filtering since it was already done by the database.
+ if (changeSetsFiltered && !entriesFiltered) {
+ for (MongoDBChangeSet c : query.asList()) {
+ entries.addAll(c.getDrifts());
+ }
+ } else {
+ for (MongoDBChangeSet c : query.asList()) {
+ for (MongoDBChangeSetEntry e : c.getDrifts()) {
+ if (categories.contains(e.getCategory())) {
+ entries.add(e);
+ }
+ }
+ }
+ }
+
+ return entries;
}
public MongoDBChangeSetEntry findEntryById(ObjectId changeSetId, String entryId) {
diff --git a/modules/enterprise/server/plugins/drift-mongodb/src/test/java/org/rhq/enterprise/server/plugins/drift/mongodb/dao/ChangeSetDAOTest.java b/modules/enterprise/server/plugins/drift-mongodb/src/test/java/org/rhq/enterprise/server/plugins/drift/mongodb/dao/ChangeSetDAOTest.java
index 8f1499f..6f13944 100644
--- a/modules/enterprise/server/plugins/drift-mongodb/src/test/java/org/rhq/enterprise/server/plugins/drift/mongodb/dao/ChangeSetDAOTest.java
+++ b/modules/enterprise/server/plugins/drift-mongodb/src/test/java/org/rhq/enterprise/server/plugins/drift/mongodb/dao/ChangeSetDAOTest.java
@@ -248,32 +248,29 @@ public class ChangeSetDAOTest {
criteria.addFilterId(e2.getId());
List<MongoDBChangeSetEntry> entries = dao.findEntries(criteria);
- assertEquals(entries.size(), 1, "Expected to get back one change set entry");
- String ignoredProperties = "changeSet";
- assertPropertiesMatch("Failed to find change set entry with id filter", e2, entries.get(0), ignoredProperties);
+ assertEntriesMatch("Failed to find change set entries with id filter", asList(e2), entries);
}
@Test(enabled = ENABLED)
- public void findByDriftCriteriaWithIdFilter() throws Exception {
+ public void findEntriesWithCategoriesFilter() throws Exception {
MongoDBChangeSet c1 = createChangeSet(COVERAGE, 1, 1, 1);
- MongoDBChangeSetEntry entry = new MongoDBChangeSetEntry("c1-1.txt", FILE_ADDED);
- c1.add(entry);
-
+ MongoDBChangeSetEntry e1 = new MongoDBChangeSetEntry("c1-1.txt", FILE_ADDED);
+ MongoDBChangeSetEntry e2 = new MongoDBChangeSetEntry("c1-2.txt", FILE_ADDED);
+ c1.add(e1).add(e2);
dao.save(c1);
- MongoDBChangeSet c2 = createChangeSet(COVERAGE, 2, 1, 1);
- c2.add(new MongoDBChangeSetEntry("c1-1.txt", FILE_CHANGED));
-
+ MongoDBChangeSet c2 = createChangeSet(DRIFT, 2, 1, 1);
+ MongoDBChangeSetEntry e3 = new MongoDBChangeSetEntry("c2-1.txt", FILE_ADDED);
+ MongoDBChangeSetEntry e4 = new MongoDBChangeSetEntry("c1-1.txt", FILE_CHANGED);
+ MongoDBChangeSetEntry e5 = new MongoDBChangeSetEntry("c1-2.txt", FILE_REMOVED);
+ c2.add(e3).add(e4).add(e5);
dao.save(c2);
GenericDriftCriteria criteria = new GenericDriftCriteria();
- criteria.addFilterId(entry.getId());
-
- List<MongoDBChangeSet> actual = dao.findByDriftCriteria(criteria);
+ criteria.addFilterCategories(FILE_CHANGED, FILE_REMOVED);
- assertEquals(actual.size(), 1, "Expected to get back only one change set when searching by drift criteria " +
- "with id filter.");
- assertChangeSetMatches("Failed to find change set by drift criteria with id filter.", c1, actual.get(0));
+ List<MongoDBChangeSetEntry> entries = dao.findEntries(criteria);
+ assertEntriesMatch("Failed to find change set entries with category filter", asList(e4, e5), entries);
}
@Test(enabled = ENABLED)
@@ -309,6 +306,44 @@ public class ChangeSetDAOTest {
}
@Test(enabled = ENABLED)
+ public void findEntriesWithResourceIdFilters() throws Exception {
+ MongoDBChangeSet c1 = createChangeSet(COVERAGE, 1, 1, 1);
+ MongoDBChangeSetEntry e1 = new MongoDBChangeSetEntry("c1-1.txt", FILE_ADDED);
+ c1.add(e1);
+ dao.save(c1);
+
+ MongoDBChangeSet c2 = createChangeSet(COVERAGE, 1, 2, 1);
+ MongoDBChangeSetEntry e2 = new MongoDBChangeSetEntry("c2-1.txt", FILE_ADDED);
+ c2.add(e2);
+ dao.save(c2);
+
+ GenericDriftCriteria criteria = new GenericDriftCriteria();
+ criteria.addFilterResourceIds(1);
+
+ List<MongoDBChangeSetEntry> entries = dao.findEntries(criteria);
+ assertEntriesMatch("Failed to find change set entries with resource id filter", asList(e1), entries);
+ }
+
+// @Test(enabled = ENABLED)
+// public void findEntriesWithResourceIdAndStartTimeFilters() throws Exception {
+// MongoDBChangeSet c1 = createChangeSet(COVERAGE, 1, 1, 1);
+// MongoDBChangeSetEntry e1 = new MongoDBChangeSetEntry("c1-1.txt", FILE_ADDED);
+// c1.add(e1);
+// dao.save(c1);
+//
+// long startTime = System.currentTimeMillis();
+// Thread.sleep(10);
+//
+// MongoDBChangeSet c2 = createChangeSet(DRIFT, 2, 2, 1);
+// MongoDBChangeSetEntry e2 = new MongoDBChangeSetEntry("c1-1.txt", FILE_CHANGED);
+// c2.add(e2);
+// dao.save(c2);
+//
+// GenericDriftCriteria criteria = new GenericDriftCriteria();
+// criteria.addFilterResourceIds(resourceId);
+// }
+
+ @Test(enabled = ENABLED)
public void findByDriftCriteriaWithEndTimeFilter() throws Exception {
int resourceId = 1;
@@ -386,7 +421,7 @@ public class ChangeSetDAOTest {
}
private void assertChangeSetsMatch(String msg, List<MongoDBChangeSet> expected, List<MongoDBChangeSet> actual) {
- org.testng.Assert.assertEquals(actual.size(), expected.size(), "The number of change sets differ: " + msg);
+ assertEquals(actual.size(), expected.size(), "The number of change sets differ: " + msg);
for (MongoDBChangeSet expectedChangeSet : expected) {
MongoDBChangeSet actualChangeSet = null;
for (MongoDBChangeSet changeSet : actual) {
@@ -400,6 +435,12 @@ public class ChangeSetDAOTest {
}
}
+ private void assertEntriesMatch(String msg, List<MongoDBChangeSetEntry> expected,
+ List<MongoDBChangeSetEntry> actual) {
+ assertEquals(actual.size(), expected.size(), "The number of entries differ: " + msg);
+ assertCollectionMatchesNoOrder(msg, expected, actual, "changeSet");
+ }
+
/**
* This method first checks that the actual change set is not null. It then performs a
* property-wise comparison against the expected change set using
commit 1d64b254eb4c7bf98014ad26795d5613b5b5f3cb
Author: Jay Shaughnessy <jshaughn(a)redhat.com>
Date: Fri Sep 30 22:30:48 2011 -0400
Fix filtering issues in drift carousel
- Ensure filters are applied correctly to existing carousel members
- Add ability to apply carousel filters to new members when
rebuilding/scrolling the carousel.
diff --git a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/components/carousel/Carousel.java b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/components/carousel/Carousel.java
index 9388bbc..b3f97d8 100644
--- a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/components/carousel/Carousel.java
+++ b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/components/carousel/Carousel.java
@@ -662,7 +662,7 @@ public abstract class Carousel extends LocatableHLayout implements RefreshableVi
// and it doesn't handle Object types properly (seeing odd behavior because of this), so this method explicitly
// supports adding array types and Objects.
// This method takes the src criteria and adds it to the dest criteria.
- private static void addCriteria(Criteria dest, Criteria src) {
+ protected static void addCriteria(Criteria dest, Criteria src) {
Map otherMap = src.getValues();
Set otherKeys = otherMap.keySet();
for (Iterator i = otherKeys.iterator(); i.hasNext();) {
@@ -1083,7 +1083,7 @@ public abstract class Carousel extends LocatableHLayout implements RefreshableVi
protected void setCarouselStartFilter(Integer carouselStartFilter) {
this.carouselStartFilter = carouselStartFilter;
- this.filterForm.getItem(FILTER_CAROUSEL_START).setValue(carouselStartFilter);
+ this.filterForm.getItem(FILTER_CAROUSEL_START).setValue(String.valueOf(carouselStartFilter));
this.filterForm.getItem(FILTER_CAROUSEL_START).redraw();
}
@@ -1093,7 +1093,7 @@ public abstract class Carousel extends LocatableHLayout implements RefreshableVi
protected void setCarouselSizeFilter(Integer carouselSizeFilter) {
this.carouselSizeFilter = carouselSizeFilter;
- this.filterForm.getItem(FILTER_CAROUSEL_SIZE).setValue(carouselSizeFilter);
+ this.filterForm.getItem(FILTER_CAROUSEL_SIZE).setValue(String.valueOf(carouselSizeFilter));
this.filterForm.getItem(FILTER_CAROUSEL_SIZE).redraw();
}
diff --git a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/drift/DriftCarouselMemberView.java b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/drift/DriftCarouselMemberView.java
index 2276dd9..488b396 100644
--- a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/drift/DriftCarouselMemberView.java
+++ b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/drift/DriftCarouselMemberView.java
@@ -48,17 +48,17 @@ public class DriftCarouselMemberView extends DriftHistoryView implements Carouse
private Criteria carouselCriteria;
public static DriftCarouselMemberView get(String locatorId, ResourceComposite composite,
- DriftChangeSet driftChangeSet) {
- //String tableTitle = MSG.view_drift_table_resourceHistory();
+ DriftChangeSet driftChangeSet, Criteria initialCriteria) {
+
EntityContext context = EntityContext.forResource(composite.getResource().getId());
boolean hasWriteAccess = composite.getResourcePermission().isDrift();
- return new DriftCarouselMemberView(locatorId, context, driftChangeSet, hasWriteAccess);
+ return new DriftCarouselMemberView(locatorId, context, driftChangeSet, hasWriteAccess, initialCriteria);
}
public DriftCarouselMemberView(String locatorId, EntityContext context, DriftChangeSet driftChangeSet,
- boolean hasWriteAccess) {
+ boolean hasWriteAccess, Criteria initialCriteria) {
- super(locatorId, null, context, hasWriteAccess);
+ super(locatorId, null, context, hasWriteAccess, initialCriteria);
this.changeSet = driftChangeSet;
((DriftCarouselDataSource) getDataSource()).setChangeSetId(this.changeSet.getId());
diff --git a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/drift/DriftCarouselView.java b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/drift/DriftCarouselView.java
index e653144..3fbcdaf 100644
--- a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/drift/DriftCarouselView.java
+++ b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/drift/DriftCarouselView.java
@@ -19,8 +19,10 @@
package org.rhq.enterprise.gui.coregui.client.drift;
import java.util.LinkedHashMap;
+import java.util.Map;
import com.google.gwt.user.client.rpc.AsyncCallback;
+import com.smartgwt.client.data.Criteria;
import com.smartgwt.client.widgets.form.fields.SelectItem;
import com.smartgwt.client.widgets.form.fields.TextItem;
@@ -103,10 +105,14 @@ public class DriftCarouselView extends Carousel {
carouselSize = (null == carouselSize || carouselSize < 1) ? CAROUSEL_DEFAULT_SIZE : carouselSize;
int size = carouselSize;
Integer carouselStart = null;
+ Criteria initialCriteria = getInitialMemberCriteria(isRefresh ? getCurrentCriteria() : null);
+
+ Map map = initialCriteria.getValues();
+ map.entrySet();
for (DriftChangeSet changeSet : result) {
- DriftCarouselMemberView view = new DriftCarouselMemberView(extendLocatorId(changeSet
- .getId()), context, changeSet, hasWriteAccess);
+ DriftCarouselMemberView view = new DriftCarouselMemberView(extendLocatorId(changeSet.getId()),
+ context, changeSet, hasWriteAccess, initialCriteria);
addCarouselMember(view);
if (null == carouselStart) {
@@ -133,6 +139,17 @@ public class DriftCarouselView extends Carousel {
});
}
+ protected static Criteria getInitialMemberCriteria(Criteria additionalCriteria) {
+ if (null == additionalCriteria) {
+ return DriftHistoryView.INITIAL_CRITERIA;
+ }
+
+ Criteria initialCriteria = new Criteria();
+ addCriteria(initialCriteria, DriftHistoryView.INITIAL_CRITERIA);
+ addCriteria(initialCriteria, additionalCriteria);
+ return initialCriteria;
+ }
+
@Override
protected int getDefaultCarouselSize() {
return CAROUSEL_DEFAULT_SIZE;
diff --git a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/drift/DriftHistoryView.java b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/drift/DriftHistoryView.java
index 970750a..980fc9c 100644
--- a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/drift/DriftHistoryView.java
+++ b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/drift/DriftHistoryView.java
@@ -60,7 +60,7 @@ public class DriftHistoryView extends StringIDTableSection<DriftDataSource> {
private static SortSpecifier DEFAULT_SORT_SPECIFIER = new SortSpecifier(DriftDataSource.ATTR_CTIME,
SortDirection.DESCENDING);
- private static final Criteria INITIAL_CRITERIA = new Criteria();
+ public static final Criteria INITIAL_CRITERIA = new Criteria();
private EntityContext context;
private boolean hasWriteAccess;
@@ -80,19 +80,24 @@ public class DriftHistoryView extends StringIDTableSection<DriftDataSource> {
// for subsystem views
public DriftHistoryView(String locatorId) {
- this(locatorId, SUBSYSTEM_VIEW_ID.getTitle(), EntityContext.forSubsystemView(), false);
+ this(locatorId, SUBSYSTEM_VIEW_ID.getTitle(), EntityContext.forSubsystemView(), false, INITIAL_CRITERIA);
}
public DriftHistoryView(String locatorId, EntityContext entityContext) {
- this(locatorId, SUBSYSTEM_VIEW_ID.getTitle(), entityContext, false);
+ this(locatorId, SUBSYSTEM_VIEW_ID.getTitle(), entityContext, false, INITIAL_CRITERIA);
}
public DriftHistoryView(String locatorId, String tableTitle, EntityContext entityContext) {
- this(locatorId, tableTitle, entityContext, false);
+ this(locatorId, tableTitle, entityContext, false, INITIAL_CRITERIA);
}
- protected DriftHistoryView(String locatorId, String tableTitle, EntityContext context, boolean hasWriteAccess) {
- super(locatorId, tableTitle, INITIAL_CRITERIA, new SortSpecifier[] { DEFAULT_SORT_SPECIFIER });
+ protected DriftHistoryView(String locatorId, String tableTitle, EntityContext entityContext, boolean hasWriteAccess) {
+ this(locatorId, tableTitle, entityContext, hasWriteAccess, INITIAL_CRITERIA);
+ }
+
+ protected DriftHistoryView(String locatorId, String tableTitle, EntityContext context, boolean hasWriteAccess,
+ Criteria initialCriteria) {
+ super(locatorId, tableTitle, initialCriteria, new SortSpecifier[] { DEFAULT_SORT_SPECIFIER });
this.context = context;
this.hasWriteAccess = hasWriteAccess;
commit 79584fd38fb018353176f1a9fdfc319798c54c4e
Author: John Sanda <jsanda(a)redhat.com>
Date: Fri Sep 30 21:35:44 2011 -0400
Adding support for fetching drift entries by id using the $slice operator
diff --git a/modules/enterprise/server/plugins/drift-mongodb/pom.xml b/modules/enterprise/server/plugins/drift-mongodb/pom.xml
index 0330114..23e8981 100644
--- a/modules/enterprise/server/plugins/drift-mongodb/pom.xml
+++ b/modules/enterprise/server/plugins/drift-mongodb/pom.xml
@@ -22,6 +22,13 @@
<properties>
<scm.module.path>modules/enterprise/server/plugins/drift-mongodb/</scm.module.path>
+ <!--
+ Tests are temporarily disabled until a MongoDB server is set up for use with
+ hudson builds. They can however be run locally provided you have MongoDB installed.
+
+ - jsanda
+ -->
+ <skipTests>true</skipTests>
</properties>
<dependencies>
diff --git a/modules/enterprise/server/plugins/drift-mongodb/src/main/java/org/rhq/enterprise/server/plugins/drift/mongodb/dao/ChangeSetDAO.java b/modules/enterprise/server/plugins/drift-mongodb/src/main/java/org/rhq/enterprise/server/plugins/drift/mongodb/dao/ChangeSetDAO.java
index 0a62bc8..57de79f 100644
--- a/modules/enterprise/server/plugins/drift-mongodb/src/main/java/org/rhq/enterprise/server/plugins/drift/mongodb/dao/ChangeSetDAO.java
+++ b/modules/enterprise/server/plugins/drift-mongodb/src/main/java/org/rhq/enterprise/server/plugins/drift/mongodb/dao/ChangeSetDAO.java
@@ -109,7 +109,7 @@ public class ChangeSetDAO extends BasicDAO<MongoDBChangeSet, ObjectId> {
BasicDBObject keys = new BasicDBObject();
keys.put("files", new BasicDBObject().append("$slice", new Integer[] {Integer.valueOf(entryId), 1}));
- DBObject result = getCollection().findOne(query, new BasicDBObject());
+ DBObject result = getCollection().findOne(query, keys);
if (result == null) {
return null;
diff --git a/modules/enterprise/server/plugins/drift-mongodb/src/test/java/org/rhq/enterprise/server/plugins/drift/mongodb/dao/ChangeSetDAOTest.java b/modules/enterprise/server/plugins/drift-mongodb/src/test/java/org/rhq/enterprise/server/plugins/drift/mongodb/dao/ChangeSetDAOTest.java
index de11a90..8f1499f 100644
--- a/modules/enterprise/server/plugins/drift-mongodb/src/test/java/org/rhq/enterprise/server/plugins/drift/mongodb/dao/ChangeSetDAOTest.java
+++ b/modules/enterprise/server/plugins/drift-mongodb/src/test/java/org/rhq/enterprise/server/plugins/drift/mongodb/dao/ChangeSetDAOTest.java
@@ -19,18 +19,6 @@
package org.rhq.enterprise.server.plugins.drift.mongodb.dao;
-import static java.util.Arrays.asList;
-import static org.rhq.core.domain.drift.DriftCategory.FILE_ADDED;
-import static org.rhq.core.domain.drift.DriftCategory.FILE_CHANGED;
-import static org.rhq.core.domain.drift.DriftCategory.FILE_REMOVED;
-import static org.rhq.core.domain.drift.DriftChangeSetCategory.COVERAGE;
-import static org.rhq.core.domain.drift.DriftChangeSetCategory.DRIFT;
-import static org.rhq.core.domain.drift.DriftConfigurationDefinition.DriftHandlingMode.normal;
-import static org.rhq.test.AssertUtils.assertCollectionMatchesNoOrder;
-import static org.rhq.test.AssertUtils.assertPropertiesMatch;
-import static org.testng.Assert.assertNotNull;
-import static org.testng.AssertJUnit.assertEquals;
-
import java.util.List;
import com.google.code.morphia.Datastore;
@@ -57,8 +45,8 @@ import static org.rhq.core.domain.drift.DriftChangeSetCategory.DRIFT;
import static org.rhq.core.domain.drift.DriftConfigurationDefinition.DriftHandlingMode.normal;
import static org.rhq.test.AssertUtils.assertCollectionMatchesNoOrder;
import static org.rhq.test.AssertUtils.assertPropertiesMatch;
-import static org.testng.Assert.assertNotNull;
import static org.testng.Assert.assertEquals;
+import static org.testng.Assert.assertNotNull;
public class ChangeSetDAOTest {
@@ -261,7 +249,8 @@ public class ChangeSetDAOTest {
List<MongoDBChangeSetEntry> entries = dao.findEntries(criteria);
assertEquals(entries.size(), 1, "Expected to get back one change set entry");
- assertPropertiesMatch(e2, entries.get(0), "Failed to find change set entry with id filter");
+ String ignoredProperties = "changeSet";
+ assertPropertiesMatch("Failed to find change set entry with id filter", e2, entries.get(0), ignoredProperties);
}
@Test(enabled = ENABLED)
commit 32ddedf80d60d058d21f3063cd98855ca721b5d6
Merge: 0a5ac85 63539a2
Author: John Sanda <jsanda(a)redhat.com>
Date: Fri Sep 30 21:22:29 2011 -0400
Merge branch 'master' into mongodb-drift
Conflicts:
modules/enterprise/server/plugins/drift-mongodb/src/test/java/org/rhq/enterprise/server/plugins/drift/mongodb/dao/ChangeSetDAOTest.java
diff --cc modules/enterprise/server/plugins/drift-mongodb/src/test/java/org/rhq/enterprise/server/plugins/drift/mongodb/dao/ChangeSetDAOTest.java
index ce6458d,38b3b6e..de11a90
--- a/modules/enterprise/server/plugins/drift-mongodb/src/test/java/org/rhq/enterprise/server/plugins/drift/mongodb/dao/ChangeSetDAOTest.java
+++ b/modules/enterprise/server/plugins/drift-mongodb/src/test/java/org/rhq/enterprise/server/plugins/drift/mongodb/dao/ChangeSetDAOTest.java
@@@ -305,11 -283,11 +312,11 @@@ public class ChangeSetDAOTest
List<MongoDBChangeSet> actual = dao.findByDriftCriteria(criteria);
- assertEquals("Expected to get back one change set", 1, actual.size());
+ assertEquals(actual.size(), 1, "Expected to get back one change set");
MongoDBChangeSet actualChangeSet = actual.get(0);
- assertChangeSetMatches("Failed to find drift entries by drift criteria with start time filter",
- c2, actualChangeSet);
+ assertChangeSetMatches("Failed to find drift entries by drift criteria with start time filter", c2,
+ actualChangeSet);
}
@Test(enabled = ENABLED)
commit 63539a283c814594f3196171a0fb91d8e1f8ce80
Author: Jay Shaughnessy <jshaughn(a)redhat.com>
Date: Fri Sep 30 18:01:09 2011 -0400
A second wave of refactor updates moving code from "drift config" to
"drift definition" terminology. Fixes some unit test failures among
other things.
- renames class DriftConfigurationTest to DriftDefinitionTest
diff --git a/modules/common/drift/src/main/java/org/rhq/common/drift/ChangeSetWriter.java b/modules/common/drift/src/main/java/org/rhq/common/drift/ChangeSetWriter.java
index f778e5c..5e9c6ed 100644
--- a/modules/common/drift/src/main/java/org/rhq/common/drift/ChangeSetWriter.java
+++ b/modules/common/drift/src/main/java/org/rhq/common/drift/ChangeSetWriter.java
@@ -38,9 +38,9 @@ import java.io.IOException;
* following order:
* <ul>
* <li>resource id</li>
- * <li>drift configuration id</li>
- * <li>drift configuration name</li>
- * <li>drift configuration base directory</li>
+ * <li>drift definition id</li>
+ * <li>drift definition name</li>
+ * <li>drift definition base directory</li>
* <li>change set type flag indicating whether this is a coverage or drift changeset</li>
* <li>change set version number</li>
* </ul>
diff --git a/modules/common/drift/src/test/java/org/rhq/common/drift/ChangeSetWriterImplTest.java b/modules/common/drift/src/test/java/org/rhq/common/drift/ChangeSetWriterImplTest.java
index 251021a..7942d68 100644
--- a/modules/common/drift/src/test/java/org/rhq/common/drift/ChangeSetWriterImplTest.java
+++ b/modules/common/drift/src/test/java/org/rhq/common/drift/ChangeSetWriterImplTest.java
@@ -19,13 +19,6 @@
package org.rhq.common.drift;
-import java.io.File;
-import java.io.FileInputStream;
-import java.util.List;
-
-import org.testng.annotations.BeforeClass;
-import org.testng.annotations.Test;
-
import static org.apache.commons.io.FileUtils.deleteDirectory;
import static org.apache.commons.io.IOUtils.readLines;
import static org.rhq.common.drift.FileEntry.addedFileEntry;
@@ -34,6 +27,13 @@ import static org.rhq.common.drift.FileEntry.removedFileEntry;
import static org.rhq.core.domain.drift.DriftChangeSetCategory.COVERAGE;
import static org.testng.Assert.assertEquals;
+import java.io.File;
+import java.io.FileInputStream;
+import java.util.List;
+
+import org.testng.annotations.BeforeClass;
+import org.testng.annotations.Test;
+
public class ChangeSetWriterImplTest {
File changeSetsDir;
@@ -77,8 +77,8 @@ public class ChangeSetWriterImplTest {
File metaDataFile = writer.getChangeSetFile();
List<String> lines = readLines(new FileInputStream(metaDataFile));
- assertEquals(lines.size(), 7, "Expected to find seven lines in " + metaDataFile.getPath() +
- " - six for the header followed by one file entry.");
+ assertEquals(lines.size(), 7, "Expected to find seven lines in " + metaDataFile.getPath()
+ + " - six for the header followed by one file entry.");
assertHeadersEquals(lines, headers);
assertFileEntryEquals(lines.get(6), "A a34ef6 0 conf/myconf.conf");
}
@@ -105,8 +105,8 @@ public class ChangeSetWriterImplTest {
File metaDataFile = writer.getChangeSetFile();
List<String> lines = readLines(new FileInputStream(metaDataFile));
- assertEquals(lines.size(), 7, "Expected to find seven lines in " + metaDataFile.getPath() +
- " - six for the header followed by one file entry.");
+ assertEquals(lines.size(), 7, "Expected to find seven lines in " + metaDataFile.getPath()
+ + " - six for the header followed by one file entry.");
assertHeadersEquals(lines, headers);
assertFileEntryEquals(lines.get(6), "R 0 a34ef6 conf/myconf.conf");
}
@@ -133,8 +133,8 @@ public class ChangeSetWriterImplTest {
File metaDataFile = writer.getChangeSetFile();
List<String> lines = readLines(new FileInputStream(metaDataFile));
- assertEquals(lines.size(), 7, "Expected to find seven lines in " + metaDataFile.getPath() +
- " - six for the header followed by one file entry.");
+ assertEquals(lines.size(), 7, "Expected to find seven lines in " + metaDataFile.getPath()
+ + " - six for the header followed by one file entry.");
assertHeadersEquals(lines, headers);
assertFileEntryEquals(lines.get(6), "C c2d55f a34ef6 conf/myconf.conf");
}
@@ -147,16 +147,16 @@ public class ChangeSetWriterImplTest {
* @param headers The expected headers
*/
void assertHeadersEquals(List<String> lines, Headers headers) {
- assertEquals(lines.get(0), Integer.toString(headers.getResourceId()), "The first header entry should be the " +
- "resurce id.");
- assertEquals(lines.get(1), Integer.toString(headers.getDriftDefinitionId()), "The second header entry " +
- "should be the drift configuration id.");
- assertEquals(lines.get(2), headers.getDriftDefinitionName(), "The third header entry should be the drift " +
- "configuration name.");
- assertEquals(lines.get(3), headers.getBasedir(), "The fourth header entry should be the drift configuration " +
- "base directory.");
- assertEquals(lines.get(4), headers.getType().code(), "The fifth header entry should be the change set " +
- "category code");
+ assertEquals(lines.get(0), Integer.toString(headers.getResourceId()), "The first header entry should be the "
+ + "resurce id.");
+ assertEquals(lines.get(1), Integer.toString(headers.getDriftDefinitionId()), "The second header entry "
+ + "should be the drift definition id.");
+ assertEquals(lines.get(2), headers.getDriftDefinitionName(), "The third header entry should be the drift "
+ + "configuration name.");
+ assertEquals(lines.get(3), headers.getBasedir(), "The fourth header entry should be the drift definition "
+ + "base directory.");
+ assertEquals(lines.get(4), headers.getType().code(), "The fifth header entry should be the change set "
+ + "category code");
assertEquals(Integer.parseInt(lines.get(5)), headers.getVersion(),
"The sixth header entry should be the change set version.");
}
diff --git a/modules/core/client-api/src/main/java/org/rhq/core/clientapi/agent/drift/DriftAgentService.java b/modules/core/client-api/src/main/java/org/rhq/core/clientapi/agent/drift/DriftAgentService.java
index 4a2d134..4ca10e0 100644
--- a/modules/core/client-api/src/main/java/org/rhq/core/clientapi/agent/drift/DriftAgentService.java
+++ b/modules/core/client-api/src/main/java/org/rhq/core/clientapi/agent/drift/DriftAgentService.java
@@ -89,7 +89,7 @@ public interface DriftAgentService {
* effect, a remove operation).
*
* @param resourceId The id of the resource for which the request is being made
- * @param driftDefinition The doomed drift config
+ * @param driftDefinition The doomed drift definition
* @see DriftDefinition
*/
void unscheduleDriftDetection(int resourceId, DriftDefinition driftDefinition);
diff --git a/modules/core/client-api/src/main/java/org/rhq/core/clientapi/agent/metadata/DriftMetadataParser.java b/modules/core/client-api/src/main/java/org/rhq/core/clientapi/agent/metadata/DriftMetadataParser.java
index 4d95331..c25c85b 100644
--- a/modules/core/client-api/src/main/java/org/rhq/core/clientapi/agent/metadata/DriftMetadataParser.java
+++ b/modules/core/client-api/src/main/java/org/rhq/core/clientapi/agent/metadata/DriftMetadataParser.java
@@ -49,15 +49,17 @@ public class DriftMetadataParser {
}
private ConfigurationTemplate createTemplate(String name) {
- ConfigurationTemplate template = new ConfigurationTemplate(name, name + " drift configuration default template");
+ ConfigurationTemplate template = new ConfigurationTemplate(name, name + " drift definition default template");
template.setConfiguration(new Configuration());
return template;
}
private void initEnabled(ConfigurationTemplate template) {
- template.getConfiguration().put(new PropertySimple(DriftConfigurationDefinition.PROP_ENABLED,
- DriftConfigurationDefinition.DEFAULT_ENABLED));
+ template.getConfiguration()
+ .put(
+ new PropertySimple(DriftConfigurationDefinition.PROP_ENABLED,
+ DriftConfigurationDefinition.DEFAULT_ENABLED));
}
private void initName(DriftDescriptor descriptor, ConfigurationTemplate template) {
diff --git a/modules/core/client-api/src/main/java/org/rhq/core/clientapi/agent/metadata/PluginMetadataParser.java b/modules/core/client-api/src/main/java/org/rhq/core/clientapi/agent/metadata/PluginMetadataParser.java
index 08b2180..a8354fa 100644
--- a/modules/core/client-api/src/main/java/org/rhq/core/clientapi/agent/metadata/PluginMetadataParser.java
+++ b/modules/core/client-api/src/main/java/org/rhq/core/clientapi/agent/metadata/PluginMetadataParser.java
@@ -442,7 +442,7 @@ public class PluginMetadataParser {
// 2) Classes
// 3) Plugin config
// 4) Resource config
- // 5) Drift config
+ // 5) Drift definition
// 6) Metrics
// 7) Control operations
// 8) Process matches (for process scan auto-discovery)
@@ -491,17 +491,17 @@ public class PluginMetadataParser {
.getName(), resourceDescriptor.getResourceConfiguration()));
}
- Set<String> driftConfigNames = new HashSet<String>();
+ Set<String> driftDefNames = new HashSet<String>();
DriftMetadataParser driftMetadataParser = new DriftMetadataParser();
- for (DriftDescriptor descriptor : resourceDescriptor.getDriftConfiguration()) {
- if (driftConfigNames.contains(descriptor.getName())) {
- throw new InvalidPluginDescriptorException("Duplicate drift configuration name detected ["
+ for (DriftDescriptor descriptor : resourceDescriptor.getDriftDefinition()) {
+ if (driftDefNames.contains(descriptor.getName())) {
+ throw new InvalidPluginDescriptorException("Duplicate drift definition name detected ["
+ descriptor.getName() + "]");
}
- driftConfigNames.add(descriptor.getName());
+ driftDefNames.add(descriptor.getName());
resourceType.addDriftDefinitionTemplate(driftMetadataParser.parseDriftMetadata(descriptor));
}
- driftConfigNames = null; // don't need this anymore
+ driftDefNames = null; // don't need this anymore
int displayPosition = 1;
for (MetricDescriptor metricDescriptor : resourceDescriptor.getMetric()) {
diff --git a/modules/core/client-api/src/main/resources/rhq-plugin.xsd b/modules/core/client-api/src/main/resources/rhq-plugin.xsd
index 7afb736..d1095e1 100644
--- a/modules/core/client-api/src/main/resources/rhq-plugin.xsd
+++ b/modules/core/client-api/src/main/resources/rhq-plugin.xsd
@@ -569,7 +569,7 @@
<xs:complexType>
<xs:annotation>
<xs:documentation>
- The root directory from which snapshots will be generated during drift monitoring.
+ The root directory from which snapshots will be generated during drift detection.
Each base directory's value is obtained from a particular context (e.g. in the
resource's plugin configuration or its resource configuration).
Within that context, the base directory value is obtained by looking up the named value in the given context.
@@ -752,7 +752,7 @@
<xs:element ref="rhq:event" minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="rhq:content" minOccurs="0" maxOccurs="unbounded"/>
<xs:element name="resource-configuration" type="config:configuration" minOccurs="0"/>
- <xs:element name="drift-configuration" type="rhq:Drift" minOccurs="0" maxOccurs="unbounded"/>
+ <xs:element name="drift-definition" type="rhq:Drift" minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="rhq:bundle-target" minOccurs="0" maxOccurs="1"/>
<xs:element ref="rhq:help" minOccurs="0" maxOccurs="1" />
</xs:sequence>
diff --git a/modules/core/client-api/src/test/java/org/rhq/core/clientapi/agent/metadata/test/PluginMetadataParserTest.java b/modules/core/client-api/src/test/java/org/rhq/core/clientapi/agent/metadata/test/PluginMetadataParserTest.java
index 6f134d2..5446089 100644
--- a/modules/core/client-api/src/test/java/org/rhq/core/clientapi/agent/metadata/test/PluginMetadataParserTest.java
+++ b/modules/core/client-api/src/test/java/org/rhq/core/clientapi/agent/metadata/test/PluginMetadataParserTest.java
@@ -20,7 +20,6 @@ package org.rhq.core.clientapi.agent.metadata.test;
import static org.rhq.core.clientapi.shared.PluginDescriptorUtil.toPluginDescriptor;
import static org.testng.Assert.assertEquals;
-import static org.testng.Assert.assertFalse;
import static org.testng.Assert.assertNotNull;
import static org.testng.Assert.assertTrue;
@@ -40,11 +39,11 @@ import org.rhq.core.domain.configuration.PropertySimple;
import org.rhq.core.domain.configuration.definition.ConfigurationDefinition;
import org.rhq.core.domain.configuration.definition.ConfigurationFormat;
import org.rhq.core.domain.configuration.definition.ConfigurationTemplate;
-import org.rhq.core.domain.drift.DriftDefinition;
import org.rhq.core.domain.drift.DriftConfigurationDefinition;
-import org.rhq.core.domain.drift.DriftDefinition.BaseDirectory;
+import org.rhq.core.domain.drift.DriftDefinition;
import org.rhq.core.domain.drift.Filter;
import org.rhq.core.domain.drift.DriftConfigurationDefinition.BaseDirValueContext;
+import org.rhq.core.domain.drift.DriftDefinition.BaseDirectory;
import org.rhq.core.domain.resource.ResourceType;
@Test
@@ -361,22 +360,22 @@ public class PluginMetadataParserTest {
}
@Test
- void createDriftConfigurationBasedir() throws Exception {
+ void createDriftDefinitionBasedir() throws Exception {
PluginDescriptor descriptor = toPluginDescriptor("" + //
"<plugin name='drift-test-plugin' displayName='Drift Test' package='org.rhq.plugins.test'" + //
" xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'" + //
" xmlns='urn:xmlns:rhq-plugin'>" + //
" <server name='TestServer'>" + //
- " <drift-configuration name='test1'>" + //
+ " <drift-definition name='test1'>" + //
" <basedir>" + //
" <value-context>pluginConfiguration</value-context>" + //
" <value-name>var.lib.test1</value-name>" + //
" </basedir>" + //
- " </drift-configuration>" + //
+ " </drift-definition>" + //
" </server>" + //
"</plugin>");
- verifyDriftConfiguration(descriptor, "TestServer", "test1", new AssertDriftTemplateRunnable() {
+ verifyDriftDefinition(descriptor, "TestServer", "test1", new AssertDriftTemplateRunnable() {
@Override
public void assertDriftTemplate(ConfigurationTemplate driftTemplate) throws Exception {
DriftDefinition dc = new DriftDefinition(driftTemplate.getConfiguration());
@@ -388,19 +387,19 @@ public class PluginMetadataParserTest {
}
@Test
- void createDriftConfigurationInvalidBasedir() throws Exception {
+ void createDriftDefinitionInvalidBasedir() throws Exception {
try {
toPluginDescriptor("" + //
"<plugin name='drift-test-plugin' displayName='Drift Test' package='org.rhq.plugins.test'" + //
" xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'" + //
" xmlns='urn:xmlns:rhq-plugin'>" + //
" <server name='TestServer'>" + //
- " <drift-configuration name='test1'>" + //
+ " <drift-definition name='test1'>" + //
" <basedir>" + //
" <value-context>saywhat</value-context>" + // this is an invalid context
" <value-name>var.lib.test1</value-name>" + //
" </basedir>" + //
- " </drift-configuration>" + //
+ " </drift-definition>" + //
" </server>" + //
"</plugin>");
assert false : "should not have reached here, the XML itself was invalid and should not have parsed";
@@ -410,22 +409,22 @@ public class PluginMetadataParserTest {
}
@Test
- void createDriftConfigurationIntervalDefault() throws Exception {
+ void createDriftDefinitionIntervalDefault() throws Exception {
PluginDescriptor descriptor = toPluginDescriptor("" + //
"<plugin name='drift-test-plugin' displayName='Drift Test' package='org.rhq.plugins.test'" + //
" xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'" + //
" xmlns='urn:xmlns:rhq-plugin'>" + //
" <server name='TestServer'>" + //
- " <drift-configuration name='test1'>" + //
+ " <drift-definition name='test1'>" + //
" <basedir>" + //
" <value-context>pluginConfiguration</value-context>" + //
" <value-name>var.lib.test1</value-name>" + //
" </basedir>" + //
- " </drift-configuration>" + //
+ " </drift-definition>" + //
" </server>" + //
"</plugin>");
- verifyDriftConfiguration(descriptor, "TestServer", "test1", new AssertDriftTemplateRunnable() {
+ verifyDriftDefinition(descriptor, "TestServer", "test1", new AssertDriftTemplateRunnable() {
@Override
public void assertDriftTemplate(ConfigurationTemplate driftTemplate) throws Exception {
assertEquals(driftTemplate.getConfiguration().getSimpleValue(
@@ -437,23 +436,23 @@ public class PluginMetadataParserTest {
}
@Test
- void createDriftConfigurationIntervalDefaultWithSpecifiedValue() throws Exception {
+ void createDriftDefinitionIntervalDefaultWithSpecifiedValue() throws Exception {
PluginDescriptor descriptor = toPluginDescriptor("" + //
"<plugin name='drift-test-plugin' displayName='Drift Test' package='org.rhq.plugins.test'" + //
" xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'" + //
" xmlns='urn:xmlns:rhq-plugin'>" + //
" <server name='TestServer'>" + //
- " <drift-configuration name='test1'>" + //
+ " <drift-definition name='test1'>" + //
" <basedir>" + //
" <value-context>pluginConfiguration</value-context>" + //
" <value-name>var.lib.test1</value-name>" + //
" </basedir>" + //
" <interval>3600</interval>" + //
- " </drift-configuration>" + //
+ " </drift-definition>" + //
" </server>" + //
"</plugin>");
- verifyDriftConfiguration(descriptor, "TestServer", "test1", new AssertDriftTemplateRunnable() {
+ verifyDriftDefinition(descriptor, "TestServer", "test1", new AssertDriftTemplateRunnable() {
@Override
public void assertDriftTemplate(ConfigurationTemplate driftTemplate) throws Exception {
assertEquals(driftTemplate.getConfiguration().getSimpleValue(
@@ -465,13 +464,13 @@ public class PluginMetadataParserTest {
}
@Test
- void createDriftConfigurationIncludesDefaultWithSpecifiedValue() throws Exception {
+ void createDriftDefinitionIncludesDefaultWithSpecifiedValue() throws Exception {
PluginDescriptor descriptor = toPluginDescriptor("" + //
"<plugin name='drift-test-plugin' displayName='Drift Test' package='org.rhq.plugins.test'" + //
" xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'" + //
" xmlns='urn:xmlns:rhq-plugin'>" + //
" <server name='TestServer'>" + //
- " <drift-configuration name='test1'>" + //
+ " <drift-definition name='test1'>" + //
" <basedir>" + //
" <value-context>pluginConfiguration</value-context>" + //
" <value-name>var.lib.test1</value-name>" + //
@@ -480,11 +479,11 @@ public class PluginMetadataParserTest {
" <include path='lib' pattern='*.jar'/>" + //
" <include path='conf' pattern='*.xml'/>" + //
" </includes>" + //
- " </drift-configuration>" + //
+ " </drift-definition>" + //
" </server>" + //
"</plugin>");
- verifyDriftConfiguration(descriptor, "TestServer", "test1", new AssertDriftTemplateRunnable() {
+ verifyDriftDefinition(descriptor, "TestServer", "test1", new AssertDriftTemplateRunnable() {
@Override
public void assertDriftTemplate(ConfigurationTemplate driftTemplate) throws Exception {
Configuration config = driftTemplate.getConfiguration();
@@ -520,13 +519,13 @@ public class PluginMetadataParserTest {
}
@Test
- void createDriftConfigurationExcludesDefaultWithSpecifiedValue() throws Exception {
+ void createDriftDefinitionExcludesDefaultWithSpecifiedValue() throws Exception {
PluginDescriptor descriptor = toPluginDescriptor("" + //
"<plugin name='drift-test-plugin' displayName='Drift Test' package='org.rhq.plugins.test'" + //
" xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'" + //
" xmlns='urn:xmlns:rhq-plugin'>" + //
" <server name='TestServer'>" + //
- " <drift-configuration name='test1'>" + //
+ " <drift-definition name='test1'>" + //
" <basedir>" + //
" <value-context>pluginConfiguration</value-context>" + //
" <value-name>var.lib.test1</value-name>" + //
@@ -536,11 +535,11 @@ public class PluginMetadataParserTest {
" <exclude path='lib' pattern='*.jar'/>" + //
" <exclude path='conf' pattern='*.xml'/>" + //
" </excludes>" + //
- " </drift-configuration>" + //
+ " </drift-definition>" + //
" </server>" + //
"</plugin>");
- verifyDriftConfiguration(descriptor, "TestServer", "test1", new AssertDriftTemplateRunnable() {
+ verifyDriftDefinition(descriptor, "TestServer", "test1", new AssertDriftTemplateRunnable() {
@Override
public void assertDriftTemplate(ConfigurationTemplate driftTemplate) throws Exception {
Configuration config = driftTemplate.getConfiguration();
@@ -576,18 +575,18 @@ public class PluginMetadataParserTest {
}
/**
- * This also tests DriftConfiguration POJO.
+ * This also tests DriftDefinition POJO.
*
* @throws Exception
*/
@Test
- void createDriftConfigurationMultipleAndTestDriftConfiguration() throws Exception {
+ void createDriftDefinitionMultipleAndTestDriftDefinition() throws Exception {
PluginDescriptor descriptor = toPluginDescriptor("" + //
"<plugin name='drift-test-plugin' displayName='Drift Test' package='org.rhq.plugins.test'" + //
" xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'" + //
" xmlns='urn:xmlns:rhq-plugin'>" + //
" <server name='TestServer'>" + //
- " <drift-configuration name='test1'>" + //
+ " <drift-definition name='test1'>" + //
" <basedir>" + //
" <value-context>pluginConfiguration</value-context>" + //
" <value-name>var.lib.test1</value-name>" + //
@@ -597,8 +596,8 @@ public class PluginMetadataParserTest {
" <include path='ilib' pattern='*.ijar'/>" + //
" <include path='iconf' pattern='*.ixml'/>" + //
" </includes>" + //
- " </drift-configuration>" + //
- " <drift-configuration name='test2'>" + //
+ " </drift-definition>" + //
+ " <drift-definition name='test2'>" + //
" <basedir>" + //
" <value-context>resourceConfiguration</value-context>" + //
" <value-name>var.lib.test2</value-name>" + //
@@ -608,8 +607,8 @@ public class PluginMetadataParserTest {
" <exclude path='elib' pattern='*.ejar'/>" + //
" <exclude path='econf' pattern='*.exml'/>" + //
" </excludes>" + //
- " </drift-configuration>" + //
- " <drift-configuration name='test3'>" + //
+ " </drift-definition>" + //
+ " <drift-definition name='test3'>" + //
" <basedir>" + //
" <value-context>measurementTrait</value-context>" + //
" <value-name>var.lib.test3</value-name>" + //
@@ -623,18 +622,18 @@ public class PluginMetadataParserTest {
" <exclude path='elib' pattern='*.ejar'/>" + //
" <exclude path='econf' pattern='*.exml'/>" + //
" </excludes>" + //
- " </drift-configuration>" + //
- " <drift-configuration name='test4'>" + //
+ " </drift-definition>" + //
+ " <drift-definition name='test4'>" + //
" <basedir>" + //
" <value-context>fileSystem</value-context>" + //
" <value-name>/wot/gorilla</value-name>" + //
" </basedir>" + //
" <interval>44444</interval>" + //
- " </drift-configuration>" + //
+ " </drift-definition>" + //
" </server>" + //
"</plugin>");
- verifyDriftConfiguration(descriptor, "TestServer", "test1", new AssertDriftTemplateRunnable() {
+ verifyDriftDefinition(descriptor, "TestServer", "test1", new AssertDriftTemplateRunnable() {
@Override
public void assertDriftTemplate(ConfigurationTemplate driftTemplate) throws Exception {
Configuration config = driftTemplate.getConfiguration();
@@ -674,7 +673,7 @@ public class PluginMetadataParserTest {
}
});
- verifyDriftConfiguration(descriptor, "TestServer", "test2", new AssertDriftTemplateRunnable() {
+ verifyDriftDefinition(descriptor, "TestServer", "test2", new AssertDriftTemplateRunnable() {
@Override
public void assertDriftTemplate(ConfigurationTemplate driftTemplate) throws Exception {
Configuration config = driftTemplate.getConfiguration();
@@ -714,7 +713,7 @@ public class PluginMetadataParserTest {
}
});
- verifyDriftConfiguration(descriptor, "TestServer", "test3", new AssertDriftTemplateRunnable() {
+ verifyDriftDefinition(descriptor, "TestServer", "test3", new AssertDriftTemplateRunnable() {
@Override
public void assertDriftTemplate(ConfigurationTemplate driftTemplate) throws Exception {
Configuration config = driftTemplate.getConfiguration();
@@ -776,7 +775,7 @@ public class PluginMetadataParserTest {
}
});
- verifyDriftConfiguration(descriptor, "TestServer", "test4", new AssertDriftTemplateRunnable() {
+ verifyDriftDefinition(descriptor, "TestServer", "test4", new AssertDriftTemplateRunnable() {
@Override
public void assertDriftTemplate(ConfigurationTemplate driftTemplate) throws Exception {
Configuration config = driftTemplate.getConfiguration();
@@ -799,7 +798,7 @@ public class PluginMetadataParserTest {
void assertDriftTemplate(ConfigurationTemplate driftTemplate) throws Exception;
}
- private void verifyDriftConfiguration(PluginDescriptor descriptor, String resourceTypeName, String driftConfigName,
+ private void verifyDriftDefinition(PluginDescriptor descriptor, String resourceTypeName, String driftDefName,
AssertDriftTemplateRunnable test) throws Exception {
Map<String, PluginMetadataParser> parsersByPlugin = new HashMap<String, PluginMetadataParser>(0);
@@ -808,22 +807,22 @@ public class PluginMetadataParserTest {
Set<ConfigurationTemplate> driftTemplates = resourceType.getDriftDefinitionTemplates();
ConfigurationTemplate driftTemplate = null;
for (ConfigurationTemplate template : driftTemplates) {
- if (template.getName().equals(driftConfigName)) {
+ if (template.getName().equals(driftDefName)) {
driftTemplate = template;
break;
}
}
- assertNotNull(driftTemplate, "Failed to find drift configuration template [" + driftConfigName
+ assertNotNull(driftTemplate, "Failed to find drift definition template [" + driftDefName
+ "]. The name attribute may not have been parsed correctly.");
PropertySimple name = driftTemplate.getConfiguration().getSimple(DriftConfigurationDefinition.PROP_NAME);
PropertySimple enabled = driftTemplate.getConfiguration().getSimple(DriftConfigurationDefinition.PROP_ENABLED);
- assertNotNull(name, "Expected to find a simple property <name> for the drift configuration name");
- assertEquals(name.getStringValue(), driftConfigName,
- "The value is wrong for the <name> property that represents the drift configuration name");
+ assertNotNull(name, "Expected to find a simple property <name> for the drift definition name");
+ assertEquals(name.getStringValue(), driftDefName,
+ "The value is wrong for the <name> property that represents the drift definition name");
- assertNotNull(enabled, "Expected to find simple property <enabled> for the drift configuration");
+ assertNotNull(enabled, "Expected to find simple property <enabled> for the drift definition");
assertTrue(enabled.getBooleanValue(), "The <enabled> property should be set to a default value of true");
test.assertDriftTemplate(driftTemplate);
diff --git a/modules/core/domain/src/main/java/org/rhq/core/domain/alert/AlertCondition.java b/modules/core/domain/src/main/java/org/rhq/core/domain/alert/AlertCondition.java
index 34a81c2..fb98c5b 100644
--- a/modules/core/domain/src/main/java/org/rhq/core/domain/alert/AlertCondition.java
+++ b/modules/core/domain/src/main/java/org/rhq/core/domain/alert/AlertCondition.java
@@ -432,9 +432,9 @@ public class AlertCondition implements Serializable {
* CONTROL: the name of the operation (not its display name)
* EVENT: the level of event to compare with (DEBUG, INFO, WARN, ERROR, FATAL)
* RESOURCE_CONFIG: n/a (null)
- * DRIFT: the name of the drift config that triggered the drift detection. This is actually a
- * regex that allows the user to match more than one drift config if they so choose.
- * (this value may be null, in which case it doesn't matter which drift configs were the ones
+ * DRIFT: the name of the drift definition that triggered the drift detection. This is actually a
+ * regex that allows the user to match more than one drift definition if they so choose.
+ * (this value may be null, in which case it doesn't matter which drift definition were the ones
* in which the drift was detected)
* RANGE: the name of the metric (TODO: today its the display name, very bad for i18n purposes)
*
diff --git a/modules/core/domain/src/main/java/org/rhq/core/domain/drift/DriftChangeSetCategory.java b/modules/core/domain/src/main/java/org/rhq/core/domain/drift/DriftChangeSetCategory.java
index 2b938ad..61f5c0d 100644
--- a/modules/core/domain/src/main/java/org/rhq/core/domain/drift/DriftChangeSetCategory.java
+++ b/modules/core/domain/src/main/java/org/rhq/core/domain/drift/DriftChangeSetCategory.java
@@ -38,7 +38,7 @@ public enum DriftChangeSetCategory {
* A coverage change set is a snapshot of the files that are being monitored for drift
* detection.
*/
- COVERAGE("C"), // Reports only on files being covered by a drift configuration.
+ COVERAGE("C"), // Reports only on files being covered by a drift definition.
/**
* A drift change set represents a change between one or more files and their versions
diff --git a/modules/core/domain/src/main/java/org/rhq/core/domain/drift/DriftComposite.java b/modules/core/domain/src/main/java/org/rhq/core/domain/drift/DriftComposite.java
index 5dbd57a..c50a368 100644
--- a/modules/core/domain/src/main/java/org/rhq/core/domain/drift/DriftComposite.java
+++ b/modules/core/domain/src/main/java/org/rhq/core/domain/drift/DriftComposite.java
@@ -12,15 +12,15 @@ public class DriftComposite implements Serializable {
private Resource resource;
- private String driftConfigName;
+ private String driftDefName;
public DriftComposite() {
}
- public DriftComposite(Drift<?, ?> drift, Resource resource, String driftConfigName) {
+ public DriftComposite(Drift<?, ?> drift, Resource resource, String driftDefName) {
this.drift = drift;
this.resource = resource;
- this.driftConfigName = driftConfigName;
+ this.driftDefName = driftDefName;
}
public Drift<?, ?> getDrift() {
@@ -40,11 +40,11 @@ public class DriftComposite implements Serializable {
}
public String getDriftDefinitionName() {
- return driftConfigName;
+ return driftDefName;
}
- public void setDriftConfigName(String driftConfigName) {
- this.driftConfigName = driftConfigName;
+ public void setDriftDefName(String driftDefName) {
+ this.driftDefName = driftDefName;
}
}
diff --git a/modules/core/domain/src/main/java/org/rhq/core/domain/drift/DriftConfigurationDefinition.java b/modules/core/domain/src/main/java/org/rhq/core/domain/drift/DriftConfigurationDefinition.java
index 561f055..241ed37 100644
--- a/modules/core/domain/src/main/java/org/rhq/core/domain/drift/DriftConfigurationDefinition.java
+++ b/modules/core/domain/src/main/java/org/rhq/core/domain/drift/DriftConfigurationDefinition.java
@@ -58,7 +58,7 @@ public class DriftConfigurationDefinition implements Serializable {
public static final String PROP_PATH = "path"; // for both include and exclude
public static final String PROP_PATTERN = "pattern"; // for both include and exclude
- // because we know drift config names will actually be used by the agent's plugin container as directories names,
+ // because we know drift definition names will actually be used by the agent's plugin container as directories names,
// we must make sure they are restricted to only be characters valid for file system pathnames.
// Thus, we only allow config names to only include spaces or "." or "-" or alphanumeric or "_" characters.
public static final String PROP_NAME_REGEX_PATTERN = "[ \\.\\-\\w]+";
@@ -110,9 +110,9 @@ public class DriftConfigurationDefinition implements Serializable {
}
/**
- * Returns a configuration definition suitable for showing an existing drift configuration.
+ * Returns a configuration definition suitable for showing an existing drift definition.
* This will set certain fields as read-only - those fields which the user is not allowed to
- * edit on exiting drift configurations (which includes name, basedir and includes/excludes filters).
+ * edit on exiting drift definition (which includes name, basedir and includes/excludes filters).
*
* @return configuration definition
*/
diff --git a/modules/core/domain/src/test/java/org/rhq/core/domain/drift/DriftConfigurationTest.java b/modules/core/domain/src/test/java/org/rhq/core/domain/drift/DriftConfigurationTest.java
deleted file mode 100644
index ddf1ffe..0000000
--- a/modules/core/domain/src/test/java/org/rhq/core/domain/drift/DriftConfigurationTest.java
+++ /dev/null
@@ -1,322 +0,0 @@
-package org.rhq.core.domain.drift;
-
-import static java.util.Arrays.asList;
-import static org.rhq.core.domain.drift.DriftConfigurationDefinition.PROP_BASEDIR;
-import static org.rhq.core.domain.drift.DriftConfigurationDefinition.PROP_BASEDIR_VALUECONTEXT;
-import static org.rhq.core.domain.drift.DriftConfigurationDefinition.PROP_BASEDIR_VALUENAME;
-import static org.rhq.core.domain.drift.DriftConfigurationDefinition.BaseDirValueContext.fileSystem;
-import static org.testng.Assert.assertEquals;
-
-import java.util.List;
-
-import org.testng.annotations.Test;
-
-import org.rhq.core.domain.configuration.Configuration;
-import org.rhq.core.domain.configuration.PropertyList;
-import org.rhq.core.domain.configuration.PropertyMap;
-import org.rhq.core.domain.configuration.PropertySimple;
-import org.rhq.core.domain.drift.DriftDefinitionComparator.CompareMode;
-import org.rhq.core.domain.drift.DriftConfigurationDefinition.BaseDirValueContext;
-import org.rhq.core.domain.drift.DriftConfigurationDefinition.DriftHandlingMode;
-
-public class DriftConfigurationTest {
- @Test
- public void getCompareIgnoreIncludesExcludes() {
- DriftDefinitionComparator comparator = new DriftDefinitionComparator(CompareMode.ONLY_BASE_INFO);
-
- DriftDefinition dc1 = new DriftDefinition(new Configuration());
- DriftDefinition dc2 = new DriftDefinition(new Configuration());
-
- // make sure our comparator can deal with all the nulls that are in empty configs
- assert comparator.compare(dc1, dc2) == 0 : dc1 + " should equal " + dc2;
- dc1.setEnabled(false);
- assert comparator.compare(dc1, dc2) != 0 : dc1 + " should not equal " + dc2;
- assert comparator.compare(dc2, dc1) != 0 : dc2 + " should not equal " + dc1;
- dc1.setInterval(1000L);
- dc1.setDriftHandlingMode(DriftHandlingMode.normal);
- assert comparator.compare(dc1, dc2) != 0 : dc1 + " should not equal " + dc2;
- assert comparator.compare(dc2, dc1) != 0 : dc2 + " should not equal " + dc1;
- dc1.setName("the-name");
- assert comparator.compare(dc1, dc2) != 0 : dc1 + " should not equal " + dc2;
- assert comparator.compare(dc2, dc1) != 0 : dc2 + " should not equal " + dc1;
-
- dc2.setEnabled(false);
- dc2.setInterval(1000L);
- dc2.setDriftHandlingMode(DriftHandlingMode.normal);
- dc2.setName("the-name");
-
- assert comparator.compare(dc1, dc2) == 0 : dc1 + " should equal " + dc2;
-
- dc1.setEnabled(!dc2.isEnabled());
- assert comparator.compare(dc1, dc2) > 0 : dc1 + " should have different enabled than " + dc2;
-
- dc1.setEnabled(dc2.isEnabled()); // put them back to the same value
- dc1.setInterval(dc2.getInterval() + 2222L);
- assert comparator.compare(dc1, dc2) > 0 : dc1 + " should have different interval than " + dc2;
-
- dc1.setInterval(dc2.getInterval()); // put them back to the same value
- dc1.setDriftHandlingMode(DriftHandlingMode.plannedChanges);
- assert comparator.compare(dc1, dc2) > 0 : dc1 + " should have different drift handling mode than " + dc2;
-
- dc1.setDriftHandlingMode(DriftHandlingMode.normal); // put them back to the same value
- dc1.setName("zzzzz" + dc2.getName());
- assert comparator.compare(dc1, dc2) > 0 : dc1 + " should have different name than " + dc2;
-
- dc1.setName(dc2.getName()); // put them back to the same value
- assert comparator.compare(dc1, dc2) == 0 : dc1 + " should equal " + dc2; // sanity check - we should be back to equals
-
- // add some includes and excludes that are different and test that they are ignored by our comparator
- dc1.setBasedir(new DriftDefinition.BaseDirectory(BaseDirValueContext.fileSystem, "/foo"));
- dc2.setBasedir(new DriftDefinition.BaseDirectory(BaseDirValueContext.pluginConfiguration, "blah"));
- dc1.addInclude(new Filter("ipath1", "ipattern1"));
- dc2.addInclude(new Filter("ipath2", "ipattern2"));
- dc1.addExclude(new Filter("epath1", "epattern1"));
- dc2.addExclude(new Filter("epath2", "epattern2"));
-
- assert comparator.compare(dc1, dc2) == 0 : dc1 + " should equal (ignoring basedir/includes/excludes) " + dc2;
-
- // now show that our non-ignoring comparator would detect a different
- comparator = new DriftDefinitionComparator(CompareMode.BOTH_BASE_INFO_AND_DIRECTORY_SPECIFICATIONS);
- assert comparator.compare(dc1, dc2) != 0 : dc1 + " should not equal (not ignoring basedir/includes/excludes) "
- + dc2;
- }
-
- @Test
- public void getCompareBaseInfoAndIncludesExcludes() {
- DriftDefinitionComparator comparator = new DriftDefinitionComparator(
- CompareMode.BOTH_BASE_INFO_AND_DIRECTORY_SPECIFICATIONS);
-
- DriftDefinition dc1 = new DriftDefinition(new Configuration());
- DriftDefinition dc2 = new DriftDefinition(new Configuration());
-
- dc1.setEnabled(true);
- dc1.setInterval(1000L);
- dc1.setDriftHandlingMode(DriftHandlingMode.normal);
- dc1.setName("the-name");
-
- dc2.setEnabled(true);
- dc2.setInterval(1000L);
- dc2.setDriftHandlingMode(DriftHandlingMode.normal);
- dc2.setName("the-name");
-
- getCompareBaseInfoAndIncludesExcludes(comparator, dc1, dc2);
- }
-
- @Test
- public void getCompareOnlyIncludesExcludes() {
- DriftDefinitionComparator comparator = new DriftDefinitionComparator(
- CompareMode.ONLY_DIRECTORY_SPECIFICATIONS);
-
- DriftDefinition dc1 = new DriftDefinition(new Configuration());
- DriftDefinition dc2 = new DriftDefinition(new Configuration());
-
- dc1.setEnabled(false);
- dc1.setInterval(1111L);
- dc2.setDriftHandlingMode(DriftHandlingMode.normal);
- dc1.setName("some-name");
-
- dc2.setEnabled(true);
- dc2.setInterval(2222L);
- dc2.setDriftHandlingMode(DriftHandlingMode.plannedChanges);
- dc2.setName("another-name");
-
- getCompareBaseInfoAndIncludesExcludes(comparator, dc1, dc2);
- }
-
- /**
- * Used by two main tests - we are to pass in a comparator that compares both base info
- * and filters (with dc1 and dc2 having the same base info to make sure that data is compared too)
- * and then we are to pass in a comparator that compares only the filters (with dc1 and
- * dc2 having different base info to make sure that data is ignored).
- *
- * Note that when first called, comparator is assumed to see that dc1 and dc2 are the same.
- *
- * @param comparator used to test changes in filters
- * @param dc1 the initial drift config1 to test
- * @param dc2 the initial drift config2 to test
- */
- private void getCompareBaseInfoAndIncludesExcludes(DriftDefinitionComparator comparator, DriftDefinition dc1,
- DriftDefinition dc2) {
-
- assert comparator.compare(dc1, dc2) == 0 : dc1 + " should equal " + dc2; // sanity check
-
- dc1.setBasedir(new DriftDefinition.BaseDirectory(BaseDirValueContext.pluginConfiguration, "hello.world"));
- assert comparator.compare(dc1, dc2) != 0 : dc1 + " should not equal " + dc2;
- assert comparator.compare(dc2, dc1) != 0 : dc2 + " should not equal " + dc1;
-
- dc2.setBasedir(new DriftDefinition.BaseDirectory(BaseDirValueContext.pluginConfiguration, "hello.world"));
- assert comparator.compare(dc1, dc2) == 0 : dc1 + " should now be equal " + dc2;
- assert comparator.compare(dc2, dc1) == 0 : dc2 + " should now be equal " + dc1;
-
- dc1.addInclude(new Filter("ipath1", "ipattern1"));
- assert comparator.compare(dc1, dc2) != 0 : dc1 + " should not equal " + dc2;
- assert comparator.compare(dc2, dc1) != 0 : dc2 + " should not equal " + dc1;
-
- dc2.addInclude(new Filter("ipath1", "ipattern1"));
- assert comparator.compare(dc1, dc2) == 0 : dc1 + " should now be equal " + dc2;
- assert comparator.compare(dc2, dc1) == 0 : dc2 + " should now be equal " + dc1;
-
- // add a second include to see that we test multiple filters
- dc1.addInclude(new Filter("ipath2", "ipattern2"));
- assert comparator.compare(dc1, dc2) != 0 : dc1 + " should not equal " + dc2;
- assert comparator.compare(dc2, dc1) != 0 : dc2 + " should not equal " + dc1;
-
- dc2.addInclude(new Filter("ipath2", "ipattern2"));
- assert comparator.compare(dc1, dc2) == 0 : dc1 + " should now be equal " + dc2;
- assert comparator.compare(dc2, dc1) == 0 : dc2 + " should now be equal " + dc1;
-
- // side test just to see null patterns work
- dc1.addInclude(new Filter("ipath3", null));
- assert comparator.compare(dc1, dc2) != 0 : dc1 + " should not equal " + dc2;
- assert comparator.compare(dc2, dc1) != 0 : dc2 + " should not equal " + dc1;
-
- dc2.addInclude(new Filter("ipath3", null));
- assert comparator.compare(dc1, dc2) == 0 : dc1 + " should now be equal " + dc2;
- assert comparator.compare(dc2, dc1) == 0 : dc2 + " should now be equal " + dc1;
-
- // now test excludes
-
- dc1.addExclude(new Filter("epath1", "epattern1"));
- assert comparator.compare(dc1, dc2) != 0 : dc1 + " should not equal " + dc2;
- assert comparator.compare(dc2, dc1) != 0 : dc2 + " should not equal " + dc1;
-
- dc2.addExclude(new Filter("epath1", "epattern1"));
- assert comparator.compare(dc1, dc2) == 0 : dc1 + " should now be equal " + dc2;
- assert comparator.compare(dc2, dc1) == 0 : dc2 + " should now be equal " + dc1;
-
- // add a second exclude to see that we test multiple filters
- dc1.addExclude(new Filter("epath2", "epattern2"));
- assert comparator.compare(dc1, dc2) != 0 : dc1 + " should not equal " + dc2;
- assert comparator.compare(dc2, dc1) != 0 : dc2 + " should not equal " + dc1;
-
- dc2.addExclude(new Filter("epath2", "epattern2"));
- assert comparator.compare(dc1, dc2) == 0 : dc1 + " should now be equal " + dc2;
- assert comparator.compare(dc2, dc1) == 0 : dc2 + " should now be equal " + dc1;
-
- // now test that we have the same number of filters but they differ
-
- dc1.addInclude(new Filter("ipathA", "ipatternA"));
- dc2.addInclude(new Filter("ipathZ", "ipatternZ"));
- assert comparator.compare(dc1, dc2) != 0 : dc1 + " should not equal " + dc2;
- assert comparator.compare(dc2, dc1) != 0 : dc2 + " should not equal " + dc1;
-
- // we don't provide an API to clear filters, so just create new drift configs and test different excludes
- dc1 = new DriftDefinition(new Configuration());
- dc2 = new DriftDefinition(new Configuration());
- assert comparator.compare(dc1, dc2) == 0 : dc1 + " should equal " + dc2; // sanity check
- dc1.addExclude(new Filter("epathA", "epatternA"));
- dc2.addExclude(new Filter("epathZ", "epatternZ"));
- assert comparator.compare(dc1, dc2) != 0 : dc1 + " should not equal " + dc2;
- assert comparator.compare(dc2, dc1) != 0 : dc2 + " should not equal " + dc1;
- }
-
- @Test
- public void getName() {
- String name = "test";
- Configuration config = new Configuration();
- config.put(new PropertySimple("name", name));
-
- DriftDefinition driftConfig = new DriftDefinition(config);
-
- assertEquals(driftConfig.getName(), name, "Failed to get drift configuration name");
- }
-
- @Test
- public void getBasedirForFileSystemContext() {
- String basedir = "/opt/drift/test";
- Configuration config = new Configuration();
-
- PropertyMap map = new PropertyMap(PROP_BASEDIR);
- map.put(new PropertySimple(PROP_BASEDIR_VALUECONTEXT, fileSystem));
- map.put(new PropertySimple(PROP_BASEDIR_VALUENAME, basedir));
-
- config.put(map);
-
- DriftDefinition driftConfig = new DriftDefinition(config);
-
- assertEquals(driftConfig.getBasedir().getValueName(), basedir,
- "Failed to get drift configuration base directory");
- }
-
- @Test
- public void getInterval() {
- long interval = 3600L;
- Configuration config = new Configuration();
- config.put(new PropertySimple("interval", interval));
-
- DriftDefinition driftConfig = new DriftDefinition(config);
-
- assertEquals(driftConfig.getInterval(), interval, "Failed to get drift configuration interval");
- }
-
- @Test
- public void getDriftHandlingMode() {
- DriftHandlingMode mode = DriftHandlingMode.normal;
- Configuration config = new Configuration();
- config.put(new PropertySimple(DriftConfigurationDefinition.PROP_DRIFT_HANDLING_MODE, mode.name()));
- DriftDefinition driftConfig = new DriftDefinition(config);
- assertEquals(driftConfig.getDriftHandlingMode(), mode, "Failed to get drift configuration drift handling mode");
-
- mode = DriftHandlingMode.plannedChanges;
- driftConfig.setDriftHandlingMode(mode);
- assertEquals(driftConfig.getDriftHandlingMode(), mode, "Failed to get drift configuration drift handling mode");
- }
-
- @Test
- public void getIncludes() {
- String path1 = "lib";
- String pattern1 = "*.jar";
-
- String path2 = "conf";
- String pattern2 = "*.xml";
-
- Configuration config = new Configuration();
-
- PropertyList includes = new PropertyList("includes");
- includes.add(newInclude(path1, pattern1));
- includes.add(newInclude(path2, pattern2));
-
- config.put(includes);
-
- DriftDefinition driftConfig = new DriftDefinition(config);
- List<Filter> actual = driftConfig.getIncludes();
-
- List<Filter> expected = asList(new Filter(path1, pattern1), new Filter(path2, pattern2));
-
- assertEquals(actual.size(), 2, "Expected to find two includes filters");
- assertEquals(actual, expected, "Failed to get drift configuration includes filters");
- }
-
- @Test
- public void getExcludes() {
- String path1 = "lib";
- String pattern1 = "*.jar";
-
- String path2 = "conf";
- String pattern2 = "*.xml";
-
- Configuration config = new Configuration();
-
- PropertyList excludes = new PropertyList("excludes");
- excludes.add(newExclude(path1, pattern1));
- excludes.add(newExclude(path2, pattern2));
-
- config.put(excludes);
-
- DriftDefinition driftConfig = new DriftDefinition(config);
- List<Filter> actual = driftConfig.getExcludes();
-
- List<Filter> expected = asList(new Filter(path1, pattern1), new Filter(path2, pattern2));
-
- assertEquals(actual.size(), 2, "Expected to find two excludes filters");
- assertEquals(actual, expected, "Failed to get drift configuration excludes filters");
- }
-
- private PropertyMap newInclude(String path, String pattern) {
- return new PropertyMap("include", new PropertySimple("path", path), new PropertySimple("pattern", pattern));
- }
-
- private PropertyMap newExclude(String path, String pattern) {
- return new PropertyMap("exclude", new PropertySimple("path", path), new PropertySimple("pattern", pattern));
- }
-}
diff --git a/modules/core/domain/src/test/java/org/rhq/core/domain/drift/DriftDefinitionTest.java b/modules/core/domain/src/test/java/org/rhq/core/domain/drift/DriftDefinitionTest.java
new file mode 100644
index 0000000..8f2cc32
--- /dev/null
+++ b/modules/core/domain/src/test/java/org/rhq/core/domain/drift/DriftDefinitionTest.java
@@ -0,0 +1,320 @@
+package org.rhq.core.domain.drift;
+
+import static java.util.Arrays.asList;
+import static org.rhq.core.domain.drift.DriftConfigurationDefinition.PROP_BASEDIR;
+import static org.rhq.core.domain.drift.DriftConfigurationDefinition.PROP_BASEDIR_VALUECONTEXT;
+import static org.rhq.core.domain.drift.DriftConfigurationDefinition.PROP_BASEDIR_VALUENAME;
+import static org.rhq.core.domain.drift.DriftConfigurationDefinition.BaseDirValueContext.fileSystem;
+import static org.testng.Assert.assertEquals;
+
+import java.util.List;
+
+import org.testng.annotations.Test;
+
+import org.rhq.core.domain.configuration.Configuration;
+import org.rhq.core.domain.configuration.PropertyList;
+import org.rhq.core.domain.configuration.PropertyMap;
+import org.rhq.core.domain.configuration.PropertySimple;
+import org.rhq.core.domain.drift.DriftConfigurationDefinition.BaseDirValueContext;
+import org.rhq.core.domain.drift.DriftConfigurationDefinition.DriftHandlingMode;
+import org.rhq.core.domain.drift.DriftDefinitionComparator.CompareMode;
+
+public class DriftDefinitionTest {
+ @Test
+ public void getCompareIgnoreIncludesExcludes() {
+ DriftDefinitionComparator comparator = new DriftDefinitionComparator(CompareMode.ONLY_BASE_INFO);
+
+ DriftDefinition dc1 = new DriftDefinition(new Configuration());
+ DriftDefinition dc2 = new DriftDefinition(new Configuration());
+
+ // make sure our comparator can deal with all the nulls that are in empty configs
+ assert comparator.compare(dc1, dc2) == 0 : dc1 + " should equal " + dc2;
+ dc1.setEnabled(false);
+ assert comparator.compare(dc1, dc2) != 0 : dc1 + " should not equal " + dc2;
+ assert comparator.compare(dc2, dc1) != 0 : dc2 + " should not equal " + dc1;
+ dc1.setInterval(1000L);
+ dc1.setDriftHandlingMode(DriftHandlingMode.normal);
+ assert comparator.compare(dc1, dc2) != 0 : dc1 + " should not equal " + dc2;
+ assert comparator.compare(dc2, dc1) != 0 : dc2 + " should not equal " + dc1;
+ dc1.setName("the-name");
+ assert comparator.compare(dc1, dc2) != 0 : dc1 + " should not equal " + dc2;
+ assert comparator.compare(dc2, dc1) != 0 : dc2 + " should not equal " + dc1;
+
+ dc2.setEnabled(false);
+ dc2.setInterval(1000L);
+ dc2.setDriftHandlingMode(DriftHandlingMode.normal);
+ dc2.setName("the-name");
+
+ assert comparator.compare(dc1, dc2) == 0 : dc1 + " should equal " + dc2;
+
+ dc1.setEnabled(!dc2.isEnabled());
+ assert comparator.compare(dc1, dc2) > 0 : dc1 + " should have different enabled than " + dc2;
+
+ dc1.setEnabled(dc2.isEnabled()); // put them back to the same value
+ dc1.setInterval(dc2.getInterval() + 2222L);
+ assert comparator.compare(dc1, dc2) > 0 : dc1 + " should have different interval than " + dc2;
+
+ dc1.setInterval(dc2.getInterval()); // put them back to the same value
+ dc1.setDriftHandlingMode(DriftHandlingMode.plannedChanges);
+ assert comparator.compare(dc1, dc2) > 0 : dc1 + " should have different drift handling mode than " + dc2;
+
+ dc1.setDriftHandlingMode(DriftHandlingMode.normal); // put them back to the same value
+ dc1.setName("zzzzz" + dc2.getName());
+ assert comparator.compare(dc1, dc2) > 0 : dc1 + " should have different name than " + dc2;
+
+ dc1.setName(dc2.getName()); // put them back to the same value
+ assert comparator.compare(dc1, dc2) == 0 : dc1 + " should equal " + dc2; // sanity check - we should be back to equals
+
+ // add some includes and excludes that are different and test that they are ignored by our comparator
+ dc1.setBasedir(new DriftDefinition.BaseDirectory(BaseDirValueContext.fileSystem, "/foo"));
+ dc2.setBasedir(new DriftDefinition.BaseDirectory(BaseDirValueContext.pluginConfiguration, "blah"));
+ dc1.addInclude(new Filter("ipath1", "ipattern1"));
+ dc2.addInclude(new Filter("ipath2", "ipattern2"));
+ dc1.addExclude(new Filter("epath1", "epattern1"));
+ dc2.addExclude(new Filter("epath2", "epattern2"));
+
+ assert comparator.compare(dc1, dc2) == 0 : dc1 + " should equal (ignoring basedir/includes/excludes) " + dc2;
+
+ // now show that our non-ignoring comparator would detect a different
+ comparator = new DriftDefinitionComparator(CompareMode.BOTH_BASE_INFO_AND_DIRECTORY_SPECIFICATIONS);
+ assert comparator.compare(dc1, dc2) != 0 : dc1 + " should not equal (not ignoring basedir/includes/excludes) "
+ + dc2;
+ }
+
+ @Test
+ public void getCompareBaseInfoAndIncludesExcludes() {
+ DriftDefinitionComparator comparator = new DriftDefinitionComparator(
+ CompareMode.BOTH_BASE_INFO_AND_DIRECTORY_SPECIFICATIONS);
+
+ DriftDefinition dc1 = new DriftDefinition(new Configuration());
+ DriftDefinition dc2 = new DriftDefinition(new Configuration());
+
+ dc1.setEnabled(true);
+ dc1.setInterval(1000L);
+ dc1.setDriftHandlingMode(DriftHandlingMode.normal);
+ dc1.setName("the-name");
+
+ dc2.setEnabled(true);
+ dc2.setInterval(1000L);
+ dc2.setDriftHandlingMode(DriftHandlingMode.normal);
+ dc2.setName("the-name");
+
+ getCompareBaseInfoAndIncludesExcludes(comparator, dc1, dc2);
+ }
+
+ @Test
+ public void getCompareOnlyIncludesExcludes() {
+ DriftDefinitionComparator comparator = new DriftDefinitionComparator(CompareMode.ONLY_DIRECTORY_SPECIFICATIONS);
+
+ DriftDefinition dc1 = new DriftDefinition(new Configuration());
+ DriftDefinition dc2 = new DriftDefinition(new Configuration());
+
+ dc1.setEnabled(false);
+ dc1.setInterval(1111L);
+ dc2.setDriftHandlingMode(DriftHandlingMode.normal);
+ dc1.setName("some-name");
+
+ dc2.setEnabled(true);
+ dc2.setInterval(2222L);
+ dc2.setDriftHandlingMode(DriftHandlingMode.plannedChanges);
+ dc2.setName("another-name");
+
+ getCompareBaseInfoAndIncludesExcludes(comparator, dc1, dc2);
+ }
+
+ /**
+ * Used by two main tests - we are to pass in a comparator that compares both base info
+ * and filters (with dc1 and dc2 having the same base info to make sure that data is compared too)
+ * and then we are to pass in a comparator that compares only the filters (with dc1 and
+ * dc2 having different base info to make sure that data is ignored).
+ *
+ * Note that when first called, comparator is assumed to see that dc1 and dc2 are the same.
+ *
+ * @param comparator used to test changes in filters
+ * @param dc1 the initial drift definition1 to test
+ * @param dc2 the initial drift definition2 to test
+ */
+ private void getCompareBaseInfoAndIncludesExcludes(DriftDefinitionComparator comparator, DriftDefinition dc1,
+ DriftDefinition dc2) {
+
+ assert comparator.compare(dc1, dc2) == 0 : dc1 + " should equal " + dc2; // sanity check
+
+ dc1.setBasedir(new DriftDefinition.BaseDirectory(BaseDirValueContext.pluginConfiguration, "hello.world"));
+ assert comparator.compare(dc1, dc2) != 0 : dc1 + " should not equal " + dc2;
+ assert comparator.compare(dc2, dc1) != 0 : dc2 + " should not equal " + dc1;
+
+ dc2.setBasedir(new DriftDefinition.BaseDirectory(BaseDirValueContext.pluginConfiguration, "hello.world"));
+ assert comparator.compare(dc1, dc2) == 0 : dc1 + " should now be equal " + dc2;
+ assert comparator.compare(dc2, dc1) == 0 : dc2 + " should now be equal " + dc1;
+
+ dc1.addInclude(new Filter("ipath1", "ipattern1"));
+ assert comparator.compare(dc1, dc2) != 0 : dc1 + " should not equal " + dc2;
+ assert comparator.compare(dc2, dc1) != 0 : dc2 + " should not equal " + dc1;
+
+ dc2.addInclude(new Filter("ipath1", "ipattern1"));
+ assert comparator.compare(dc1, dc2) == 0 : dc1 + " should now be equal " + dc2;
+ assert comparator.compare(dc2, dc1) == 0 : dc2 + " should now be equal " + dc1;
+
+ // add a second include to see that we test multiple filters
+ dc1.addInclude(new Filter("ipath2", "ipattern2"));
+ assert comparator.compare(dc1, dc2) != 0 : dc1 + " should not equal " + dc2;
+ assert comparator.compare(dc2, dc1) != 0 : dc2 + " should not equal " + dc1;
+
+ dc2.addInclude(new Filter("ipath2", "ipattern2"));
+ assert comparator.compare(dc1, dc2) == 0 : dc1 + " should now be equal " + dc2;
+ assert comparator.compare(dc2, dc1) == 0 : dc2 + " should now be equal " + dc1;
+
+ // side test just to see null patterns work
+ dc1.addInclude(new Filter("ipath3", null));
+ assert comparator.compare(dc1, dc2) != 0 : dc1 + " should not equal " + dc2;
+ assert comparator.compare(dc2, dc1) != 0 : dc2 + " should not equal " + dc1;
+
+ dc2.addInclude(new Filter("ipath3", null));
+ assert comparator.compare(dc1, dc2) == 0 : dc1 + " should now be equal " + dc2;
+ assert comparator.compare(dc2, dc1) == 0 : dc2 + " should now be equal " + dc1;
+
+ // now test excludes
+
+ dc1.addExclude(new Filter("epath1", "epattern1"));
+ assert comparator.compare(dc1, dc2) != 0 : dc1 + " should not equal " + dc2;
+ assert comparator.compare(dc2, dc1) != 0 : dc2 + " should not equal " + dc1;
+
+ dc2.addExclude(new Filter("epath1", "epattern1"));
+ assert comparator.compare(dc1, dc2) == 0 : dc1 + " should now be equal " + dc2;
+ assert comparator.compare(dc2, dc1) == 0 : dc2 + " should now be equal " + dc1;
+
+ // add a second exclude to see that we test multiple filters
+ dc1.addExclude(new Filter("epath2", "epattern2"));
+ assert comparator.compare(dc1, dc2) != 0 : dc1 + " should not equal " + dc2;
+ assert comparator.compare(dc2, dc1) != 0 : dc2 + " should not equal " + dc1;
+
+ dc2.addExclude(new Filter("epath2", "epattern2"));
+ assert comparator.compare(dc1, dc2) == 0 : dc1 + " should now be equal " + dc2;
+ assert comparator.compare(dc2, dc1) == 0 : dc2 + " should now be equal " + dc1;
+
+ // now test that we have the same number of filters but they differ
+
+ dc1.addInclude(new Filter("ipathA", "ipatternA"));
+ dc2.addInclude(new Filter("ipathZ", "ipatternZ"));
+ assert comparator.compare(dc1, dc2) != 0 : dc1 + " should not equal " + dc2;
+ assert comparator.compare(dc2, dc1) != 0 : dc2 + " should not equal " + dc1;
+
+ // we don't provide an API to clear filters, so just create new drift definitions and test different excludes
+ dc1 = new DriftDefinition(new Configuration());
+ dc2 = new DriftDefinition(new Configuration());
+ assert comparator.compare(dc1, dc2) == 0 : dc1 + " should equal " + dc2; // sanity check
+ dc1.addExclude(new Filter("epathA", "epatternA"));
+ dc2.addExclude(new Filter("epathZ", "epatternZ"));
+ assert comparator.compare(dc1, dc2) != 0 : dc1 + " should not equal " + dc2;
+ assert comparator.compare(dc2, dc1) != 0 : dc2 + " should not equal " + dc1;
+ }
+
+ @Test
+ public void getName() {
+ String name = "test";
+ Configuration config = new Configuration();
+ config.put(new PropertySimple("name", name));
+
+ DriftDefinition driftDef = new DriftDefinition(config);
+
+ assertEquals(driftDef.getName(), name, "Failed to get drift definition name");
+ }
+
+ @Test
+ public void getBasedirForFileSystemContext() {
+ String basedir = "/opt/drift/test";
+ Configuration config = new Configuration();
+
+ PropertyMap map = new PropertyMap(PROP_BASEDIR);
+ map.put(new PropertySimple(PROP_BASEDIR_VALUECONTEXT, fileSystem));
+ map.put(new PropertySimple(PROP_BASEDIR_VALUENAME, basedir));
+
+ config.put(map);
+
+ DriftDefinition driftDef = new DriftDefinition(config);
+
+ assertEquals(driftDef.getBasedir().getValueName(), basedir, "Failed to get drift definition base directory");
+ }
+
+ @Test
+ public void getInterval() {
+ long interval = 3600L;
+ Configuration config = new Configuration();
+ config.put(new PropertySimple("interval", interval));
+
+ DriftDefinition driftDef = new DriftDefinition(config);
+
+ assertEquals(driftDef.getInterval(), interval, "Failed to get drift definition interval");
+ }
+
+ @Test
+ public void getDriftHandlingMode() {
+ DriftHandlingMode mode = DriftHandlingMode.normal;
+ Configuration config = new Configuration();
+ config.put(new PropertySimple(DriftConfigurationDefinition.PROP_DRIFT_HANDLING_MODE, mode.name()));
+ DriftDefinition driftDef = new DriftDefinition(config);
+ assertEquals(driftDef.getDriftHandlingMode(), mode, "Failed to get drift definition drift handling mode");
+
+ mode = DriftHandlingMode.plannedChanges;
+ driftDef.setDriftHandlingMode(mode);
+ assertEquals(driftDef.getDriftHandlingMode(), mode, "Failed to get drift definition drift handling mode");
+ }
+
+ @Test
+ public void getIncludes() {
+ String path1 = "lib";
+ String pattern1 = "*.jar";
+
+ String path2 = "conf";
+ String pattern2 = "*.xml";
+
+ Configuration config = new Configuration();
+
+ PropertyList includes = new PropertyList("includes");
+ includes.add(newInclude(path1, pattern1));
+ includes.add(newInclude(path2, pattern2));
+
+ config.put(includes);
+
+ DriftDefinition driftDef = new DriftDefinition(config);
+ List<Filter> actual = driftDef.getIncludes();
+
+ List<Filter> expected = asList(new Filter(path1, pattern1), new Filter(path2, pattern2));
+
+ assertEquals(actual.size(), 2, "Expected to find two includes filters");
+ assertEquals(actual, expected, "Failed to get drift definition includes filters");
+ }
+
+ @Test
+ public void getExcludes() {
+ String path1 = "lib";
+ String pattern1 = "*.jar";
+
+ String path2 = "conf";
+ String pattern2 = "*.xml";
+
+ Configuration config = new Configuration();
+
+ PropertyList excludes = new PropertyList("excludes");
+ excludes.add(newExclude(path1, pattern1));
+ excludes.add(newExclude(path2, pattern2));
+
+ config.put(excludes);
+
+ DriftDefinition driftDef = new DriftDefinition(config);
+ List<Filter> actual = driftDef.getExcludes();
+
+ List<Filter> expected = asList(new Filter(path1, pattern1), new Filter(path2, pattern2));
+
+ assertEquals(actual.size(), 2, "Expected to find two excludes filters");
+ assertEquals(actual, expected, "Failed to get drift definition excludes filters");
+ }
+
+ private PropertyMap newInclude(String path, String pattern) {
+ return new PropertyMap("include", new PropertySimple("path", path), new PropertySimple("pattern", pattern));
+ }
+
+ private PropertyMap newExclude(String path, String pattern) {
+ return new PropertyMap("exclude", new PropertySimple("path", path), new PropertySimple("pattern", pattern));
+ }
+}
diff --git a/modules/core/domain/src/test/java/org/rhq/core/domain/resource/ResourceTypeTest.java b/modules/core/domain/src/test/java/org/rhq/core/domain/resource/ResourceTypeTest.java
index a1f4340..b61d43d 100644
--- a/modules/core/domain/src/test/java/org/rhq/core/domain/resource/ResourceTypeTest.java
+++ b/modules/core/domain/src/test/java/org/rhq/core/domain/resource/ResourceTypeTest.java
@@ -86,7 +86,7 @@ public class ResourceTypeTest extends UnitilsTestNG {
@Test(groups = "unitils", dependsOnGroups = TEST_GROUP_DEPS)
@SuppressWarnings("unchecked")
- public void findDriftConfigurationTemplates() {
+ public void findDriftDefinitionTemplates() {
ResourceType type = entityMgr.find(ResourceType.class, -8);
assertEquals(type.getDriftDefinitionTemplates().size(), 2);
diff --git a/modules/core/plugin-container/src/main/java/org/rhq/core/pc/inventory/InventoryManager.java b/modules/core/plugin-container/src/main/java/org/rhq/core/pc/inventory/InventoryManager.java
index a8927a5..f9f0b66 100644
--- a/modules/core/plugin-container/src/main/java/org/rhq/core/pc/inventory/InventoryManager.java
+++ b/modules/core/plugin-container/src/main/java/org/rhq/core/pc/inventory/InventoryManager.java
@@ -2016,7 +2016,7 @@ public class InventoryManager extends AgentService implements ContainerService,
}
}
- private void syncDriftConfigurationsRecursively(Resource resource) {
+ private void syncDriftDefinitionsRecursively(Resource resource) {
if (resource.getInventoryStatus() != InventoryStatus.COMMITTED) {
return;
}
@@ -2067,9 +2067,9 @@ public class InventoryManager extends AgentService implements ContainerService,
installSchedules(scheduleRequests);
}
- private void syncDriftConfigurations(Set<Resource> resources) {
+ private void syncDriftDefinitions(Set<Resource> resources) {
if (log.isDebugEnabled()) {
- log.debug("Syncing drift configurations for " + resources);
+ log.debug("Syncing drift definitions for " + resources);
}
if (resources.isEmpty()) {
@@ -2545,7 +2545,7 @@ public class InventoryManager extends AgentService implements ContainerService,
Set<Resource> modifiedResources = configuration.getServerServices().getDiscoveryServerService().getResources(
modifiedResourceIds, false);
syncSchedules(modifiedResources); // RHQ-792, mtime is the indicator that schedules should be sync'ed too
- syncDriftConfigurations(modifiedResources);
+ syncDriftDefinitions(modifiedResources);
for (Resource modifiedResource : modifiedResources) {
mergeResource(modifiedResource);
}
@@ -2570,7 +2570,7 @@ public class InventoryManager extends AgentService implements ContainerService,
if (resourceType != null) {
mergeResource(unknownResource);
syncSchedulesRecursively(unknownResource);
- syncDriftConfigurationsRecursively(unknownResource);
+ syncDriftDefinitionsRecursively(unknownResource);
} else {
toBeIgnored.add(unknownResource.getId());
if (log.isDebugEnabled()) {
diff --git a/modules/core/plugin-container/src/test/java/org/rhq/core/pc/drift/ChangeSetManagerImplTest.java b/modules/core/plugin-container/src/test/java/org/rhq/core/pc/drift/ChangeSetManagerImplTest.java
index 05d9ccc..6e016b6 100644
--- a/modules/core/plugin-container/src/test/java/org/rhq/core/pc/drift/ChangeSetManagerImplTest.java
+++ b/modules/core/plugin-container/src/test/java/org/rhq/core/pc/drift/ChangeSetManagerImplTest.java
@@ -19,6 +19,14 @@
package org.rhq.core.pc.drift;
+import static org.rhq.common.drift.FileEntry.addedFileEntry;
+import static org.rhq.core.domain.drift.DriftChangeSetCategory.COVERAGE;
+import static org.rhq.core.domain.drift.DriftChangeSetCategory.DRIFT;
+import static org.testng.Assert.assertFalse;
+import static org.testng.Assert.assertNotNull;
+import static org.testng.Assert.assertNull;
+import static org.testng.Assert.assertTrue;
+
import java.io.File;
import org.testng.annotations.Test;
@@ -28,20 +36,12 @@ import org.rhq.common.drift.ChangeSetWriter;
import org.rhq.common.drift.Headers;
import org.rhq.core.domain.drift.DriftChangeSetCategory;
-import static org.rhq.common.drift.FileEntry.addedFileEntry;
-import static org.rhq.core.domain.drift.DriftChangeSetCategory.COVERAGE;
-import static org.rhq.core.domain.drift.DriftChangeSetCategory.DRIFT;
-import static org.testng.Assert.assertFalse;
-import static org.testng.Assert.assertNotNull;
-import static org.testng.Assert.assertNull;
-import static org.testng.Assert.assertTrue;
-
public class ChangeSetManagerImplTest extends DriftTest {
@Test
public void returnNullReaderWhenNoChangeSetExists() throws Exception {
ChangeSetReader reader = changeSetMgr.getChangeSetReader(resourceId(), "test");
- assertNull(reader, "Expect null for the reader when no change set exists for the drift configuration.");
+ assertNull(reader, "Expect null for the reader when no change set exists for the drift definition.");
}
@Test
@@ -91,11 +91,11 @@ public class ChangeSetManagerImplTest extends DriftTest {
assertNotNull(reader.read(), "Expected to find a file entry");
}
- Headers createHeaders(String driftConfigName, DriftChangeSetCategory type) {
+ Headers createHeaders(String driftDefName, DriftChangeSetCategory type) {
Headers headers = new Headers();
headers.setResourceId(resourceId());
headers.setDriftDefinitionId(1);
- headers.setDriftDefinitionName(driftConfigName);
+ headers.setDriftDefinitionName(driftDefName);
headers.setBasedir(resourceDir.getPath());
headers.setType(type);
diff --git a/modules/core/plugin-container/src/test/java/org/rhq/core/pc/drift/DriftDetectorTest.java b/modules/core/plugin-container/src/test/java/org/rhq/core/pc/drift/DriftDetectorTest.java
index 665233b..8e34274 100644
--- a/modules/core/plugin-container/src/test/java/org/rhq/core/pc/drift/DriftDetectorTest.java
+++ b/modules/core/plugin-container/src/test/java/org/rhq/core/pc/drift/DriftDetectorTest.java
@@ -84,13 +84,13 @@ public class DriftDetectorTest extends DriftTest {
// create an empty directory
File libDir = mkdir(resourceDir, "lib");
- DriftDefinition driftConfig = driftDefinition("coverage-test", resourceDir.getAbsolutePath());
+ DriftDefinition driftDef = driftDefinition("coverage-test", resourceDir.getAbsolutePath());
- scheduleQueue.addSchedule(new DriftDetectionSchedule(resourceId(), driftConfig));
+ scheduleQueue.addSchedule(new DriftDetectionSchedule(resourceId(), driftDef));
detector.run();
- File changeSet = changeSet(driftConfig.getName(), COVERAGE);
- Headers headers = createHeaders(driftConfig, COVERAGE);
+ File changeSet = changeSet(driftDef.getName(), COVERAGE);
+ Headers headers = createHeaders(driftDef, COVERAGE);
List<FileEntry> expected = asList(addedFileEntry("conf/server.conf", sha256(serverConf)));
assertHeaderEquals(changeSet, headers);
@@ -208,7 +208,7 @@ public class DriftDetectorTest extends DriftTest {
@Override
public void sendChangeSetToServer(DriftDetectionSummary detectionSummary) {
- throw new RuntimeException("Should not invoke drift client when drift configuration is disabled");
+ throw new RuntimeException("Should not invoke drift client when drift definition is disabled");
}
});
@@ -657,15 +657,15 @@ public class DriftDetectorTest extends DriftTest {
assertCollectionMatchesNoOrder(msg, expected, actual);
}
- Headers createHeaders(DriftDefinition driftConfig, DriftChangeSetCategory type) {
- return createHeaders(driftConfig, type, 0);
+ Headers createHeaders(DriftDefinition driftDef, DriftChangeSetCategory type) {
+ return createHeaders(driftDef, type, 0);
}
- Headers createHeaders(DriftDefinition driftConfig, DriftChangeSetCategory type, int version) {
+ Headers createHeaders(DriftDefinition driftDef, DriftChangeSetCategory type, int version) {
Headers headers = new Headers();
headers.setResourceId(resourceId());
- headers.setDriftDefinitionId(driftConfig.getId());
- headers.setDriftDefinitionName(driftConfig.getName());
+ headers.setDriftDefinitionId(driftDef.getId());
+ headers.setDriftDefinitionName(driftDef.getName());
headers.setBasedir(resourceDir.getAbsolutePath());
headers.setType(type);
headers.setVersion(version);
diff --git a/modules/core/plugin-container/src/test/java/org/rhq/core/pc/drift/DriftFilesSenderTest.java b/modules/core/plugin-container/src/test/java/org/rhq/core/pc/drift/DriftFilesSenderTest.java
index a70ab8c..5fd6528 100644
--- a/modules/core/plugin-container/src/test/java/org/rhq/core/pc/drift/DriftFilesSenderTest.java
+++ b/modules/core/plugin-container/src/test/java/org/rhq/core/pc/drift/DriftFilesSenderTest.java
@@ -55,7 +55,7 @@ public class DriftFilesSenderTest extends DriftTest {
@Test
public void sendFilesInOneDirectory() throws Exception {
- String driftConfigName = "single-directory-test";
+ String driftDefName = "single-directory-test";
File confDir = mkdir(resourceDir, "conf");
File server1Conf = createRandomFile(confDir, "server-1.conf");
@@ -64,9 +64,9 @@ public class DriftFilesSenderTest extends DriftTest {
String server1ConfHash = sha256(server1Conf);
String server2ConfHash = sha256(server2Conf);
- File changeSetDir = changeSetDir(driftConfigName);
+ File changeSetDir = changeSetDir(driftDefName);
- Headers headers = createHeaders(driftConfigName, COVERAGE);
+ Headers headers = createHeaders(driftDefName, COVERAGE);
ChangeSetWriter writer = changeSetMgr.getChangeSetWriter(resourceId(), headers);
writer.write(addedFileEntry("conf/server-1.conf", server1ConfHash));
@@ -74,7 +74,7 @@ public class DriftFilesSenderTest extends DriftTest {
writer.close();
sender.setDriftFiles(driftFiles(server1ConfHash, server2ConfHash));
- sender.setHeaders(createHeaders(driftConfigName, COVERAGE));
+ sender.setHeaders(createHeaders(driftDefName, COVERAGE));
sender.run();
File contentDir = mkdir(changeSetDir, "content");
@@ -86,7 +86,7 @@ public class DriftFilesSenderTest extends DriftTest {
@Test
public void sendFilesInMultipleDirectories() throws Exception {
- String driftConfigName = "multiple-directories-test";
+ String driftDefName = "multiple-directories-test";
File confDir = mkdir(resourceDir, "conf");
File libDir = mkdir(resourceDir, "lib");
@@ -100,9 +100,9 @@ public class DriftFilesSenderTest extends DriftTest {
String server1JarHash = sha256(server1Jar);
String server2JarHash = sha256(server2Jar);
- File changeSetDir = changeSetDir(driftConfigName);
+ File changeSetDir = changeSetDir(driftDefName);
- Headers headers = createHeaders(driftConfigName, COVERAGE);
+ Headers headers = createHeaders(driftDefName, COVERAGE);
ChangeSetWriter writer = changeSetMgr.getChangeSetWriter(resourceId(), headers);
writer.write(addedFileEntry("conf/server-1.conf", server1ConfHash));
@@ -114,7 +114,7 @@ public class DriftFilesSenderTest extends DriftTest {
// Note that the order of the drift files is random. When the server sends a request
// for files we cannot assume that the files will be in any particular order.
sender.setDriftFiles(driftFiles(server1JarHash, server2ConfHash, server2JarHash, server1ConfHash));
- sender.setHeaders(createHeaders(driftConfigName, COVERAGE));
+ sender.setHeaders(createHeaders(driftDefName, COVERAGE));
sender.run();
File contentDir = mkdir(changeSetDir, "content");
@@ -128,7 +128,7 @@ public class DriftFilesSenderTest extends DriftTest {
@Test
public void checkForFilesThatHaveBeenRemoved() throws Exception {
- String driftConfigName = "file-exists-test";
+ String driftDefName = "file-exists-test";
File confDir = mkdir(resourceDir, "conf");
File server1Conf = createRandomFile(confDir, "server-1.conf");
@@ -137,9 +137,9 @@ public class DriftFilesSenderTest extends DriftTest {
String server1ConfHash = sha256(server1Conf);
String server2ConfHash = sha256(server2Conf);
- File changeSetDir = changeSetDir(driftConfigName);
+ File changeSetDir = changeSetDir(driftDefName);
- Headers headers = createHeaders(driftConfigName, COVERAGE);
+ Headers headers = createHeaders(driftDefName, COVERAGE);
ChangeSetWriter writer = changeSetMgr.getChangeSetWriter(resourceId(), headers);
writer.write(addedFileEntry("conf/server-1.conf", server1ConfHash));
diff --git a/modules/core/plugin-container/src/test/java/org/rhq/core/pc/drift/DriftManagerTest.java b/modules/core/plugin-container/src/test/java/org/rhq/core/pc/drift/DriftManagerTest.java
index 319787c..efd7d68 100644
--- a/modules/core/plugin-container/src/test/java/org/rhq/core/pc/drift/DriftManagerTest.java
+++ b/modules/core/plugin-container/src/test/java/org/rhq/core/pc/drift/DriftManagerTest.java
@@ -214,18 +214,18 @@ public class DriftManagerTest extends DriftTest {
}
@Test
- public void unschedulingDetectionRemovesDriftConfigFromResourceContainer() throws Exception {
- DriftDefinition config = driftDefinition("remove-from-queue", resourceDir.getAbsolutePath());
- DriftDefinition config2 = driftDefinition("do-not-remove", resourceDir.getAbsolutePath());
+ public void unschedulingDetectionRemovesDriftDefFromResourceContainer() throws Exception {
+ DriftDefinition def = driftDefinition("remove-from-queue", resourceDir.getAbsolutePath());
+ DriftDefinition def2 = driftDefinition("do-not-remove", resourceDir.getAbsolutePath());
- driftMgr.scheduleDriftDetection(resourceId(), config);
- driftMgr.scheduleDriftDetection(resourceId(), config2);
- driftMgr.unscheduleDriftDetection(resourceId(), config);
+ driftMgr.scheduleDriftDetection(resourceId(), def);
+ driftMgr.scheduleDriftDetection(resourceId(), def2);
+ driftMgr.unscheduleDriftDetection(resourceId(), def);
ResourceContainer container = driftMgr.getInventoryManager().getResourceContainer(resourceId());
- assertCollectionMatchesNoOrder(config + " should have been removed from the resource container ",
- asList(config2), container.getDriftDefinitions());
+ assertCollectionMatchesNoOrder(def + " should have been removed from the resource container ",
+ asList(def2), container.getDriftDefinitions());
}
@Test
@@ -359,7 +359,7 @@ public class DriftManagerTest extends DriftTest {
private static class TestDriftServerService implements DriftServerService {
public int resourceId;
- public String driftConfigName;
+ public String driftDefName;
public String token;
public long fileSize;
public InputStream inputStream;
@@ -378,10 +378,10 @@ public class DriftManagerTest extends DriftTest {
}
@Override
- public void sendFilesZip(int resourceId, String driftConfigName, String token, long zipSize,
+ public void sendFilesZip(int resourceId, String driftDefName, String token, long zipSize,
InputStream zipStream) {
this.resourceId = resourceId;
- this.driftConfigName = driftConfigName;
+ this.driftDefName = driftDefName;
this.token = token;
fileSize = zipSize;
inputStream = zipStream;
diff --git a/modules/core/plugin-container/src/test/java/org/rhq/core/pc/drift/DriftTest.java b/modules/core/plugin-container/src/test/java/org/rhq/core/pc/drift/DriftTest.java
index 1d39499..7069503 100644
--- a/modules/core/plugin-container/src/test/java/org/rhq/core/pc/drift/DriftTest.java
+++ b/modules/core/plugin-container/src/test/java/org/rhq/core/pc/drift/DriftTest.java
@@ -204,8 +204,8 @@ public class DriftTest {
return new File(changeSet.getParentFile(), changeSet.getName() + ".previous");
}
- protected File changeSetDir(String driftConfigName) throws Exception {
- File dir = new File(new File(changeSetsDir, Integer.toString(resourceId)), driftConfigName);
+ protected File changeSetDir(String driftDefName) throws Exception {
+ File dir = new File(new File(changeSetsDir, Integer.toString(resourceId)), driftDefName);
dir.mkdirs();
return dir;
}
diff --git a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/alert/definitions/ConditionsEditor.java b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/alert/definitions/ConditionsEditor.java
index 2474f02..5afbc36 100644
--- a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/alert/definitions/ConditionsEditor.java
+++ b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/alert/definitions/ConditionsEditor.java
@@ -149,20 +149,20 @@ public class ConditionsEditor extends LocatableVLayout {
addTableAction(this.extendLocatorId("add"), "Add", null, new AbstractTableAction() {
public void executeAction(ListGridRecord[] selection, Object actionValue) {
- // we need the drift config templates (if there are any) so we know if we should offer drift conditions as an option
+ // we need the drift definition templates (if there are any) so we know if we should offer drift conditions as an option
ResourceTypeRepository.Cache.getInstance().getResourceTypes(resourceType.getId(),
- EnumSet.of(MetadataType.driftConfigurationTemplates),
+ EnumSet.of(MetadataType.driftDefinitionTemplates),
new ResourceTypeRepository.TypeLoadedCallback() {
@Override
public void onTypesLoaded(ResourceType type) {
// the resource type repo caches types - so if this resource type was already cached prior
// to the conditions editor component created (which it probably was) then we are getting the same
// exact instance that we had before (resourceType). When this happens, great! Our resourceType
- // instance will have its drift config templates populated. But, I'm being paranoid. If somehow
+ // instance will have its drift definition templates populated. But, I'm being paranoid. If somehow
// we have a resourceType that is different than the type being passed to us, we need to copy
- // the drift config.
+ // the drift definition.
if (type != resourceType) {
- // paranoia, unsure if this is needed but clear out any old drift config still hanging around
+ // paranoia, unsure if this is needed but clear out any old drift definition still hanging around
if (resourceType.getDriftDefinitionTemplates() != null) {
resourceType.getDriftDefinitionTemplates().clear();
}
diff --git a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/alert/definitions/NewConditionEditor.java b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/alert/definitions/NewConditionEditor.java
index 5142a7c..20b2003 100644
--- a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/alert/definitions/NewConditionEditor.java
+++ b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/alert/definitions/NewConditionEditor.java
@@ -101,7 +101,7 @@ public class NewConditionEditor extends LocatableDynamicForm {
private static final String OPERATION_RESULTS_ITEMNAME = "operationResults";
private static final String EVENT_SEVERITY_ITEMNAME = "eventSeverity";
private static final String EVENT_REGEX_ITEMNAME = "eventRegex";
- private static final String DRIFT_CONFIGNAME_REGEX_ITEMNAME = "driftConfigNameRegex";
+ private static final String DRIFT_DEFNAME_REGEX_ITEMNAME = "driftDefNameRegex";
private static final String DRIFT_PATHNAME_REGEX_ITEMNAME = "driftPathNameRegex";
private static final String RANGE_METRIC_ITEMNAME = "rangeMetric";
private static final String RANGE_COMPARATOR_ITEMNAME = "rangeComparator";
@@ -133,8 +133,7 @@ public class NewConditionEditor extends LocatableDynamicForm {
this.supportsEvents = (rtype.getEventDefinitions() != null && rtype.getEventDefinitions().size() > 0);
this.supportsResourceConfig = (rtype.getResourceConfigurationDefinition() != null);
- this.supportsDrift = (rtype.getDriftDefinitionTemplates() != null && rtype.getDriftDefinitionTemplates()
- .size() > 0);
+ this.supportsDrift = (rtype.getDriftDefinitionTemplates() != null && rtype.getDriftDefinitionTemplates().size() > 0);
Set<MeasurementDefinition> metricDefinitions = rtype.getMetricDefinitions();
if (metricDefinitions != null && metricDefinitions.size() > 0) {
@@ -428,7 +427,7 @@ public class NewConditionEditor extends LocatableDynamicForm {
}
case DRIFT: {
- newCondition.setName(getValueAsString(DRIFT_CONFIGNAME_REGEX_ITEMNAME));
+ newCondition.setName(getValueAsString(DRIFT_DEFNAME_REGEX_ITEMNAME));
newCondition.setComparator(null);
newCondition.setThreshold(null);
newCondition.setOption(getValueAsString(DRIFT_PATHNAME_REGEX_ITEMNAME));
@@ -869,14 +868,14 @@ public class NewConditionEditor extends LocatableDynamicForm {
StaticTextItem helpItem = buildHelpTextItem("driftHelp", helpStr, ifFunc);
formItems.add(helpItem);
- TextItem driftConfigNameRegex = new TextItem(DRIFT_CONFIGNAME_REGEX_ITEMNAME, MSG
+ TextItem driftDefNameRegex = new TextItem(DRIFT_DEFNAME_REGEX_ITEMNAME, MSG
.view_alert_definition_condition_editor_drift_configname_regex());
- driftConfigNameRegex.setRequired(false);
- driftConfigNameRegex.setTooltip(MSG.view_alert_definition_condition_editor_drift_configname_regex_tooltip());
- driftConfigNameRegex.setHoverWidth(200);
- driftConfigNameRegex.setWrapTitle(false);
- driftConfigNameRegex.setShowIfCondition(ifFunc);
- formItems.add(driftConfigNameRegex);
+ driftDefNameRegex.setRequired(false);
+ driftDefNameRegex.setTooltip(MSG.view_alert_definition_condition_editor_drift_configname_regex_tooltip());
+ driftDefNameRegex.setHoverWidth(200);
+ driftDefNameRegex.setWrapTitle(false);
+ driftDefNameRegex.setShowIfCondition(ifFunc);
+ formItems.add(driftDefNameRegex);
TextItem driftPathNameRegex = new TextItem(DRIFT_PATHNAME_REGEX_ITEMNAME, MSG
.view_alert_definition_condition_editor_drift_pathname_regex());
diff --git a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/drift/wizard/AbstractDriftAddDefinitionWizard.java b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/drift/wizard/AbstractDriftAddDefinitionWizard.java
index 541c268..233bdf2 100644
--- a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/drift/wizard/AbstractDriftAddDefinitionWizard.java
+++ b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/drift/wizard/AbstractDriftAddDefinitionWizard.java
@@ -82,8 +82,8 @@ public abstract class AbstractDriftAddDefinitionWizard extends AbstractWizard {
return newDriftDefinition;
}
- public void setNewConfiguration(Configuration newDriftConfiguration) {
- this.newDriftDefinition = new DriftDefinition(newDriftConfiguration);
+ public void setNewConfiguration(Configuration newDriftDefinitionConfig) {
+ this.newDriftDefinition = new DriftDefinition(newDriftDefinitionConfig);
}
public void cancel() {
diff --git a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/groups/detail/ResourceGroupDetailView.java b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/groups/detail/ResourceGroupDetailView.java
index 3b553ca..733f0d7 100644
--- a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/groups/detail/ResourceGroupDetailView.java
+++ b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/groups/detail/ResourceGroupDetailView.java
@@ -114,7 +114,7 @@ public class ResourceGroupDetailView extends AbstractTwoLevelTabSetView<Resource
private SubTab operationsSchedules;
private SubTab alertHistory;
private SubTab alertDef;
- private SubTab driftConfig;
+ private SubTab driftDefinition;
private SubTab driftHistory;
private SubTab configCurrent;
private SubTab configHistory;
@@ -236,9 +236,9 @@ public class ResourceGroupDetailView extends AbstractTwoLevelTabSetView<Resource
.view_tabs_common_drift()), "subsystems/drift/Drift_16.png");
this.driftHistory = new SubTab(driftTab.extendLocatorId(DriftSubTab.HISTORY), new ViewName(DriftSubTab.HISTORY,
MSG.view_tabs_common_history()), null);
- this.driftConfig = new SubTab(driftTab.extendLocatorId(DriftSubTab.DEFINITIONS), new ViewName(
+ this.driftDefinition = new SubTab(driftTab.extendLocatorId(DriftSubTab.DEFINITIONS), new ViewName(
DriftSubTab.DEFINITIONS, MSG.common_title_definitions()), null);
- driftTab.registerSubTabs(driftHistory, driftConfig);
+ driftTab.registerSubTabs(driftHistory, driftDefinition);
tabs.add(driftTab);
return tabs;
@@ -468,10 +468,10 @@ public class ResourceGroupDetailView extends AbstractTwoLevelTabSetView<Resource
}
});
- updateSubTab(this.driftTab, this.driftConfig, true, true, new ViewFactory() {
+ updateSubTab(this.driftTab, this.driftDefinition, true, true, new ViewFactory() {
@Override
public Canvas createView() {
- return ResourceDriftDefinitionsView.get(driftConfig.extendLocatorId("View"), null);
+ return ResourceDriftDefinitionsView.get(driftDefinition.extendLocatorId("View"), null);
}
});
}
diff --git a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/type/ResourceTypeRepository.java b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/type/ResourceTypeRepository.java
index b9cd91b..d124bcf 100644
--- a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/type/ResourceTypeRepository.java
+++ b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/type/ResourceTypeRepository.java
@@ -58,7 +58,7 @@ public class ResourceTypeRepository {
private static ResourceTypeGWTServiceAsync resourceTypeService = GWTServiceLookup.getResourceTypeGWTService();
public enum MetadataType {
- children, operations, measurements, content, events, pluginConfigurationDefinition, resourceConfigurationDefinition, subCategory, parentTypes, processScans, productVersions, driftConfigurationTemplates
+ children, operations, measurements, content, events, pluginConfigurationDefinition, resourceConfigurationDefinition, subCategory, parentTypes, processScans, productVersions, driftDefinitionTemplates
}
public static class Cache {
@@ -246,7 +246,7 @@ public class ResourceTypeRepository {
case subCategory:
criteria.fetchSubCategory(true);
break;
- case driftConfigurationTemplates:
+ case driftDefinitionTemplates:
criteria.fetchDriftDefinitionTemplates(true);
break;
default:
@@ -352,7 +352,7 @@ public class ResourceTypeRepository {
case subCategory:
cachedType.setSubCategory(type.getSubCategory());
break;
- case driftConfigurationTemplates:
+ case driftDefinitionTemplates:
if (cachedType.getDriftDefinitionTemplates() != null) {
cachedType.getDriftDefinitionTemplates().clear(); // remove any old ones hanging around
}
diff --git a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/alert/engine/internal/AgentConditionCache.java b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/alert/engine/internal/AgentConditionCache.java
index 62994a0..49faca2 100644
--- a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/alert/engine/internal/AgentConditionCache.java
+++ b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/alert/engine/internal/AgentConditionCache.java
@@ -317,17 +317,17 @@ class AgentConditionCache extends AbstractConditionCache {
} else if (alertConditionCategory == AlertConditionCategory.DRIFT) {
AlertConditionDriftCategoryComposite driftComposite = (AlertConditionDriftCategoryComposite) composite;
- String driftConfigNameRegexStr = driftComposite.getCondition().getName();
+ String driftDefNameRegexStr = driftComposite.getCondition().getName();
String driftPathNameRegexStr = driftComposite.getCondition().getOption();
DriftCacheElement cacheElement = null;
try {
- cacheElement = new DriftCacheElement(alertConditionOperator, driftConfigNameRegexStr,
+ cacheElement = new DriftCacheElement(alertConditionOperator, driftDefNameRegexStr,
driftPathNameRegexStr, alertConditionId);
} catch (InvalidCacheElementException icee) {
log.info("Failed to create DriftCacheElement: id=" + alertConditionId + ", operator="
- + alertConditionOperator + ", driftConfigNameRegex=" + driftConfigNameRegexStr
- + ", driftPathNameRegex=" + driftPathNameRegexStr);
+ + alertConditionOperator + ", driftDefNameRegex=" + driftDefNameRegexStr + ", driftPathNameRegex="
+ + driftPathNameRegexStr);
}
addTo("driftCache", driftCache, driftComposite.getResourceId(), cacheElement, alertConditionId, stats);
} else if (alertConditionCategory == AlertConditionCategory.RANGE) {
diff --git a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/alert/engine/model/DriftCacheElement.java b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/alert/engine/model/DriftCacheElement.java
index 1abb690..90dd613 100644
--- a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/alert/engine/model/DriftCacheElement.java
+++ b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/alert/engine/model/DriftCacheElement.java
@@ -26,10 +26,10 @@ import org.rhq.enterprise.server.plugin.pc.drift.DriftChangeSetSummary;
public class DriftCacheElement extends AbstractCacheElement<Object> {
public static final Object UNUSED_CONDITION_VALUE = "Drift Detected";
- private final Pattern driftConfigNameRegex;
+ private final Pattern driftDefNameRegex;
private final Pattern driftPathNameRegex;
- public DriftCacheElement(AlertConditionOperator operator, String driftConfigNameRegexStr,
+ public DriftCacheElement(AlertConditionOperator operator, String driftDefNameRegexStr,
String driftPathNameRegexStr, int conditionTriggerId) {
// our drift processing is special in that we do not have an alert condition value that
// we need check to determine if our cache element matches a particular value. But we need
@@ -38,10 +38,10 @@ public class DriftCacheElement extends AbstractCacheElement<Object> {
super(operator, UNUSED_CONDITION_VALUE, conditionTriggerId);
try {
- if (driftConfigNameRegexStr != null && driftConfigNameRegexStr.length() > 0) {
- this.driftConfigNameRegex = Pattern.compile(driftConfigNameRegexStr);
+ if (driftDefNameRegexStr != null && driftDefNameRegexStr.length() > 0) {
+ this.driftDefNameRegex = Pattern.compile(driftDefNameRegexStr);
} else {
- this.driftConfigNameRegex = null;
+ this.driftDefNameRegex = null;
}
if (driftPathNameRegexStr != null && driftPathNameRegexStr.length() > 0) {
@@ -64,9 +64,9 @@ public class DriftCacheElement extends AbstractCacheElement<Object> {
return false; // we never alert on coverage reports, we only alert when files have drifted from previous known states
}
- if (driftConfigNameRegex != null) {
- if (!driftConfigNameRegex.matcher(summary.getDriftDefinitionName()).matches()) {
- return false; // drift config name did not match, our condition is false so don't alert
+ if (driftDefNameRegex != null) {
+ if (!driftDefNameRegex.matcher(summary.getDriftDefinitionName()).matches()) {
+ return false; // drift definition name did not match, our condition is false so don't alert
}
}
diff --git a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/alert/i18n/AlertI18NResourceKeys.java b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/alert/i18n/AlertI18NResourceKeys.java
index f3ab9a6..8b364c2 100644
--- a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/alert/i18n/AlertI18NResourceKeys.java
+++ b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/alert/i18n/AlertI18NResourceKeys.java
@@ -138,13 +138,13 @@ public interface AlertI18NResourceKeys {
@I18NMessages( { @I18NMessage("Drift!") /*, @I18NMessage(locale = "de", value = "") */})
String ALERT_DRIFT_SHORT = "alert.condition.drift.short";
- @I18NMessages( { @I18NMessage("Drift detected for files that match \"{0}\" and for drift configuration [{1}]") /*, @I18NMessage(locale = "de", value = "") */})
+ @I18NMessages( { @I18NMessage("Drift detected for files that match \"{0}\" and for drift definition [{1}]") /*, @I18NMessage(locale = "de", value = "") */})
String ALERT_DRIFT_CONFIGPATHS = "alert.condition.drift.configpaths";
@I18NMessages( { @I18NMessage("Drift matching \"{0}\", config=[{1}]") /*, @I18NMessage(locale = "de", value = "") */})
String ALERT_DRIFT_CONFIGPATHS_SHORT = "alert.condition.drift.configpaths.short";
- @I18NMessages( { @I18NMessage("Drift detected for drift configuration [{0}]") /*, @I18NMessage(locale = "de", value = "") */})
+ @I18NMessages( { @I18NMessage("Drift detected for drift definition [{0}]") /*, @I18NMessage(locale = "de", value = "") */})
String ALERT_DRIFT_ONLYCONFIG = "alert.condition.drift.onlyconfig";
@I18NMessages( { @I18NMessage("Drift! config=[{0}]") /*, @I18NMessage(locale = "de", value = "") */})
diff --git a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/drift/DriftFileBean.java b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/drift/DriftFileBean.java
index 4d7bebf..b1db4cb 100644
--- a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/drift/DriftFileBean.java
+++ b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/drift/DriftFileBean.java
@@ -85,7 +85,7 @@ public class DriftFileBean implements MessageListener {
}
driftManager.saveChangeSetContent(subjectManager.getOverlord(), request.getResourceId(),
- request.getDriftConfigName(), request.getToken(), tempFile);
+ request.getDriftDefName(), request.getToken(), tempFile);
} catch (IOException e) {
log.error(e);
diff --git a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/drift/DriftManagerBean.java b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/drift/DriftManagerBean.java
index de0f3bf..10bec2b 100644
--- a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/drift/DriftManagerBean.java
+++ b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/drift/DriftManagerBean.java
@@ -195,13 +195,13 @@ public class DriftManagerBean implements DriftManagerLocal, DriftManagerRemote {
// http://management-platform.blogspot.com/2008/11/transaction-recovery-in-j...
@Override
@TransactionAttribute(REQUIRES_NEW)
- public void addFiles(int resourceId, String driftConfigName, String token, long zipSize, InputStream zipStream)
+ public void addFiles(int resourceId, String driftDefName, String token, long zipSize, InputStream zipStream)
throws Exception {
Connection connection = factory.createConnection();
Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
MessageProducer producer = session.createProducer(fileQueue);
- ObjectMessage msg = session.createObjectMessage(new DriftUploadRequest(resourceId, driftConfigName, token,
+ ObjectMessage msg = session.createObjectMessage(new DriftUploadRequest(resourceId, driftDefName, token,
zipSize, zipStream));
producer.send(msg);
connection.close();
@@ -209,13 +209,13 @@ public class DriftManagerBean implements DriftManagerLocal, DriftManagerRemote {
@Override
@TransactionAttribute(TransactionAttributeType.SUPPORTS)
- public void saveChangeSetContent(Subject subject, int resourceId, String driftConfigName, String token,
+ public void saveChangeSetContent(Subject subject, int resourceId, String driftDefName, String token,
File changeSetFilesZip) throws Exception {
saveChangeSetFiles(subject, changeSetFilesZip);
AgentClient agent = agentManager.getAgentClient(subjectManager.getOverlord(), resourceId);
DriftAgentService driftService = agent.getDriftAgentService();
- driftService.ackChangeSetContent(resourceId, driftConfigName, token);
+ driftService.ackChangeSetContent(resourceId, driftDefName, token);
}
@Override
@@ -457,7 +457,7 @@ public class DriftManagerBean implements DriftManagerLocal, DriftManagerRemote {
// before we do anything, make sure the drift def name is valid
if (!driftDef.getName().matches(DriftConfigurationDefinition.PROP_NAME_REGEX_PATTERN)) {
- throw new IllegalArgumentException("Drift configuration name contains invalid characters: "
+ throw new IllegalArgumentException("Drift definition name contains invalid characters: "
+ driftDef.getName());
}
diff --git a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/drift/DriftManagerLocal.java b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/drift/DriftManagerLocal.java
index 194d0b0..058af79 100644
--- a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/drift/DriftManagerLocal.java
+++ b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/drift/DriftManagerLocal.java
@@ -58,10 +58,10 @@ public interface DriftManagerLocal extends DriftServerPluginFacet, DriftManagerR
* @param zipStream The drift files zip file stream
* @throws Exception
*/
- void addFiles(int resourceId, String driftConfigName, String token, long zipSize, InputStream zipStream)
+ void addFiles(int resourceId, String driftDefName, String token, long zipSize, InputStream zipStream)
throws Exception;
- void saveChangeSetContent(Subject subject, int resourceId, String driftConfigName, String token,
+ void saveChangeSetContent(Subject subject, int resourceId, String driftDefName, String token,
File changeSetFilesZip) throws Exception;
/**
diff --git a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/drift/DriftUploadRequest.java b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/drift/DriftUploadRequest.java
index 3c5a31e..f634a98 100644
--- a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/drift/DriftUploadRequest.java
+++ b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/drift/DriftUploadRequest.java
@@ -27,7 +27,7 @@ public class DriftUploadRequest implements Serializable {
private int resourceId;
- private String driftConfigName;
+ private String driftDefName;
private String token;
@@ -39,10 +39,10 @@ public class DriftUploadRequest implements Serializable {
this(resourceId, null, null, dataSize, dataStream);
}
- public DriftUploadRequest(int resourceId, String driftConfigName, String token, long dataSize,
+ public DriftUploadRequest(int resourceId, String driftDefName, String token, long dataSize,
InputStream dataStream) {
this.resourceId = resourceId;
- this.driftConfigName = driftConfigName;
+ this.driftDefName = driftDefName;
this.token = token;
this.dataSize = dataSize;
this.dataStream = dataStream;
@@ -52,8 +52,8 @@ public class DriftUploadRequest implements Serializable {
return resourceId;
}
- public String getDriftConfigName() {
- return driftConfigName;
+ public String getDriftDefName() {
+ return driftDefName;
}
public String getToken() {
diff --git a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/drift/JPADriftServerLocal.java b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/drift/JPADriftServerLocal.java
index 534cce5..111835a 100644
--- a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/drift/JPADriftServerLocal.java
+++ b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/drift/JPADriftServerLocal.java
@@ -113,9 +113,9 @@ public interface JPADriftServerLocal {
/**
* SUPPORTS JPA DRIFT SERVER PLUGIN
* This is for internal use only - do not call it unless you know what you are doing.
- * This purges all drift entities and changeset entities associated with the drift config.
+ * This purges all drift entities and changeset entities associated with the drift definition.
*/
- void purgeByDriftDefinitionName(Subject subject, int resourceId, String driftConfigName) throws Exception;
+ void purgeByDriftDefinitionName(Subject subject, int resourceId, String driftDefName) throws Exception;
/**
* SUPPORTS JPA DRIFT SERVER PLUGIN
diff --git a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/resource/ResourceManagerBean.java b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/resource/ResourceManagerBean.java
index 0006b33..99577b9 100644
--- a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/resource/ResourceManagerBean.java
+++ b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/resource/ResourceManagerBean.java
@@ -29,7 +29,6 @@ import java.util.LinkedList;
import java.util.List;
import java.util.ListIterator;
import java.util.Map;
-import java.util.Set;
import javax.ejb.EJB;
import javax.ejb.Stateless;
@@ -415,7 +414,7 @@ public class ResourceManagerBean implements ResourceManagerLocal, ResourceManage
log.debug("Overlord is asynchronously deleting resource [" + attachedResource + "]");
}
- // our unidirectional one-to-many mapping of drift config makes it not possible to easily bulk delete drift config
+ // our unidirectional one-to-many mapping of drift definition makes it not possible to easily bulk delete drift definition
// so remove them here and let cascading of delete_orphan do the work
if (attachedResource.getDriftDefinitions() != null) {
attachedResource.getDriftDefinitions().clear();
@@ -758,7 +757,8 @@ public class ResourceManagerBean implements ResourceManagerLocal, ResourceManage
// Build up a list of composite Resources for the ancestry that includes which ancestors, if any, should be
// locked from view.
boolean isInventoryManager = authorizationManager.isInventoryManager(subject);
- List<ResourceLineageComposite> resourceLineage = new ArrayList<ResourceLineageComposite>(rawResourceLineage.size());
+ List<ResourceLineageComposite> resourceLineage = new ArrayList<ResourceLineageComposite>(rawResourceLineage
+ .size());
for (Resource resource : rawResourceLineage) {
boolean isLocked = !(isInventoryManager || authorizationManager.canViewResource(subject, resource.getId()));
ResourceLineageComposite composite = new ResourceLineageComposite(resource, isLocked);
@@ -776,8 +776,8 @@ public class ResourceManagerBean implements ResourceManagerLocal, ResourceManage
// If the ancestor is not locked, include viewable children.
if (!ancestor.isLocked() || ancestor.getResource() == parent) {
// Get all viewable committed children.
- PageList<Resource> children = findChildResourcesByCategoryAndInventoryStatus(subject,
- ancestor.getResource(), null, InventoryStatus.COMMITTED, PageControl.getUnlimitedInstance());
+ PageList<Resource> children = findChildResourcesByCategoryAndInventoryStatus(subject, ancestor
+ .getResource(), null, InventoryStatus.COMMITTED, PageControl.getUnlimitedInstance());
// Remove any that are in the lineage to avoid repeated handling.
children.removeAll(rawResourceLineage);
for (Resource child : children) {
diff --git a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/resource/metadata/ResourceMetadataManagerBean.java b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/resource/metadata/ResourceMetadataManagerBean.java
index 6b1c7dd..a21b9fd 100644
--- a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/resource/metadata/ResourceMetadataManagerBean.java
+++ b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/resource/metadata/ResourceMetadataManagerBean.java
@@ -454,8 +454,8 @@ public class ResourceMetadataManagerBean implements ResourceMetadataManagerLocal
existingType = entityManager.find(ResourceType.class, existingType.getId());
//
- // First, we need to see if the drift configs have changed. If the existing and new drift configs
- // are the same, then we can skip the update and do nothing. Only if one or more drift configs
+ // First, we need to see if the drift definitions have changed. If the existing and new drift definitions
+ // are the same, then we can skip the update and do nothing. Only if one or more drift definitions
// are different do we have to do anything to the persisted metadata.
//
@@ -500,8 +500,8 @@ public class ResourceMetadataManagerBean implements ResourceMetadataManagerLocal
}
//
- // If one or more drift configs are different between new and existing,
- // then we need to remove the old drift config and persist the new drift config.
+ // If one or more drift definitions are different between new and existing,
+ // then we need to remove the old drift definition and persist the new drift definition.
//
if (!isSame) {
diff --git a/modules/enterprise/server/jar/src/test/java/org/rhq/enterprise/server/alert/test/AlertManagerBeanTest.java b/modules/enterprise/server/jar/src/test/java/org/rhq/enterprise/server/alert/test/AlertManagerBeanTest.java
index 7f502f5..a4fe4b4 100644
--- a/modules/enterprise/server/jar/src/test/java/org/rhq/enterprise/server/alert/test/AlertManagerBeanTest.java
+++ b/modules/enterprise/server/jar/src/test/java/org/rhq/enterprise/server/alert/test/AlertManagerBeanTest.java
@@ -244,7 +244,7 @@ public class AlertManagerBeanTest {
public void testPrettyPrintDRIFT() {
AlertCondition condition = createCondition(AlertConditionCategory.DRIFT, "?riftName", null, null, "fil.*", null);
pretty = getPrettyAlertConditionString(condition);
- assert "Drift detected for files that match \"fil.*\" and for drift configuration [?riftName]".equals(pretty) : pretty;
+ assert "Drift detected for files that match \"fil.*\" and for drift definition [?riftName]".equals(pretty) : pretty;
pretty = getShortPrettyAlertConditionString(condition);
assert "Drift matching \"fil.*\", config=[?riftName]".equals(pretty) : pretty;
@@ -256,7 +256,7 @@ public class AlertManagerBeanTest {
condition = createCondition(AlertConditionCategory.DRIFT, "?riftName", null, null, null, null);
pretty = getPrettyAlertConditionString(condition);
- assert "Drift detected for drift configuration [?riftName]".equals(pretty) : pretty;
+ assert "Drift detected for drift definition [?riftName]".equals(pretty) : pretty;
pretty = getShortPrettyAlertConditionString(condition);
assert "Drift! config=[?riftName]".equals(pretty) : pretty;
diff --git a/modules/enterprise/server/jar/src/test/java/org/rhq/enterprise/server/drift/DriftManagerBeanTest.java b/modules/enterprise/server/jar/src/test/java/org/rhq/enterprise/server/drift/DriftManagerBeanTest.java
index 2544540..a767c35 100644
--- a/modules/enterprise/server/jar/src/test/java/org/rhq/enterprise/server/drift/DriftManagerBeanTest.java
+++ b/modules/enterprise/server/jar/src/test/java/org/rhq/enterprise/server/drift/DriftManagerBeanTest.java
@@ -445,11 +445,11 @@ public class DriftManagerBeanTest extends AbstractEJB3Test {
}
@Override
- public void ackChangeSet(int resourceId, String driftConfigName) {
+ public void ackChangeSet(int resourceId, String driftDefName) {
}
@Override
- public void ackChangeSetContent(int resourceId, String driftConfigName, String token) {
+ public void ackChangeSetContent(int resourceId, String driftDefName, String token) {
}
}
}
\ No newline at end of file
diff --git a/modules/enterprise/server/jar/src/test/java/org/rhq/enterprise/server/resource/metadata/ResourceMetadataManagerBeanTest.java b/modules/enterprise/server/jar/src/test/java/org/rhq/enterprise/server/resource/metadata/ResourceMetadataManagerBeanTest.java
index 7f895b9..fba0945 100644
--- a/modules/enterprise/server/jar/src/test/java/org/rhq/enterprise/server/resource/metadata/ResourceMetadataManagerBeanTest.java
+++ b/modules/enterprise/server/jar/src/test/java/org/rhq/enterprise/server/resource/metadata/ResourceMetadataManagerBeanTest.java
@@ -30,8 +30,8 @@ import org.rhq.core.domain.content.PackageType;
import org.rhq.core.domain.criteria.OperationDefinitionCriteria;
import org.rhq.core.domain.criteria.ResourceCriteria;
import org.rhq.core.domain.criteria.ResourceTypeCriteria;
-import org.rhq.core.domain.drift.DriftDefinition;
import org.rhq.core.domain.drift.DriftConfigurationDefinition;
+import org.rhq.core.domain.drift.DriftDefinition;
import org.rhq.core.domain.drift.Filter;
import org.rhq.core.domain.drift.DriftConfigurationDefinition.BaseDirValueContext;
import org.rhq.core.domain.operation.OperationDefinition;
@@ -54,12 +54,12 @@ public class ResourceMetadataManagerBeanTest extends MetadataBeanTest {
@Test(groups = { "plugin.metadata", "NewPlugin" })
public void testRemovalOfObsoleteBundleAndDriftConfig() throws Exception {
- // create the initial type that has bundle and drift configs
+ // create the initial type that has bundle and drift definitions
createPlugin("test-plugin.jar", "1.0", "remove_bundle_drift_config_v1.xml");
- // make sure the drift config was persisted, and remember the type
+ // make sure the drift definition was persisted, and remember the type
ResourceType type1 = assertResourceTypeAssociationEquals("ServerWithBundleAndDriftConfig", "TestPlugin",
- "driftConfigurationTemplates", asList("drift1"));
+ "driftDefinitionTemplates", asList("drift1"));
// sanity check, make sure our queries work and that we did persist these things
Query qTemplate;
@@ -68,12 +68,12 @@ public class ResourceMetadataManagerBeanTest extends MetadataBeanTest {
String qConfigString = "select c from Configuration c where c.id = :id";
ConfigurationTemplate driftTemplate = type1.getDriftDefinitionTemplates().iterator().next();
Configuration bundleConfig = type1.getResourceTypeBundleConfiguration().getBundleConfiguration();
- Configuration driftConfig = driftTemplate.getConfiguration();
+ Configuration driftDefConfig = driftTemplate.getConfiguration();
getTransactionManager().begin();
try {
qTemplate = getEntityManager().createQuery(qTemplateString).setParameter("id", driftTemplate.getId());
- qConfig = getEntityManager().createQuery(qConfigString).setParameter("id", driftConfig.getId());
+ qConfig = getEntityManager().createQuery(qConfigString).setParameter("id", driftDefConfig.getId());
assertEquals("drift template didn't get persisted", 1, qTemplate.getResultList().size());
assertEquals("drift template config didn't get persisted", 1, qConfig.getResultList().size());
@@ -89,13 +89,13 @@ public class ResourceMetadataManagerBeanTest extends MetadataBeanTest {
assertEquals("destdir1", type1.getResourceTypeBundleConfiguration().getBundleDestinationBaseDirectories()
.iterator().next().getName());
- // upgrade the type which removes the bundle config and drift config
+ // upgrade the type which removes the bundle config and drift definition
createPlugin("test-plugin.jar", "2.0", "remove_bundle_drift_config_v2.xml");
getTransactionManager().begin();
try {
qTemplate = getEntityManager().createQuery(qTemplateString).setParameter("id", driftTemplate.getId());
- qConfig = getEntityManager().createQuery(qConfigString).setParameter("id", driftConfig.getId());
+ qConfig = getEntityManager().createQuery(qConfigString).setParameter("id", driftDefConfig.getId());
assertEquals("drift template didn't get purged", 0, qTemplate.getResultList().size());
assertEquals("drift template config didn't get purged", 0, qConfig.getResultList().size());
@@ -107,12 +107,12 @@ public class ResourceMetadataManagerBeanTest extends MetadataBeanTest {
}
@Test(groups = { "plugin.metadata", "NewPlugin" })
- public void registerPluginWithDuplicateDriftConfigurations() {
+ public void registerPluginWithDuplicateDriftDefinitions() {
try {
createPlugin("test-plugin.jar", "1.0", "dup_drift.xml");
- fail("should not have succeeded - the drift config had duplicate names");
+ fail("should not have succeeded - the drift definition had duplicate names");
} catch (Exception e) {
- // OK, the plugin should have failed to be deployed since it has duplicate drift configs
+ // OK, the plugin should have failed to be deployed since it has duplicate drift definitions
}
}
@@ -159,40 +159,40 @@ public class ResourceMetadataManagerBeanTest extends MetadataBeanTest {
}
@Test(dependsOnMethods = { "persistNewTypes" }, groups = { "plugin.metadata", "NewPlugin" })
- public void persistDriftConfigurationTemplates() throws Exception {
- ResourceType type = assertResourceTypeAssociationEquals("ServerA", "TestPlugin", "driftConfigurationTemplates",
+ public void persistDriftDefinitionTemplates() throws Exception {
+ ResourceType type = assertResourceTypeAssociationEquals("ServerA", "TestPlugin", "driftDefinitionTemplates",
asList("drift-pc", "drift-fs"));
- DriftDefinition driftConfig = null;
+ DriftDefinition driftDef = null;
Set<ConfigurationTemplate> drifts = type.getDriftDefinitionTemplates();
for (ConfigurationTemplate drift : drifts) {
if (drift.getName().equals("drift-pc")) {
- driftConfig = new DriftDefinition(drift.getConfiguration());
- assertTrue(driftConfig.isEnabled());
- assertEquals(BaseDirValueContext.pluginConfiguration, driftConfig.getBasedir().getValueContext());
- assertEquals("connectionPropertyX", driftConfig.getBasedir().getValueName());
- assertEquals(123456L, driftConfig.getInterval());
- assertEquals(1, driftConfig.getIncludes().size());
- assertEquals(2, driftConfig.getExcludes().size());
- Filter filter = driftConfig.getIncludes().get(0);
+ driftDef = new DriftDefinition(drift.getConfiguration());
+ assertTrue(driftDef.isEnabled());
+ assertEquals(BaseDirValueContext.pluginConfiguration, driftDef.getBasedir().getValueContext());
+ assertEquals("connectionPropertyX", driftDef.getBasedir().getValueName());
+ assertEquals(123456L, driftDef.getInterval());
+ assertEquals(1, driftDef.getIncludes().size());
+ assertEquals(2, driftDef.getExcludes().size());
+ Filter filter = driftDef.getIncludes().get(0);
assertEquals("foo/bar", filter.getPath());
assertEquals("**/*.blech", filter.getPattern());
- filter = driftConfig.getExcludes().get(0);
+ filter = driftDef.getExcludes().get(0);
assertEquals("/wot/gorilla", filter.getPath());
assertEquals("*.xml", filter.getPattern());
- filter = driftConfig.getExcludes().get(1);
+ filter = driftDef.getExcludes().get(1);
assertEquals("/hello", filter.getPath());
assertEquals("", filter.getPattern());
} else if (drift.getName().equals("drift-fs")) {
- driftConfig = new DriftDefinition(drift.getConfiguration());
- assertTrue(driftConfig.isEnabled());
- assertEquals(BaseDirValueContext.fileSystem, driftConfig.getBasedir().getValueContext());
- assertEquals("/", driftConfig.getBasedir().getValueName());
- assertEquals(DriftConfigurationDefinition.DEFAULT_INTERVAL, driftConfig.getInterval());
- assertEquals(0, driftConfig.getIncludes().size());
- assertEquals(0, driftConfig.getExcludes().size());
+ driftDef = new DriftDefinition(drift.getConfiguration());
+ assertTrue(driftDef.isEnabled());
+ assertEquals(BaseDirValueContext.fileSystem, driftDef.getBasedir().getValueContext());
+ assertEquals("/", driftDef.getBasedir().getValueName());
+ assertEquals(DriftConfigurationDefinition.DEFAULT_INTERVAL, driftDef.getInterval());
+ assertEquals(0, driftDef.getIncludes().size());
+ assertEquals(0, driftDef.getExcludes().size());
} else {
- fail("got an unexpected drift config: " + driftConfig);
+ fail("got an unexpected drift definition: " + driftDef);
}
}
}
@@ -281,31 +281,31 @@ public class ResourceMetadataManagerBeanTest extends MetadataBeanTest {
}
@Test(dependsOnMethods = { "upgradePlugin" }, groups = { "plugin.metadata", "UpgradePlugin" })
- public void upgradeDriftConfigurationTemplates() throws Exception {
- ResourceType type = assertResourceTypeAssociationEquals("ServerA", "TestPlugin", "driftConfigurationTemplates",
+ public void upgradeDriftDefinitionTemplates() throws Exception {
+ ResourceType type = assertResourceTypeAssociationEquals("ServerA", "TestPlugin", "driftDefinitionTemplates",
asList("drift-rc", "drift-mt"));
- DriftDefinition driftConfig = null;
+ DriftDefinition driftDef = null;
Set<ConfigurationTemplate> drifts = type.getDriftDefinitionTemplates();
for (ConfigurationTemplate drift : drifts) {
if (drift.getName().equals("drift-rc")) {
- driftConfig = new DriftDefinition(drift.getConfiguration());
- assertTrue(driftConfig.isEnabled());
- assertEquals(BaseDirValueContext.resourceConfiguration, driftConfig.getBasedir().getValueContext());
- assertEquals("resourceConfig1", driftConfig.getBasedir().getValueName());
- assertEquals(DriftConfigurationDefinition.DEFAULT_INTERVAL, driftConfig.getInterval());
- assertEquals(0, driftConfig.getIncludes().size());
- assertEquals(0, driftConfig.getExcludes().size());
+ driftDef = new DriftDefinition(drift.getConfiguration());
+ assertTrue(driftDef.isEnabled());
+ assertEquals(BaseDirValueContext.resourceConfiguration, driftDef.getBasedir().getValueContext());
+ assertEquals("resourceConfig1", driftDef.getBasedir().getValueName());
+ assertEquals(DriftConfigurationDefinition.DEFAULT_INTERVAL, driftDef.getInterval());
+ assertEquals(0, driftDef.getIncludes().size());
+ assertEquals(0, driftDef.getExcludes().size());
} else if (drift.getName().equals("drift-mt")) {
- driftConfig = new DriftDefinition(drift.getConfiguration());
- assertTrue(driftConfig.isEnabled());
- assertEquals(BaseDirValueContext.measurementTrait, driftConfig.getBasedir().getValueContext());
- assertEquals("trait1", driftConfig.getBasedir().getValueName());
- assertEquals(DriftConfigurationDefinition.DEFAULT_INTERVAL, driftConfig.getInterval());
- assertEquals(0, driftConfig.getIncludes().size());
- assertEquals(0, driftConfig.getExcludes().size());
+ driftDef = new DriftDefinition(drift.getConfiguration());
+ assertTrue(driftDef.isEnabled());
+ assertEquals(BaseDirValueContext.measurementTrait, driftDef.getBasedir().getValueContext());
+ assertEquals("trait1", driftDef.getBasedir().getValueName());
+ assertEquals(DriftConfigurationDefinition.DEFAULT_INTERVAL, driftDef.getInterval());
+ assertEquals(0, driftDef.getIncludes().size());
+ assertEquals(0, driftDef.getExcludes().size());
} else {
- fail("got an unexpected drift config: " + driftConfig);
+ fail("got an unexpected drift definition: " + driftDef);
}
}
}
diff --git a/modules/enterprise/server/jar/src/test/java/org/rhq/enterprise/server/test/TestAgentClient.java b/modules/enterprise/server/jar/src/test/java/org/rhq/enterprise/server/test/TestAgentClient.java
index 1515869..9b6400a 100644
--- a/modules/enterprise/server/jar/src/test/java/org/rhq/enterprise/server/test/TestAgentClient.java
+++ b/modules/enterprise/server/jar/src/test/java/org/rhq/enterprise/server/test/TestAgentClient.java
@@ -336,26 +336,26 @@ public class TestAgentClient implements AgentClient, BundleAgentService, DriftAg
}
@Override
- public void scheduleDriftDetection(int resourceId, DriftDefinition driftConfiguration) {
+ public void scheduleDriftDetection(int resourceId, DriftDefinition driftDefinition) {
}
@Override
- public void detectDrift(int resourceId, DriftDefinition driftConfiguration) {
+ public void detectDrift(int resourceId, DriftDefinition driftDefinition) {
}
@Override
- public void unscheduleDriftDetection(int resourceId, DriftDefinition driftConfiguration) {
+ public void unscheduleDriftDetection(int resourceId, DriftDefinition driftDefinition) {
}
@Override
- public void updateDriftDetection(int resourceId, DriftDefinition driftConfiguration) {
+ public void updateDriftDetection(int resourceId, DriftDefinition driftDefinition) {
}
@Override
- public void ackChangeSet(int resourceId, String driftConfigName) {
+ public void ackChangeSet(int resourceId, String driftDefName) {
}
@Override
- public void ackChangeSetContent(int resourceId, String driftConfigName, String token) {
+ public void ackChangeSetContent(int resourceId, String driftDefName, String token) {
}
}
diff --git a/modules/enterprise/server/jar/src/test/resources/org/rhq/enterprise/server/resource/metadata/ResourceMetadataManagerBeanTest/dup_drift.xml b/modules/enterprise/server/jar/src/test/resources/org/rhq/enterprise/server/resource/metadata/ResourceMetadataManagerBeanTest/dup_drift.xml
index d2dd71f..bd9728b 100644
--- a/modules/enterprise/server/jar/src/test/resources/org/rhq/enterprise/server/resource/metadata/ResourceMetadataManagerBeanTest/dup_drift.xml
+++ b/modules/enterprise/server/jar/src/test/resources/org/rhq/enterprise/server/resource/metadata/ResourceMetadataManagerBeanTest/dup_drift.xml
@@ -3,17 +3,17 @@
xmlns="urn:xmlns:rhq-plugin"
xmlns:c="urn:xmlns:rhq-configuration">
<server name="ServerWithDupDrift" description="has duplicate drift config names and thus is invalid">
- <drift-configuration name="drift-one">
+ <drift-definition name="drift-one">
<basedir>
<value-context>fileSystem</value-context>
<value-name>/a</value-name>
</basedir>
- </drift-configuration>
- <drift-configuration name="drift-one">
+ </drift-definition>
+ <drift-definition name="drift-one">
<basedir>
<value-context>fileSystem</value-context>
<value-name>/b</value-name>
</basedir>
- </drift-configuration>
+ </drift-definition>
</server>
</plugin>
\ No newline at end of file
diff --git a/modules/enterprise/server/jar/src/test/resources/org/rhq/enterprise/server/resource/metadata/ResourceMetadataManagerBeanTest/plugin_v1.xml b/modules/enterprise/server/jar/src/test/resources/org/rhq/enterprise/server/resource/metadata/ResourceMetadataManagerBeanTest/plugin_v1.xml
index c00a7d0..88cd39c 100644
--- a/modules/enterprise/server/jar/src/test/resources/org/rhq/enterprise/server/resource/metadata/ResourceMetadataManagerBeanTest/plugin_v1.xml
+++ b/modules/enterprise/server/jar/src/test/resources/org/rhq/enterprise/server/resource/metadata/ResourceMetadataManagerBeanTest/plugin_v1.xml
@@ -51,7 +51,7 @@
</configuration>
</content>
- <drift-configuration name="drift-pc">
+ <drift-definition name="drift-pc">
<basedir>
<value-context>pluginConfiguration</value-context>
<value-name>connectionPropertyX</value-name>
@@ -64,14 +64,14 @@
<exclude path="/wot/gorilla" pattern="*.xml" />
<exclude path="/hello"/>
</excludes>
- </drift-configuration>
+ </drift-definition>
- <drift-configuration name="drift-fs">
+ <drift-definition name="drift-fs">
<basedir>
<value-context>fileSystem</value-context>
<value-name>/</value-name>
</basedir>
- </drift-configuration>
+ </drift-definition>
<bundle-target>
<destination-base-dir name="bundleTarget-pc" description="pc-description">
diff --git a/modules/enterprise/server/jar/src/test/resources/org/rhq/enterprise/server/resource/metadata/ResourceMetadataManagerBeanTest/plugin_v2.xml b/modules/enterprise/server/jar/src/test/resources/org/rhq/enterprise/server/resource/metadata/ResourceMetadataManagerBeanTest/plugin_v2.xml
index e522ce0..a89f679 100644
--- a/modules/enterprise/server/jar/src/test/resources/org/rhq/enterprise/server/resource/metadata/ResourceMetadataManagerBeanTest/plugin_v2.xml
+++ b/modules/enterprise/server/jar/src/test/resources/org/rhq/enterprise/server/resource/metadata/ResourceMetadataManagerBeanTest/plugin_v2.xml
@@ -63,7 +63,7 @@
</configuration>
</content>
- <drift-configuration name="drift-rc">
+ <drift-definition name="drift-rc">
<basedir>
<!-- this resource doesn't really have this resource config prop
but today we do not check for validity so this is OK. In the future, if we do
@@ -71,9 +71,9 @@
<value-context>resourceConfiguration</value-context>
<value-name>resourceConfig1</value-name>
</basedir>
- </drift-configuration>
+ </drift-definition>
- <drift-configuration name="drift-mt">
+ <drift-definition name="drift-mt">
<basedir>
<!-- this resource doesn't really have this metric trait
but today we do not check for validity so this is OK. In the future, if we do
@@ -81,7 +81,7 @@
<value-context>measurementTrait</value-context>
<value-name>trait1</value-name>
</basedir>
- </drift-configuration>
+ </drift-definition>
<bundle-target>
<destination-base-dir name="bundleTarget-rc" description="rc-description">
diff --git a/modules/enterprise/server/jar/src/test/resources/org/rhq/enterprise/server/resource/metadata/ResourceMetadataManagerBeanTest/remove_bundle_drift_config_v1.xml b/modules/enterprise/server/jar/src/test/resources/org/rhq/enterprise/server/resource/metadata/ResourceMetadataManagerBeanTest/remove_bundle_drift_config_v1.xml
index 7ed29dd..460954b 100644
--- a/modules/enterprise/server/jar/src/test/resources/org/rhq/enterprise/server/resource/metadata/ResourceMetadataManagerBeanTest/remove_bundle_drift_config_v1.xml
+++ b/modules/enterprise/server/jar/src/test/resources/org/rhq/enterprise/server/resource/metadata/ResourceMetadataManagerBeanTest/remove_bundle_drift_config_v1.xml
@@ -3,12 +3,12 @@
xmlns="urn:xmlns:rhq-plugin"
xmlns:c="urn:xmlns:rhq-configuration">
<server name="ServerWithBundleAndDriftConfig">
- <drift-configuration name="drift1">
+ <drift-definition name="drift1">
<basedir>
<value-context>fileSystem</value-context>
<value-name>/dirA</value-name>
</basedir>
- </drift-configuration>
+ </drift-definition>
<bundle-target>
<destination-base-dir name="destdir1">
diff --git a/modules/enterprise/server/plugins/drift-mongodb/src/main/java/org/rhq/enterprise/server/plugins/drift/mongodb/entities/MongoDBChangeSet.java b/modules/enterprise/server/plugins/drift-mongodb/src/main/java/org/rhq/enterprise/server/plugins/drift/mongodb/entities/MongoDBChangeSet.java
index d13466b..e56bd23 100644
--- a/modules/enterprise/server/plugins/drift-mongodb/src/main/java/org/rhq/enterprise/server/plugins/drift/mongodb/entities/MongoDBChangeSet.java
+++ b/modules/enterprise/server/plugins/drift-mongodb/src/main/java/org/rhq/enterprise/server/plugins/drift/mongodb/entities/MongoDBChangeSet.java
@@ -55,7 +55,7 @@ public class MongoDBChangeSet implements DriftChangeSet<MongoDBChangeSetEntry>,
/**
* Each change set is assigned a version number that is unique across change sets
- * belonging to a given drift configuration (and corresponding resource).
+ * belonging to a given drift definition (and corresponding resource).
*/
private int version;
diff --git a/modules/enterprise/server/plugins/drift-mongodb/src/test/java/org/rhq/enterprise/server/plugins/drift/mongodb/dao/ChangeSetDAOTest.java b/modules/enterprise/server/plugins/drift-mongodb/src/test/java/org/rhq/enterprise/server/plugins/drift/mongodb/dao/ChangeSetDAOTest.java
index 6abaaac..38b3b6e 100644
--- a/modules/enterprise/server/plugins/drift-mongodb/src/test/java/org/rhq/enterprise/server/plugins/drift/mongodb/dao/ChangeSetDAOTest.java
+++ b/modules/enterprise/server/plugins/drift-mongodb/src/test/java/org/rhq/enterprise/server/plugins/drift/mongodb/dao/ChangeSetDAOTest.java
@@ -19,6 +19,18 @@
package org.rhq.enterprise.server.plugins.drift.mongodb.dao;
+import static java.util.Arrays.asList;
+import static org.rhq.core.domain.drift.DriftCategory.FILE_ADDED;
+import static org.rhq.core.domain.drift.DriftCategory.FILE_CHANGED;
+import static org.rhq.core.domain.drift.DriftCategory.FILE_REMOVED;
+import static org.rhq.core.domain.drift.DriftChangeSetCategory.COVERAGE;
+import static org.rhq.core.domain.drift.DriftChangeSetCategory.DRIFT;
+import static org.rhq.core.domain.drift.DriftConfigurationDefinition.DriftHandlingMode.normal;
+import static org.rhq.test.AssertUtils.assertCollectionMatchesNoOrder;
+import static org.rhq.test.AssertUtils.assertPropertiesMatch;
+import static org.testng.Assert.assertNotNull;
+import static org.testng.AssertJUnit.assertEquals;
+
import java.util.List;
import com.google.code.morphia.Datastore;
@@ -26,31 +38,16 @@ import com.google.code.morphia.Morphia;
import com.google.code.morphia.query.Query;
import com.mongodb.Mongo;
-import org.testng.Assert;
-import org.testng.AssertJUnit;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Test;
import org.rhq.core.domain.criteria.GenericDriftCriteria;
-import org.rhq.core.domain.drift.DriftCategory;
import org.rhq.core.domain.drift.DriftChangeSetCategory;
import org.rhq.enterprise.server.plugins.drift.mongodb.entities.MongoDBChangeSet;
import org.rhq.enterprise.server.plugins.drift.mongodb.entities.MongoDBChangeSetEntry;
import org.rhq.enterprise.server.plugins.drift.mongodb.entities.MongoDBFile;
-import static java.util.Arrays.asList;
-import static org.rhq.core.domain.drift.DriftCategory.FILE_ADDED;
-import static org.rhq.core.domain.drift.DriftCategory.FILE_CHANGED;
-import static org.rhq.core.domain.drift.DriftCategory.FILE_REMOVED;
-import static org.rhq.core.domain.drift.DriftChangeSetCategory.COVERAGE;
-import static org.rhq.core.domain.drift.DriftChangeSetCategory.DRIFT;
-import static org.rhq.core.domain.drift.DriftConfigurationDefinition.DriftHandlingMode.normal;
-import static org.rhq.test.AssertUtils.assertCollectionMatchesNoOrder;
-import static org.rhq.test.AssertUtils.assertPropertiesMatch;
-import static org.testng.Assert.assertNotNull;
-import static org.testng.AssertJUnit.assertEquals;
-
public class ChangeSetDAOTest {
// Tests need to be disabled when committed/pushed to the remote repo until we get
@@ -69,10 +66,7 @@ public class ChangeSetDAOTest {
public void initDB() throws Exception {
connection = new Mongo("127.0.0.1");
- morphia = new Morphia()
- .map(MongoDBChangeSet.class)
- .map(MongoDBChangeSetEntry.class)
- .map(MongoDBFile.class);
+ morphia = new Morphia().map(MongoDBChangeSet.class).map(MongoDBChangeSetEntry.class).map(MongoDBFile.class);
ds = morphia.createDatastore(connection, "rhqtest");
}
@@ -116,12 +110,12 @@ public class ChangeSetDAOTest {
// custom assert uses the equals method when comparing the MongoDBFile objects and
// MongoDBFile does not implement equals/hashCode...yet.
-// MongoDBFile file = new MongoDBFile();
-// file.setDataSize(1024L);
-// file.setHashId("a1b2c3d4");
-// file.setStatus(EMPTY);
-//
-// entry.setNewDriftFile(file);
+ // MongoDBFile file = new MongoDBFile();
+ // file.setDataSize(1024L);
+ // file.setHashId("a1b2c3d4");
+ // file.setStatus(EMPTY);
+ //
+ // entry.setNewDriftFile(file);
expected.add(entry);
dao.save(expected);
@@ -200,8 +194,7 @@ public class ChangeSetDAOTest {
MongoDBChangeSet c1 = createChangeSet(COVERAGE, 1, 1, 1).add(new MongoDBChangeSetEntry("c1-1.txt", FILE_ADDED));
dao.save(c1);
- MongoDBChangeSet c2 = createChangeSet(DRIFT, 2, 1, 1)
- .add(new MongoDBChangeSetEntry("c2-1.txt", FILE_ADDED))
+ MongoDBChangeSet c2 = createChangeSet(DRIFT, 2, 1, 1).add(new MongoDBChangeSetEntry("c2-1.txt", FILE_ADDED))
.add(new MongoDBChangeSetEntry("c1-1.txt", FILE_CHANGED));
dao.save(c2);
@@ -215,8 +208,8 @@ public class ChangeSetDAOTest {
List<MongoDBChangeSet> expected = asList(c1, c2);
String ignore = "drifts";
- assertCollectionMatchesNoOrder("Failed to find change sets by drift criteria with category filter.",
- expected, actual, ignore);
+ assertCollectionMatchesNoOrder("Failed to find change sets by drift criteria with category filter.", expected,
+ actual, ignore);
}
@Test(enabled = ENABLED)
@@ -224,8 +217,7 @@ public class ChangeSetDAOTest {
MongoDBChangeSet c1 = createChangeSet(COVERAGE, 1, 1, 1).add(new MongoDBChangeSetEntry("c1-1.txt", FILE_ADDED));
dao.save(c1);
- MongoDBChangeSet c2 = createChangeSet(DRIFT, 2, 1, 1)
- .add(new MongoDBChangeSetEntry("c2-1.txt", FILE_ADDED))
+ MongoDBChangeSet c2 = createChangeSet(DRIFT, 2, 1, 1).add(new MongoDBChangeSetEntry("c2-1.txt", FILE_ADDED))
.add(new MongoDBChangeSetEntry("c1-1.txt", FILE_CHANGED));
dao.save(c2);
@@ -261,8 +253,8 @@ public class ChangeSetDAOTest {
List<MongoDBChangeSet> actual = dao.findByDriftCriteria(criteria);
- assertEquals("Expected to get back only one change set when searching by drift criteria with id filter.",
- 1, actual.size());
+ assertEquals("Expected to get back only one change set when searching by drift criteria with id filter.", 1,
+ actual.size());
assertChangeSetMatches("Failed to find change set by drift criteria with id filter.", c1, actual.get(0));
}
@@ -294,8 +286,8 @@ public class ChangeSetDAOTest {
assertEquals("Expected to get back one change set", 1, actual.size());
MongoDBChangeSet actualChangeSet = actual.get(0);
- assertChangeSetMatches("Failed to find drift entries by drift criteria with start time filter",
- c2, actualChangeSet);
+ assertChangeSetMatches("Failed to find drift entries by drift criteria with start time filter", c2,
+ actualChangeSet);
}
@Test(enabled = ENABLED)
@@ -371,8 +363,8 @@ public class ChangeSetDAOTest {
List<MongoDBChangeSet> actual = dao.findByDriftCriteria(criteria);
- assertChangeSetsMatch("Failed to find change sets by drift criteria with change set id filter",
- asList(c2), actual);
+ assertChangeSetsMatch("Failed to find change sets by drift criteria with change set id filter", asList(c2),
+ actual);
}
private void assertChangeSetsMatch(String msg, List<MongoDBChangeSet> expected, List<MongoDBChangeSet> actual) {
@@ -409,8 +401,8 @@ public class ChangeSetDAOTest {
assertPropertiesMatch(msg, expected, actual, ignore);
ignore = "changeSet";
- assertCollectionMatchesNoOrder(msg + ": " + "change set entries do not match expected entries.",
- expected.getDrifts(), actual.getDrifts(), ignore);
+ assertCollectionMatchesNoOrder(msg + ": " + "change set entries do not match expected entries.", expected
+ .getDrifts(), actual.getDrifts(), ignore);
}
/**
@@ -419,15 +411,15 @@ public class ChangeSetDAOTest {
* @param category A {@link DriftChangeSetCategory}
* @param version The change set version
* @param resourceId The owning resource id
- * @param driftConfigId The drift configuration id
+ * @param driftDefId The drift definition id
* @return A {@link MongoDBChangeSet}
*/
- MongoDBChangeSet createChangeSet(DriftChangeSetCategory category, int version, int resourceId, int driftConfigId) {
+ MongoDBChangeSet createChangeSet(DriftChangeSetCategory category, int version, int resourceId, int driftDefId) {
MongoDBChangeSet changeSet = new MongoDBChangeSet();
changeSet.setCategory(category);
changeSet.setVersion(version);
changeSet.setResourceId(resourceId);
- changeSet.setDriftDefinitionId(driftConfigId);
+ changeSet.setDriftDefinitionId(driftDefId);
return changeSet;
}
diff --git a/modules/plugins/jboss-as-5/src/main/resources/META-INF/rhq-plugin.xml b/modules/plugins/jboss-as-5/src/main/resources/META-INF/rhq-plugin.xml
index a2d68c5..71cfcce 100644
--- a/modules/plugins/jboss-as-5/src/main/resources/META-INF/rhq-plugin.xml
+++ b/modules/plugins/jboss-as-5/src/main/resources/META-INF/rhq-plugin.xml
@@ -1194,7 +1194,7 @@
</configuration>
</content>
- <drift-configuration name="Core Files">
+ <drift-definition name="Core Files">
<basedir>
<value-context>pluginConfiguration</value-context>
<value-name>homeDir</value-name>
@@ -1204,7 +1204,7 @@
<include path="lib" />
<include path="client" />
</includes>
- </drift-configuration>
+ </drift-definition>
<bundle-target>
<destination-base-dir name="Install Directory" description="The top directory where the JBossAS Server is installed. (i.e. the value found in the 'JBoss Home Directory' connection property)">
diff --git a/modules/plugins/jboss-as/src/main/resources/META-INF/rhq-plugin.xml b/modules/plugins/jboss-as/src/main/resources/META-INF/rhq-plugin.xml
index 2d11f7a..56992c8 100644
--- a/modules/plugins/jboss-as/src/main/resources/META-INF/rhq-plugin.xml
+++ b/modules/plugins/jboss-as/src/main/resources/META-INF/rhq-plugin.xml
@@ -257,7 +257,7 @@
</configuration>
</content>
- <drift-configuration name="Core Files">
+ <drift-definition name="Core Files">
<basedir>
<value-context>pluginConfiguration</value-context>
<value-name>jbossHomeDir</value-name>
@@ -267,7 +267,7 @@
<include path="lib" />
<include path="client" />
</includes>
- </drift-configuration>
+ </drift-definition>
<bundle-target>
<destination-base-dir name="Install Directory" description="The top directory where the JBossAS Server is installed. (i.e. the value found in the 'JBoss Home Directory' connection property)">
diff --git a/modules/plugins/platform/src/main/resources/META-INF/rhq-plugin.xml b/modules/plugins/platform/src/main/resources/META-INF/rhq-plugin.xml
index d5f3932..d1ce37d 100644
--- a/modules/plugins/platform/src/main/resources/META-INF/rhq-plugin.xml
+++ b/modules/plugins/platform/src/main/resources/META-INF/rhq-plugin.xml
@@ -40,12 +40,12 @@
</bundle-target>
'>
<!ENTITY driftConfig '
- <drift-configuration name="File System">
+ <drift-definition name="File System">
<basedir>
<value-context>fileSystem</value-context>
<value-name>/</value-name>
</basedir>
- </drift-configuration>
+ </drift-definition>
'>
<!ENTITY metrics '
<metric displayName="Hostname"
commit 0a5ac85bdf885ae29cbee5492c3644fcd5a53797
Author: John Sanda <jsanda(a)redhat.com>
Date: Mon Sep 26 10:16:55 2011 -0400
First pass at using $slice operator to fetch drift entries by id
This is not yet working. The query results are not limiting the drift
entries.
diff --git a/modules/enterprise/server/plugins/drift-mongodb/src/main/java/org/rhq/enterprise/server/plugins/drift/mongodb/dao/ChangeSetDAO.java b/modules/enterprise/server/plugins/drift-mongodb/src/main/java/org/rhq/enterprise/server/plugins/drift/mongodb/dao/ChangeSetDAO.java
index dd230ac..0a62bc8 100644
--- a/modules/enterprise/server/plugins/drift-mongodb/src/main/java/org/rhq/enterprise/server/plugins/drift/mongodb/dao/ChangeSetDAO.java
+++ b/modules/enterprise/server/plugins/drift-mongodb/src/main/java/org/rhq/enterprise/server/plugins/drift/mongodb/dao/ChangeSetDAO.java
@@ -24,19 +24,25 @@ import java.util.List;
import com.google.code.morphia.Morphia;
import com.google.code.morphia.dao.BasicDAO;
import com.google.code.morphia.query.Query;
+import com.mongodb.BasicDBObject;
+import com.mongodb.DBObject;
import com.mongodb.Mongo;
import org.bson.types.ObjectId;
import org.rhq.core.domain.criteria.DriftCriteria;
import org.rhq.enterprise.server.plugins.drift.mongodb.entities.MongoDBChangeSet;
+import org.rhq.enterprise.server.plugins.drift.mongodb.entities.MongoDBChangeSetEntry;
import static java.util.Arrays.asList;
public class ChangeSetDAO extends BasicDAO<MongoDBChangeSet, ObjectId> {
+ private Morphia morphia;
+
public ChangeSetDAO(Morphia morphia, Mongo mongo, String db) {
super(mongo, morphia, db);
+ this.morphia = morphia;
}
public List<MongoDBChangeSet> findByDriftCriteria(DriftCriteria criteria) {
@@ -84,4 +90,36 @@ public class ChangeSetDAO extends BasicDAO<MongoDBChangeSet, ObjectId> {
return query.asList();
}
+ public List<MongoDBChangeSetEntry> findEntries(DriftCriteria criteria) {
+ Query<MongoDBChangeSet> query = createQuery();
+
+ if (criteria.getFilterId() != null) {
+ String[] ids = criteria.getFilterId().split(":");
+ ObjectId changeSetId = new ObjectId(ids[0]);
+ return asList(findEntryById(changeSetId, ids[1]));
+ }
+
+ return null;
+ }
+
+ public MongoDBChangeSetEntry findEntryById(ObjectId changeSetId, String entryId) {
+ BasicDBObject query = new BasicDBObject();
+ query.put("_id", changeSetId);
+
+ BasicDBObject keys = new BasicDBObject();
+ keys.put("files", new BasicDBObject().append("$slice", new Integer[] {Integer.valueOf(entryId), 1}));
+
+ DBObject result = getCollection().findOne(query, new BasicDBObject());
+
+ if (result == null) {
+ return null;
+ }
+
+ MongoDBChangeSet changeSet = morphia.fromDBObject(MongoDBChangeSet.class, result);
+ if (!changeSet.getDrifts().isEmpty()) {
+ return changeSet.getDrifts().iterator().next();
+ }
+ return null;
+ }
+
}
diff --git a/modules/enterprise/server/plugins/drift-mongodb/src/main/java/org/rhq/enterprise/server/plugins/drift/mongodb/entities/MongoDBChangeSet.java b/modules/enterprise/server/plugins/drift-mongodb/src/main/java/org/rhq/enterprise/server/plugins/drift/mongodb/entities/MongoDBChangeSet.java
index 0bdd2fd..e5f59b7 100644
--- a/modules/enterprise/server/plugins/drift-mongodb/src/main/java/org/rhq/enterprise/server/plugins/drift/mongodb/entities/MongoDBChangeSet.java
+++ b/modules/enterprise/server/plugins/drift-mongodb/src/main/java/org/rhq/enterprise/server/plugins/drift/mongodb/entities/MongoDBChangeSet.java
@@ -19,7 +19,9 @@
package org.rhq.enterprise.server.plugins.drift.mongodb.entities;
import java.io.Serializable;
-import java.util.HashSet;
+import java.util.ArrayList;
+import java.util.LinkedHashSet;
+import java.util.List;
import java.util.Set;
import com.google.code.morphia.annotations.Embedded;
@@ -68,7 +70,7 @@ public class MongoDBChangeSet implements DriftChangeSet<MongoDBChangeSetEntry>,
private int resourceId;
@Embedded("files")
- private Set<MongoDBChangeSetEntry> entries = new HashSet<MongoDBChangeSetEntry>();
+ private List<MongoDBChangeSetEntry> entries = new ArrayList<MongoDBChangeSetEntry>();
public ObjectId getObjectId() {
return id;
@@ -144,7 +146,7 @@ public class MongoDBChangeSet implements DriftChangeSet<MongoDBChangeSetEntry>,
@Override
public Set<MongoDBChangeSetEntry> getDrifts() {
- return entries;
+ return new LinkedHashSet(entries);
}
public MongoDBChangeSet add(MongoDBChangeSetEntry entry) {
@@ -156,7 +158,9 @@ public class MongoDBChangeSet implements DriftChangeSet<MongoDBChangeSetEntry>,
@Override
public void setDrifts(Set<MongoDBChangeSetEntry> drifts) {
- entries = drifts;
+ for (MongoDBChangeSetEntry entry : drifts) {
+ add(entry);
+ }
}
@PostLoad
diff --git a/modules/enterprise/server/plugins/drift-mongodb/src/test/java/org/rhq/enterprise/server/plugins/drift/mongodb/dao/ChangeSetDAOTest.java b/modules/enterprise/server/plugins/drift-mongodb/src/test/java/org/rhq/enterprise/server/plugins/drift/mongodb/dao/ChangeSetDAOTest.java
index 1c3c3c7..ce6458d 100644
--- a/modules/enterprise/server/plugins/drift-mongodb/src/test/java/org/rhq/enterprise/server/plugins/drift/mongodb/dao/ChangeSetDAOTest.java
+++ b/modules/enterprise/server/plugins/drift-mongodb/src/test/java/org/rhq/enterprise/server/plugins/drift/mongodb/dao/ChangeSetDAOTest.java
@@ -26,14 +26,11 @@ import com.google.code.morphia.Morphia;
import com.google.code.morphia.query.Query;
import com.mongodb.Mongo;
-import org.testng.Assert;
-import org.testng.AssertJUnit;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Test;
import org.rhq.core.domain.criteria.GenericDriftCriteria;
-import org.rhq.core.domain.drift.DriftCategory;
import org.rhq.core.domain.drift.DriftChangeSetCategory;
import org.rhq.enterprise.server.plugins.drift.mongodb.entities.MongoDBChangeSet;
import org.rhq.enterprise.server.plugins.drift.mongodb.entities.MongoDBChangeSetEntry;
@@ -49,13 +46,13 @@ import static org.rhq.core.domain.drift.DriftConfigurationDefinition.DriftHandli
import static org.rhq.test.AssertUtils.assertCollectionMatchesNoOrder;
import static org.rhq.test.AssertUtils.assertPropertiesMatch;
import static org.testng.Assert.assertNotNull;
-import static org.testng.AssertJUnit.assertEquals;
+import static org.testng.Assert.assertEquals;
public class ChangeSetDAOTest {
// Tests need to be disabled when committed/pushed to the remote repo until we get
// mongodb installed on the hudson slave
- static final boolean ENABLED = false;
+ static final boolean ENABLED = true;
Mongo connection;
@@ -244,6 +241,23 @@ public class ChangeSetDAOTest {
}
@Test(enabled = ENABLED)
+ public void findEntriesWithIdFilter() throws Exception {
+ MongoDBChangeSet c1 = createChangeSet(COVERAGE, 1, 1, 1);
+ MongoDBChangeSetEntry e1 = new MongoDBChangeSetEntry("c1-1.txt", FILE_ADDED);
+ MongoDBChangeSetEntry e2 = new MongoDBChangeSetEntry("c2-1.txt", FILE_ADDED);
+ c1.add(e1);
+ c1.add(e2);
+ dao.save(c1);
+
+ GenericDriftCriteria criteria = new GenericDriftCriteria();
+ criteria.addFilterId(e2.getId());
+
+ List<MongoDBChangeSetEntry> entries = dao.findEntries(criteria);
+ assertEquals(entries.size(), 1, "Expected to get back one change set entry");
+ assertPropertiesMatch(e2, entries.get(0), "Failed to find change set entry with id filter");
+ }
+
+ @Test(enabled = ENABLED)
public void findByDriftCriteriaWithIdFilter() throws Exception {
MongoDBChangeSet c1 = createChangeSet(COVERAGE, 1, 1, 1);
MongoDBChangeSetEntry entry = new MongoDBChangeSetEntry("c1-1.txt", FILE_ADDED);
@@ -261,8 +275,8 @@ public class ChangeSetDAOTest {
List<MongoDBChangeSet> actual = dao.findByDriftCriteria(criteria);
- assertEquals("Expected to get back only one change set when searching by drift criteria with id filter.",
- 1, actual.size());
+ assertEquals(actual.size(), 1, "Expected to get back only one change set when searching by drift criteria " +
+ "with id filter.");
assertChangeSetMatches("Failed to find change set by drift criteria with id filter.", c1, actual.get(0));
}
@@ -291,7 +305,7 @@ public class ChangeSetDAOTest {
List<MongoDBChangeSet> actual = dao.findByDriftCriteria(criteria);
- assertEquals("Expected to get back one change set", 1, actual.size());
+ assertEquals(actual.size(), 1, "Expected to get back one change set");
MongoDBChangeSet actualChangeSet = actual.get(0);
assertChangeSetMatches("Failed to find drift entries by drift criteria with start time filter",
@@ -323,7 +337,7 @@ public class ChangeSetDAOTest {
List<MongoDBChangeSet> actual = dao.findByDriftCriteria(criteria);
- assertEquals("Expected to get back one change set", 1, actual.size());
+ assertEquals(actual.size(), 1, "Expected to get back one change set");
MongoDBChangeSet actualChangeSet = actual.get(0);
assertChangeSetMatches("Failed to find drift entries with end time filter", c1, actualChangeSet);
12 years, 7 months
[rhq] modules/core modules/enterprise
by lkrejci
modules/core/domain/src/main/java/org/rhq/core/domain/common/EntityContext.java | 15 ++++++++
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/groups/detail/ResourceGroupDetailView.java | 13 +++++--
modules/enterprise/gui/portal-war/src/main/java/org/rhq/enterprise/gui/measurement/graphs/IndicatorChartsUIBean.java | 17 +++++++++-
modules/enterprise/gui/portal-war/src/main/webapp/rhq/common/monitor/measurement/data-plain.xhtml | 17 +++++++++-
4 files changed, 57 insertions(+), 5 deletions(-)
New commits:
commit b53f710b1149a6552b6d2dabb47544f3bf94a167
Author: Lukas Krejci <lkrejci(a)redhat.com>
Date: Mon Oct 3 14:32:57 2011 +0200
BZ 740582 - generate correct group URLs in the JSF-based metric graphs page in various contexts.
diff --git a/modules/core/domain/src/main/java/org/rhq/core/domain/common/EntityContext.java b/modules/core/domain/src/main/java/org/rhq/core/domain/common/EntityContext.java
index c06c812..5f3d16d 100644
--- a/modules/core/domain/src/main/java/org/rhq/core/domain/common/EntityContext.java
+++ b/modules/core/domain/src/main/java/org/rhq/core/domain/common/EntityContext.java
@@ -22,6 +22,8 @@ import java.io.Serializable;
import java.util.HashMap;
import java.util.Map;
+import org.rhq.core.domain.resource.group.ResourceGroup;
+
/**
* Category is assigned with the following preference assuming multiple categories can be satisfied with the available context information:
* <pre>
@@ -140,6 +142,19 @@ public class EntityContext implements Serializable {
return context;
}
+ public static EntityContext forGroup(ResourceGroup group) {
+ EntityContext ret = new EntityContext(null, group.getId(), null, null);
+ ret.isAutoCluster = group.getClusterResourceGroup() != null;
+ ret.isAutoGroup = group.getSubject() != null;
+
+ if (ret.isAutoGroup) {
+ ret.parentResourceId = group.getAutoGroupParentResource().getId();
+ ret.resourceTypeId = group.getResourceType().getId();
+ }
+
+ return ret;
+ }
+
// TODO: deprecated
public static EntityContext forAutoGroup(int parentResourceId, int resourceTypeId) {
return new EntityContext(null, null, parentResourceId, resourceTypeId);
diff --git a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/groups/detail/ResourceGroupDetailView.java b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/groups/detail/ResourceGroupDetailView.java
index 733f0d7..048b449 100644
--- a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/groups/detail/ResourceGroupDetailView.java
+++ b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/groups/detail/ResourceGroupDetailView.java
@@ -29,6 +29,7 @@ import com.smartgwt.client.widgets.Canvas;
import org.rhq.core.domain.auth.Subject;
import org.rhq.core.domain.authz.Permission;
+import org.rhq.core.domain.common.EntityContext;
import org.rhq.core.domain.criteria.ResourceGroupCriteria;
import org.rhq.core.domain.measurement.DataType;
import org.rhq.core.domain.measurement.MeasurementDefinition;
@@ -289,13 +290,19 @@ public class ResourceGroupDetailView extends AbstractTwoLevelTabSetView<Resource
// no metrics.
boolean visible = hasMetricsOfType(this.groupComposite, null);
if (updateTab(this.monitoringTab, visible, true)) {
- final int groupId = groupComposite.getResourceGroup().getId();
+ final EntityContext groupContext = EntityContext.forGroup(groupComposite.getResourceGroup());
visible = hasMetricsOfType(this.groupComposite, DataType.MEASUREMENT);
viewFactory = (!visible) ? null : new ViewFactory() {
@Override
public Canvas createView() {
- return new FullHTMLPane(monitorGraphs.extendLocatorId("View"),
- "/rhq/group/monitor/graphs-plain.xhtml?groupId=" + groupId);
+ String url = "/rhq/group/monitor/graphs-plain.xhtml?groupId=" + groupId;
+
+ if (groupContext.isAutoGroup()) {
+ url += "&parent=" + groupContext.parentResourceId + "&type=" + groupContext.resourceTypeId + "&groupType=auto";
+ } else if (groupContext.isAutoCluster()) {
+ url += "&groupType=cluster";
+ }
+ return new FullHTMLPane(monitorGraphs.extendLocatorId("View"), url);
}
};
updateSubTab(this.monitoringTab, this.monitorGraphs, visible, true, viewFactory);
diff --git a/modules/enterprise/gui/portal-war/src/main/java/org/rhq/enterprise/gui/measurement/graphs/IndicatorChartsUIBean.java b/modules/enterprise/gui/portal-war/src/main/java/org/rhq/enterprise/gui/measurement/graphs/IndicatorChartsUIBean.java
index 75100e5..fb00859 100644
--- a/modules/enterprise/gui/portal-war/src/main/java/org/rhq/enterprise/gui/measurement/graphs/IndicatorChartsUIBean.java
+++ b/modules/enterprise/gui/portal-war/src/main/java/org/rhq/enterprise/gui/measurement/graphs/IndicatorChartsUIBean.java
@@ -55,7 +55,8 @@ public class IndicatorChartsUIBean {
List<MetricDisplaySummary> data = new ArrayList<MetricDisplaySummary>();
List<String> views;
String view;
-
+ String groupType;
+
public EntityContext getContext() {
return context;
}
@@ -72,6 +73,10 @@ public class IndicatorChartsUIBean {
return view;
}
+ public String getGroupType() {
+ return groupType;
+ }
+
public IndicatorChartsUIBean() {
log.debug("Creating " + IndicatorChartsUIBean.class.getSimpleName());
WebUser user = EnterpriseFacesContextUtility.getWebUser();
@@ -81,16 +86,26 @@ public class IndicatorChartsUIBean {
HttpServletRequest request = FacesContextUtility.getRequest();
context = WebUtility.getEntityContext(request);
+ groupType = WebUtility.getOptionalRequestParameter(request, "groupType", "group");
view = viewManager.getSelectedView(subject, context);
views = viewManager.getViewNames(subject, context);
if (context.type == EntityContext.Type.Resource) {
data = chartsManager.getMetricDisplaySummariesForResource(subject, context.resourceId, view);
} else if (context.type == EntityContext.Type.ResourceGroup) {
+ //when invoked from the GWT GUI, this is where we read the data for autogroups as well.
+ //the data is correct, because the autogroups are backed by a "real" group now (as opposed to pre RHQ 3)
+ //For the UI to correctly generate the links to various subsystems, we now employ the "groupType" property
+ //that is being passed from the GWT GUI (namely ResourceGroupDetailView#updateMonitoringTab()), where it is
+ //known what type of group we're dealing with.
+ //This is so that we don't have to read the group from the database here yet again to determine
+ //its type.
+ //Yes, this is slightly hacky and error-prone but here's hoping the JSF UI won't survive much longer.
data = chartsManager.getMetricDisplaySummariesForCompatibleGroup(subject, context.groupId, view);
} else if (context.type == EntityContext.Type.AutoGroup) {
data = chartsManager.getMetricDisplaySummariesForAutoGroup(subject, context.parentResourceId,
context.resourceTypeId, view);
+ groupType = "auto";
}
// re-persist just in case we created the list for the first time
diff --git a/modules/enterprise/gui/portal-war/src/main/webapp/rhq/common/monitor/measurement/data-plain.xhtml b/modules/enterprise/gui/portal-war/src/main/webapp/rhq/common/monitor/measurement/data-plain.xhtml
index d944499..c660c6a 100644
--- a/modules/enterprise/gui/portal-war/src/main/webapp/rhq/common/monitor/measurement/data-plain.xhtml
+++ b/modules/enterprise/gui/portal-war/src/main/webapp/rhq/common/monitor/measurement/data-plain.xhtml
@@ -79,6 +79,7 @@
<ui:param name="tableBorder" value="0" /> <!-- used for quick debugging -->
<ui:param name="context" value="#{IndicatorChartsUIBean.context}" />
+<ui:param name="groupType" value="#{IndicatorChartsUIBean.groupType}" />
<c:forEach var="metric" varStatus="status" items="#{IndicatorChartsUIBean.data}">
<li id="#{metric.metricToken}">
@@ -111,13 +112,27 @@
<h:outputText value="#{metric.label} " />
<c:choose>
- <c:when test="#{context.groupId > 0}">
+ <c:when test="#{context.groupId > 0 and groupType == 'group'}">
<h:outputLink target="_top" value="/coregui/CoreGUI.html#ResourceGroup/#{metric.groupId}">
<h:outputFormat value="#{msg['common.value.parenthesis']}">
<f:param value="#{metric.metricSource}" />
</h:outputFormat>
</h:outputLink>
</c:when>
+ <c:when test="#{context.groupId > 0 and groupType == 'auto'}">
+ <h:outputLink target="_top" value="/coregui/CoreGUI.html#Resource/AutoGroup/#{context.groupId}">
+ <h:outputFormat value="#{msg['common.value.parenthesis']}">
+ <f:param value="#{metric.metricSource}" />
+ </h:outputFormat>
+ </h:outputLink>
+ </c:when>
+ <c:when test="#{context.groupId > 0 and groupType == 'cluster'}">
+ <h:outputLink target="_top" value="/coregui/CoreGUI.html#ResourceGroup/AutoCluster/#{metric.groupId}">
+ <h:outputFormat value="#{msg['common.value.parenthesis']}">
+ <f:param value="#{metric.metricSource}" />
+ </h:outputFormat>
+ </h:outputLink>
+ </c:when>
<c:otherwise>
<h:outputLink target="_top" value="/coregui/CoreGUI.html#Resource/#{metric.metricSourceId}">
<h:outputFormat value="#{msg['common.value.parenthesis']}">
12 years, 7 months
[rhq] modules/enterprise
by John Sanda
modules/enterprise/server/plugins/drift-mongodb/src/main/java/org/rhq/enterprise/server/plugins/drift/mongodb/dao/ChangeSetDAO.java | 24 +-
modules/enterprise/server/plugins/drift-mongodb/src/main/java/org/rhq/enterprise/server/plugins/drift/mongodb/dao/CreatedAfterFilter.java | 37 +++
modules/enterprise/server/plugins/drift-mongodb/src/main/java/org/rhq/enterprise/server/plugins/drift/mongodb/dao/CreatedBeforeFilter.java | 36 +++
modules/enterprise/server/plugins/drift-mongodb/src/main/java/org/rhq/enterprise/server/plugins/drift/mongodb/dao/PathFilter.java | 37 +++
modules/enterprise/server/plugins/drift-mongodb/src/test/java/org/rhq/enterprise/server/plugins/drift/mongodb/dao/ChangeSetDAOTest.java | 101 +++++-----
5 files changed, 183 insertions(+), 52 deletions(-)
New commits:
commit 702edd731c109c7a001f1af3867793731e265f9b
Author: John Sanda <jsanda(a)redhat.com>
Date: Sun Oct 2 22:06:08 2011 -0400
Adding support for filtering on creation time and path for drift criteria queries
diff --git a/modules/enterprise/server/plugins/drift-mongodb/src/main/java/org/rhq/enterprise/server/plugins/drift/mongodb/dao/ChangeSetDAO.java b/modules/enterprise/server/plugins/drift-mongodb/src/main/java/org/rhq/enterprise/server/plugins/drift/mongodb/dao/ChangeSetDAO.java
index 384128e..85ab7cb 100644
--- a/modules/enterprise/server/plugins/drift-mongodb/src/main/java/org/rhq/enterprise/server/plugins/drift/mongodb/dao/ChangeSetDAO.java
+++ b/modules/enterprise/server/plugins/drift-mongodb/src/main/java/org/rhq/enterprise/server/plugins/drift/mongodb/dao/ChangeSetDAO.java
@@ -21,8 +21,6 @@ package org.rhq.enterprise.server.plugins.drift.mongodb.dao;
import java.util.ArrayList;
import java.util.List;
-import java.util.Set;
-import java.util.TreeSet;
import com.google.code.morphia.Morphia;
import com.google.code.morphia.dao.BasicDAO;
@@ -34,7 +32,6 @@ import com.mongodb.Mongo;
import org.bson.types.ObjectId;
import org.rhq.core.domain.criteria.DriftCriteria;
-import org.rhq.core.domain.drift.DriftCategory;
import org.rhq.enterprise.server.plugins.drift.mongodb.entities.MongoDBChangeSet;
import org.rhq.enterprise.server.plugins.drift.mongodb.entities.MongoDBChangeSetEntry;
@@ -113,12 +110,29 @@ public class ChangeSetDAO extends BasicDAO<MongoDBChangeSet, ObjectId> {
}
if (criteria.getFilterCategories().length > 0) {
- List<DriftCategory> list = asList(criteria.getFilterCategories());
- query.field("files.category").in(list);
+ query.field("files.category").in(asList(criteria.getFilterCategories()));
entriesFiltered = true;
filters.add(new CategoryFilter(criteria.getFilterCategories()));
}
+ if (criteria.getFilterEndTime() != null) {
+ query.field("files.ctime").lessThanOrEq(criteria.getFilterEndTime());
+ entriesFiltered = true;
+ filters.add(new CreatedBeforeFilter(criteria.getFilterEndTime()));
+ }
+
+ if (criteria.getFilterStartTime() != null) {
+ query.field("files.ctime").greaterThanOrEq(criteria.getFilterStartTime());
+ entriesFiltered = true;
+ filters.add(new CreatedAfterFilter(criteria.getFilterStartTime()));
+ }
+
+ if (criteria.getFilterPath() != null && !criteria.getFilterPath().isEmpty()) {
+ query.field("files.path").equal(criteria.getFilterPath());
+ entriesFiltered = true;
+ filters.add(new PathFilter(criteria.getFilterPath()));
+ }
+
List<MongoDBChangeSetEntry> entries = new ArrayList<MongoDBChangeSetEntry>();
if (changeSetsFiltered && !entriesFiltered) {
diff --git a/modules/enterprise/server/plugins/drift-mongodb/src/main/java/org/rhq/enterprise/server/plugins/drift/mongodb/dao/CreatedAfterFilter.java b/modules/enterprise/server/plugins/drift-mongodb/src/main/java/org/rhq/enterprise/server/plugins/drift/mongodb/dao/CreatedAfterFilter.java
new file mode 100644
index 0000000..eeb40a3
--- /dev/null
+++ b/modules/enterprise/server/plugins/drift-mongodb/src/main/java/org/rhq/enterprise/server/plugins/drift/mongodb/dao/CreatedAfterFilter.java
@@ -0,0 +1,37 @@
+/*
+ * RHQ Management Platform
+ * Copyright (C) 2011 Red Hat, Inc.
+ * All rights reserved.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation version 2 of the License.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+package org.rhq.enterprise.server.plugins.drift.mongodb.dao;
+
+import org.rhq.enterprise.server.plugins.drift.mongodb.entities.MongoDBChangeSetEntry;
+
+class CreatedAfterFilter implements ChangeSetEntryFilter {
+
+ private long ctime;
+
+ public CreatedAfterFilter(long ctime) {
+ this.ctime = ctime;
+ }
+
+ @Override
+ public boolean matches(MongoDBChangeSetEntry entry) {
+ return entry.getCtime() >= ctime;
+ }
+
+}
diff --git a/modules/enterprise/server/plugins/drift-mongodb/src/main/java/org/rhq/enterprise/server/plugins/drift/mongodb/dao/CreatedBeforeFilter.java b/modules/enterprise/server/plugins/drift-mongodb/src/main/java/org/rhq/enterprise/server/plugins/drift/mongodb/dao/CreatedBeforeFilter.java
new file mode 100644
index 0000000..9dc72cf
--- /dev/null
+++ b/modules/enterprise/server/plugins/drift-mongodb/src/main/java/org/rhq/enterprise/server/plugins/drift/mongodb/dao/CreatedBeforeFilter.java
@@ -0,0 +1,36 @@
+/*
+ * RHQ Management Platform
+ * Copyright (C) 2011 Red Hat, Inc.
+ * All rights reserved.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation version 2 of the License.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+package org.rhq.enterprise.server.plugins.drift.mongodb.dao;
+
+import org.rhq.enterprise.server.plugins.drift.mongodb.entities.MongoDBChangeSetEntry;
+
+class CreatedBeforeFilter implements ChangeSetEntryFilter {
+
+ private long ctime;
+
+ public CreatedBeforeFilter(long ctime) {
+ this.ctime = ctime;
+ }
+
+ @Override
+ public boolean matches(MongoDBChangeSetEntry entry) {
+ return entry.getCtime() <= ctime;
+ }
+}
diff --git a/modules/enterprise/server/plugins/drift-mongodb/src/main/java/org/rhq/enterprise/server/plugins/drift/mongodb/dao/PathFilter.java b/modules/enterprise/server/plugins/drift-mongodb/src/main/java/org/rhq/enterprise/server/plugins/drift/mongodb/dao/PathFilter.java
new file mode 100644
index 0000000..076101f
--- /dev/null
+++ b/modules/enterprise/server/plugins/drift-mongodb/src/main/java/org/rhq/enterprise/server/plugins/drift/mongodb/dao/PathFilter.java
@@ -0,0 +1,37 @@
+/*
+ * RHQ Management Platform
+ * Copyright (C) 2011 Red Hat, Inc.
+ * All rights reserved.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation version 2 of the License.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+package org.rhq.enterprise.server.plugins.drift.mongodb.dao;
+
+import org.rhq.enterprise.server.plugins.drift.mongodb.entities.MongoDBChangeSetEntry;
+
+class PathFilter implements ChangeSetEntryFilter {
+
+ private String path;
+
+ public PathFilter(String path) {
+ this.path = path;
+ }
+
+ @Override
+ public boolean matches(MongoDBChangeSetEntry entry) {
+ return entry.getPath().equals(path);
+ }
+
+}
diff --git a/modules/enterprise/server/plugins/drift-mongodb/src/test/java/org/rhq/enterprise/server/plugins/drift/mongodb/dao/ChangeSetDAOTest.java b/modules/enterprise/server/plugins/drift-mongodb/src/test/java/org/rhq/enterprise/server/plugins/drift/mongodb/dao/ChangeSetDAOTest.java
index b89f40c..4118e57 100644
--- a/modules/enterprise/server/plugins/drift-mongodb/src/test/java/org/rhq/enterprise/server/plugins/drift/mongodb/dao/ChangeSetDAOTest.java
+++ b/modules/enterprise/server/plugins/drift-mongodb/src/test/java/org/rhq/enterprise/server/plugins/drift/mongodb/dao/ChangeSetDAOTest.java
@@ -352,79 +352,86 @@ public class ChangeSetDAOTest {
asList(e1, e2, e4), entries);
}
-// @Test(enabled = ENABLED)
-// public void findEntriesWithResourceIdAndStartTimeFilters() throws Exception {
-// MongoDBChangeSet c1 = createChangeSet(COVERAGE, 1, 1, 1);
-// MongoDBChangeSetEntry e1 = new MongoDBChangeSetEntry("c1-1.txt", FILE_ADDED);
-// c1.add(e1);
-// dao.save(c1);
-//
-// long startTime = System.currentTimeMillis();
-// Thread.sleep(10);
-//
-// MongoDBChangeSet c2 = createChangeSet(DRIFT, 2, 2, 1);
-// MongoDBChangeSetEntry e2 = new MongoDBChangeSetEntry("c1-1.txt", FILE_CHANGED);
-// c2.add(e2);
-// dao.save(c2);
-//
-// GenericDriftCriteria criteria = new GenericDriftCriteria();
-// criteria.addFilterResourceIds(resourceId);
-// }
-
@Test(enabled = ENABLED)
- public void findByDriftCriteriaWithEndTimeFilter() throws Exception {
- int resourceId = 1;
-
- MongoDBChangeSet c1 = createChangeSet(COVERAGE, 1, resourceId, 1);
+ public void findEntriesWithResourceIdAndStartTimeFilter() throws Exception {
+ MongoDBChangeSet c1 = createChangeSet(COVERAGE, 1, 1, 1);
MongoDBChangeSetEntry e1 = new MongoDBChangeSetEntry("c1-1.txt", FILE_ADDED);
c1.add(e1);
-
dao.save(c1);
- long endTime = System.currentTimeMillis();
+ long startTime = System.currentTimeMillis();
Thread.sleep(10);
- MongoDBChangeSet c2 = createChangeSet(DRIFT, 2, resourceId, 1);
- MongoDBChangeSetEntry e2 = new MongoDBChangeSetEntry("c1-1.txt", FILE_CHANGED);
- c2.add(e2);
-
+ MongoDBChangeSet c2 = createChangeSet(COVERAGE, 1, 2, 1);
+ c2.add(new MongoDBChangeSetEntry("c2-1.txt", FILE_ADDED));
dao.save(c2);
+ MongoDBChangeSet c3 = createChangeSet(DRIFT, 2, 1, 1);
+ MongoDBChangeSetEntry e3 = new MongoDBChangeSetEntry("c1-1.txt", FILE_CHANGED);
+ c3.add(e3);
+ dao.save(c3);
+
GenericDriftCriteria criteria = new GenericDriftCriteria();
- criteria.addFilterEndTime(endTime);
- criteria.addFilterResourceIds(resourceId);
+ criteria.addFilterStartTime(startTime);
+ criteria.addFilterResourceIds(1);
- List<MongoDBChangeSet> actual = dao.findByDriftCriteria(criteria);
+ List<MongoDBChangeSetEntry> entries = dao.findEntries(criteria);
+ assertEntriesMatch("Failed to find change set entries with resource id and start time filters", asList(e3),
+ entries);
+ }
- assertEquals(actual.size(), 1, "Expected to get back one change set");
- MongoDBChangeSet actualChangeSet = actual.get(0);
+ @Test(enabled = ENABLED)
+ public void findEntriesWithResourceIdAndEndTimeFilter() throws Exception {
+ MongoDBChangeSet c1 = createChangeSet(COVERAGE, 1, 1, 1);
+ MongoDBChangeSetEntry e1 = new MongoDBChangeSetEntry("c1-1.txt", FILE_ADDED);
+ c1.add(e1);
+ dao.save(c1);
+
+ MongoDBChangeSet c2 = createChangeSet(COVERAGE, 1, 2, 1);
+ c2.add(new MongoDBChangeSetEntry("c2-1.txt", FILE_ADDED));
+ dao.save(c2);
+
+ long endTime = System.currentTimeMillis();
+ Thread.sleep(10);
+
+ MongoDBChangeSet c3 = createChangeSet(DRIFT, 2, 1, 1);
+ MongoDBChangeSetEntry e3 = new MongoDBChangeSetEntry("c1-1.txt", FILE_CHANGED);
+ c3.add(e3);
+ dao.save(c3);
+
+ GenericDriftCriteria criteria = new GenericDriftCriteria();
+ criteria.addFilterEndTime(endTime);
+ criteria.addFilterResourceIds(1);
- assertChangeSetMatches("Failed to find drift entries with end time filter", c1, actualChangeSet);
+ List<MongoDBChangeSetEntry> entries = dao.findEntries(criteria);
+ assertEntriesMatch("Failed to find change set entries with resource id and end time filters", asList(e1),
+ entries);
}
@Test(enabled = ENABLED)
- public void findByDriftCriteriaWithPathFilter() throws Exception {
+ public void findEntriesWithPathFilter() throws Exception {
MongoDBChangeSet c1 = createChangeSet(COVERAGE, 1, 1, 1);
- c1.add(new MongoDBChangeSetEntry("c1-1.txt", FILE_ADDED));
-
+ MongoDBChangeSetEntry e1 = new MongoDBChangeSetEntry("c1-1.txt", FILE_ADDED);
+ c1.add(e1);
dao.save(c1);
MongoDBChangeSet c2 = createChangeSet(DRIFT, 2, 1, 1);
- c2.add(new MongoDBChangeSetEntry("c1-1.txt", FILE_CHANGED));
-
+ MongoDBChangeSetEntry e2 = new MongoDBChangeSetEntry("c1-1.txt", FILE_CHANGED);
+ MongoDBChangeSetEntry e3 = new MongoDBChangeSetEntry("c2-1.txt", FILE_ADDED);
+ c2.add(e2).add(e3);
dao.save(c2);
- MongoDBChangeSet c3 = createChangeSet(DRIFT, 3, 1, 1);
- c3.add(new MongoDBChangeSetEntry("c2-1.txt", FILE_ADDED));
-
+ MongoDBChangeSet c3 = createChangeSet(COVERAGE, 1, 2, 1);
+ MongoDBChangeSetEntry e4 = new MongoDBChangeSetEntry("c2-1.txt", FILE_ADDED);
+ MongoDBChangeSetEntry e5 = new MongoDBChangeSetEntry("c3-1.txt", FILE_ADDED);
+ c3.add(e4).add(e5);
dao.save(c3);
GenericDriftCriteria criteria = new GenericDriftCriteria();
- criteria.addFilterPath("c1-1.txt");
+ criteria.addFilterPath("c2-1.txt");
- List<MongoDBChangeSet> actual = dao.findByDriftCriteria(criteria);
-
- assertChangeSetsMatch("Failed to find change sets with drift path filter", asList(c1, c2), actual);
+ List<MongoDBChangeSetEntry> entries = dao.findEntries(criteria);
+ assertEntriesMatch("Failed to find change set entries with path filter", asList(e3, e4), entries);
}
@Test(enabled = ENABLED)
12 years, 7 months
[rhq] modules/enterprise
by John Sanda
modules/enterprise/server/plugins/drift-mongodb/src/main/java/org/rhq/enterprise/server/plugins/drift/mongodb/dao/CategoryFilter.java | 42 +++++++++
modules/enterprise/server/plugins/drift-mongodb/src/main/java/org/rhq/enterprise/server/plugins/drift/mongodb/dao/ChangeSetDAO.java | 10 --
modules/enterprise/server/plugins/drift-mongodb/src/main/java/org/rhq/enterprise/server/plugins/drift/mongodb/dao/ChangeSetEntryFilter.java | 28 ++++++
modules/enterprise/server/plugins/drift-mongodb/src/main/java/org/rhq/enterprise/server/plugins/drift/mongodb/dao/ChangeSetEntryFilters.java | 45 ++++++++++
4 files changed, 118 insertions(+), 7 deletions(-)
New commits:
commit 0d438503bdd2ac59ea27647b1b11b4cce81dddf7
Author: John Sanda <jsanda(a)redhat.com>
Date: Sat Oct 1 18:11:17 2011 -0400
Adding better support for filtering change set entries in memory
When querying for drift entries by criteria and when the criteria
specifies filters that include at least one of the drift entry fields,
we have to filter the result set again once it is returned from the
database. This is due to the schema design I have chosen. In the MongoDB
design for drift, a change set along with its entries are stored as a
single document in the db. If you query for change set drift entries,
the datbase (by default) returns the entire document which may include
drift entries that should be exlucded from the result; thus, we need to
filter again after the results are returned from the db.
diff --git a/modules/enterprise/server/plugins/drift-mongodb/src/main/java/org/rhq/enterprise/server/plugins/drift/mongodb/dao/CategoryFilter.java b/modules/enterprise/server/plugins/drift-mongodb/src/main/java/org/rhq/enterprise/server/plugins/drift/mongodb/dao/CategoryFilter.java
new file mode 100644
index 0000000..ea2b462
--- /dev/null
+++ b/modules/enterprise/server/plugins/drift-mongodb/src/main/java/org/rhq/enterprise/server/plugins/drift/mongodb/dao/CategoryFilter.java
@@ -0,0 +1,42 @@
+/*
+ * RHQ Management Platform
+ * Copyright (C) 2011 Red Hat, Inc.
+ * All rights reserved.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation version 2 of the License.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+package org.rhq.enterprise.server.plugins.drift.mongodb.dao;
+
+import org.rhq.core.domain.drift.DriftCategory;
+import org.rhq.enterprise.server.plugins.drift.mongodb.entities.MongoDBChangeSetEntry;
+
+class CategoryFilter implements ChangeSetEntryFilter {
+
+ private DriftCategory[] categories;
+
+ public CategoryFilter(DriftCategory[] categories) {
+ this.categories = categories;
+ }
+
+ @Override
+ public boolean matches(MongoDBChangeSetEntry entry) {
+ for (DriftCategory category : categories) {
+ if (entry.getCategory() == category) {
+ return true;
+ }
+ }
+ return false;
+ }
+}
diff --git a/modules/enterprise/server/plugins/drift-mongodb/src/main/java/org/rhq/enterprise/server/plugins/drift/mongodb/dao/ChangeSetDAO.java b/modules/enterprise/server/plugins/drift-mongodb/src/main/java/org/rhq/enterprise/server/plugins/drift/mongodb/dao/ChangeSetDAO.java
index 1a0815d..384128e 100644
--- a/modules/enterprise/server/plugins/drift-mongodb/src/main/java/org/rhq/enterprise/server/plugins/drift/mongodb/dao/ChangeSetDAO.java
+++ b/modules/enterprise/server/plugins/drift-mongodb/src/main/java/org/rhq/enterprise/server/plugins/drift/mongodb/dao/ChangeSetDAO.java
@@ -104,23 +104,19 @@ public class ChangeSetDAO extends BasicDAO<MongoDBChangeSet, ObjectId> {
Query<MongoDBChangeSet> query = createQuery();
boolean changeSetsFiltered = false;
boolean entriesFiltered = false;
- boolean filterOnResourceId = false;
- boolean filterOnCategory = false;
- Set<DriftCategory> categories = new TreeSet<DriftCategory>();
+ ChangeSetEntryFilters filters = new ChangeSetEntryFilters();
if (criteria.getFilterResourceIds().length > 0) {
query.field("resourceId").in(asList(criteria.getFilterResourceIds()));
changeSetsFiltered = true;
- filterOnResourceId = true;
}
if (criteria.getFilterCategories().length > 0) {
List<DriftCategory> list = asList(criteria.getFilterCategories());
query.field("files.category").in(list);
entriesFiltered = true;
- filterOnCategory = true;
- categories = new TreeSet<DriftCategory>(list);
+ filters.add(new CategoryFilter(criteria.getFilterCategories()));
}
List<MongoDBChangeSetEntry> entries = new ArrayList<MongoDBChangeSetEntry>();
@@ -134,7 +130,7 @@ public class ChangeSetDAO extends BasicDAO<MongoDBChangeSet, ObjectId> {
} else {
for (MongoDBChangeSet c : query.asList()) {
for (MongoDBChangeSetEntry e : c.getDrifts()) {
- if (filterOnCategory && categories.contains(e.getCategory())) {
+ if (filters.matchesAll(e)) {
entries.add(e);
}
}
diff --git a/modules/enterprise/server/plugins/drift-mongodb/src/main/java/org/rhq/enterprise/server/plugins/drift/mongodb/dao/ChangeSetEntryFilter.java b/modules/enterprise/server/plugins/drift-mongodb/src/main/java/org/rhq/enterprise/server/plugins/drift/mongodb/dao/ChangeSetEntryFilter.java
new file mode 100644
index 0000000..edd4b1d
--- /dev/null
+++ b/modules/enterprise/server/plugins/drift-mongodb/src/main/java/org/rhq/enterprise/server/plugins/drift/mongodb/dao/ChangeSetEntryFilter.java
@@ -0,0 +1,28 @@
+/*
+ * RHQ Management Platform
+ * Copyright (C) 2011 Red Hat, Inc.
+ * All rights reserved.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation version 2 of the License.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+package org.rhq.enterprise.server.plugins.drift.mongodb.dao;
+
+import org.rhq.enterprise.server.plugins.drift.mongodb.entities.MongoDBChangeSetEntry;
+
+public interface ChangeSetEntryFilter {
+
+ boolean matches(MongoDBChangeSetEntry entry);
+
+}
diff --git a/modules/enterprise/server/plugins/drift-mongodb/src/main/java/org/rhq/enterprise/server/plugins/drift/mongodb/dao/ChangeSetEntryFilters.java b/modules/enterprise/server/plugins/drift-mongodb/src/main/java/org/rhq/enterprise/server/plugins/drift/mongodb/dao/ChangeSetEntryFilters.java
new file mode 100644
index 0000000..c1d9686
--- /dev/null
+++ b/modules/enterprise/server/plugins/drift-mongodb/src/main/java/org/rhq/enterprise/server/plugins/drift/mongodb/dao/ChangeSetEntryFilters.java
@@ -0,0 +1,45 @@
+/*
+ * RHQ Management Platform
+ * Copyright (C) 2011 Red Hat, Inc.
+ * All rights reserved.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation version 2 of the License.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+package org.rhq.enterprise.server.plugins.drift.mongodb.dao;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.rhq.enterprise.server.plugins.drift.mongodb.entities.MongoDBChangeSetEntry;
+
+class ChangeSetEntryFilters {
+
+ private List<ChangeSetEntryFilter> filters = new ArrayList<ChangeSetEntryFilter>();
+
+ public ChangeSetEntryFilters add(ChangeSetEntryFilter filter) {
+ filters.add(filter);
+ return this;
+ }
+
+ public boolean matchesAll(MongoDBChangeSetEntry entry) {
+ for (ChangeSetEntryFilter filter : filters) {
+ if (!filter.matches(entry)) {
+ return false;
+ }
+ }
+ return true;
+ }
+
+}
12 years, 7 months
[rhq] 2 commits - modules/enterprise
by John Sanda
modules/enterprise/server/plugins/drift-mongodb/src/main/java/org/rhq/enterprise/server/plugins/drift/mongodb/dao/ChangeSetDAO.java | 48 ++++
modules/enterprise/server/plugins/drift-mongodb/src/test/java/org/rhq/enterprise/server/plugins/drift/mongodb/dao/ChangeSetDAOTest.java | 103 ++++++++--
2 files changed, 131 insertions(+), 20 deletions(-)
New commits:
commit 592e8bb7557070f32151bcba9e72539d74ff78ac
Author: John Sanda <jsanda(a)redhat.com>
Date: Sat Oct 1 11:47:46 2011 -0400
Adding initial suport for filtering on change set and entry fiels in drift criteria queries
diff --git a/modules/enterprise/server/plugins/drift-mongodb/src/main/java/org/rhq/enterprise/server/plugins/drift/mongodb/dao/ChangeSetDAO.java b/modules/enterprise/server/plugins/drift-mongodb/src/main/java/org/rhq/enterprise/server/plugins/drift/mongodb/dao/ChangeSetDAO.java
index 6c9b5bc..1a0815d 100644
--- a/modules/enterprise/server/plugins/drift-mongodb/src/main/java/org/rhq/enterprise/server/plugins/drift/mongodb/dao/ChangeSetDAO.java
+++ b/modules/enterprise/server/plugins/drift-mongodb/src/main/java/org/rhq/enterprise/server/plugins/drift/mongodb/dao/ChangeSetDAO.java
@@ -105,6 +105,7 @@ public class ChangeSetDAO extends BasicDAO<MongoDBChangeSet, ObjectId> {
boolean changeSetsFiltered = false;
boolean entriesFiltered = false;
boolean filterOnResourceId = false;
+ boolean filterOnCategory = false;
Set<DriftCategory> categories = new TreeSet<DriftCategory>();
@@ -115,22 +116,25 @@ public class ChangeSetDAO extends BasicDAO<MongoDBChangeSet, ObjectId> {
}
if (criteria.getFilterCategories().length > 0) {
- query.field("files.category").in(asList(criteria.getFilterCategories()));
- categories.addAll(asList(criteria.getFilterCategories()));
+ List<DriftCategory> list = asList(criteria.getFilterCategories());
+ query.field("files.category").in(list);
+ entriesFiltered = true;
+ filterOnCategory = true;
+ categories = new TreeSet<DriftCategory>(list);
}
List<MongoDBChangeSetEntry> entries = new ArrayList<MongoDBChangeSetEntry>();
- // If the query only filters on change set fields, we do not need to do any
- // additional filtering since it was already done by the database.
if (changeSetsFiltered && !entriesFiltered) {
+ // If the query only filters on change set fields, we do not need to do any
+ // additional filtering since it was already done by the database.
for (MongoDBChangeSet c : query.asList()) {
entries.addAll(c.getDrifts());
}
} else {
for (MongoDBChangeSet c : query.asList()) {
for (MongoDBChangeSetEntry e : c.getDrifts()) {
- if (categories.contains(e.getCategory())) {
+ if (filterOnCategory && categories.contains(e.getCategory())) {
entries.add(e);
}
}
diff --git a/modules/enterprise/server/plugins/drift-mongodb/src/test/java/org/rhq/enterprise/server/plugins/drift/mongodb/dao/ChangeSetDAOTest.java b/modules/enterprise/server/plugins/drift-mongodb/src/test/java/org/rhq/enterprise/server/plugins/drift/mongodb/dao/ChangeSetDAOTest.java
index 6f13944..b89f40c 100644
--- a/modules/enterprise/server/plugins/drift-mongodb/src/test/java/org/rhq/enterprise/server/plugins/drift/mongodb/dao/ChangeSetDAOTest.java
+++ b/modules/enterprise/server/plugins/drift-mongodb/src/test/java/org/rhq/enterprise/server/plugins/drift/mongodb/dao/ChangeSetDAOTest.java
@@ -324,6 +324,34 @@ public class ChangeSetDAOTest {
assertEntriesMatch("Failed to find change set entries with resource id filter", asList(e1), entries);
}
+ @Test(enabled = ENABLED)
+ public void findEntriesWithResourceIdAndCategoryFilters() {
+ MongoDBChangeSet c1 = createChangeSet(COVERAGE, 1, 1, 1);
+ MongoDBChangeSetEntry e1 = new MongoDBChangeSetEntry("c1-1.txt", FILE_ADDED);
+ MongoDBChangeSetEntry e2 = new MongoDBChangeSetEntry("c1-2.txt", FILE_ADDED);
+ c1.add(e1).add(e2);
+ dao.save(c1);
+
+ MongoDBChangeSet c2 = createChangeSet(COVERAGE, 1, 2, 1);
+ MongoDBChangeSetEntry e3 = new MongoDBChangeSetEntry("c2-1.txt", FILE_ADDED);
+ c2.add(e3);
+ dao.save(c2);
+
+ MongoDBChangeSet c3 = createChangeSet(DRIFT, 2, 1, 1);
+ MongoDBChangeSetEntry e4 = new MongoDBChangeSetEntry("c1-1.txt", FILE_CHANGED);
+ MongoDBChangeSetEntry e5 = new MongoDBChangeSetEntry("c1-2.txt", FILE_REMOVED);
+ c3.add(e4).add(e5);
+ dao.save(c3);
+
+ GenericDriftCriteria criteria = new GenericDriftCriteria();
+ criteria.addFilterResourceIds(1);
+ criteria.addFilterCategories(FILE_ADDED, FILE_CHANGED);
+
+ List<MongoDBChangeSetEntry> entries = dao.findEntries(criteria);
+ assertEntriesMatch("Failed to find change set entries with resource id and category filters",
+ asList(e1, e2, e4), entries);
+ }
+
// @Test(enabled = ENABLED)
// public void findEntriesWithResourceIdAndStartTimeFilters() throws Exception {
// MongoDBChangeSet c1 = createChangeSet(COVERAGE, 1, 1, 1);
commit dc0367d15cff8262608899b6b95f2e365bd86c9a
Author: John Sanda <jsanda(a)redhat.com>
Date: Sat Oct 1 11:13:57 2011 -0400
Adding more filterin support for drift criteria queries
diff --git a/modules/enterprise/server/plugins/drift-mongodb/src/main/java/org/rhq/enterprise/server/plugins/drift/mongodb/dao/ChangeSetDAO.java b/modules/enterprise/server/plugins/drift-mongodb/src/main/java/org/rhq/enterprise/server/plugins/drift/mongodb/dao/ChangeSetDAO.java
index 57de79f..6c9b5bc 100644
--- a/modules/enterprise/server/plugins/drift-mongodb/src/main/java/org/rhq/enterprise/server/plugins/drift/mongodb/dao/ChangeSetDAO.java
+++ b/modules/enterprise/server/plugins/drift-mongodb/src/main/java/org/rhq/enterprise/server/plugins/drift/mongodb/dao/ChangeSetDAO.java
@@ -19,7 +19,10 @@
package org.rhq.enterprise.server.plugins.drift.mongodb.dao;
+import java.util.ArrayList;
import java.util.List;
+import java.util.Set;
+import java.util.TreeSet;
import com.google.code.morphia.Morphia;
import com.google.code.morphia.dao.BasicDAO;
@@ -31,6 +34,7 @@ import com.mongodb.Mongo;
import org.bson.types.ObjectId;
import org.rhq.core.domain.criteria.DriftCriteria;
+import org.rhq.core.domain.drift.DriftCategory;
import org.rhq.enterprise.server.plugins.drift.mongodb.entities.MongoDBChangeSet;
import org.rhq.enterprise.server.plugins.drift.mongodb.entities.MongoDBChangeSetEntry;
@@ -91,15 +95,49 @@ public class ChangeSetDAO extends BasicDAO<MongoDBChangeSet, ObjectId> {
}
public List<MongoDBChangeSetEntry> findEntries(DriftCriteria criteria) {
- Query<MongoDBChangeSet> query = createQuery();
-
if (criteria.getFilterId() != null) {
String[] ids = criteria.getFilterId().split(":");
ObjectId changeSetId = new ObjectId(ids[0]);
return asList(findEntryById(changeSetId, ids[1]));
}
- return null;
+ Query<MongoDBChangeSet> query = createQuery();
+ boolean changeSetsFiltered = false;
+ boolean entriesFiltered = false;
+ boolean filterOnResourceId = false;
+
+ Set<DriftCategory> categories = new TreeSet<DriftCategory>();
+
+ if (criteria.getFilterResourceIds().length > 0) {
+ query.field("resourceId").in(asList(criteria.getFilterResourceIds()));
+ changeSetsFiltered = true;
+ filterOnResourceId = true;
+ }
+
+ if (criteria.getFilterCategories().length > 0) {
+ query.field("files.category").in(asList(criteria.getFilterCategories()));
+ categories.addAll(asList(criteria.getFilterCategories()));
+ }
+
+ List<MongoDBChangeSetEntry> entries = new ArrayList<MongoDBChangeSetEntry>();
+
+ // If the query only filters on change set fields, we do not need to do any
+ // additional filtering since it was already done by the database.
+ if (changeSetsFiltered && !entriesFiltered) {
+ for (MongoDBChangeSet c : query.asList()) {
+ entries.addAll(c.getDrifts());
+ }
+ } else {
+ for (MongoDBChangeSet c : query.asList()) {
+ for (MongoDBChangeSetEntry e : c.getDrifts()) {
+ if (categories.contains(e.getCategory())) {
+ entries.add(e);
+ }
+ }
+ }
+ }
+
+ return entries;
}
public MongoDBChangeSetEntry findEntryById(ObjectId changeSetId, String entryId) {
diff --git a/modules/enterprise/server/plugins/drift-mongodb/src/test/java/org/rhq/enterprise/server/plugins/drift/mongodb/dao/ChangeSetDAOTest.java b/modules/enterprise/server/plugins/drift-mongodb/src/test/java/org/rhq/enterprise/server/plugins/drift/mongodb/dao/ChangeSetDAOTest.java
index 8f1499f..6f13944 100644
--- a/modules/enterprise/server/plugins/drift-mongodb/src/test/java/org/rhq/enterprise/server/plugins/drift/mongodb/dao/ChangeSetDAOTest.java
+++ b/modules/enterprise/server/plugins/drift-mongodb/src/test/java/org/rhq/enterprise/server/plugins/drift/mongodb/dao/ChangeSetDAOTest.java
@@ -248,32 +248,29 @@ public class ChangeSetDAOTest {
criteria.addFilterId(e2.getId());
List<MongoDBChangeSetEntry> entries = dao.findEntries(criteria);
- assertEquals(entries.size(), 1, "Expected to get back one change set entry");
- String ignoredProperties = "changeSet";
- assertPropertiesMatch("Failed to find change set entry with id filter", e2, entries.get(0), ignoredProperties);
+ assertEntriesMatch("Failed to find change set entries with id filter", asList(e2), entries);
}
@Test(enabled = ENABLED)
- public void findByDriftCriteriaWithIdFilter() throws Exception {
+ public void findEntriesWithCategoriesFilter() throws Exception {
MongoDBChangeSet c1 = createChangeSet(COVERAGE, 1, 1, 1);
- MongoDBChangeSetEntry entry = new MongoDBChangeSetEntry("c1-1.txt", FILE_ADDED);
- c1.add(entry);
-
+ MongoDBChangeSetEntry e1 = new MongoDBChangeSetEntry("c1-1.txt", FILE_ADDED);
+ MongoDBChangeSetEntry e2 = new MongoDBChangeSetEntry("c1-2.txt", FILE_ADDED);
+ c1.add(e1).add(e2);
dao.save(c1);
- MongoDBChangeSet c2 = createChangeSet(COVERAGE, 2, 1, 1);
- c2.add(new MongoDBChangeSetEntry("c1-1.txt", FILE_CHANGED));
-
+ MongoDBChangeSet c2 = createChangeSet(DRIFT, 2, 1, 1);
+ MongoDBChangeSetEntry e3 = new MongoDBChangeSetEntry("c2-1.txt", FILE_ADDED);
+ MongoDBChangeSetEntry e4 = new MongoDBChangeSetEntry("c1-1.txt", FILE_CHANGED);
+ MongoDBChangeSetEntry e5 = new MongoDBChangeSetEntry("c1-2.txt", FILE_REMOVED);
+ c2.add(e3).add(e4).add(e5);
dao.save(c2);
GenericDriftCriteria criteria = new GenericDriftCriteria();
- criteria.addFilterId(entry.getId());
-
- List<MongoDBChangeSet> actual = dao.findByDriftCriteria(criteria);
+ criteria.addFilterCategories(FILE_CHANGED, FILE_REMOVED);
- assertEquals(actual.size(), 1, "Expected to get back only one change set when searching by drift criteria " +
- "with id filter.");
- assertChangeSetMatches("Failed to find change set by drift criteria with id filter.", c1, actual.get(0));
+ List<MongoDBChangeSetEntry> entries = dao.findEntries(criteria);
+ assertEntriesMatch("Failed to find change set entries with category filter", asList(e4, e5), entries);
}
@Test(enabled = ENABLED)
@@ -309,6 +306,44 @@ public class ChangeSetDAOTest {
}
@Test(enabled = ENABLED)
+ public void findEntriesWithResourceIdFilters() throws Exception {
+ MongoDBChangeSet c1 = createChangeSet(COVERAGE, 1, 1, 1);
+ MongoDBChangeSetEntry e1 = new MongoDBChangeSetEntry("c1-1.txt", FILE_ADDED);
+ c1.add(e1);
+ dao.save(c1);
+
+ MongoDBChangeSet c2 = createChangeSet(COVERAGE, 1, 2, 1);
+ MongoDBChangeSetEntry e2 = new MongoDBChangeSetEntry("c2-1.txt", FILE_ADDED);
+ c2.add(e2);
+ dao.save(c2);
+
+ GenericDriftCriteria criteria = new GenericDriftCriteria();
+ criteria.addFilterResourceIds(1);
+
+ List<MongoDBChangeSetEntry> entries = dao.findEntries(criteria);
+ assertEntriesMatch("Failed to find change set entries with resource id filter", asList(e1), entries);
+ }
+
+// @Test(enabled = ENABLED)
+// public void findEntriesWithResourceIdAndStartTimeFilters() throws Exception {
+// MongoDBChangeSet c1 = createChangeSet(COVERAGE, 1, 1, 1);
+// MongoDBChangeSetEntry e1 = new MongoDBChangeSetEntry("c1-1.txt", FILE_ADDED);
+// c1.add(e1);
+// dao.save(c1);
+//
+// long startTime = System.currentTimeMillis();
+// Thread.sleep(10);
+//
+// MongoDBChangeSet c2 = createChangeSet(DRIFT, 2, 2, 1);
+// MongoDBChangeSetEntry e2 = new MongoDBChangeSetEntry("c1-1.txt", FILE_CHANGED);
+// c2.add(e2);
+// dao.save(c2);
+//
+// GenericDriftCriteria criteria = new GenericDriftCriteria();
+// criteria.addFilterResourceIds(resourceId);
+// }
+
+ @Test(enabled = ENABLED)
public void findByDriftCriteriaWithEndTimeFilter() throws Exception {
int resourceId = 1;
@@ -386,7 +421,7 @@ public class ChangeSetDAOTest {
}
private void assertChangeSetsMatch(String msg, List<MongoDBChangeSet> expected, List<MongoDBChangeSet> actual) {
- org.testng.Assert.assertEquals(actual.size(), expected.size(), "The number of change sets differ: " + msg);
+ assertEquals(actual.size(), expected.size(), "The number of change sets differ: " + msg);
for (MongoDBChangeSet expectedChangeSet : expected) {
MongoDBChangeSet actualChangeSet = null;
for (MongoDBChangeSet changeSet : actual) {
@@ -400,6 +435,12 @@ public class ChangeSetDAOTest {
}
}
+ private void assertEntriesMatch(String msg, List<MongoDBChangeSetEntry> expected,
+ List<MongoDBChangeSetEntry> actual) {
+ assertEquals(actual.size(), expected.size(), "The number of entries differ: " + msg);
+ assertCollectionMatchesNoOrder(msg, expected, actual, "changeSet");
+ }
+
/**
* This method first checks that the actual change set is not null. It then performs a
* property-wise comparison against the expected change set using
12 years, 7 months
[rhq] modules/enterprise
by Jay Shaughnessy
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/components/carousel/Carousel.java | 6 +-
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/drift/DriftCarouselMemberView.java | 10 ++--
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/drift/DriftCarouselView.java | 21 +++++++++-
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/drift/DriftHistoryView.java | 17 +++++---
4 files changed, 38 insertions(+), 16 deletions(-)
New commits:
commit 1d64b254eb4c7bf98014ad26795d5613b5b5f3cb
Author: Jay Shaughnessy <jshaughn(a)redhat.com>
Date: Fri Sep 30 22:30:48 2011 -0400
Fix filtering issues in drift carousel
- Ensure filters are applied correctly to existing carousel members
- Add ability to apply carousel filters to new members when
rebuilding/scrolling the carousel.
diff --git a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/components/carousel/Carousel.java b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/components/carousel/Carousel.java
index 9388bbc..b3f97d8 100644
--- a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/components/carousel/Carousel.java
+++ b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/components/carousel/Carousel.java
@@ -662,7 +662,7 @@ public abstract class Carousel extends LocatableHLayout implements RefreshableVi
// and it doesn't handle Object types properly (seeing odd behavior because of this), so this method explicitly
// supports adding array types and Objects.
// This method takes the src criteria and adds it to the dest criteria.
- private static void addCriteria(Criteria dest, Criteria src) {
+ protected static void addCriteria(Criteria dest, Criteria src) {
Map otherMap = src.getValues();
Set otherKeys = otherMap.keySet();
for (Iterator i = otherKeys.iterator(); i.hasNext();) {
@@ -1083,7 +1083,7 @@ public abstract class Carousel extends LocatableHLayout implements RefreshableVi
protected void setCarouselStartFilter(Integer carouselStartFilter) {
this.carouselStartFilter = carouselStartFilter;
- this.filterForm.getItem(FILTER_CAROUSEL_START).setValue(carouselStartFilter);
+ this.filterForm.getItem(FILTER_CAROUSEL_START).setValue(String.valueOf(carouselStartFilter));
this.filterForm.getItem(FILTER_CAROUSEL_START).redraw();
}
@@ -1093,7 +1093,7 @@ public abstract class Carousel extends LocatableHLayout implements RefreshableVi
protected void setCarouselSizeFilter(Integer carouselSizeFilter) {
this.carouselSizeFilter = carouselSizeFilter;
- this.filterForm.getItem(FILTER_CAROUSEL_SIZE).setValue(carouselSizeFilter);
+ this.filterForm.getItem(FILTER_CAROUSEL_SIZE).setValue(String.valueOf(carouselSizeFilter));
this.filterForm.getItem(FILTER_CAROUSEL_SIZE).redraw();
}
diff --git a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/drift/DriftCarouselMemberView.java b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/drift/DriftCarouselMemberView.java
index 2276dd9..488b396 100644
--- a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/drift/DriftCarouselMemberView.java
+++ b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/drift/DriftCarouselMemberView.java
@@ -48,17 +48,17 @@ public class DriftCarouselMemberView extends DriftHistoryView implements Carouse
private Criteria carouselCriteria;
public static DriftCarouselMemberView get(String locatorId, ResourceComposite composite,
- DriftChangeSet driftChangeSet) {
- //String tableTitle = MSG.view_drift_table_resourceHistory();
+ DriftChangeSet driftChangeSet, Criteria initialCriteria) {
+
EntityContext context = EntityContext.forResource(composite.getResource().getId());
boolean hasWriteAccess = composite.getResourcePermission().isDrift();
- return new DriftCarouselMemberView(locatorId, context, driftChangeSet, hasWriteAccess);
+ return new DriftCarouselMemberView(locatorId, context, driftChangeSet, hasWriteAccess, initialCriteria);
}
public DriftCarouselMemberView(String locatorId, EntityContext context, DriftChangeSet driftChangeSet,
- boolean hasWriteAccess) {
+ boolean hasWriteAccess, Criteria initialCriteria) {
- super(locatorId, null, context, hasWriteAccess);
+ super(locatorId, null, context, hasWriteAccess, initialCriteria);
this.changeSet = driftChangeSet;
((DriftCarouselDataSource) getDataSource()).setChangeSetId(this.changeSet.getId());
diff --git a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/drift/DriftCarouselView.java b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/drift/DriftCarouselView.java
index e653144..3fbcdaf 100644
--- a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/drift/DriftCarouselView.java
+++ b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/drift/DriftCarouselView.java
@@ -19,8 +19,10 @@
package org.rhq.enterprise.gui.coregui.client.drift;
import java.util.LinkedHashMap;
+import java.util.Map;
import com.google.gwt.user.client.rpc.AsyncCallback;
+import com.smartgwt.client.data.Criteria;
import com.smartgwt.client.widgets.form.fields.SelectItem;
import com.smartgwt.client.widgets.form.fields.TextItem;
@@ -103,10 +105,14 @@ public class DriftCarouselView extends Carousel {
carouselSize = (null == carouselSize || carouselSize < 1) ? CAROUSEL_DEFAULT_SIZE : carouselSize;
int size = carouselSize;
Integer carouselStart = null;
+ Criteria initialCriteria = getInitialMemberCriteria(isRefresh ? getCurrentCriteria() : null);
+
+ Map map = initialCriteria.getValues();
+ map.entrySet();
for (DriftChangeSet changeSet : result) {
- DriftCarouselMemberView view = new DriftCarouselMemberView(extendLocatorId(changeSet
- .getId()), context, changeSet, hasWriteAccess);
+ DriftCarouselMemberView view = new DriftCarouselMemberView(extendLocatorId(changeSet.getId()),
+ context, changeSet, hasWriteAccess, initialCriteria);
addCarouselMember(view);
if (null == carouselStart) {
@@ -133,6 +139,17 @@ public class DriftCarouselView extends Carousel {
});
}
+ protected static Criteria getInitialMemberCriteria(Criteria additionalCriteria) {
+ if (null == additionalCriteria) {
+ return DriftHistoryView.INITIAL_CRITERIA;
+ }
+
+ Criteria initialCriteria = new Criteria();
+ addCriteria(initialCriteria, DriftHistoryView.INITIAL_CRITERIA);
+ addCriteria(initialCriteria, additionalCriteria);
+ return initialCriteria;
+ }
+
@Override
protected int getDefaultCarouselSize() {
return CAROUSEL_DEFAULT_SIZE;
diff --git a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/drift/DriftHistoryView.java b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/drift/DriftHistoryView.java
index 970750a..980fc9c 100644
--- a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/drift/DriftHistoryView.java
+++ b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/drift/DriftHistoryView.java
@@ -60,7 +60,7 @@ public class DriftHistoryView extends StringIDTableSection<DriftDataSource> {
private static SortSpecifier DEFAULT_SORT_SPECIFIER = new SortSpecifier(DriftDataSource.ATTR_CTIME,
SortDirection.DESCENDING);
- private static final Criteria INITIAL_CRITERIA = new Criteria();
+ public static final Criteria INITIAL_CRITERIA = new Criteria();
private EntityContext context;
private boolean hasWriteAccess;
@@ -80,19 +80,24 @@ public class DriftHistoryView extends StringIDTableSection<DriftDataSource> {
// for subsystem views
public DriftHistoryView(String locatorId) {
- this(locatorId, SUBSYSTEM_VIEW_ID.getTitle(), EntityContext.forSubsystemView(), false);
+ this(locatorId, SUBSYSTEM_VIEW_ID.getTitle(), EntityContext.forSubsystemView(), false, INITIAL_CRITERIA);
}
public DriftHistoryView(String locatorId, EntityContext entityContext) {
- this(locatorId, SUBSYSTEM_VIEW_ID.getTitle(), entityContext, false);
+ this(locatorId, SUBSYSTEM_VIEW_ID.getTitle(), entityContext, false, INITIAL_CRITERIA);
}
public DriftHistoryView(String locatorId, String tableTitle, EntityContext entityContext) {
- this(locatorId, tableTitle, entityContext, false);
+ this(locatorId, tableTitle, entityContext, false, INITIAL_CRITERIA);
}
- protected DriftHistoryView(String locatorId, String tableTitle, EntityContext context, boolean hasWriteAccess) {
- super(locatorId, tableTitle, INITIAL_CRITERIA, new SortSpecifier[] { DEFAULT_SORT_SPECIFIER });
+ protected DriftHistoryView(String locatorId, String tableTitle, EntityContext entityContext, boolean hasWriteAccess) {
+ this(locatorId, tableTitle, entityContext, hasWriteAccess, INITIAL_CRITERIA);
+ }
+
+ protected DriftHistoryView(String locatorId, String tableTitle, EntityContext context, boolean hasWriteAccess,
+ Criteria initialCriteria) {
+ super(locatorId, tableTitle, initialCriteria, new SortSpecifier[] { DEFAULT_SORT_SPECIFIER });
this.context = context;
this.hasWriteAccess = hasWriteAccess;
12 years, 7 months
[rhq] 3 commits - modules/enterprise
by John Sanda
modules/enterprise/server/plugins/drift-mongodb/pom.xml | 7 +
modules/enterprise/server/plugins/drift-mongodb/src/main/java/org/rhq/enterprise/server/plugins/drift/mongodb/dao/ChangeSetDAO.java | 38 +++++++
modules/enterprise/server/plugins/drift-mongodb/src/main/java/org/rhq/enterprise/server/plugins/drift/mongodb/entities/MongoDBChangeSet.java | 12 +-
modules/enterprise/server/plugins/drift-mongodb/src/test/java/org/rhq/enterprise/server/plugins/drift/mongodb/dao/ChangeSetDAOTest.java | 52 ++++++----
4 files changed, 88 insertions(+), 21 deletions(-)
New commits:
commit 79584fd38fb018353176f1a9fdfc319798c54c4e
Author: John Sanda <jsanda(a)redhat.com>
Date: Fri Sep 30 21:35:44 2011 -0400
Adding support for fetching drift entries by id using the $slice operator
diff --git a/modules/enterprise/server/plugins/drift-mongodb/pom.xml b/modules/enterprise/server/plugins/drift-mongodb/pom.xml
index 0330114..23e8981 100644
--- a/modules/enterprise/server/plugins/drift-mongodb/pom.xml
+++ b/modules/enterprise/server/plugins/drift-mongodb/pom.xml
@@ -22,6 +22,13 @@
<properties>
<scm.module.path>modules/enterprise/server/plugins/drift-mongodb/</scm.module.path>
+ <!--
+ Tests are temporarily disabled until a MongoDB server is set up for use with
+ hudson builds. They can however be run locally provided you have MongoDB installed.
+
+ - jsanda
+ -->
+ <skipTests>true</skipTests>
</properties>
<dependencies>
diff --git a/modules/enterprise/server/plugins/drift-mongodb/src/main/java/org/rhq/enterprise/server/plugins/drift/mongodb/dao/ChangeSetDAO.java b/modules/enterprise/server/plugins/drift-mongodb/src/main/java/org/rhq/enterprise/server/plugins/drift/mongodb/dao/ChangeSetDAO.java
index 0a62bc8..57de79f 100644
--- a/modules/enterprise/server/plugins/drift-mongodb/src/main/java/org/rhq/enterprise/server/plugins/drift/mongodb/dao/ChangeSetDAO.java
+++ b/modules/enterprise/server/plugins/drift-mongodb/src/main/java/org/rhq/enterprise/server/plugins/drift/mongodb/dao/ChangeSetDAO.java
@@ -109,7 +109,7 @@ public class ChangeSetDAO extends BasicDAO<MongoDBChangeSet, ObjectId> {
BasicDBObject keys = new BasicDBObject();
keys.put("files", new BasicDBObject().append("$slice", new Integer[] {Integer.valueOf(entryId), 1}));
- DBObject result = getCollection().findOne(query, new BasicDBObject());
+ DBObject result = getCollection().findOne(query, keys);
if (result == null) {
return null;
diff --git a/modules/enterprise/server/plugins/drift-mongodb/src/test/java/org/rhq/enterprise/server/plugins/drift/mongodb/dao/ChangeSetDAOTest.java b/modules/enterprise/server/plugins/drift-mongodb/src/test/java/org/rhq/enterprise/server/plugins/drift/mongodb/dao/ChangeSetDAOTest.java
index de11a90..8f1499f 100644
--- a/modules/enterprise/server/plugins/drift-mongodb/src/test/java/org/rhq/enterprise/server/plugins/drift/mongodb/dao/ChangeSetDAOTest.java
+++ b/modules/enterprise/server/plugins/drift-mongodb/src/test/java/org/rhq/enterprise/server/plugins/drift/mongodb/dao/ChangeSetDAOTest.java
@@ -19,18 +19,6 @@
package org.rhq.enterprise.server.plugins.drift.mongodb.dao;
-import static java.util.Arrays.asList;
-import static org.rhq.core.domain.drift.DriftCategory.FILE_ADDED;
-import static org.rhq.core.domain.drift.DriftCategory.FILE_CHANGED;
-import static org.rhq.core.domain.drift.DriftCategory.FILE_REMOVED;
-import static org.rhq.core.domain.drift.DriftChangeSetCategory.COVERAGE;
-import static org.rhq.core.domain.drift.DriftChangeSetCategory.DRIFT;
-import static org.rhq.core.domain.drift.DriftConfigurationDefinition.DriftHandlingMode.normal;
-import static org.rhq.test.AssertUtils.assertCollectionMatchesNoOrder;
-import static org.rhq.test.AssertUtils.assertPropertiesMatch;
-import static org.testng.Assert.assertNotNull;
-import static org.testng.AssertJUnit.assertEquals;
-
import java.util.List;
import com.google.code.morphia.Datastore;
@@ -57,8 +45,8 @@ import static org.rhq.core.domain.drift.DriftChangeSetCategory.DRIFT;
import static org.rhq.core.domain.drift.DriftConfigurationDefinition.DriftHandlingMode.normal;
import static org.rhq.test.AssertUtils.assertCollectionMatchesNoOrder;
import static org.rhq.test.AssertUtils.assertPropertiesMatch;
-import static org.testng.Assert.assertNotNull;
import static org.testng.Assert.assertEquals;
+import static org.testng.Assert.assertNotNull;
public class ChangeSetDAOTest {
@@ -261,7 +249,8 @@ public class ChangeSetDAOTest {
List<MongoDBChangeSetEntry> entries = dao.findEntries(criteria);
assertEquals(entries.size(), 1, "Expected to get back one change set entry");
- assertPropertiesMatch(e2, entries.get(0), "Failed to find change set entry with id filter");
+ String ignoredProperties = "changeSet";
+ assertPropertiesMatch("Failed to find change set entry with id filter", e2, entries.get(0), ignoredProperties);
}
@Test(enabled = ENABLED)
commit 32ddedf80d60d058d21f3063cd98855ca721b5d6
Merge: 0a5ac85 63539a2
Author: John Sanda <jsanda(a)redhat.com>
Date: Fri Sep 30 21:22:29 2011 -0400
Merge branch 'master' into mongodb-drift
Conflicts:
modules/enterprise/server/plugins/drift-mongodb/src/test/java/org/rhq/enterprise/server/plugins/drift/mongodb/dao/ChangeSetDAOTest.java
diff --cc modules/enterprise/server/plugins/drift-mongodb/src/test/java/org/rhq/enterprise/server/plugins/drift/mongodb/dao/ChangeSetDAOTest.java
index ce6458d,38b3b6e..de11a90
--- a/modules/enterprise/server/plugins/drift-mongodb/src/test/java/org/rhq/enterprise/server/plugins/drift/mongodb/dao/ChangeSetDAOTest.java
+++ b/modules/enterprise/server/plugins/drift-mongodb/src/test/java/org/rhq/enterprise/server/plugins/drift/mongodb/dao/ChangeSetDAOTest.java
@@@ -305,11 -283,11 +312,11 @@@ public class ChangeSetDAOTest
List<MongoDBChangeSet> actual = dao.findByDriftCriteria(criteria);
- assertEquals("Expected to get back one change set", 1, actual.size());
+ assertEquals(actual.size(), 1, "Expected to get back one change set");
MongoDBChangeSet actualChangeSet = actual.get(0);
- assertChangeSetMatches("Failed to find drift entries by drift criteria with start time filter",
- c2, actualChangeSet);
+ assertChangeSetMatches("Failed to find drift entries by drift criteria with start time filter", c2,
+ actualChangeSet);
}
@Test(enabled = ENABLED)
commit 0a5ac85bdf885ae29cbee5492c3644fcd5a53797
Author: John Sanda <jsanda(a)redhat.com>
Date: Mon Sep 26 10:16:55 2011 -0400
First pass at using $slice operator to fetch drift entries by id
This is not yet working. The query results are not limiting the drift
entries.
diff --git a/modules/enterprise/server/plugins/drift-mongodb/src/main/java/org/rhq/enterprise/server/plugins/drift/mongodb/dao/ChangeSetDAO.java b/modules/enterprise/server/plugins/drift-mongodb/src/main/java/org/rhq/enterprise/server/plugins/drift/mongodb/dao/ChangeSetDAO.java
index dd230ac..0a62bc8 100644
--- a/modules/enterprise/server/plugins/drift-mongodb/src/main/java/org/rhq/enterprise/server/plugins/drift/mongodb/dao/ChangeSetDAO.java
+++ b/modules/enterprise/server/plugins/drift-mongodb/src/main/java/org/rhq/enterprise/server/plugins/drift/mongodb/dao/ChangeSetDAO.java
@@ -24,19 +24,25 @@ import java.util.List;
import com.google.code.morphia.Morphia;
import com.google.code.morphia.dao.BasicDAO;
import com.google.code.morphia.query.Query;
+import com.mongodb.BasicDBObject;
+import com.mongodb.DBObject;
import com.mongodb.Mongo;
import org.bson.types.ObjectId;
import org.rhq.core.domain.criteria.DriftCriteria;
import org.rhq.enterprise.server.plugins.drift.mongodb.entities.MongoDBChangeSet;
+import org.rhq.enterprise.server.plugins.drift.mongodb.entities.MongoDBChangeSetEntry;
import static java.util.Arrays.asList;
public class ChangeSetDAO extends BasicDAO<MongoDBChangeSet, ObjectId> {
+ private Morphia morphia;
+
public ChangeSetDAO(Morphia morphia, Mongo mongo, String db) {
super(mongo, morphia, db);
+ this.morphia = morphia;
}
public List<MongoDBChangeSet> findByDriftCriteria(DriftCriteria criteria) {
@@ -84,4 +90,36 @@ public class ChangeSetDAO extends BasicDAO<MongoDBChangeSet, ObjectId> {
return query.asList();
}
+ public List<MongoDBChangeSetEntry> findEntries(DriftCriteria criteria) {
+ Query<MongoDBChangeSet> query = createQuery();
+
+ if (criteria.getFilterId() != null) {
+ String[] ids = criteria.getFilterId().split(":");
+ ObjectId changeSetId = new ObjectId(ids[0]);
+ return asList(findEntryById(changeSetId, ids[1]));
+ }
+
+ return null;
+ }
+
+ public MongoDBChangeSetEntry findEntryById(ObjectId changeSetId, String entryId) {
+ BasicDBObject query = new BasicDBObject();
+ query.put("_id", changeSetId);
+
+ BasicDBObject keys = new BasicDBObject();
+ keys.put("files", new BasicDBObject().append("$slice", new Integer[] {Integer.valueOf(entryId), 1}));
+
+ DBObject result = getCollection().findOne(query, new BasicDBObject());
+
+ if (result == null) {
+ return null;
+ }
+
+ MongoDBChangeSet changeSet = morphia.fromDBObject(MongoDBChangeSet.class, result);
+ if (!changeSet.getDrifts().isEmpty()) {
+ return changeSet.getDrifts().iterator().next();
+ }
+ return null;
+ }
+
}
diff --git a/modules/enterprise/server/plugins/drift-mongodb/src/main/java/org/rhq/enterprise/server/plugins/drift/mongodb/entities/MongoDBChangeSet.java b/modules/enterprise/server/plugins/drift-mongodb/src/main/java/org/rhq/enterprise/server/plugins/drift/mongodb/entities/MongoDBChangeSet.java
index 0bdd2fd..e5f59b7 100644
--- a/modules/enterprise/server/plugins/drift-mongodb/src/main/java/org/rhq/enterprise/server/plugins/drift/mongodb/entities/MongoDBChangeSet.java
+++ b/modules/enterprise/server/plugins/drift-mongodb/src/main/java/org/rhq/enterprise/server/plugins/drift/mongodb/entities/MongoDBChangeSet.java
@@ -19,7 +19,9 @@
package org.rhq.enterprise.server.plugins.drift.mongodb.entities;
import java.io.Serializable;
-import java.util.HashSet;
+import java.util.ArrayList;
+import java.util.LinkedHashSet;
+import java.util.List;
import java.util.Set;
import com.google.code.morphia.annotations.Embedded;
@@ -68,7 +70,7 @@ public class MongoDBChangeSet implements DriftChangeSet<MongoDBChangeSetEntry>,
private int resourceId;
@Embedded("files")
- private Set<MongoDBChangeSetEntry> entries = new HashSet<MongoDBChangeSetEntry>();
+ private List<MongoDBChangeSetEntry> entries = new ArrayList<MongoDBChangeSetEntry>();
public ObjectId getObjectId() {
return id;
@@ -144,7 +146,7 @@ public class MongoDBChangeSet implements DriftChangeSet<MongoDBChangeSetEntry>,
@Override
public Set<MongoDBChangeSetEntry> getDrifts() {
- return entries;
+ return new LinkedHashSet(entries);
}
public MongoDBChangeSet add(MongoDBChangeSetEntry entry) {
@@ -156,7 +158,9 @@ public class MongoDBChangeSet implements DriftChangeSet<MongoDBChangeSetEntry>,
@Override
public void setDrifts(Set<MongoDBChangeSetEntry> drifts) {
- entries = drifts;
+ for (MongoDBChangeSetEntry entry : drifts) {
+ add(entry);
+ }
}
@PostLoad
diff --git a/modules/enterprise/server/plugins/drift-mongodb/src/test/java/org/rhq/enterprise/server/plugins/drift/mongodb/dao/ChangeSetDAOTest.java b/modules/enterprise/server/plugins/drift-mongodb/src/test/java/org/rhq/enterprise/server/plugins/drift/mongodb/dao/ChangeSetDAOTest.java
index 1c3c3c7..ce6458d 100644
--- a/modules/enterprise/server/plugins/drift-mongodb/src/test/java/org/rhq/enterprise/server/plugins/drift/mongodb/dao/ChangeSetDAOTest.java
+++ b/modules/enterprise/server/plugins/drift-mongodb/src/test/java/org/rhq/enterprise/server/plugins/drift/mongodb/dao/ChangeSetDAOTest.java
@@ -26,14 +26,11 @@ import com.google.code.morphia.Morphia;
import com.google.code.morphia.query.Query;
import com.mongodb.Mongo;
-import org.testng.Assert;
-import org.testng.AssertJUnit;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Test;
import org.rhq.core.domain.criteria.GenericDriftCriteria;
-import org.rhq.core.domain.drift.DriftCategory;
import org.rhq.core.domain.drift.DriftChangeSetCategory;
import org.rhq.enterprise.server.plugins.drift.mongodb.entities.MongoDBChangeSet;
import org.rhq.enterprise.server.plugins.drift.mongodb.entities.MongoDBChangeSetEntry;
@@ -49,13 +46,13 @@ import static org.rhq.core.domain.drift.DriftConfigurationDefinition.DriftHandli
import static org.rhq.test.AssertUtils.assertCollectionMatchesNoOrder;
import static org.rhq.test.AssertUtils.assertPropertiesMatch;
import static org.testng.Assert.assertNotNull;
-import static org.testng.AssertJUnit.assertEquals;
+import static org.testng.Assert.assertEquals;
public class ChangeSetDAOTest {
// Tests need to be disabled when committed/pushed to the remote repo until we get
// mongodb installed on the hudson slave
- static final boolean ENABLED = false;
+ static final boolean ENABLED = true;
Mongo connection;
@@ -244,6 +241,23 @@ public class ChangeSetDAOTest {
}
@Test(enabled = ENABLED)
+ public void findEntriesWithIdFilter() throws Exception {
+ MongoDBChangeSet c1 = createChangeSet(COVERAGE, 1, 1, 1);
+ MongoDBChangeSetEntry e1 = new MongoDBChangeSetEntry("c1-1.txt", FILE_ADDED);
+ MongoDBChangeSetEntry e2 = new MongoDBChangeSetEntry("c2-1.txt", FILE_ADDED);
+ c1.add(e1);
+ c1.add(e2);
+ dao.save(c1);
+
+ GenericDriftCriteria criteria = new GenericDriftCriteria();
+ criteria.addFilterId(e2.getId());
+
+ List<MongoDBChangeSetEntry> entries = dao.findEntries(criteria);
+ assertEquals(entries.size(), 1, "Expected to get back one change set entry");
+ assertPropertiesMatch(e2, entries.get(0), "Failed to find change set entry with id filter");
+ }
+
+ @Test(enabled = ENABLED)
public void findByDriftCriteriaWithIdFilter() throws Exception {
MongoDBChangeSet c1 = createChangeSet(COVERAGE, 1, 1, 1);
MongoDBChangeSetEntry entry = new MongoDBChangeSetEntry("c1-1.txt", FILE_ADDED);
@@ -261,8 +275,8 @@ public class ChangeSetDAOTest {
List<MongoDBChangeSet> actual = dao.findByDriftCriteria(criteria);
- assertEquals("Expected to get back only one change set when searching by drift criteria with id filter.",
- 1, actual.size());
+ assertEquals(actual.size(), 1, "Expected to get back only one change set when searching by drift criteria " +
+ "with id filter.");
assertChangeSetMatches("Failed to find change set by drift criteria with id filter.", c1, actual.get(0));
}
@@ -291,7 +305,7 @@ public class ChangeSetDAOTest {
List<MongoDBChangeSet> actual = dao.findByDriftCriteria(criteria);
- assertEquals("Expected to get back one change set", 1, actual.size());
+ assertEquals(actual.size(), 1, "Expected to get back one change set");
MongoDBChangeSet actualChangeSet = actual.get(0);
assertChangeSetMatches("Failed to find drift entries by drift criteria with start time filter",
@@ -323,7 +337,7 @@ public class ChangeSetDAOTest {
List<MongoDBChangeSet> actual = dao.findByDriftCriteria(criteria);
- assertEquals("Expected to get back one change set", 1, actual.size());
+ assertEquals(actual.size(), 1, "Expected to get back one change set");
MongoDBChangeSet actualChangeSet = actual.get(0);
assertChangeSetMatches("Failed to find drift entries with end time filter", c1, actualChangeSet);
12 years, 7 months