Package org.rhq.core.domain.drift

Examples of org.rhq.core.domain.drift.DriftDefinition


            coverageChangeSet);
    }

    @Test
    public void includeRemovedFileInDriftChangeSet() throws Exception {
        DriftDefinition def = driftDefinition("file-removed-drift-test", resourceDir.getAbsolutePath());

        File confDir = mkdir(resourceDir, "conf");
        File server1Conf = createRandomFile(confDir, "server-1.conf");
        File server2Conf = createRandomFile(confDir, "server-2.conf");

        String server2ConfHash = sha256(server2Conf);

        ChangeSetWriter writer = changeSetMgr.getChangeSetWriter(resourceId(), createHeaders(def, COVERAGE));
        writer.write(addedFileEntry("conf/server-1.conf", sha256(server1Conf), server1Conf.lastModified(), server1Conf
            .length()));
        writer.write(addedFileEntry("conf/server-2.conf", server2ConfHash, server2Conf.lastModified(), server2Conf
            .length()));
        writer.close();

        // create some drift
        server2Conf.delete();

        scheduleQueue.addSchedule(new DriftDetectionSchedule(resourceId(), def));
        detector.run();

        File driftChangeSet = changeSet(def.getName(), DRIFT);
        List<FileEntry> driftEntries = asList(removedFileEntry("conf/server-2.conf", server2ConfHash));

        // verify that the drift change set was generated
        assertTrue(driftChangeSet.exists(), "Expected to find drift change set " + driftChangeSet.getPath());
        assertHeaderEquals(driftChangeSet, createHeaders(def, DRIFT, 1));
        assertFileEntriesMatch("The drift change set does not match the expected values", driftEntries, driftChangeSet);

        // verify that the coverage change set was updated
        File coverageChangeSet = changeSet(def.getName(), COVERAGE);
        List<FileEntry> coverageEntries = asList(addedFileEntry("conf/server-1.conf", sha256(server1Conf), server1Conf
            .lastModified(), server1Conf.length()));

        assertHeaderEquals(coverageChangeSet, createHeaders(def, COVERAGE, 1));
        assertFileEntriesMatch("The coverage change set was not updated as expected", coverageEntries,
View Full Code Here


    public void reportDriftWhenBaseDirIsDeleted() throws Exception {
        File confDir = mkdir(resourceDir, "conf");
        File serverConf = createRandomFile(confDir, "server.conf");
        String serverConfHash = sha256(serverConf);

        DriftDefinition def = driftDefinition("delete-basedir-test", confDir.getAbsolutePath());
        DriftDetectionSchedule schedule = new DriftDetectionSchedule(resourceId(), def);

        // generate the initial snapshot
        scheduleQueue.addSchedule(schedule);
        detector.run();

        // Delete the base directory
        deleteDirectory(confDir);

        // re-run the detector
        schedule.resetSchedule();
        detector.run();

        // verify that the drift change set was generated
        File driftChangeSet = changeSet(def.getName(), DRIFT);
        List<FileEntry> driftEntries = asList(removedFileEntry("conf/server.conf", serverConfHash));

        assertTrue(driftChangeSet.exists(), "Expected to find drift change set " + driftChangeSet.getPath());
        assertHeaderEquals(driftChangeSet, createHeaders(def, DRIFT, 1));
        assertFileEntriesMatch("The drift change set does not match the expected values", driftEntries, driftChangeSet);

        // verify that the snapshot was updated
        File currentSnapshot = changeSet(def.getName(), COVERAGE);
        List<FileEntry> snapshotEntries = emptyList();

        assertHeaderEquals(currentSnapshot, createHeaders(def, COVERAGE, 1));
        assertFileEntriesMatch("The current snapshot was not updated as expected", snapshotEntries, currentSnapshot);
    }
View Full Code Here

    }

    @Test
    public void includeFilesInRemovedDirectoryInDriftChangeSet() throws Exception {
        DriftDefinition def = driftDefinition("dir-removed-test", resourceDir.getAbsolutePath());

        File confDir = mkdir(resourceDir, "conf");
        File server1Conf = createRandomFile(confDir, "server-1.conf");
        String server1Hash = sha256(server1Conf);

        ChangeSetWriter writer = changeSetMgr.getChangeSetWriter(resourceId(), createHeaders(def, COVERAGE));
        writer
            .write(addedFileEntry("conf/server-1.conf", server1Hash, server1Conf.lastModified(), server1Conf.length()));
        writer.close();

        // create some drift
        server1Conf.delete();
        confDir.delete();

        scheduleQueue.addSchedule(new DriftDetectionSchedule(resourceId(), def));
        detector.run();

        File driftChangeSet = changeSet(def.getName(), DRIFT);
        List<FileEntry> driftEntries = asList(removedFileEntry("conf/server-1.conf", server1Hash));

        // verify that the drift change set was generated
        assertTrue(driftChangeSet.exists(), "Expected to find drift change set " + driftChangeSet.getPath());
        assertHeaderEquals(driftChangeSet, createHeaders(def, DRIFT, 1));
        assertFileEntriesMatch("The drift change set does not match the expected values", driftEntries, driftChangeSet);

        // verify that the coverage change set was updated
        File coverageChangeSet = changeSet(def.getName(), COVERAGE);
        List<FileEntry> coverageEntries = emptyList();

        assertHeaderEquals(coverageChangeSet, createHeaders(def, COVERAGE, 1));
        assertFileEntriesMatch("The coverage change set was not updated as expected", coverageEntries,
            coverageChangeSet);
View Full Code Here

            coverageChangeSet);
    }

    @Test
    public void revertToPreviousSnapshotWhenSendingChangeSetFails() throws Exception {
        DriftDefinition def = driftDefinition("revert-snapshot-test", resourceDir.getAbsolutePath());
        DriftDetectionSchedule schedule = new DriftDetectionSchedule(resourceId(), def);

        File confDir = mkdir(resourceDir, "conf");
        File server1Conf = createRandomFile(confDir, "server.conf");
        assert (server1Conf.exists());

        scheduleQueue.addSchedule(schedule);
        // generate the initial snapshot
        detector.run();

        // Now generate a drift change set
        createRandomFile(confDir, "server-1.conf");
        schedule.resetSchedule();
        detector.run();

        File changeSet = changeSet(def.getName(), COVERAGE);
        String currentHash = sha256(changeSet);

        // Need to delete the previous version snapshot file; otherwise, the
        // next detection run will be skipped.
        previousSnapshot(def.getName()).delete();

        // generate some more drift, and fail on sending the change set
        // to the server
        createRandomFile(confDir, "server-2.conf");
        schedule.resetSchedule();
        driftClient.setFailingOnSendChangeSet(true);
        try {
            detector.run();
        } catch (RuntimeException e) {
        }

        String newHash = sha256(changeSet);

        assertEquals(newHash, currentHash, "The snapshot file should be reverted if sending the new snapshot "
            + "to the server fails.");
        // The previous version file must be deleted on revert; otherwise, drift
        // detection will not run for the schedule if the previous version file
        // is found on disk.
        assertFalse(previousSnapshot(def.getName()).exists(), "The copy of the previous version snapshot file "
            + "should be deleted once we have reverted back to it and have a new, current snapsot file.");
    }
