KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > com > tctest > spring > integrationtests > tests > SpringTestingFrameworkSmokeTest


1 /*
2  * All content copyright (c) 2003-2006 Terracotta, Inc., except as may otherwise be noted in a separate copyright notice. All rights reserved.
3  */

4 package com.tctest.spring.integrationtests.tests;
5
6 import java.util.ArrayList JavaDoc;
7 import java.util.Iterator JavaDoc;
8 import java.util.List JavaDoc;
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 /** This is a simple smoke test for the Spring testing framework extensions.
23  * Don't make it more ellaborate, i.e. spawn more than 2 servers etc
24  */

25
26 public class SpringTestingFrameworkSmokeTest extends AbstractDeploymentTest {
27
28   private static final String JavaDoc APP_NAME = "test-singleton";
29   private static final String JavaDoc REMOTE_SERVICE_NAME = "Singleton";
30   private static final String JavaDoc BEAN_DEFINITION_FILE_FOR_TEST = "classpath:/com/tctest/spring/beanfactory.xml";
31   private static final String JavaDoc CONFIG_FILE_FOR_TEST = "/tc-config-files/singleton-tc-config.xml";
32
33   private StandardTerracottaAppServerConfig tcConfig;
34   private Deployment deployment;
35
36   String JavaDoc context = APP_NAME;
37   String JavaDoc url = "/" + context;
38
39   protected void setUp() throws Exception JavaDoc {
40     super.setUp();
41     if (tcConfig == null) tcConfig = buildTCConfig();
42     if (deployment == null) deployment = makeDeployment();
43    }
44   
45   public void testSingleton2() throws Exception JavaDoc {
46     runNodes(2);
47   }
48
49   private void runNodes(int nodeCount) throws Exception JavaDoc {
50     List JavaDoc servers = new ArrayList JavaDoc();
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 // ((WebApplicationServer) servers.get(0)).ping(url);
60

61     WebApplicationServer prev = null;
62     for (Iterator JavaDoc 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 JavaDoc {
75     ISingleton singleton1 = (ISingleton) server1.getProxy(ISingleton.class, REMOTE_SERVICE_NAME);
76     ISingleton singleton2 = (ISingleton) server2.getProxy(ISingleton.class, REMOTE_SERVICE_NAME);
77     String JavaDoc 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     // reset - for 2,4,8-node testing
88
singleton1.setTransientValue(originalValue);
89     singleton2.setTransientValue(originalValue);
90   }
91
92   private Deployment makeDeployment() throws Exception JavaDoc {
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 JavaDoc {
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 JavaDoc[] {"*.xml"});
114     applicationContext.addBean("singleton");
115     tcConfigBuilder.build();
116     logger.debug(tcConfigBuilder.toString());
117     return tcConfigBuilder;
118   }
119 }
120
Popular Tags