modules/core/plugin-container/src/test/java/org/rhq/core/pc/drift/DriftDetectorTest.java | 37 -- modules/core/plugin-container/src/test/java/org/rhq/core/pc/drift/DriftDetectorTest.java.orig | 172 ++++++++++ modules/core/plugin-container/src/test/java/org/rhq/core/pc/drift/DriftFilesSenderTest.java | 18 - modules/core/plugin-container/src/test/java/org/rhq/core/pc/drift/DriftFilesSenderTest.java.orig | 144 ++++++++ modules/core/plugin-container/src/test/java/org/rhq/core/pc/drift/DriftTest.java | 20 - modules/core/plugin-container/src/test/java/org/rhq/core/pc/drift/DriftTest.java.orig | 71 ++++ 6 files changed, 387 insertions(+), 75 deletions(-)
New commits: commit 1ccf151ed05e697bd1eb16bfa0e8c059a814f32c Author: John Sanda jsanda@redhat.com Date: Fri Jul 1 00:44:28 2011 -0400
Resolving local merge conflict
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 9481fa9..cd494cd 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 @@ -18,45 +18,21 @@ import org.rhq.common.drift.DirectoryEntry; import org.rhq.core.domain.configuration.Configuration; import org.rhq.core.domain.drift.DriftConfiguration;
-<<<<<<< Updated upstream import static org.apache.commons.io.IOUtils.readLines; import static org.rhq.core.domain.drift.DriftCategory.FILE_ADDED; import static org.rhq.core.domain.drift.DriftChangeSetCategory.COVERAGE; import static org.rhq.core.domain.drift.DriftConfigurationDefinition.BaseDirValueContext.fileSystem; import static org.testng.Assert.assertEquals; import static org.testng.Assert.assertTrue; -======= -import static org.apache.commons.io.FileUtils.deleteDirectory; -import static org.apache.commons.io.IOUtils.readLines; -import static org.rhq.core.domain.drift.DriftChangeSetCategory.COVERAGE; -import static org.rhq.core.domain.drift.DriftConfigurationDefinition.BaseDirValueContext.fileSystem; -import static org.testng.Assert.assertEquals; ->>>>>>> Stashed changes import static org.unitils.thirdparty.org.apache.commons.io.FileUtils.touch;
public class DriftDetectorTest extends DriftTest {
- ScheduleQueue scheduleQueue;
DriftClientTestStub driftClient; -<<<<<<< Updated upstream
DriftDetector detector; -======= - - DriftDetector detector; - -// @BeforeClass -// public void initDetector() throws Exception { -// File basedir = new File("target", getClass().getSimpleName()); -// deleteDirectory(basedir); -// basedir.mkdir(); -// -// changeSetsDir = mkdir(basedir, "changesets"); -// resourcesDir = mkdir(basedir, "resources"); -// } ->>>>>>> Stashed changes
@BeforeMethod public void initDetector() { @@ -73,19 +49,12 @@ public class DriftDetectorTest extends DriftTest {
@SuppressWarnings("unchecked") @Test -<<<<<<< Updated upstream public void excludeEmptyDirsFromCoverageChangeSet() throws Exception { File confDir = mkdir(resourceDir, "conf"); -======= - public void coverageChangeSetExcludesEmptyDirs() throws Exception { - File confDir = new File(resourceDir, "conf"); - confDir.mkdir(); ->>>>>>> Stashed changes touch(new File(confDir, "server.conf"));
DriftConfiguration driftConfig = driftConfiguration("coverage-test", resourceDir.getAbsolutePath());
-<<<<<<< Updated upstream scheduleQueue.enqueue(new DriftDetectionSchedule(resourceId(), driftConfig)); detector.run();
@@ -108,15 +77,12 @@ public class DriftDetectorTest extends DriftTest { scheduleQueue.enqueue(new DriftDetectionSchedule(resourceId(), driftConfig)); detector.run();
- File changeSetDir = changeSetDir(driftConfig.getName()); -======= DriftDetectionSchedule schedule = new DriftDetectionSchedule(resourceId(), driftConfig);
scheduleQueue.enqueue(schedule); detector.run();
File changeSetDir = new File(new File(changeSetsDir, Integer.toString(resourceId())), "coverage-test"); ->>>>>>> Stashed changes File changeSet = new File(changeSetDir, "changeset.txt"); List<String> lines = readLines(new BufferedInputStream(new FileInputStream(changeSet)));
@@ -171,7 +137,6 @@ public class DriftDetectorTest extends DriftTest { dirEntry = reader.readDirectoryEntry(); } } -<<<<<<< Updated upstream
// void assertChangeSetContainsDirEntry(List<String> changeSet, String... dirEntry) { // String dirEntryHeader = dirEntry[0]; @@ -203,6 +168,4 @@ public class DriftDetectorTest extends DriftTest {
return config; } -======= ->>>>>>> Stashed changes } diff --git a/modules/core/plugin-container/src/test/java/org/rhq/core/pc/drift/DriftDetectorTest.java.orig b/modules/core/plugin-container/src/test/java/org/rhq/core/pc/drift/DriftDetectorTest.java.orig new file mode 100644 index 0000000..3dfb057 --- /dev/null +++ b/modules/core/plugin-container/src/test/java/org/rhq/core/pc/drift/DriftDetectorTest.java.orig @@ -0,0 +1,172 @@ +package org.rhq.core.pc.drift; + +import java.io.BufferedInputStream; +import java.io.BufferedReader; +import java.io.File; +import java.io.FileInputStream; +import java.io.FileReader; +import java.util.List; + +import org.testng.Assert; +import org.testng.annotations.BeforeClass; +import org.testng.annotations.BeforeMethod; +import org.testng.annotations.Test; + +import org.rhq.common.drift.ChangeSetReader; +import org.rhq.common.drift.ChangeSetReaderImpl; +import org.rhq.common.drift.DirectoryEntry; +import org.rhq.core.domain.configuration.Configuration; +import org.rhq.core.domain.drift.DriftConfiguration; + +import static org.apache.commons.io.IOUtils.readLines; +import static org.rhq.core.domain.drift.DriftCategory.FILE_ADDED; +import static org.rhq.core.domain.drift.DriftChangeSetCategory.COVERAGE; +import static org.rhq.core.domain.drift.DriftConfigurationDefinition.BaseDirValueContext.fileSystem; +import static org.testng.Assert.assertEquals; +import static org.testng.Assert.assertTrue; +import static org.unitils.thirdparty.org.apache.commons.io.FileUtils.touch; + +public class DriftDetectorTest extends DriftTest { + + ScheduleQueue scheduleQueue; + + DriftClientTestStub driftClient; + + DriftDetector detector; + + @BeforeMethod + public void initDetector() { + driftClient = new DriftClientTestStub(); + driftClient.setBaseDir(resourceDir); + + scheduleQueue = new ScheduleQueueImpl(); + + detector = new DriftDetector(); + detector.setDriftClient(driftClient); + detector.setChangeSetManager(changeSetMgr); + detector.setScheduleQueue(scheduleQueue); + } + + @SuppressWarnings("unchecked") + @Test + public void excludeEmptyDirsFromCoverageChangeSet() throws Exception { + File confDir = mkdir(resourceDir, "conf"); + touch(new File(confDir, "server.conf")); + + DriftConfiguration driftConfig = driftConfiguration("coverage-test", resourceDir.getAbsolutePath()); + + scheduleQueue.enqueue(new DriftDetectionSchedule(resourceId(), driftConfig)); + detector.run(); + + File changeSetDir = changeSetDir(driftConfig.getName()); + File changeSet = new File(changeSetDir, "changeset.txt"); + List<String> lines = readLines(new BufferedInputStream(new FileInputStream(changeSet))); + + assertHeaderEquals(lines, driftConfig.getName(), driftConfig.getBasedir().getValueName(), COVERAGE.code()); + assertThatChangeSetDoesNotContainEmptyDirs(changeSet); + } + + @SuppressWarnings("unchecked") + @Test + public void usePeriodAsNameOfBasedirDirectoryEntry() throws Exception { + touch(new File(resourceDir, "data-1.txt")); + touch(new File(resourceDir, "data-2.txt")); + + DriftConfiguration driftConfig = driftConfiguration("basedir-entry-test", resourceDir.getAbsolutePath()); + + scheduleQueue.enqueue(new DriftDetectionSchedule(resourceId(), driftConfig)); + detector.run(); + + File changeSetDir = changeSetDir(driftConfig.getName()); + DriftDetectionSchedule schedule = new DriftDetectionSchedule(resourceId(), driftConfig); + + scheduleQueue.enqueue(schedule); + detector.run(); + + File changeSetDir = new File(new File(changeSetsDir, Integer.toString(resourceId())), "coverage-test"); + File changeSet = new File(changeSetDir, "changeset.txt"); + List<String> lines = readLines(new BufferedInputStream(new FileInputStream(changeSet))); + + assertEquals(lines.size(), 7, "Expected " + changeSet.getPath() + " to have seven lines."); + assertEquals(". 2", lines.get(3), "The directory header name is wrong for change set " + + changeSet.getAbsolutePath()); + } + + @SuppressWarnings("unchecked") + @Test + public void includeNestedDirsInCoverageChangeSet() throws Exception { + File confDir = mkdir(resourceDir, "conf"); + File server1Conf = new File(confDir, "server-1.conf"); + touch(server1Conf); + + File subConfDir = mkdir(confDir, "subconf"); + File server2Conf = new File(subConfDir, "server-2.conf"); + touch(server2Conf); + + DriftConfiguration config = driftConfiguration("nested-dirs-test", resourceDir.getAbsolutePath()); + + scheduleQueue.enqueue(new DriftDetectionSchedule(resourceId(), config)); + detector.run(); + + File changesetDir = changeSetDir(config.getName()); + File changeSet = new File(changesetDir, "changeset.txt"); + List<String> lines = readLines(new BufferedInputStream(new FileInputStream(changeSet))); + + assertEquals(lines.size(), 9, "Expected " + changeSet.getPath() + " to have 9 lines"); + + assertHeaderEquals(lines, "nested-dirs-test", resourceDir.getAbsolutePath(), "C"); +// assertChangeSetContainsDirEntry(lines, +// "conf 1", +// sha256(server1Conf) + " 0 " + server1Conf.getName() + " " + FILE_ADDED +// ); + } + + void assertHeaderEquals(List<String> lines, String... expected) { + assertEquals(lines.get(0), expected[0], "The first header entry should be the drift configuration name."); + assertEquals(lines.get(1), expected[1], "The second header entry should be the base directory."); + assertEquals(lines.get(2), expected[2], "The third header entry should be a flag indicating the change set " + + "type."); + } + + void assertThatChangeSetDoesNotContainEmptyDirs(File changeSet) throws Exception { + ChangeSetReader reader = new ChangeSetReaderImpl(new BufferedReader(new FileReader(changeSet))); + DirectoryEntry dirEntry = reader.readDirectoryEntry(); + + while (dirEntry != null) { + Assert.assertTrue(dirEntry.getNumberOfFiles() > 0, "The change set file should not include empty " + + "directories"); + dirEntry = reader.readDirectoryEntry(); + } + } + +// void assertChangeSetContainsDirEntry(List<String> changeSet, String... dirEntry) { +// String dirEntryHeader = dirEntry[0]; +// int i = -1; +// boolean found = false; +// +// for (String line : changeSet) { +// if (line.equals(dirEntryHeader)) { +// found = true; +// } +// ++i; +// if (found) { +// break; +// } +// } +// } +// +// void assertChangeSetContainsDirEntry(File changeSet, String... dirEntry) throws Exception { +// ChangeSetReader reader = new ChangeSetReaderImpl(changeSet); +// DirectoryEntry actualDirEntry = reader.readDirectoryEntry(); +// +// while (dir) +// } + + DriftConfiguration driftConfiguration(String name, String basedir) { + DriftConfiguration config = new DriftConfiguration(new Configuration()); + config.setName(name); + config.setBasedir(new DriftConfiguration.BaseDirectory(fileSystem, basedir)); + + return config; + } +} 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 80f48eb..f4d42e5 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 @@ -43,11 +43,7 @@ public class DriftFilesSenderTest extends DriftTest { touch(new File(confDir, "server-1.conf")); touch(new File(confDir, "server-2.conf"));
-<<<<<<< Updated upstream File changeSetDir = changeSetDir(driftConfigName); -======= - File changeSetDir = createChangeSetDir(resourceId(), driftConfigName); ->>>>>>> Stashed changes
// Each item in changeSet is listed by the line it will appear in the actual file // in an attemp to make it more self-documenting. @@ -83,11 +79,7 @@ public class DriftFilesSenderTest extends DriftTest { touch(new File(libDir, "server-1.jar")); touch(new File(libDir, "server-2.jar"));
-<<<<<<< Updated upstream File changeSetDir = changeSetDir(driftConfigName); -======= - File changeSetDir = createChangeSetDir(resourceId(), driftConfigName); ->>>>>>> Stashed changes
// Each item in changeSet is listed by the line it will appear in the actual file // in an attemp to make it more self-documenting. @@ -135,15 +127,6 @@ public class DriftFilesSenderTest extends DriftTest { contentDir.getPath() + ". The SHA-256 hash should be used as the file name."); }
-<<<<<<< Updated upstream -======= - File createChangeSetDir(int resourceId, String driftConfigName) { - File dir = new File(new File(changeSetsDir, Integer.toString(resourceId)), driftConfigName); - dir.mkdirs(); - return dir; - } - ->>>>>>> Stashed changes void writeChangeSet(File changeSetDir, List<String> changeSet) throws Exception { BufferedOutputStream stream = new BufferedOutputStream(new FileOutputStream(new File(changeSetDir, "changeset.txt"))); @@ -158,5 +141,4 @@ public class DriftFilesSenderTest extends DriftTest { } return files; } - } diff --git a/modules/core/plugin-container/src/test/java/org/rhq/core/pc/drift/DriftFilesSenderTest.java.orig b/modules/core/plugin-container/src/test/java/org/rhq/core/pc/drift/DriftFilesSenderTest.java.orig new file mode 100644 index 0000000..f4d42e5 --- /dev/null +++ b/modules/core/plugin-container/src/test/java/org/rhq/core/pc/drift/DriftFilesSenderTest.java.orig @@ -0,0 +1,144 @@ +package org.rhq.core.pc.drift; + +import java.io.BufferedOutputStream; +import java.io.File; +import java.io.FileOutputStream; +import java.util.ArrayList; +import java.util.List; + +import org.testng.annotations.BeforeMethod; +import org.testng.annotations.Test; + +import org.rhq.common.drift.Headers; +import org.rhq.core.domain.drift.DriftFile; + +import static java.util.Arrays.asList; +import static org.apache.commons.io.FileUtils.touch; +import static org.apache.commons.io.IOUtils.writeLines; +import static org.rhq.core.domain.drift.DriftChangeSetCategory.COVERAGE; +import static org.testng.Assert.assertEquals; +import static org.testng.Assert.assertTrue; + +public class DriftFilesSenderTest extends DriftTest { + + DriftClient driftClient; + + DriftFilesSender sender; + + @BeforeMethod + public void initSender() { + driftClient = new DriftClientTestStub(); + + sender = new DriftFilesSender(); + sender.setDriftClient(driftClient); + sender.setChangeSetManager(changeSetMgr); + sender.setResourceId(resourceId()); + } + + @Test + public void sendFilesInOneDirectory() throws Exception { + String driftConfigName = "single-directory-test"; + + File confDir = mkdir(resourceDir, "conf"); + touch(new File(confDir, "server-1.conf")); + touch(new File(confDir, "server-2.conf")); + + File changeSetDir = changeSetDir(driftConfigName); + + // Each item in changeSet is listed by the line it will appear in the actual file + // in an attemp to make it more self-documenting. + writeChangeSet(changeSetDir, asList( + driftConfigName, + resourceDir.getAbsolutePath(), + COVERAGE.code(), + "conf 2", + "2e345df 0 server-1.conf A", + "a5d8c3e 0 server-2.conf A", + "" + )); + + sender.setDriftFiles(driftFiles("2e345df", "a5d8c3e")); + sender.setHeaders(new Headers(driftConfigName, resourceDir.getAbsolutePath(), COVERAGE)); + sender.run(); + + File contentDir = mkdir(changeSetDir, "content"); + + assertEquals(contentDir.list().length, 2, "Expected to find two files in " + contentDir.getAbsolutePath()); + assertFileCopiedToContentDir(contentDir, "2e345df"); + assertFileCopiedToContentDir(contentDir, "a5d8c3e"); + } + + @Test + public void sendFilesInMultipleDirectories() throws Exception { + String driftConfigName = "multiple-directories-test"; + + File confDir = mkdir(resourceDir, "conf"); + File libDir = mkdir(resourceDir, "lib"); + touch(new File(confDir, "server-1.conf")); + touch(new File(confDir, "server-2.conf")); + touch(new File(libDir, "server-1.jar")); + touch(new File(libDir, "server-2.jar")); + + File changeSetDir = changeSetDir(driftConfigName); + + // Each item in changeSet is listed by the line it will appear in the actual file + // in an attemp to make it more self-documenting. + writeChangeSet(changeSetDir, asList( + driftConfigName, + resourceDir.getAbsolutePath(), + COVERAGE.code(), + "conf 2", + "2e345df 0 server-1.conf A", + "a5d8c3e 0 server-2.conf A", + "", + "lib 2", + "91d4abb 0 server-1.jar A", + "92c4abb 0 server-2.jar A", + "" + )); + + // 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("2e345df", "91d4abb", "a5d8c3e", "92c4abb")); + sender.setHeaders(new Headers(driftConfigName, resourceDir.getAbsolutePath(), COVERAGE)); + sender.run(); + + File contentDir = mkdir(changeSetDir, "content"); + + assertEquals(contentDir.list().length, 4, "Expected to find four files in " + contentDir.getAbsolutePath()); + assertFileCopiedToContentDir(contentDir, "2e345df"); + assertFileCopiedToContentDir(contentDir, "a5d8c3e"); + assertFileCopiedToContentDir(contentDir, "91d4abb"); + assertFileCopiedToContentDir(contentDir, "92c4abb"); + } + + /** + * This method only verifies that a file having a particular hash or SHA-256 has been + * copied to the specified content directory. + * + * @param contentDir The directory to which the file should have been copied + * + * @param fileHash The file hash which is expected to be the name of the file in the + * content directory. + */ + void assertFileCopiedToContentDir(File contentDir, String fileHash) { + File file = new File(contentDir, fileHash); + assertTrue(file.exists(), "Expected to find file named " + file.getName() + " in content directory " + + contentDir.getPath() + ". The SHA-256 hash should be used as the file name."); + } + + void writeChangeSet(File changeSetDir, List<String> changeSet) throws Exception { + BufferedOutputStream stream = new BufferedOutputStream(new FileOutputStream(new File(changeSetDir, + "changeset.txt"))); + writeLines(changeSet, "\n", stream); + stream.close(); + } + + List<DriftFile> driftFiles(String... hashes) { + List<DriftFile> files = new ArrayList<DriftFile>(); + for (String hash : hashes) { + files.add(new DriftFile(hash)); + } + return files; + } +} 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 9d499ad..c65c7dc 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 @@ -1,7 +1,6 @@ package org.rhq.core.pc.drift;
import java.io.File; -<<<<<<< Updated upstream import java.io.IOException;
import org.apache.commons.io.FileUtils; @@ -12,12 +11,6 @@ import org.testng.annotations.BeforeMethod; import org.rhq.core.domain.drift.DriftConfiguration; import org.rhq.core.util.MessageDigestGenerator;
-======= - -import org.testng.annotations.BeforeClass; -import org.testng.annotations.BeforeMethod; - ->>>>>>> Stashed changes import static org.apache.commons.io.FileUtils.deleteDirectory;
public class DriftTest { @@ -32,11 +25,8 @@ public class DriftTest {
protected File resourceDir;
-<<<<<<< Updated upstream private MessageDigestGenerator digestGenerator;
-======= ->>>>>>> Stashed changes @BeforeClass public void initResourcesAndChangeSetsDirs() throws Exception { File basedir = new File("target", getClass().getSimpleName()); @@ -45,11 +35,8 @@ public class DriftTest {
changeSetsDir = mkdir(basedir, "changesets"); resourcesDir = mkdir(basedir, "resources"); -<<<<<<< Updated upstream
digestGenerator = new MessageDigestGenerator(MessageDigestGenerator.SHA_256); -======= ->>>>>>> Stashed changes }
@BeforeMethod @@ -66,16 +53,11 @@ public class DriftTest { return ++resourceId; }
-<<<<<<< Updated upstream protected File mkdir(File parent, String name) { -======= - File mkdir(File parent, String name) { ->>>>>>> Stashed changes File dir = new File(parent, name); dir.mkdirs(); return dir; } -<<<<<<< Updated upstream
protected File changeSetDir(String driftConfigName) { File dir = new File(new File(changeSetsDir, Integer.toString(resourceId)), driftConfigName); @@ -86,6 +68,4 @@ public class DriftTest { protected String sha256(File file) throws IOException { return digestGenerator.calcDigestString(file); } -======= ->>>>>>> Stashed changes } diff --git a/modules/core/plugin-container/src/test/java/org/rhq/core/pc/drift/DriftTest.java.orig b/modules/core/plugin-container/src/test/java/org/rhq/core/pc/drift/DriftTest.java.orig new file mode 100644 index 0000000..c65c7dc --- /dev/null +++ b/modules/core/plugin-container/src/test/java/org/rhq/core/pc/drift/DriftTest.java.orig @@ -0,0 +1,71 @@ +package org.rhq.core.pc.drift; + +import java.io.File; +import java.io.IOException; + +import org.apache.commons.io.FileUtils; +import org.apache.poi.util.IOUtils; +import org.testng.annotations.BeforeClass; +import org.testng.annotations.BeforeMethod; + +import org.rhq.core.domain.drift.DriftConfiguration; +import org.rhq.core.util.MessageDigestGenerator; + +import static org.apache.commons.io.FileUtils.deleteDirectory; + +public class DriftTest { + + protected File changeSetsDir; + + protected File resourcesDir; + + protected ChangeSetManager changeSetMgr; + + private int resourceId; + + protected File resourceDir; + + private MessageDigestGenerator digestGenerator; + + @BeforeClass + public void initResourcesAndChangeSetsDirs() throws Exception { + File basedir = new File("target", getClass().getSimpleName()); + deleteDirectory(basedir); + basedir.mkdir(); + + changeSetsDir = mkdir(basedir, "changesets"); + resourcesDir = mkdir(basedir, "resources"); + + digestGenerator = new MessageDigestGenerator(MessageDigestGenerator.SHA_256); + } + + @BeforeMethod + public void setUp() { + resourceDir = mkdir(resourcesDir, "resource-" + nextResourceId()); + changeSetMgr = new ChangeSetManagerImpl(changeSetsDir); + } + + protected int resourceId() { + return resourceId; + } + + protected int nextResourceId() { + return ++resourceId; + } + + protected File mkdir(File parent, String name) { + File dir = new File(parent, name); + dir.mkdirs(); + return dir; + } + + protected File changeSetDir(String driftConfigName) { + File dir = new File(new File(changeSetsDir, Integer.toString(resourceId)), driftConfigName); + dir.mkdirs(); + return dir; + } + + protected String sha256(File file) throws IOException { + return digestGenerator.calcDigestString(file); + } +}
rhq-commits@lists.fedorahosted.org