1 4 package com.tctest.spring.integrationtests.tests; 5 6 import java.util.ArrayList ; 7 import java.util.Iterator ; 8 import java.util.List ; 9 10 import com.tc.config.schema.builder.SpringApplicationConfigBuilder; 11 import com.tc.config.schema.builder.SpringApplicationContextConfigBuilder; 12 import com.tc.config.schema.builder.SpringConfigBuilder; 13 import com.tc.test.server.tcconfig.SpringTerracottaAppServerConfig; 14 import com.tc.test.server.tcconfig.StandardTerracottaAppServerConfig; 15 import com.tctest.spring.bean.ISingleton; 16 import com.tctest.spring.integrationtests.framework.AbstractDeploymentTest; 17 import com.tctest.spring.integrationtests.framework.Deployment; 18 import com.tctest.spring.integrationtests.framework.DeploymentBuilder; 19 import com.tctest.spring.integrationtests.framework.Server; 20 import com.tctest.spring.integrationtests.framework.WebApplicationServer; 21 22 25 26 public class SpringTestingFrameworkSmokeTest extends AbstractDeploymentTest { 27 28 private static final String APP_NAME = "test-singleton"; 29 private static final String REMOTE_SERVICE_NAME = "Singleton"; 30 private static final String BEAN_DEFINITION_FILE_FOR_TEST = "classpath:/com/tctest/spring/beanfactory.xml"; 31 private static final String CONFIG_FILE_FOR_TEST = "/tc-config-files/singleton-tc-config.xml"; 32 33 private StandardTerracottaAppServerConfig tcConfig; 34 private Deployment deployment; 35 36 String context = APP_NAME; 37 String url = "/" + context; 38 39 protected void setUp() throws Exception { 40 super.setUp(); 41 if (tcConfig == null) tcConfig = buildTCConfig(); 42 if (deployment == null) deployment = makeDeployment(); 43 } 44 45 public void testSingleton2() throws Exception { 46 runNodes(2); 47 } 48 49 private void runNodes(int nodeCount) throws Exception { 50 List servers = new ArrayList (); 51 52 for (int i = 0; i < nodeCount; i++) { 53 WebApplicationServer server = makeWebApplicationServer(tcConfig); 54 server.addWarDeployment(deployment, context); 55 server.start(); 56 servers.add(server); 57 } 58 59 61 WebApplicationServer prev = null; 62 for (Iterator iter = servers.iterator(); iter.hasNext();) { 63 if (prev == null) { 64 prev = (WebApplicationServer) iter.next(); 65 } else { 66 WebApplicationServer server = (WebApplicationServer) iter.next(); 67 SingletonStateUtil.assertSingletonShared(prev, server, REMOTE_SERVICE_NAME); 68 assertTransientState(prev, server); 69 prev = server; 70 } 71 } 72 } 73 74 public static void assertTransientState(Server server1, Server server2) throws Exception { 75 ISingleton singleton1 = (ISingleton) server1.getProxy(ISingleton.class, REMOTE_SERVICE_NAME); 76 ISingleton singleton2 = (ISingleton) server2.getProxy(ISingleton.class, REMOTE_SERVICE_NAME); 77 String originalValue = "aaa"; 78 79 assertEquals(originalValue, singleton1.getTransientValue()); 80 assertEquals(originalValue, singleton2.getTransientValue()); 81 singleton1.setTransientValue("s1"); 82 assertEquals(originalValue, singleton2.getTransientValue()); 83 singleton2.setTransientValue("s2"); 84 assertEquals("s1", singleton1.getTransientValue()); 85 assertEquals("s2", singleton2.getTransientValue()); 86 87 singleton1.setTransientValue(originalValue); 89 singleton2.setTransientValue(originalValue); 90 } 91 92 private Deployment makeDeployment() throws Exception { 93 DeploymentBuilder builder = makeDeploymentBuilder(this.APP_NAME + ".war"); 94 95 builder.addBeanDefinitionFile(BEAN_DEFINITION_FILE_FOR_TEST); 96 97 builder.addRemoteService(REMOTE_SERVICE_NAME, "singleton", ISingleton.class); 98 99 builder.addDirectoryOrJARContainingClass(ISingleton.class); 100 builder.addDirectoryContainingResource(CONFIG_FILE_FOR_TEST); 101 102 return builder.makeDeployment(); 103 } 104 105 public StandardTerracottaAppServerConfig buildTCConfig() throws Exception { 106 StandardTerracottaAppServerConfig tcConfigBuilder = new SpringTerracottaAppServerConfig(serverManager.getTcConfigFile(CONFIG_FILE_FOR_TEST).getFile()) ; 107 SpringConfigBuilder springConfigBuilder = tcConfigBuilder.getConfigBuilder().getApplication().getSpring(); 108 109 SpringApplicationConfigBuilder application = springConfigBuilder.getApplications()[0]; 110 application.setName(APP_NAME); 111 112 SpringApplicationContextConfigBuilder applicationContext = application.getApplicationContexts()[0]; 113 applicationContext.setPaths(new String [] {"*.xml"}); 114 applicationContext.addBean("singleton"); 115 tcConfigBuilder.build(); 116 logger.debug(tcConfigBuilder.toString()); 117 return tcConfigBuilder; 118 } 119 } 120 | Popular Tags |