package org.ovirt.engine.core.bll.migration;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import org.junit.Test;
import org.ovirt.engine.core.common.migration.ConvergenceConfig;
import org.ovirt.engine.core.common.migration.ConvergenceItem;
import org.ovirt.engine.core.common.migration.ConvergenceItemWithStallingLimit;
import org.ovirt.engine.core.common.migration.MigrationPolicy;
import org.ovirt.engine.core.common.migration.NoMigrationPolicy;
import org.ovirt.engine.core.compat.Guid;
import org.ovirt.engine.core.compat.Version;
import org.ovirt.engine.core.utils.JsonHelper;
public class ConvergenceConfigProviderTest {
private static final Version VERSION = Version.getLast();
private ConvergenceConfigProvider provider = new ConvergenceConfigProvider();
@Test
public void jsonInvalidJson() throws IOException {
provider.initMigrationPolicies("this is not a valid json", VERSION);
MigrationPolicy policy = provider.getMigrationPolicy(Guid.newGuid(), VERSION);
assertTrue(policy instanceof NoMigrationPolicy);
}
@Test
public void jsonProperlyFilled() throws IOException {
Guid id = Guid.newGuid();
List<MigrationPolicy> policies = new ArrayList<>();
ConvergenceConfig config = new ConvergenceConfig();
config.setInitialItems(Collections.singletonList(new ConvergenceItem("setDowntime2", 1)));
config.setLastItems(Collections.singletonList(new ConvergenceItem("setDowntime3", 15)));
config.setConvergenceItems(Collections.singletonList(new ConvergenceItemWithStallingLimit(1, "someAction", 12)));
MigrationPolicy policy = new MigrationPolicy(id, "some name", "some long description", config);
policies.add(policy);
String json = JsonHelper.objectToJson(policies, false);
provider.initMigrationPolicies(json, VERSION);
// just basic sanity check
assertEquals(policy.getName(), provider.getMigrationPolicy(id, VERSION).getName());
assertEquals(policy.getDescription(), provider.getMigrationPolicy(id, VERSION).getDescription());
assertTrue(provider.getMigrationPolicy(id, new Version()) instanceof NoMigrationPolicy);
}
}