View Javadoc

1   package org.apache.continuum.configuration;
2   
3   /*
4    * Licensed to the Apache Software Foundation (ASF) under one
5    * or more contributor license agreements.  See the NOTICE file
6    * distributed with this work for additional information
7    * regarding copyright ownership.  The ASF licenses this file
8    * to you under the Apache License, Version 2.0 (the
9    * "License"); you may not use this file except in compliance
10   * with the License.  You may obtain a copy of the License at
11   *
12   *   http://www.apache.org/licenses/LICENSE-2.0
13   *
14   * Unless required by applicable law or agreed to in writing,
15   * software distributed under the License is distributed on an
16   * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
17   * KIND, either express or implied.  See the License for the
18   * specific language governing permissions and limitations
19   * under the License.
20   */
21  
22  import org.codehaus.plexus.spring.PlexusInSpringTestCase;
23  import org.codehaus.plexus.util.FileUtils;
24  import org.slf4j.Logger;
25  import org.slf4j.LoggerFactory;
26  
27  import java.io.File;
28  import java.util.ArrayList;
29  import java.util.List;
30  
31  /**
32   * @author <a href="mailto:olamy@apache.org">olamy</a>
33   * @version $Id: TestDefaultContinuumConfiguration.java 1372260 2012-08-13 04:29:09Z brett $
34   * @since 17 juin 2008
35   */
36  public class TestDefaultContinuumConfiguration
37      extends PlexusInSpringTestCase
38  {
39      private static final Logger log = LoggerFactory.getLogger( TestDefaultContinuumConfiguration.class );
40  
41      private static final String confFile = "target/test-classes/conf/continuum.xml";
42  
43      @Override
44      protected void setUp()
45          throws Exception
46      {
47          log.info( "appserver.base : " + System.getProperty( "appserver.base" ) );
48  
49          File originalConf = new File( getBasedir(), "src/test/resources/conf/continuum.xml" );
50  
51          File confUsed = new File( getBasedir(), confFile );
52          if ( confUsed.exists() )
53          {
54              confUsed.delete();
55          }
56          FileUtils.copyFile( originalConf, confUsed );
57  
58          super.setUp();
59      }
60  
61      public void testLoad()
62          throws Exception
63      {
64          ContinuumConfiguration configuration = (ContinuumConfiguration) lookup( ContinuumConfiguration.class,
65                                                                                  "default" );
66          assertNotNull( configuration );
67          GeneralConfiguration generalConfiguration = configuration.getGeneralConfiguration();
68          assertNotNull( generalConfiguration );
69          assertNotNull( generalConfiguration.getBaseUrl() );
70          assertEquals( "http://test", generalConfiguration.getBaseUrl() );
71          assertEquals( new File( "myBuildOutputDir" ), generalConfiguration.getBuildOutputDirectory() );
72          assertTrue( generalConfiguration.isDistributedBuildEnabled() );
73          assertNotNull( generalConfiguration.getBuildAgents() );
74          org.apache.continuum.configuration.BuildAgentConfiguration buildAgentConfig =
75              generalConfiguration.getBuildAgents().get( 0 );
76          assertEquals( "http://buildagent/xmlrpc", buildAgentConfig.getUrl() );
77          assertEquals( "linux", buildAgentConfig.getDescription() );
78          assertTrue( buildAgentConfig.isEnabled() );
79  
80          // agent group tests        
81          assertNotNull( "agent group", generalConfiguration.getBuildAgentGroups() );
82          BuildAgentGroupConfiguration buildAgentGroupConfig = generalConfiguration.getBuildAgentGroups().get( 0 );
83          assertEquals( "group-agent-1", buildAgentGroupConfig.getName() );
84          BuildAgentConfiguration agentConfig = buildAgentGroupConfig.getBuildAgents().get( 0 );
85          assertEquals( "http://buildagent/xmlrpc", agentConfig.getUrl() );
86          assertEquals( "linux", agentConfig.getDescription() );
87      }
88  
89      public void testDefaultConfiguration()
90          throws Exception
91      {
92          File conf = new File( getBasedir(), confFile );
93          if ( conf.exists() )
94          {
95              conf.delete();
96          }
97          ContinuumConfiguration configuration = (ContinuumConfiguration) lookup( ContinuumConfiguration.class,
98                                                                                  "default" );
99          assertNotNull( configuration );
100         GeneralConfiguration generalConfiguration = new GeneralConfiguration();
101         generalConfiguration.setBaseUrl( "http://test/zloug" );
102         generalConfiguration.setProxyConfiguration( new ProxyConfiguration() );
103         generalConfiguration.getProxyConfiguration().setProxyHost( "localhost" );
104         generalConfiguration.getProxyConfiguration().setProxyPort( 8080 );
105         File targetDir = new File( getBasedir(), "target" );
106         generalConfiguration.setBuildOutputDirectory( targetDir );
107         BuildAgentConfiguration buildAgentConfiguration = new BuildAgentConfiguration();
108         buildAgentConfiguration.setUrl( "http://buildagent/test" );
109         buildAgentConfiguration.setDescription( "windows xp" );
110         buildAgentConfiguration.setEnabled( false );
111 
112         BuildAgentConfiguration buildAgentConfiguration2 = new BuildAgentConfiguration();
113         buildAgentConfiguration2.setUrl( "http://buildagent-node-2/test" );
114         buildAgentConfiguration2.setDescription( "linux" );
115         buildAgentConfiguration2.setEnabled( true );
116 
117         List<BuildAgentConfiguration> buildAgents = new ArrayList<BuildAgentConfiguration>();
118         buildAgents.add( buildAgentConfiguration );
119         buildAgents.add( buildAgentConfiguration2 );
120         BuildAgentGroupConfiguration buildAgentGroupConfiguration = new BuildAgentGroupConfiguration();
121         buildAgentGroupConfiguration.setName( "secret-agent" );
122         buildAgentGroupConfiguration.setBuildAgents( buildAgents );
123 
124         List<BuildAgentGroupConfiguration> buildAgentGroups = new ArrayList<BuildAgentGroupConfiguration>();
125         buildAgentGroups.add( buildAgentGroupConfiguration );
126 
127         generalConfiguration.setDistributedBuildEnabled( false );
128         generalConfiguration.setBuildAgents( buildAgents );
129         generalConfiguration.setBuildAgentGroups( buildAgentGroups );
130         configuration.setGeneralConfiguration( generalConfiguration );
131         configuration.save();
132 
133         String contents = FileUtils.fileRead( conf );
134         assertTrue( contents.indexOf( "http://test/zloug" ) > 0 );
135         assertTrue( contents.indexOf( "localhost" ) > 0 );
136         assertTrue( contents.indexOf( "8080" ) > 0 );
137         assertTrue( contents.indexOf( "http://buildagent/test" ) > 0 );
138         assertTrue( contents.indexOf( "windows xp" ) > 0 );
139         assertTrue( contents.indexOf( "http://buildagent-node-2/test" ) > 0 );
140         assertTrue( contents.indexOf( "linux" ) > 0 );
141         assertTrue( contents.indexOf( "secret-agent" ) > 0 );
142 
143         configuration.reload();
144         assertEquals( "http://test/zloug", configuration.getGeneralConfiguration().getBaseUrl() );
145         assertEquals( "localhost", configuration.getGeneralConfiguration().getProxyConfiguration().getProxyHost() );
146         assertEquals( 8080, configuration.getGeneralConfiguration().getProxyConfiguration().getProxyPort() );
147         assertEquals( targetDir.getPath(),
148                       configuration.getGeneralConfiguration().getBuildOutputDirectory().getPath() );
149         assertEquals( "http://buildagent/test", configuration.getGeneralConfiguration().getBuildAgents().get(
150             0 ).getUrl() );
151         assertFalse( configuration.getGeneralConfiguration().getBuildAgents().get( 0 ).isEnabled() );
152         assertEquals( "http://buildagent-node-2/test", configuration.getGeneralConfiguration().getBuildAgents().get(
153             1 ).getUrl() );
154         assertTrue( configuration.getGeneralConfiguration().getBuildAgents().get( 1 ).isEnabled() );
155 
156         assertEquals( "secret-agent", configuration.getGeneralConfiguration().getBuildAgentGroups().get(
157             0 ).getName() );
158         assertEquals( "http://buildagent/test", configuration.getGeneralConfiguration().getBuildAgentGroups().get(
159             0 ).getBuildAgents().get( 0 ).getUrl() );
160         assertEquals( "http://buildagent-node-2/test",
161                       configuration.getGeneralConfiguration().getBuildAgentGroups().get( 0 ).getBuildAgents().get(
162                           1 ).getUrl() );
163         assertFalse( configuration.getGeneralConfiguration().isDistributedBuildEnabled() );
164         log.info( "generalConfiguration " + configuration.getGeneralConfiguration().toString() );
165     }
166 }