/** * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the * "License"); you may not use this file except in compliance * with the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.apache.ambari.server.state.stack; import java.lang.reflect.Method; import java.sql.SQLException; import java.util.Arrays; import java.util.HashMap; import java.util.HashSet; import java.util.Map; import java.util.Set; import org.apache.ambari.server.AmbariException; import org.apache.ambari.server.H2DatabaseCleaner; import org.apache.ambari.server.orm.GuiceJpaInitializer; import org.apache.ambari.server.orm.InMemoryDefaultTestModule; import org.junit.After; import org.junit.Before; import org.junit.Test; import org.junit.experimental.categories.Category; import com.google.inject.Guice; import com.google.inject.Injector; import junit.framework.Assert; @Category({ category.StackUpgradeTest.class}) public class OSFamilyTest { OsFamily os_family = null; private Injector injector; @Before public void setup() throws Exception { injector = Guice.createInjector(new InMemoryDefaultTestModule()); injector.getInstance(GuiceJpaInitializer.class); os_family = injector.getInstance(OsFamily.class); } @After public void teardown() throws AmbariException, SQLException { H2DatabaseCleaner.clearDatabaseAndStopPersistenceService(injector); } @Test public void testOSListing() throws Exception{ Set<String> actual_oslist = os_family.os_list(); Set<String> expected_oslist = new HashSet<>(Arrays.asList( "redhat6", "oraclelinux5", "suse11", "fedora6", "opensuse11", "centos6", "fedora5", "centos5", "ubuntu12", "redhat5", "sles11", "oraclelinux6", "debian12", "sled11", "win2012server6", "win2012serverr26", "win2008serverr26", "win2008server6" )); Assert.assertNotNull(actual_oslist); Assert.assertEquals(expected_oslist, actual_oslist); } @Test public void testParsingOS() throws Exception{ // test data Map<String,String> expected_map = new HashMap<>(); expected_map.put("distro", "ubuntu"); expected_map.put("versions", "12"); String test_value = "ubuntu12"; // trying to call private method Class[] parse_os_args = { String.class }; Method parse_os = os_family.getClass().getDeclaredMethod("parse_os", parse_os_args); // setting private method to be available parse_os.setAccessible(true); Object test_map = parse_os.invoke(os_family, test_value); // setting them back to private for the instance parse_os.setAccessible(false); // checking result Assert.assertNotNull(test_map); Assert.assertEquals(expected_map.getClass().getName(), test_map.getClass().getName()); Assert.assertEquals(expected_map, test_map); } @Test public void testFindTypes() throws Exception{ Set<String> expected_set = new HashSet<>(Arrays.asList( "ubuntu12", "debian12" )); Set<String> actual_set = os_family.findTypes("ubuntu12"); Assert.assertNotNull(actual_set); Assert.assertEquals(expected_set, actual_set); } @Test public void testFind() throws Exception{ String expected_result = "ubuntu12"; String actual_result = os_family.find("debian12"); Assert.assertNotNull(actual_result); Assert.assertEquals(expected_result, actual_result); // for windows expected_result = "winsrv6"; actual_result = os_family.find("win2012server6"); Assert.assertNotNull(actual_result); Assert.assertEquals(expected_result, actual_result); } }