package org.ovirt.engine.core.itests; import java.util.regex.Matcher; import java.util.regex.Pattern; import org.junit.Assert; import org.junit.Test; import org.ovirt.engine.core.bll.IsoDomainListSyncronizer; import org.ovirt.engine.core.compat.Guid; import org.ovirt.engine.core.compat.Version; public class RepoIsoFileTest extends AbstractBackendTest{ @Test public void testToolsRegexValidation() { //getBasicSetup(); Assert.assertTrue(isValidToolName("RHEV-toolsSetup_2.3_275.iso")); Assert.assertTrue(isValidToolName("RHEV-toolsSetup_2.2_46770.iso")); Assert.assertTrue(isValidToolName("RHEV-toolsSetup_3.0_1.iso")); Assert.assertTrue(isValidToolName("RHEV-toolsSetup_2.3_99999.iso")); Assert.assertFalse(isValidToolName("")); Assert.assertFalse(isValidToolName(null)); // "_____" instead of "_" Assert.assertFalse(isValidToolName("RHEV-toolsSetup_____2.3_1.iso")); // No '_' before cluster version. Assert.assertFalse(isValidToolName("RHEV-toolsSetup+2.3_99999.iso")); // No '_' after cluster version. Assert.assertFalse(isValidToolName("RHEV-toolsSetup_2.399999.iso")); // Case sensitive check (setup instead of Setup). Assert.assertFalse(isValidToolName("RHEV-toolssetup_2.3.iso")); // No dot before iso (.iso) Assert.assertFalse(isValidToolName("tooSetup+2.3_99999iso")); // No tool name. Assert.assertFalse(isValidToolName("_2.3_99999.iso")); // No tool name. Assert.assertFalse(isValidToolName("RHEV-toolsSetup_2.3_9.iso2")); // Check case sensitive Assert.assertTrue(isValidToolName("RHEV-toolsSetup_2.3_99999.Iso")); // Check case sensitiv Assert.assertTrue(isValidToolName("RHEV-toolsSetup_2.3_99999.ISO")); } @Test public void testToolsClusterVersionValidation() { Assert.assertEquals(getToolCluster("RHEV-toolsSetup_2.3_275.iso"), "2.3"); Assert.assertEquals(getToolCluster("RHEV-toolsSetup_2.2_275.iso"), "2.2"); Assert.assertEquals(getToolCluster("RHEV-toolsSetup_9.9_275.iso"), "9.9"); } @Test public void testToolVersionValidation() { Assert.assertEquals(getToolVersion("RHEV-toolsSetup_2.3_275.iso"), new Integer("275").intValue()); Assert.assertEquals(getToolVersion("RHEV-toolsSetup_2.3_2.iso"), new Integer("2").intValue()); } @Test public void testFaultGuid() { /** List<RepoFileMetaData> fileList = IsoDomainListSyncronizer.getInstance().getUserRequestForStorageDomainRepoFileList(Guid.NewGuid(), true); // Wrong Guid should return an empty list. Assert.assertEquals(true, fileList.isEmpty()); fileList = IsoDomainListSyncronizer.getInstance().getUserRequestForStorageDomainRepoFileList(null, true); Assert.assertEquals(true, fileList.isEmpty()); **/ } @Test public void testStorageDomainRepoFileList() { IsoDomainListSyncronizer.getInstance().refresheIsoDomainWhenActivateDomain(null, null); // Wrong Guid shoud return an empty list. //Assert.assertEquals(true, repoFileMetaData.isEmpty()); // simulate fetch from Iso domain. IsoDomainListSyncronizer.getInstance().refresheIsoDomainWhenActivateDomain(Guid.NewGuid(), null); //Assert.assertEquals(true, repoFileMetaData.isEmpty()); IsoDomainListSyncronizer.getInstance().refresheIsoDomainWhenActivateDomain(null, Guid.NewGuid()); //Assert.assertEquals(true, repoFileMetaData.isEmpty()); } private boolean isValidToolName(String toolName) { Pattern pattern = Pattern.compile(IsoDomainListSyncronizer.regexToolPattern); String toolNameValid = toolName != null ? toolName : new String(); Matcher matchToolPattern = pattern.matcher(toolNameValid); return matchToolPattern.find(); } private String getToolCluster(String toolName) { Pattern pattern = Pattern.compile(IsoDomainListSyncronizer.regexToolPattern); Matcher matchToolPattern = pattern.matcher(toolName); if (matchToolPattern.find()) { Version clusterVer = new Version(matchToolPattern.group(1)); return clusterVer.getValue(); } return null; } private int getToolVersion(String toolName) { Pattern pattern = Pattern.compile(IsoDomainListSyncronizer.regexToolPattern); Matcher matchToolPattern = pattern.matcher(toolName); if (matchToolPattern.find()) { int toolVer = new Integer(matchToolPattern.group(3)).intValue(); return toolVer; } return -1; } }