/* * Copyright (c) 2015 EMC Corporation * All Rights Reserved */ package com.emc.storageos.db.server.upgrade.impl.callback; import com.emc.storageos.db.client.URIUtil; import com.emc.storageos.db.client.model.DiscoveredDataObject; import com.emc.storageos.db.client.model.StorageSystem; import com.emc.storageos.db.client.upgrade.BaseCustomMigrationCallback; import com.emc.storageos.db.client.upgrade.callbacks.HDSStorageSystemSerialNumberMigration; import com.emc.storageos.db.server.DbsvcTestBase; import com.emc.storageos.db.server.upgrade.DbSimpleMigrationTestBase; import org.junit.BeforeClass; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import java.io.IOException; import java.util.ArrayList; import static junit.framework.Assert.assertNotNull; import static junit.framework.Assert.assertTrue; /** * Test upgrade of HDS storagesystem serialNumber. * In 2.0 HDS storagesystem's serialNumber was populated as "ARRAY.R700.94677" * afterwards it has been changed to "94677". * * This tests verify whether we are properly updating the serial number of the HDS systems or not. */ public class HDSStorageSystemSerialNumberMigrationTest extends DbSimpleMigrationTestBase { private static final Logger log = LoggerFactory.getLogger(HDSStorageSystemSerialNumberMigrationTest.class); private static volatile StorageSystem hdsStorageSystem; private static volatile StorageSystem otherStorageSystem; @BeforeClass public static void setup() throws IOException { customMigrationCallbacks.put("2.0", new ArrayList<BaseCustomMigrationCallback>() { private static final long serialVersionUID = 1L; { add(new HDSStorageSystemSerialNumberMigration()); } }); DbsvcTestBase.setup(); } @Override protected String getSourceVersion() { return "2.0"; } @Override protected String getTargetVersion() { return "2.2"; } @Override protected void prepareData() throws Exception { createStorageSystems(); } @Override protected void verifyResults() throws Exception { StorageSystem checkHdsStorageSystem = _dbClient.queryObject(StorageSystem.class, hdsStorageSystem.getId()); assertNotNull(checkHdsStorageSystem); assertStorageSystemSerialNumberValue("serailNumber", "94677", checkHdsStorageSystem.getSerialNumber()); StorageSystem checkOtherStorageSystem = _dbClient.queryObject(StorageSystem.class, otherStorageSystem.getId()); assertNotNull(checkOtherStorageSystem); assertStorageSystemSerialNumberValue("serailNumber", "0001230002300", checkHdsStorageSystem.getSerialNumber()); } private void assertStorageSystemSerialNumberValue(String name, Object expected, Object actual) { assertTrue(String.format("StorageSystem parameter %s should be %s, but is %s", name, expected.toString(), actual.toString()), actual.toString().equals(expected.toString())); } private void createStorageSystems() { hdsStorageSystem = new StorageSystem(); hdsStorageSystem.setId(URIUtil.createId(StorageSystem.class)); hdsStorageSystem.setSystemType(DiscoveredDataObject.Type.hds.name()); hdsStorageSystem.setNativeGuid("HDS+ARRAY.R700.94677"); hdsStorageSystem.setSerialNumber("ARRAY.R700.94677"); hdsStorageSystem.setIpAddress("lglw6089.lss.emc.com"); hdsStorageSystem.setModel("VSP"); hdsStorageSystem.setFirmwareVersion("1.20.1.22"); _dbClient.createObject(hdsStorageSystem); otherStorageSystem = new StorageSystem(); otherStorageSystem.setId(URIUtil.createId(StorageSystem.class)); otherStorageSystem.setSystemType(DiscoveredDataObject.Type.vmax.name()); otherStorageSystem.setNativeGuid("SYMMETRIX+0001230002300"); otherStorageSystem.setSerialNumber("0001230002300"); otherStorageSystem.setIpAddress("10.1.123.124"); otherStorageSystem.setModel("VMAX40K"); otherStorageSystem.setFirmwareVersion("5977.22"); _dbClient.createObject(otherStorageSystem); } }