/** * 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.view; import static org.easymock.EasyMock.createMockBuilder; import static org.easymock.EasyMock.createNiceMock; import static org.easymock.EasyMock.expect; import static org.easymock.EasyMock.replay; import static org.easymock.EasyMock.verify; import java.util.Arrays; import java.util.Map; import org.apache.ambari.server.controller.spi.Resource; import org.apache.ambari.server.orm.entities.ViewEntity; import org.apache.ambari.server.orm.entities.ViewEntityTest; import org.apache.ambari.server.orm.entities.ViewInstanceEntity; import org.apache.ambari.server.orm.entities.ViewParameterEntity; import org.apache.ambari.server.view.configuration.InstanceConfig; import org.apache.ambari.server.view.configuration.InstanceConfigTest; import org.apache.ambari.server.view.configuration.ViewConfigTest; import org.apache.ambari.view.ResourceProvider; import org.apache.ambari.view.ViewContext; import org.apache.ambari.view.cluster.Cluster; import org.junit.Assert; import org.junit.Test; /** * ViewContextImpl tests. */ public class ViewContextImplTest { @Test public void testGetViewName() throws Exception { InstanceConfig instanceConfig = InstanceConfigTest.getInstanceConfigs().get(0); ViewEntity viewDefinition = ViewEntityTest.getViewEntity(); ViewInstanceEntity viewInstanceDefinition = new ViewInstanceEntity(viewDefinition, instanceConfig); ViewRegistry viewRegistry = createNiceMock(ViewRegistry.class); ViewContextImpl viewContext = new ViewContextImpl(viewInstanceDefinition, viewRegistry); Assert.assertEquals("MY_VIEW", viewContext.getViewName()); } @Test public void testGetInstanceName() throws Exception { InstanceConfig instanceConfig = InstanceConfigTest.getInstanceConfigs().get(0); ViewEntity viewDefinition = ViewEntityTest.getViewEntity(); ViewInstanceEntity viewInstanceDefinition = new ViewInstanceEntity(viewDefinition, instanceConfig); ViewRegistry viewRegistry = createNiceMock(ViewRegistry.class); ViewContextImpl viewContext = new ViewContextImpl(viewInstanceDefinition, viewRegistry); Assert.assertEquals("INSTANCE1", viewContext.getInstanceName()); } @Test public void testGetProperties() throws Exception { InstanceConfig instanceConfig = InstanceConfigTest.getInstanceConfigs().get(0); ViewEntity viewDefinition = ViewEntityTest.getViewEntity(); ViewInstanceEntity viewInstanceDefinition = new ViewInstanceEntity(viewDefinition, instanceConfig); ViewRegistry viewRegistry = createNiceMock(ViewRegistry.class); expect(viewRegistry.getCluster(viewInstanceDefinition)).andReturn(null).anyTimes(); viewInstanceDefinition.putProperty("p1", "v1"); viewInstanceDefinition.putProperty("p2", new DefaultMasker().mask("v2")); viewInstanceDefinition.putProperty("p3", "v3"); ViewContextImpl viewContext = new ViewContextImpl(viewInstanceDefinition, viewRegistry); Map<String, String> properties = viewContext.getProperties(); Assert.assertEquals(3, properties.size()); Assert.assertEquals("v1", properties.get("p1")); Assert.assertEquals("v2", properties.get("p2")); Assert.assertEquals("v3", properties.get("p3")); } @Test public void testGetPropertiesWithParameters() throws Exception { InstanceConfig instanceConfig = createNiceMock(InstanceConfig.class); expect(instanceConfig.getName()).andReturn("Instance").anyTimes(); replay(instanceConfig); ViewEntity viewDefinition = createNiceMock(ViewEntity.class); expect(viewDefinition.getName()).andReturn("View").anyTimes(); expect(viewDefinition.getCommonName()).andReturn("View").times(2); expect(viewDefinition.getClassLoader()).andReturn(ViewContextImplTest.class.getClassLoader()).anyTimes(); expect(viewDefinition.getConfiguration()).andReturn(ViewConfigTest.getConfig()).anyTimes(); ViewParameterEntity parameter1 = createNiceMock(ViewParameterEntity.class); expect(parameter1.getName()).andReturn("p1").anyTimes(); ViewParameterEntity parameter2 = createNiceMock(ViewParameterEntity.class); expect(parameter2.getName()).andReturn("p2").anyTimes(); expect(viewDefinition.getParameters()).andReturn(Arrays.asList(parameter1, parameter2)).anyTimes(); replay(viewDefinition, parameter1, parameter2); ViewInstanceEntity viewInstanceDefinition = createMockBuilder(ViewInstanceEntity.class) .addMockedMethod("getUsername") .addMockedMethod("getName") .addMockedMethod("getViewEntity") .withConstructor(viewDefinition, instanceConfig).createMock(); expect(viewInstanceDefinition.getUsername()).andReturn("User").times(1); expect(viewInstanceDefinition.getUsername()).andReturn("User2").times(1); expect(viewInstanceDefinition.getName()).andReturn("Instance").anyTimes(); expect(viewInstanceDefinition.getViewEntity()).andReturn(viewDefinition).anyTimes(); replay(viewInstanceDefinition); ViewRegistry viewRegistry = createNiceMock(ViewRegistry.class); expect(viewRegistry.getCluster(viewInstanceDefinition)).andReturn(null).anyTimes(); replay(viewRegistry); viewInstanceDefinition.putProperty("p1", "/tmp/some/path/${username}"); viewInstanceDefinition.putProperty("p2", new DefaultMasker().mask("/tmp/path/$viewName")); viewInstanceDefinition.putProperty("p3", "/path/$instanceName"); viewInstanceDefinition.putProperty("p4", "/path/to/${unspecified_parameter}"); viewInstanceDefinition.putProperty("p5", "/path/to/${incorrect_parameter"); viewInstanceDefinition.putProperty("p6", "/path/to/\\${username}"); viewInstanceDefinition.putProperty("p7", "/path/to/\\$viewName"); viewInstanceDefinition.putProperty("p8", null); ViewContextImpl viewContext = new ViewContextImpl(viewInstanceDefinition, viewRegistry); Map<String, String> properties = viewContext.getProperties(); Assert.assertEquals(8, properties.size()); Assert.assertEquals("/tmp/some/path/User", properties.get("p1")); Assert.assertEquals("/tmp/path/View", properties.get("p2")); Assert.assertEquals("/path/Instance", properties.get("p3")); Assert.assertEquals("/path/to/${unspecified_parameter}", properties.get("p4")); Assert.assertEquals("/path/to/${incorrect_parameter", properties.get("p5")); Assert.assertEquals("/path/to/${username}", properties.get("p6")); Assert.assertEquals("/path/to/$viewName", properties.get("p7")); Assert.assertNull(properties.get("p8")); properties = viewContext.getProperties(); Assert.assertEquals(8, properties.size()); Assert.assertEquals("/tmp/some/path/User2", properties.get("p1")); Assert.assertEquals("/tmp/path/View", properties.get("p2")); Assert.assertEquals("/path/Instance", properties.get("p3")); Assert.assertEquals("/path/to/${unspecified_parameter}", properties.get("p4")); Assert.assertEquals("/path/to/${incorrect_parameter", properties.get("p5")); Assert.assertEquals("/path/to/${username}", properties.get("p6")); Assert.assertEquals("/path/to/$viewName", properties.get("p7")); Assert.assertNull(properties.get("p8")); } @Test public void testGetResourceProvider() throws Exception { InstanceConfig instanceConfig = InstanceConfigTest.getInstanceConfigs().get(0); ViewEntity viewDefinition = ViewEntityTest.getViewEntity(); ViewInstanceEntity viewInstanceDefinition = new ViewInstanceEntity(viewDefinition, instanceConfig); ViewRegistry viewRegistry = createNiceMock(ViewRegistry.class); ResourceProvider provider = createNiceMock(ResourceProvider.class); Resource.Type type = new Resource.Type("MY_VIEW{1.0.0}/myType"); viewInstanceDefinition.addResourceProvider(type, provider); ViewContextImpl viewContext = new ViewContextImpl(viewInstanceDefinition, viewRegistry); Assert.assertEquals(provider, viewContext.getResourceProvider("myType")); } @Test public void testGetURLStreamProvider() throws Exception { InstanceConfig instanceConfig = InstanceConfigTest.getInstanceConfigs().get(0); ViewEntity viewDefinition = ViewEntityTest.getViewEntity(); ViewInstanceEntity viewInstanceDefinition = new ViewInstanceEntity(viewDefinition, instanceConfig); ViewRegistry viewRegistry = createNiceMock(ViewRegistry.class); ViewURLStreamProvider urlStreamProvider = createNiceMock(ViewURLStreamProvider.class); ViewURLStreamProvider urlStreamProvider2 = createNiceMock(ViewURLStreamProvider.class); ResourceProvider provider = createNiceMock(ResourceProvider.class); Resource.Type type = new Resource.Type("MY_VIEW/myType"); viewInstanceDefinition.addResourceProvider(type, provider); ViewContextImpl viewContext = new ViewContextImpl(viewInstanceDefinition, viewRegistry); expect(viewRegistry.createURLStreamProvider(viewContext)).andReturn(urlStreamProvider); expect(viewRegistry.createURLStreamProvider(viewContext)).andReturn(urlStreamProvider2); replay(viewRegistry); Assert.assertEquals(urlStreamProvider, viewContext.getURLStreamProvider()); // make sure the the provider is not cached Assert.assertEquals(urlStreamProvider2, viewContext.getURLStreamProvider()); verify(viewRegistry); } @Test public void testGetURLConnectionProvider() throws Exception { InstanceConfig instanceConfig = InstanceConfigTest.getInstanceConfigs().get(0); ViewEntity viewDefinition = ViewEntityTest.getViewEntity(); ViewInstanceEntity viewInstanceDefinition = new ViewInstanceEntity(viewDefinition, instanceConfig); ViewRegistry viewRegistry = createNiceMock(ViewRegistry.class); ViewURLStreamProvider urlStreamProvider = createNiceMock(ViewURLStreamProvider.class); ResourceProvider provider = createNiceMock(ResourceProvider.class); Resource.Type type = new Resource.Type("MY_VIEW/myType"); viewInstanceDefinition.addResourceProvider(type, provider); ViewContext viewContext = new ViewContextImpl(viewInstanceDefinition, viewRegistry); expect(viewRegistry.createURLStreamProvider(viewContext)).andReturn(urlStreamProvider); replay(viewRegistry); Assert.assertEquals(urlStreamProvider, viewContext.getURLConnectionProvider()); verify(viewRegistry); } @Test public void testGetAmbariStreamProvider() throws Exception { InstanceConfig instanceConfig = InstanceConfigTest.getInstanceConfigs().get(0); ViewEntity viewDefinition = ViewEntityTest.getViewEntity(); ViewInstanceEntity viewInstanceDefinition = new ViewInstanceEntity(viewDefinition, instanceConfig); ViewRegistry viewRegistry = createNiceMock(ViewRegistry.class); ViewAmbariStreamProvider ambariStreamProvider = createNiceMock(ViewAmbariStreamProvider.class); ResourceProvider provider = createNiceMock(ResourceProvider.class); Resource.Type type = new Resource.Type("MY_VIEW/myType"); viewInstanceDefinition.addResourceProvider(type, provider); expect(viewRegistry.createAmbariStreamProvider()).andReturn(ambariStreamProvider); replay(viewRegistry); ViewContextImpl viewContext = new ViewContextImpl(viewInstanceDefinition, viewRegistry); Assert.assertEquals(ambariStreamProvider, viewContext.getAmbariStreamProvider()); verify(viewRegistry); } @Test public void testGetCluster() throws Exception { InstanceConfig instanceConfig = InstanceConfigTest.getInstanceConfigs().get(0); ViewEntity viewDefinition = ViewEntityTest.getViewEntity(); ViewInstanceEntity viewInstanceDefinition = new ViewInstanceEntity(viewDefinition, instanceConfig); ViewRegistry viewRegistry = createNiceMock(ViewRegistry.class); Cluster cluster = createNiceMock(Cluster.class); expect(viewRegistry.getCluster(viewInstanceDefinition)).andReturn(cluster); replay(viewRegistry); ViewContextImpl viewContext = new ViewContextImpl(viewInstanceDefinition, viewRegistry); Assert.assertEquals(cluster, viewContext.getCluster()); verify(viewRegistry); } }