/******************************************************************************* * Copyright (c) 2006-2010 eBay Inc. All Rights Reserved. * Licensed 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 *******************************************************************************/ package org.ebayopensource.turmeric.runtime.tests.config; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotNull; import static org.junit.Assert.fail; import java.util.Collection; import java.util.Map; import org.ebayopensource.turmeric.runtime.common.exceptions.ServiceCreationException; import org.ebayopensource.turmeric.runtime.common.impl.internal.config.GlobalConfigHolder; import org.ebayopensource.turmeric.runtime.common.impl.internal.config.SchemaValidationLevel; import org.ebayopensource.turmeric.runtime.common.impl.utils.ParseUtils; import org.ebayopensource.turmeric.runtime.common.types.SOAConstants; import org.ebayopensource.turmeric.runtime.sif.impl.internal.config.ClientConfigHolder; import org.ebayopensource.turmeric.runtime.sif.impl.internal.config.ClientConfigManager; import org.ebayopensource.turmeric.runtime.sif.impl.internal.pipeline.ClientMessageProcessor; import org.ebayopensource.turmeric.runtime.sif.impl.internal.service.ClientServiceDesc; import org.ebayopensource.turmeric.runtime.sif.impl.internal.service.ClientServiceDescFactory; import org.ebayopensource.turmeric.runtime.tests.common.AbstractTurmericTestCase; import org.junit.Test; public class ClientConfigTest extends AbstractTurmericTestCase { /** * @check Exceptions need to be handled */ @Test public void clientConfig() throws Exception { StringBuffer output = new StringBuffer(); ClientConfigManager configManager = ClientConfigManager.getInstance(); try { for (int i = 1; i <= 5; i++) { // test 6 is not really valid - namespace must be declared String testcase = "configtest" + String.valueOf(i); try { configManager.setConfigTestCase(testcase, "testconfig"); } catch (ServiceCreationException e) { if (i==6 && ParseUtils.getSchemaValidationLevel().equals(SchemaValidationLevel.ERROR)) { } else { throw e; } } Collection<String> allConfig = configManager.getAllServiceAdminNames(SOAConstants.DEFAULT_CLIENT_NAME); output.append("Test case: " + testcase + '\n'); for (String svcName : allConfig) { ClientConfigHolder cch = configManager.getConfigForUpdate(svcName, null); cch.dump(output); GlobalConfigHolder gch = configManager.getGlobalConfigForUpdate(); gch.dump(output); } } CompareUtils.writeOutputFile(this.getClass(), output, "client"); String compareString = CompareUtils.getCompareString(this.getClass(), "client.compare.txt"); System.out.println(output.toString()); assertEquals(compareString, output.toString()); } finally { configManager.setConfigTestCase("config"); } } @Test public void locationMapping_Success() throws Exception { ClientConfigManager configManager = ClientConfigManager.getInstance(); configManager.setConfigTestCase("configlocationmaptest", "testconfig"); Collection<String> allConfig = configManager.getAllServiceAdminNames(SOAConstants.DEFAULT_CLIENT_NAME); ClientConfigHolder cch = configManager.getConfigForUpdate("test2", null); Map<String, String> serviceLocationMap = cch.getServiceLocationMap(); assertEquals(serviceLocationMap.size(), 2); assertNotNull(serviceLocationMap.get("feature")); assertNotNull(serviceLocationMap.get("dev")); assertEquals(serviceLocationMap.get("feature"), "http://fp001-v3a.qa.ebay.com:8080/ws/spf"); assertEquals(serviceLocationMap.get("dev"), "http://d-sjc-xhan2.corp.com:8080/ws/spf"); } /** * @check Exceptions need to be handled */ @Test public void locationMappingNegativeCase() throws Exception { ClientConfigManager configManager = ClientConfigManager.getInstance(); configManager.setConfigTestCase("configlocationmapnegativetest", "testconfig"); try{ Collection<String> allConfig = configManager.getAllServiceAdminNames(SOAConstants.DEFAULT_CLIENT_NAME); fail("Should have received ServiceCreationException"); } catch (ServiceCreationException e) { e.printStackTrace(); } } @Test public void consumerIdCheckCCH_Success() throws Exception { ClientConfigManager configManager = ClientConfigManager.getInstance(); try { configManager.setConfigTestCase("configtest5", "config"); Collection<String> allConfig = configManager.getAllServiceAdminNames("consumerid"); ClientConfigHolder cch = configManager.getConfig("test1", "consumerid"); assertEquals("consumerId value should replace useCase value", "a:testConsumerId", cch.getInvocationUseCase()); assertEquals("consumerId value is incorrect", "testConsumerId", cch.getConsumerId()); } finally { configManager.setConfigTestCase("config"); } } @Test public void consumerIdCheckClientServiceDesc_Success() throws Exception { ClientMessageProcessor.getInstance(); ClientConfigManager configManager = ClientConfigManager.getInstance(); try { configManager.setConfigTestCase("configtest5", "config"); ClientServiceDesc serviceDesc = ClientServiceDescFactory.getInstance().getServiceDesc("test1", "consumerid"); assertEquals("unexpected consumer_id", "testConsumerId", serviceDesc.getConsumerId()); assertEquals("unexpected useCase value", "a:testConsumerId", serviceDesc.getUseCase()); } finally { configManager.setConfigTestCase("config"); } } @Test public void testZeroConfigFilePath() { String path = ClientConfigManager.getZeroClientConfigFilePath("production"); assertEquals("META-INF/soa/client/config/production/DefaultClientConfig.xml", path); path = ClientConfigManager.getZeroClientConfigFilePath("feature"); assertEquals("META-INF/soa/client/config/feature/DefaultClientConfig.xml", path); } }