View Full Code Here

        // If we have just generated the initial change set and sending it to
        // the server fails, then there is no prior snapshot version to which
        // we can revert. We therefore need to purge the snapshot file and
        // allow DriftDetector to simply regenerate the initial change set again.

        DriftDefinition def = driftDefinition("purge-snapshot-test", resourceDir.getAbsolutePath());

        File confDir = mkdir(resourceDir, "conf");
        createRandomFile(confDir, "server.conf");

        scheduleQueue.addSchedule(new DriftDetectionSchedule(resourceId(), def));
        driftClient.setFailingOnSendChangeSet(true);
        try {
            detector.run();
        } catch (RuntimeException e) {
        }

        assertFalse(changeSet(def.getName(), COVERAGE).exists(), "Snapshot file should be deleted when "
            + "only the initial change set has been generated and sending change send report to server fails");
    }
View Full Code Here

    }

    @Test
    public void ignoreFilesThatAreNotReadableForCoverageChangeSet() throws Exception {

        DriftDefinition def = driftDefinition("nonreadable-files-coverage", resourcesDir.getAbsolutePath());

        File confDir = mkdir(resourceDir, "conf");
        File server1Conf = createRandomFile(confDir, "server-1.conf");
        File server2Conf = createRandomFile(confDir, "server-2.conf");
        setNotReadable(server2Conf);

        scheduleQueue.addSchedule(new DriftDetectionSchedule(resourceId(), def));
        detector.run();

        File changeSet = changeSet(def.getName(), COVERAGE);
        List<FileEntry> entries = asList(addedFileEntry("conf/server-1.conf", sha256(server1Conf), server1Conf
            .lastModified(), server1Conf.length()));

        assertHeaderEquals(changeSet, createHeaders(def, COVERAGE));
        assertFileEntriesMatch("Files that are non-readable should be skipped but other, readable file should still "
View Full Code Here

            + "be included in the change set", entries, changeSet);
    }

    @Test
    public void ignoreNewFilesThatAreNotReadableForDriftChangeSet() throws Exception {
        DriftDefinition def = driftDefinition("nonreadable-files-drfit", resourceDir.getAbsolutePath());
        DriftDetectionSchedule schedule = new DriftDetectionSchedule(resourceId(), def);

        File confDir = mkdir(resourceDir, "conf");
        File server1Conf = createRandomFile(confDir, "server-1.conf");
        String oldServer1Hash = sha256(server1Conf);

        scheduleQueue.addSchedule(schedule);
        detector.run();

        // create some drift that includes a new file that is not readable
        server1Conf.delete();
        server1Conf = createRandomFile(confDir, "server-1.conf", 48);
        String newServer1Hash = sha256(server1Conf);

        File server2Conf = createRandomFile(confDir, "server-2.conf");
        setNotReadable(server2Conf);

        schedule.resetSchedule();
        detector.run();

        File driftChangeSet = changeSet(def.getName(), DRIFT);
        List<FileEntry> driftEntries = asList(changedFileEntry("conf/server-1.conf", oldServer1Hash, newServer1Hash,
            server1Conf.lastModified(), server1Conf.length()));

        // verify that the drift change set was generated
        assertTrue(driftChangeSet.exists(), "Expected to find drift change set " + driftChangeSet.getPath());
        assertHeaderEquals(driftChangeSet, createHeaders(def, DRIFT, 1));
        assertFileEntriesMatch("The drift change set does not match the expected values", driftEntries, driftChangeSet);

        // verify that the coverage change set was updated
        File coverageChangeSet = changeSet(def.getName(), COVERAGE);
        List<FileEntry> coverageEntries = asList(changedFileEntry("conf/server-1.conf", oldServer1Hash, newServer1Hash,
            server1Conf.lastModified(), server1Conf.length()));

        assertHeaderEquals(coverageChangeSet, createHeaders(def, COVERAGE, 1));
        assertFileEntriesMatch("The coverage change set was not updated as expected", coverageEntries,
View Full Code Here

            coverageChangeSet);
    }

    @Test
    public void markFileUnderDriftDetectionAsRemovedWhenItIsMadeNonReadable() throws Exception {
        DriftDefinition def = driftDefinition("file-made-nonreadable", resourceDir.getAbsolutePath());
        DriftDetectionSchedule schedule = new DriftDetectionSchedule(resourceId(), def);

        File confDir = mkdir(resourceDir, "conf");
        File server1Conf = createRandomFile(confDir, "server-1.conf");
        String server1Hash = sha256(server1Conf);

        scheduleQueue.addSchedule(schedule);
        detector.run();

        // make the file non-readable and run the detector again
        setNotReadable(server1Conf);

        schedule.resetSchedule();
        detector.run();

        File driftChangeSet = changeSet(def.getName(), DRIFT);
        List<FileEntry> driftEntries = asList(removedFileEntry("conf/server-1.conf", server1Hash));

        // verify that the drift change set was generated
        assertTrue(driftChangeSet.exists(), "Expected to find drift change set " + driftChangeSet.getPath());
        assertHeaderEquals(driftChangeSet, createHeaders(def, DRIFT, 1));
        assertFileEntriesMatch("The drift change set does not match the expected values", driftEntries, driftChangeSet);

        // verify that the coverage change set was updated
        File coverageChangeSet = changeSet(def.getName(), COVERAGE);
        List<FileEntry> coverageEntries = emptyList();

        assertHeaderEquals(coverageChangeSet, createHeaders(def, COVERAGE, 1));
        assertFileEntriesMatch("The coverage change set was not updated as expected", coverageEntries,
            coverageChangeSet);
View Full Code Here

            coverageChangeSet);
    }

    @Test
    public void doNotModifyPinnedSnapshotWhenDriftIsDetected() throws Exception {
        DriftDefinition driftDef = driftDefinition("do-not-modify-pinned-snapshot", resourceDir.getAbsolutePath());
        driftDef.setPinned(true);
        DriftDetectionSchedule schedule = new DriftDetectionSchedule(resourceId(), driftDef);

        File confDir = mkdir(resourceDir, "conf");
        File server1Conf = createRandomFile(confDir, "server1.conf");

        scheduleQueue.addSchedule(schedule);
        detector.run();

        // When the initial snapshot is pinned, we need to generate it; otherwise, it should
        // be provided by the server.
        File currentSnapshot = changeSet(driftDef.getName(), COVERAGE);
        File pinnedSnapshot = new File(currentSnapshot.getParentFile(), "snapshot.pinned");
        String originalPinnedHash = sha256(pinnedSnapshot);

        // generate some drift
        File server2Conf = createRandomFile(confDir, "server2.conf");
View Full Code Here

            fileEntries, currentSnapshot);
    }

    @Test
    public void updateCurrentSnapshotVersionNumberWhenUsingPinnedSnapshot() throws Exception {
        DriftDefinition driftDef = driftDefinition("update-snapshot-version-pinned", resourceDir.getAbsolutePath());
        driftDef.setPinned(true);

        File confDir = mkdir(resourceDir, "conf");
        File server1Conf = createRandomFile(confDir, "server1.conf");

        DriftDetectionSchedule schedule = new DriftDetectionSchedule(resourceId(), driftDef);
        scheduleQueue.addSchedule(schedule);
        detector.run();

        // create some drift which should result in version 1
        File server2Conf = createRandomFile(confDir, "server2.conf");
        schedule.resetSchedule();
        detector.run();

        File currentSnapshot = changeSet(driftDef.getName(), COVERAGE);
        File previousSnapshot = new File(currentSnapshot.getParentFile(), "changeset.txt.previous");
        previousSnapshot.delete();

        // create some more drift which should result in version 2
        File server3Conf = createRandomFile(confDir, "server3.conf");
        schedule.resetSchedule();
        detector.run();

        // verify that the current snapshot was updated
        List<FileEntry> currentSnapshotEntries = asList(addedFileEntry("conf/server1.conf", sha256(server1Conf),
            server1Conf.lastModified(), server1Conf.length()), addedFileEntry("conf/server2.conf", sha256(server2Conf),
            server2Conf.lastModified(), server2Conf.length()), addedFileEntry("conf/server3.conf", sha256(server3Conf),
            server3Conf.lastModified(), server3Conf.length()));

        assertHeaderEquals(currentSnapshot, createHeaders(driftDef, COVERAGE, 2));
        assertFileEntriesMatch("The current snapshot file should still get updated even when using a pinned snapshot",
            currentSnapshotEntries, currentSnapshot);

        // verify that the the drift/delta change set was generated
        File driftChangeSet = changeSet(driftDef.getName(), DRIFT);
        List<FileEntry> driftEntries = asList(addedFileEntry("conf/server2.conf", sha256(server2Conf), server2Conf
            .lastModified(), server2Conf.length()), addedFileEntry("conf/server3.conf", sha256(server3Conf),
            server3Conf.lastModified(), server3Conf.length()));

        assertHeaderEquals(driftChangeSet, createHeaders(driftDef, DRIFT, 2));
View Full Code Here

TOP

Related Classes of org.rhq.core.domain.drift.DriftDefinition

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.