/*
* 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.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;
import org.rhq.common.drift.ChangeSetReader;
import org.rhq.common.drift.ChangeSetWriter;
import org.rhq.common.drift.Headers;
import org.rhq.core.domain.drift.DriftChangeSetCategory;
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 definition.");
}
@Test
public void returnReaderForRequestedChangeSet() throws Exception {
String config = "return-reader-for-existing-changeset-test";
File confDir = mkdir(resourceDir, "conf");
File serverConf = createRandomFile(confDir, "server.conf");
String serverConfHash = sha256(serverConf);
ChangeSetWriter writer = changeSetMgr.getChangeSetWriter(resourceId(), createHeaders(config, COVERAGE));
writer.write(addedFileEntry("conf/server.conf", serverConfHash, serverConf.lastModified(), serverConf.length()));
writer.close();
ChangeSetReader reader = changeSetMgr.getChangeSetReader(resourceId(), config);
assertNotNull(reader, "Expected to get a change set reader when change set exists");
assertReaderOpenedOnChangeSet(reader);
}
@Test
public void verifyChangeSetExists() throws Exception {
String config = "changeset-exists-test";
File confDir = mkdir(resourceDir, "conf");
File serverConf = createRandomFile(confDir, "server.conf");
Headers headers = createHeaders(config, COVERAGE);
ChangeSetWriter writer = changeSetMgr.getChangeSetWriter(resourceId(), headers);
writer.write(addedFileEntry("conf/server.conf", sha256(serverConf), serverConf.lastModified(), serverConf.length()));
writer.close();
assertTrue(changeSetMgr.changeSetExists(resourceId(), headers), "Expected to find change set file.");
}
@Test
public void verifyChangeSetDoesNotExist() throws Exception {
String config = "changeset-does-not-exist";
assertFalse(changeSetMgr.changeSetExists(resourceId(), createHeaders(config, DRIFT)),
"Did not expect to find change set file.");
}
void assertReaderOpenedOnChangeSet(ChangeSetReader reader) throws Exception {
assertNotNull(reader, "The " + ChangeSetReader.class.getSimpleName() + " should not be null.");
assertNotNull(reader.read(), "Expected to find a file entry");
}
Headers createHeaders(String driftDefName, DriftChangeSetCategory type) {
Headers headers = new Headers();
headers.setResourceId(resourceId());
headers.setDriftDefinitionId(1);
headers.setDriftDefinitionName(driftDefName);
headers.setBasedir(resourceDir.getPath());
headers.setType(type);
return headers;
}
}