/* * Copyright (c) 2014 EMC Corporation * All Rights Reserved */ package com.emc.storageos.db.server.upgrade.impl.callback; import java.io.IOException; import java.net.URI; import java.util.ArrayList; import java.util.List; import org.junit.Assert; import org.junit.BeforeClass; import com.emc.storageos.db.client.DbClient; import com.emc.storageos.db.client.URIUtil; import com.emc.storageos.db.client.model.Network; import com.emc.storageos.db.client.model.StoragePort; import com.emc.storageos.db.client.model.VirtualArray; import com.emc.storageos.db.client.upgrade.BaseCustomMigrationCallback; import com.emc.storageos.db.client.upgrade.callbacks.StoragePortNetworkIndexMigration; import com.emc.storageos.db.client.util.CustomQueryUtility; import com.emc.storageos.db.server.upgrade.DbSimpleMigrationTestBase; /** * @author cgarber * */ public class StoragePortNetworkIndexMigrationTest extends DbSimpleMigrationTestBase { private URI stoPortId1; private URI stoPortId2; private URI networkId1; @BeforeClass public static void setup() throws IOException { customMigrationCallbacks.put("1.1", new ArrayList<BaseCustomMigrationCallback>() { private static final long serialVersionUID = 1L; { // Add your implementation of migration callback below. add(new StoragePortNetworkIndexMigration()); } }); DbSimpleMigrationTestBase.initialSetup(new AlterSchema() { @Override protected void process() { replaceIndexCf(StoragePort.class, "network", "AltIdIndex"); } }); } /* * (non-Javadoc) * * @see com.emc.storageos.db.server.upgrade.DbSimpleMigrationTestBase#getSourceVersion() */ @Override protected String getSourceVersion() { return "1.1"; } /* * (non-Javadoc) * * @see com.emc.storageos.db.server.upgrade.DbSimpleMigrationTestBase#getTargetVersion() */ @Override protected String getTargetVersion() { return "2.0"; } /* * (non-Javadoc) * * @see com.emc.storageos.db.server.upgrade.DbSimpleMigrationTestBase#prepareData() */ @Override protected void prepareData() throws Exception { DbClient dbClient = getDbClient(); stoPortId1 = URIUtil.createId(VirtualArray.class); stoPortId2 = URIUtil.createId(VirtualArray.class); networkId1 = URIUtil.createId(Network.class); StoragePort stoPort1 = new StoragePort(); stoPort1.setId(stoPortId1); stoPort1.setLabel("storagePort1"); stoPort1.setPortNetworkId(networkId1.toString()); dbClient.createObject(stoPort1); StoragePort stoPort2 = new StoragePort(); stoPort2.setId(stoPortId2); stoPort2.setLabel("storagePort2"); stoPort2.setNetwork(networkId1); dbClient.createObject(stoPort2); // verify that we've reproduced the issue List<StoragePort> stoPorts = CustomQueryUtility.queryActiveResourcesByAltId(dbClient, StoragePort.class, "portNetworkId", networkId1.toString()); Assert.assertEquals(2, stoPorts.size()); List<StoragePort> stoPorts2 = CustomQueryUtility.queryActiveResourcesByAltId(dbClient, StoragePort.class, "network", networkId1.toString()); Assert.assertEquals(2, stoPorts2.size()); } /* * (non-Javadoc) * * @see com.emc.storageos.db.server.upgrade.DbSimpleMigrationTestBase#verifyResults() */ @Override protected void verifyResults() throws Exception { DbClient dbClient = getDbClient(); List<StoragePort> stoPorts = CustomQueryUtility.queryActiveResourcesByAltId(dbClient, StoragePort.class, "portNetworkId", networkId1.toString()); Assert.assertTrue(stoPorts.iterator().hasNext()); Assert.assertEquals(1, stoPorts.size()); List<StoragePort> stoPorts2 = CustomQueryUtility.queryActiveResourcesByAltId(dbClient, StoragePort.class, "network", networkId1.toString()); Assert.assertTrue(stoPorts2.iterator().hasNext()); Assert.assertEquals(1, stoPorts2.size()); Assert.assertEquals(stoPortId2, stoPorts2.iterator().next().getId()); } }