package org.ovirt.engine.core.dal.job;
import static org.junit.Assert.assertEquals;
import static org.ovirt.engine.core.dal.job.ExecutionMessageDirector.EXECUTION_MESSAGES_FILE_PATH;
import static org.ovirt.engine.core.dal.job.ExecutionMessageDirector.JOB_MESSAGE_PREFIX;
import static org.ovirt.engine.core.dal.job.ExecutionMessageDirector.STEP_MESSAGE_PREFIX;
import java.util.ResourceBundle;
import org.junit.Test;
import org.ovirt.engine.core.common.action.VdcActionType;
import org.ovirt.engine.core.common.job.StepEnum;
public class ExecutionMessageDirectorTest {
private static final String UPDATE_CLUSTER_CLUSTERS_MESSAGE = "Update Cluster ${Clusters}";
private static final String TEST_BUNDLE_NAME = "TestExecutionMessages";
private static final String INVALID_KEY_TEST_BUNDLE_NAME = "InvalidKeyExecutionMessages";
private static final String INVALID_JOB_KEY_TEST_BUNDLE_NAME = "InvalidJobKeyExecutionMessages";
private static final String INVALID_STEP_KEY_TEST_BUNDLE_NAME = "InvalidStepKeyExecutionMessages";
/**
* Verifies the engine-core execution messages are aligned with the enumerators {@code VdcActionType} and
* {@code StepEnum}.
*/
@Test
public void verifyEngineMessagesSupported() {
ResourceBundle bundle = ResourceBundle.getBundle(EXECUTION_MESSAGES_FILE_PATH);
for (String key : bundle.keySet()) {
if (key.startsWith(ExecutionMessageDirector.JOB_MESSAGE_PREFIX)) {
VdcActionType.valueOf(key.substring(JOB_MESSAGE_PREFIX.length()));
} else if (key.startsWith(ExecutionMessageDirector.STEP_MESSAGE_PREFIX)) {
StepEnum.valueOf(key.substring(STEP_MESSAGE_PREFIX.length()));
}
}
}
/**
* Verifies the correct message is retrieved by an existing key
*/
@Test
public void testExistJobMessages() {
ExecutionMessageDirector messageDirector = ExecutionMessageDirector.getInstance();
messageDirector.initialize(TEST_BUNDLE_NAME);
String updateClusterMessage = messageDirector.getJobMessage(VdcActionType.UpdateCluster);
assertEquals(UPDATE_CLUSTER_CLUSTERS_MESSAGE, updateClusterMessage);
}
/**
* If the message key doesn't appear in the file, return the name itself
*/
@Test
public void testMissingJobMessages() {
ExecutionMessageDirector messageDirector = ExecutionMessageDirector.getInstance();
messageDirector.initialize(TEST_BUNDLE_NAME);
assertEquals(VdcActionType.Unknown.name(), messageDirector.getJobMessage(VdcActionType.Unknown));
}
/**
* Test should fail for a key is without expected prefix
*/
@Test
public void readMissingMessageKey() {
ExecutionMessageDirector messageDirector = ExecutionMessageDirector.getInstance();
messageDirector.initialize(INVALID_KEY_TEST_BUNDLE_NAME);
}
/**
* Test should fail for a job key is without expected prefix
*/
@Test
public void readMissingMessageJobKey() {
ExecutionMessageDirector messageDirector = ExecutionMessageDirector.getInstance();
messageDirector.initialize(INVALID_JOB_KEY_TEST_BUNDLE_NAME);
}
/**
* Test should fail for a step key is without expected prefix
*/
@Test
public void readMissingMessageStepKey() {
ExecutionMessageDirector messageDirector = ExecutionMessageDirector.getInstance();
messageDirector.initialize(INVALID_STEP_KEY_TEST_BUNDLE_NAME);
}
}