Java tutorial
/*************************GO-LICENSE-START********************************* * Copyright 2014 ThoughtWorks, Inc. * * 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 * * 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. *************************GO-LICENSE-END***********************************/ package com.thoughtworks.go.helper; import com.thoughtworks.go.config.CruiseConfig; import com.thoughtworks.go.config.PipelineConfig; import com.thoughtworks.go.config.PipelineConfigs; import com.thoughtworks.go.domain.label.PipelineLabel; import com.thoughtworks.go.util.GoConstants; import org.dom4j.*; import org.dom4j.tree.DefaultElement; import java.util.Arrays; public final class ConfigFileFixture { /* Used by rspec spec. For agent page test (agents controller in ruby). */ @SuppressWarnings("UnusedDeclaration") public static final String WITH_VARITY_OF_AGENTS = "<cruise xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:noNamespaceSchemaLocation=\"cruise-config.xsd\" schemaVersion=\"16\">\n" + " <server artifactsdir=\"logs\">\n" + " </server>\n" + " <agents>\n" + " <agent hostname=\"crey\" ipaddress=\"10.18.8.18\" uuid=\"f73955ee-ff0f-4506-b6d0-0b7231d065a2\">\n" + " <resources>\n" + " <resource>personal</resource>\n" + " <resource>filtering_resource</resource>\n" + " </resources>\n" + " </agent>\n" + " <agent hostname=\"ery-desktopE\" ipaddress=\"10.18.8.16\" uuid=\"887f3678-894e-48a0-b386-9d382cf1dbec\">\n" + " <resources>\n" + " <resource>personal</resource>\n" + " </resources>\n" + " </agent>\n" + " <agent hostname=\"cceuser-desktopF\" ipaddress=\"10.18.8.19\" uuid=\"870fb502-0511-4f97-8656-99d9fc406936\">\n" + " <resources>\n" + " <resource>personal</resource>\n" + " </resources>\n" + " </agent>\n" + " <agent hostname=\"cceuser-desktopX\" ipaddress=\"10.18.8.20\" uuid=\"5641d41f-5fc0-46f1-85db-9baa0f6b90e3\">\n" + " <resources>\n" + " <resource>personal</resource>\n" + " </resources>\n" + " </agent>\n" + " <agent hostname=\"cceuser-desktopB\" ipaddress=\"10.18.8.21\" uuid=\"daa7d3df-7fb4-4bb4-ad5b-8ef34a967d78\">\n" + " <resources>\n" + " <resource>personal</resource>\n" + " </resources>\n" + " </agent>\n" + " <agent hostname=\"cceuser-desktopC\" ipaddress=\"10.18.8.22\" uuid=\"df992305-51ed-484d-918b-d6cfe286100d\">\n" + " <resources>\n" + " <resource>personal</resource>\n" + " </resources>\n" + " </agent>\n" + " </agents>\n" + " </cruise>"; //TODO: test reload if config file changed public static final String INVALID_CONFIG_WITH_TYPE_FOR_ARTIFACT = "<cruise schemaVersion='" + GoConstants.CONFIG_SCHEMA_VERSION + "'>\n" + "<server artifactsdir='artifactsDir' />" + "<pipelines>\n" + "<pipeline name='framework'>\n" + " <materials>\n" + " <svn url =\"svnurl\"/>" + " </materials>\n" + " <stage name='dist'>\n" + " <jobs>\n" + " <job name='cardlist' />\n" + " <job name='bluemonkeybutt'>\n" + " <artifacts>\n" + " <test src='from' dest='to' type='NUnit'/>\n" + " </artifacts>\n" + " </job>\n" + " </jobs>\n" + " </stage>\n" + "</pipeline>\n" + "<pipeline name='pipeline1'>\n" + " <materials>\n" + " <svn url =\"svnurl\"/>" + " </materials>\n" + " <stage name='mingle'>\n" + " <jobs>\n" + " <job name='cardlist' />\n" + " <job name='bluemonkeybutt'>\n" + " <artifacts>\n" + " <test src='from' dest='to' type='NUnit'/>\n" + " </artifacts>\n" + " </job>\n" + " </jobs>\n" + " </stage>\n" + " <dependencies>" + " <depends pipeline=\"framework\" stage=\"dist\"/>" + " </dependencies>" + "</pipeline>\n" + "</pipelines>\n" + "</cruise>"; public static final String WITH_3_AGENT_CONFIG = "<cruise schemaVersion='5'>\n" + "<server artifactsdir='artifactsDir' />" + "<pipelines>\n" + "<pipeline name='pipeline1'>\n" + " <materials>\n" + " <svn url =\"svnurl\"/>" + " </materials>\n" + " <stage name='mingle'>\n" + " <jobs>\n" + " <job name='cardlist' />\n" + " <job name='bluemonkeybutt'>\n" + " <artifacts>\n" + " <log src='from' dest='to'/>\n" + " </artifacts>\n" + " </job>\n" + " </jobs>\n" + " </stage>\n" + "</pipeline>\n" + "</pipelines>\n" + " <agents>\n" + " <agent uuid='1' hostname='test1.com' ipaddress='192.168.0.1' />\n" + " <agent uuid='2' hostname='test2.com' ipaddress='192.168.0.2' isDenied='true' />\n" + " <agent uuid='3' hostname='test3.com' ipaddress='192.168.0.3' >\n" + " <resources>\n" + " <resource>jdk1.4</resource>\n" + " </resources>\n" + " </agent>\n" + " </agents>\n" + "</cruise>"; public static String configWithEnvironments(String environmentsBlock) { return configWithEnvironmentsAndAgents(environmentsBlock, "<agents>" + " <agent uuid='1' hostname='test1.com' ipaddress='192.168.0.1' />" + " <agent uuid='2' hostname='test2.com' ipaddress='192.168.0.2'/>" + " <agent uuid='3' hostname='test3.com' ipaddress='192.168.0.3' >" + " <resources>" + " <resource>jdk1.4</resource>" + " </resources>" + " </agent>" + "</agents>"); } public static String configWithTemplates(String template) { return "<cruise schemaVersion='17'>\n" + "<server artifactsdir='artifactsDir' >" + "</server>" + "<pipelines>\n" + "<pipeline name='pipeline1'>\n" + " <materials>\n" + " <svn url =\"svnurl\"/>" + " </materials>\n" + " <stage name='mingle'>\n" + " <jobs>\n" + " <job name='cardlist' />\n" + " </jobs>\n" + " </stage>\n" + "</pipeline>\n" + "</pipelines>\n" + template + "</cruise>"; } public static String configWithEnvironmentsAndAgents(String environmentsBlock, String agentsBlock) { return "<cruise schemaVersion='16'>\n" + "<server artifactsdir='artifactsDir' >" + "</server>" + "<pipelines>\n" + "<pipeline name='pipeline1'>\n" + " <materials>\n" + " <svn url =\"svnurl\"/>" + " </materials>\n" + " <stage name='mingle'>\n" + " <jobs>\n" + " <job name='cardlist' />\n" + " </jobs>\n" + " </stage>\n" + "</pipeline>\n" + "</pipelines>\n" + environmentsBlock + agentsBlock + "</cruise>"; } public static String configWithPipeline(String pipelineBlock) { return configWithPipeline(pipelineBlock, GoConstants.CONFIG_SCHEMA_VERSION); } public static String configWithPipeline(String pipelineBlock, int schemaVersion) { return configWithPipelines("<pipelines>\n" + pipelineBlock + "</pipelines>\n", schemaVersion); } public static String configWithPipelines(String pipelinesBlock) { return configWithPipelines(pipelinesBlock, GoConstants.CONFIG_SCHEMA_VERSION); } public static String configWithPipelines(String pipelinesBlock, int schemaVersion) { return "<cruise schemaVersion='" + schemaVersion + "'>\n" + "<server artifactsdir='artifactsDir' >" + "</server>" + pipelinesBlock + "</cruise>"; } public static final String WITH_MULTIPLE_LOCAL_AGENT_CONFIG = "<cruise schemaVersion='12'>\n" + "<server artifactsdir='artifactsDir' />" + "<pipelines>\n" + "<pipeline name='pipeline1'>\n" + " <materials>\n" + " <svn url =\"svnurl\"/>" + " </materials>\n" + " <stage name='mingle'>\n" + " <jobs>\n" + " <job name='cardlist' />\n" + " <job name='bluemonkeybutt'>\n" + " <artifacts>\n" + " <log src='from' dest='to'/>\n" + " </artifacts>\n" + " </job>\n" + " </jobs>\n" + " </stage>\n" + "</pipeline>\n" + "</pipelines>\n" + " <agents>\n" + " <agent uuid='1' hostname='test1.com' ipaddress='192.168.0.1' />\n" + " <agent uuid='2' hostname='test1.com' ipaddress='192.168.0.1' />\n" + " </agents>\n" + "</cruise>"; public static final String CONFIG_WITH_ANT_BUILDER = "<cruise schemaVersion='" + GoConstants.CONFIG_SCHEMA_VERSION + "'>\n" + "<server artifactsdir='artifactsDir' />" + "<pipelines>\n" + "<pipeline name='pipeline1'>\n" + " <materials>\n" + " <svn url='svnurl' />\n" + " </materials>\n" + " <stage name='mingle'>\n" + " <jobs>\n" + " <job name='cardlist' timeout='5'>\n " + " <artifacts>\n" + " <test src='from' dest='to'/>\n" + " </artifacts>\n" + " <tasks>" + " <ant buildfile='src/evolve.build' target='all'/>" + " </tasks>" + " </job>\n" + " </jobs>\n" + " </stage>\n" + "</pipeline>\n" + "</pipelines>\n" + " <agents>\n" + " <agent uuid='1' hostname='test1.com' ipaddress='192.168.0.1' />\n" + " <agent uuid='2' hostname='test2.com' ipaddress='192.168.0.2' />\n" + " <agent uuid='3' hostname='test3.com' ipaddress='192.168.0.3' >\n" + " <resources>\n" + " <resource>jdk1.4</resource>\n" + " </resources>\n" + " </agent>\n" + " </agents>\n" + "</cruise>"; public static final String CONFIG_WITH_NANT_AND_EXEC_BUILDER = "<cruise schemaVersion='4'>\n" + "<server artifactsdir='artifactsDir' >" + "</server>" + "<pipelines>\n" + "<pipeline name='pipeline1'>\n" + " <materials>\n" + " <svn url ='svnurl' />\n" + " </materials>\n" + " <stage name='mingle'>\n" + " <jobs>\n" + " <job name='cardlist' >\n " + " <tasks>" + " <nant nantpath='lib/apache-nant' buildfile='src/evolve.build' target='all'/>" + " <exec command='ls' workingdir='workdir' args='-la' />" + " <exec command='ls' />" + " <rake buildfile='myrake.rb' target='test' workingdir='somewhere' />" + " </tasks>" + " </job>\n" + " </jobs>\n" + " </stage>\n" + "</pipeline>\n" + "<pipeline name='pipeline2'>\n" + " <dependencies>" + " <depends pipeline=\"pipeline1\" stage=\"mingle\"/>" + " </dependencies>" + " <materials>\n" + " <svn url ='svnurl' />\n" + " </materials>\n" + " <stage name='dist'>\n" + " <jobs>\n" + " <job name='cardlist' >\n " + " <tasks>" + " <nant nantpath='lib/apache-nant' buildfile='src/evolve.build' target='all'/>" + " <exec command='ls' workingdir='workdir' args='-la' />" + " <exec command='ls' />" + " </tasks>" + " </job>\n" + " </jobs>\n" + " </stage>\n" + "</pipeline>\n" + "</pipelines>\n" + " <agents>\n" + " <agent uuid='1' hostname='test1.com' ipaddress='192.168.0.1' />\n" + " <agent uuid='2' hostname='test2.com' ipaddress='192.168.0.2' />\n" + " <agent uuid='3' hostname='test3.com' ipaddress='192.168.0.3' >\n" + " <resources>\n" + " <resource>jdk1.4</resource>\n" + " </resources>\n" + " </agent>\n" + " </agents>\n" + "</cruise>"; public static final String WITH_DUPLICATE_ENVIRONMENTS = "<cruise schemaVersion='17'>\n" + "<server artifactsdir='artifactsDir' >" + "</server>" + "<pipelines>\n" + "<pipeline name='pipeline1'>\n" + " <materials>\n" + " <svn url ='svnurl' />\n" + " </materials>\n" + " <stage name='mingle'>\n" + " <jobs>\n" + " <job name='cardlist' >\n " + " <tasks>" + " <exec command='ls' workingdir='workdir' args='-la' />" + " </tasks>" + " </job>\n" + " </jobs>\n" + " </stage>\n" + "</pipeline>\n" + "</pipelines>\n" + "<environments>\n" + "<environment name='foo' />\n" + "<environment name='FOO' />\n" + "</environments>\n" + "</cruise>"; public static final String TASKS_WITH_CONDITION = "<cruise schemaVersion='" + GoConstants.CONFIG_SCHEMA_VERSION + "'>\n" + "<server artifactsdir='artifactsDir' />" + "<pipelines>\n" + "<pipeline name='pipeline1'>\n" + " <materials>\n" + " <svn url='svnurl' />\n" + " </materials>\n" + " <stage name='mingle'>\n" + " <jobs>\n" + " <job name='cardlist' >\n " + " <tasks>" + " <ant buildfile='src/evolve.build' target='all'>" + " <runif status='failed' />" + " </ant>" + " <nant buildfile='src/evolve.build' target='all'>" + " <runif status='failed' />" + " <runif status='any' />" + " <runif status='passed' />" + " </nant>" + " </tasks>" + " </job>\n" + " </jobs>\n" + " </stage>\n" + "</pipeline>\n" + "</pipelines>\n" + "</cruise>"; public static final String CONFIG_WITH_ARTIFACT_SRC = "<cruise schemaVersion='28'>\n" + "<server artifactsdir='artifactsDir' />" + "<pipelines>\n" + "<pipeline name='pipeline'>\n" + " <materials>\n" + " <svn url='svnurl' />\n" + " </materials>\n" + " <stage name='stage'>\n" + " <jobs>\n" + " <job name='job' >\n " + " <tasks>" + " <ant buildfile='src/evolve.build' target='all' />" + " </tasks>" + " <artifacts>\n" + " <artifact src='%s' />\n" + " </artifacts>\n" + " </job>\n" + " </jobs>\n" + " </stage>\n" + "</pipeline>\n" + "</pipelines>\n" + "</cruise>"; public static final String TASKS_WITH_ON_CANCEL = "<cruise schemaVersion='" + GoConstants.CONFIG_SCHEMA_VERSION + "'>\n" + "<server artifactsdir='artifactsDir' />" + "<pipelines>\n" + "<pipeline name='pipeline1'>\n" + " <materials>\n" + " <svn url='svnurl' />\n" + " </materials>\n" + " <stage name='mingle'>\n" + " <jobs>\n" + " <job name='cardlist' >\n " + " <tasks>" + " <ant buildfile='src/evolve.build' target='all'>" + " <oncancel>" + " <exec command='kill.rb' workingdir='utils' />" + " </oncancel>" + " </ant>" + " <exec command='ls'>" + " <oncancel/>" + " </exec>" + " </tasks>" + " </job>\n" + " <job name=\"downstream-job\">\n" + " <tasks>\n" + " <exec command=\"echo\" args=\"hello world!!\"><oncancel /></exec>\n" + " </tasks>\n" + " </job>" + " </jobs>\n" + " </stage>\n" + "</pipeline>\n" + "</pipelines>\n" + "</cruise>"; public static final String MATERIAL_WITH_NAME = "<cruise schemaVersion='14'>\n" + "<server artifactsdir='artifactsDir' />" + "<pipelines>\n" + "<pipeline name='pipeline'>\n" + " <materials>\n" + " <svn url='http://blahblah' materialName='svn' dest='svn' />\n" + " <hg url='http://blahblah' materialName='hg' dest='hg' />\n" + " </materials>\n" + " <stage name='dev'>\n" + " <jobs>\n" + " <job name='cardlist' >\n " + " </job>\n" + " </jobs>\n" + " </stage>\n" + "</pipeline>\n" + "</pipelines>\n" + "</cruise>"; public static final String TASKS_WITH_ON_CANCEL_NESTED = "<cruise schemaVersion='13'>\n" + "<server artifactsdir='artifactsDir' />" + "<pipelines>\n" + "<pipeline name='pipeline1'>\n" + " <materials>\n" + " <svn url='svnurl' />\n" + " </materials>\n" + " <stage name='mingle'>\n" + " <jobs>\n" + " <job name='cardlist' >\n " + " <tasks>" + " <ant buildfile='src/evolve.build' target='all'>" + " <oncancel>" + " <exec command='kill.rb' workingdir='utils'>" + " <oncancel>" + " <exec command='kill.rb' workingdir='utils'/>" + " </oncancel>" + " </exec>" + " </oncancel>" + " </ant>" + " </tasks>" + " </job>\n" + " </jobs>\n" + " </stage>\n" + "</pipeline>\n" + "</pipelines>\n" + "</cruise>"; public static final String TASKS_WITH_EMPTY_ON_CANCEL = "<cruise schemaVersion='13'>\n" + "<server artifactsdir='artifactsDir' />" + "<pipelines>\n" + "<pipeline name='pipeline1'>\n" + " <materials>\n" + " <svn url='svnurl' />\n" + " </materials>\n" + " <stage name='mingle'>\n" + " <jobs>\n" + " <job name='cardlist' >\n " + " <tasks>" + " <ant buildfile='src/evolve.build' target='all'>" + " <oncancel>" + " </oncancel>" + " </ant>" + " </tasks>" + " </job>\n" + " </jobs>\n" + " </stage>\n" + "</pipeline>\n" + "</pipelines>\n" + "</cruise>"; public static final String CONTAINS_MULTI_SAME_STATUS_RUN_IF = "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n" + "<cruise xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:noNamespaceSchemaLocation=\"cruise-config.xsd\" schemaVersion=\"" + GoConstants.CONFIG_SCHEMA_VERSION + "\">\n" + " <server artifactsdir=\"artifacts\">\n" + " </server>\n" + " <pipelines group=\"12345\">\n" + " <pipeline name=\"test\">\n" + " <materials>\n" + " <hg url=\"http://hg-server/hg/connectfour\" />\n" + " </materials>\n" + " <stage name=\"defaultStage\">\n" + " <jobs>\n" + " <job name=\"defaultJob\">\n" + " <tasks>\n" + " <exec command=\"echo\">\n" + " <runif status=\"passed\" />\n" + " <runif status=\"passed\" />\n" + " </exec>\n" + " </tasks>\n" + " </job>\n" + " </jobs>\n" + " </stage>\n" + " </pipeline>\n" + " </pipelines>\n" + " </cruise>"; public static final String SAME_STATUS_RUN_IF_PARTIAL = " <stage name=\"defaultStage\">\n" + " <jobs>\n" + " <job name=\"defaultJob\">\n" + " <tasks>\n" + " <exec command=\"echo\">\n" + " <runif status=\"passed\" />\n" + " <runif status=\"passed\" />\n" + " </exec>\n" + " </tasks>\n" + " </job>\n" + " </jobs>\n" + " </stage>\n"; public static final String CONTAINS_MULTI_DIFFERENT_STATUS_RUN_IF = "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n" + "<cruise xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:noNamespaceSchemaLocation=\"cruise-config.xsd\" schemaVersion=\"15\">\n" + " <server artifactsdir=\"artifacts\">\n" + " </server>\n" + " <pipelines group=\"12345\">\n" + " <pipeline name=\"test\">\n" + " <materials>\n" + " <hg url=\"http://hg-server/hg/connectfour\" />\n" + " </materials>\n" + " <stage name=\"defaultStage\">\n" + " <jobs>\n" + " <job name=\"defaultJob\">\n" + " <tasks>\n" + " <exec command=\"echo\">\n" + " <runif status=\"passed\" />\n" + " <runif status=\"failed\" />\n" + " </exec>\n" + " </tasks>\n" + " </job>\n" + " </jobs>\n" + " </stage>\n" + " </pipeline>\n" + " </pipelines>\n" + " </cruise>"; public static String LABEL_TEMPLATE_WITH_LABEL_TEMPLATE(String template) { return LABEL_TEMPLATE_WITH_LABEL_TEMPLATE(template, 14); } public static String LABEL_TEMPLATE_WITH_LABEL_TEMPLATE(String template, int schemaVersion) { return "<cruise schemaVersion='" + schemaVersion + "'>\n" + "<server artifactsdir='artifactsDir' />" + "<pipelines>\n" + "<pipeline name='cruise' labeltemplate='" + template + "'>\n" + " <materials>\n" + " <git url='giturl' materialName='git' />\n" + " </materials>\n" + " <stage name='mingle'>\n" + " <jobs>\n" + " <job name='cardlist' >\n " + " </job>\n" + " </jobs>\n" + " </stage>\n" + "</pipeline>\n" + "</pipelines>\n" + "</cruise>"; } public static final String MINIMAL = "<cruise schemaVersion='" + GoConstants.CONFIG_SCHEMA_VERSION + "'>\n" + "<server></server></cruise>"; public static final String OLD = "<cruise><server></server></cruise>"; public static final String SERVER_WITH_ARTIFACTS_DIR = "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n" + "<cruise xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" " + "xsi:noNamespaceSchemaLocation=\"cruise-config.xsd\" schemaVersion=\"" + GoConstants.CONFIG_SCHEMA_VERSION + "\">\n" + " <server artifactsdir=\"other-artifacts\" commandRepositoryLocation=\"default\" serverId=\"foo\" />\n" + "</cruise>\n\n"; public static final String STAGE_WITH_EMPTY_AUTH = "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n" + "<cruise xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" " + "xsi:noNamespaceSchemaLocation=\"cruise-config.xsd\" schemaVersion=\"" + GoConstants.CONFIG_SCHEMA_VERSION + "\">\n" + " <server artifactsdir=\"other-artifacts\" />\n" + " <pipelines>\n" + " <pipeline name=\"pipeline1\">\n" + " <materials>\n" + " <svn url=\"foobar\" checkexternals=\"true\" />\n" + " </materials>\n" + " <stage name=\"mingle\">\n" + " <approval type=\"manual\">\n" + " <authorization />\n" + " </approval>\n" + " <jobs>\n" + " <job name=\"functional\">\n" + " <artifacts>\n" + " <log src=\"artifact1.xml\" dest=\"cruise-output\" />\n" + " </artifacts>\n" + " </job>\n" + " </jobs>\n" + " </stage>\n" + " </pipeline>\n" + " </pipelines>\n" + "</cruise>\n\n"; public static final String CONFIG_WITH_EMPTY_ROLES = "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n" + "<cruise xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" " + "xsi:noNamespaceSchemaLocation=\"cruise-config.xsd\" schemaVersion=\"" + GoConstants.CONFIG_SCHEMA_VERSION + "\">\n" + " <server artifactsdir=\"other-artifacts\">\n" + " <security>\n" + " <roles>\n" + " </roles>\n" + " </security>\n" + " </server>\n" + " <pipelines group=\"defaultGroup\">\n" + " <pipeline name=\"pipeline2\">\n" + " <materials>\n" + " <hg url=\"hg\" />\n" + " </materials>\n" + " <stage name=\"mingle\">\n" + " <jobs>\n" + " <job name=\"unit\" />\n" + " </jobs>\n" + " </stage>\n" + " </pipeline>\n" + " </pipelines>\n" + "</cruise>\n\n"; public static final String CONFIG_WITH_ROLE_AS_ADMIN = "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n" + "<cruise xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" " + "xsi:noNamespaceSchemaLocation=\"cruise-config.xsd\" schemaVersion=\"" + GoConstants.CONFIG_SCHEMA_VERSION + "\">\n" + " <server artifactsdir=\"other-artifacts\">\n" + " <security>\n" + " <roles>\n" + " <role name=\"adminRole\" >\n" + " <users>" + " <user>loser</user>\n" + " </users>" + " </role>\n" + " </roles>\n" + " <admins>\n" + " <role>adminRole</role>\n" + " </admins>\n" + " </security>\n" + " </server>\n" + " <pipelines group=\"defaultGroup\">\n" + " <pipeline name=\"pipeline2\">\n" + " <materials>\n" + " <hg url=\"hg\" />\n" + " </materials>\n" + " <stage name=\"mingle\">\n" + " <jobs>\n" + " <job name=\"unit\" />\n" + " </jobs>\n" + " </stage>\n" + " </pipeline>\n" + " </pipelines>\n" + "</cruise>\n\n"; public static final String CONFIG_WITH_EMPTY_USER = "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n" + "<cruise xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" " + "xsi:noNamespaceSchemaLocation=\"cruise-config.xsd\" schemaVersion=\"" + GoConstants.CONFIG_SCHEMA_VERSION + "\">\n" + " <server artifactsdir=\"other-artifacts\">\n" + " <security>\n" + " <roles>\n" + " <role name=\"admin\" >\n" + " <users>" + " <user></user>\n" + " </users>" + " </role>\n" + " </roles>\n" + " </security>\n" + " </server>\n" + " <pipelines group=\"defaultGroup\">\n" + " <pipeline name=\"pipeline2\">\n" + " <materials>\n" + " <hg url=\"hg\" />\n" + " </materials>\n" + " <stage name=\"mingle\">\n" + " <jobs>\n" + " <job name=\"unit\" />\n" + " </jobs>\n" + " </stage>\n" + " </pipeline>\n" + " </pipelines>\n" + "</cruise>\n\n"; public static final String CONFIG_WITH_DUPLICATE_ROLE = "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n" + "<cruise xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" " + "xsi:noNamespaceSchemaLocation=\"cruise-config.xsd\" schemaVersion=\"" + GoConstants.CONFIG_SCHEMA_VERSION + "\">\n" + " <server artifactsdir=\"other-artifacts\">\n" + " <security>\n" + " <roles>\n" + " <role name=\"admin\" />\n" + " <role name=\"admin\" />\n" + " </roles>\n" + " </security>\n" + " </server>\n" + " <pipelines group=\"defaultGroup\">\n" + " <pipeline name=\"pipeline2\">\n" + " <materials>\n" + " <hg url=\"hg\" />\n" + " </materials>\n" + " <stage name=\"mingle\">\n" + " <jobs>\n" + " <job name=\"unit\" />\n" + " </jobs>\n" + " </stage>\n" + " </pipeline>\n" + " </pipelines>\n" + "</cruise>\n\n"; public static final String CONFIG_WITH_DUPLICATE_USER = "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n" + "<cruise xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" " + "xsi:noNamespaceSchemaLocation=\"cruise-config.xsd\" schemaVersion=\"" + GoConstants.CONFIG_SCHEMA_VERSION + "\">\n" + " <server artifactsdir=\"other-artifacts\">\n" + " <security>\n" + " <roles>\n" + " <role name=\"admin\" >\n" + " <users>" + " <user>ps</user>\n" + " <user>ps</user>\n" + " </users>" + " </role>\n" + " </roles>\n" + " </security>\n" + " </server>\n" + " <pipelines group=\"defaultGroup\">\n" + " <pipeline name=\"pipeline2\">\n" + " <materials>\n" + " <hg url=\"hg\" />\n" + " </materials>\n" + " <stage name=\"mingle\">\n" + " <jobs>\n" + " <job name=\"unit\" />\n" + " </jobs>\n" + " </stage>\n" + " </pipeline>\n" + " </pipelines>\n" + "</cruise>\n\n"; public static final String TWO_PIPELINES = "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n" + "<cruise xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" " + "xsi:noNamespaceSchemaLocation=\"cruise-config.xsd\" schemaVersion=\"" + GoConstants.CONFIG_SCHEMA_VERSION + "\">\n" + " <server artifactsdir=\"other-artifacts\" commandRepositoryLocation=\"default\" serverId=\"bar\">\n" + " <security>\n" + " <roles>\n" + " <role name=\"admin\" />\n" + " <role name=\"qa_lead\" />\n" + " </roles>\n" + " </security>\n" + " </server>\n" + " <pipelines group=\"defaultGroup\">\n" + " <pipeline name=\"pipeline1\" labeltemplate=\"alpha.${COUNT}\">\n" + " <timer>0 15 10 ? * MON-FRI</timer>\n" + " <materials>\n" + " <svn url=\"foobar\" checkexternals=\"true\" />\n" + " </materials>\n" + " <stage name=\"mingle\">\n" + " <approval type=\"manual\">\n" + " <authorization>" + " <role>admin</role>" + " <role>qa_lead</role>" + " <user>jez</user>" + " </authorization>" + " </approval>\n" + " <jobs>\n" + " <job name=\"functional\">\n" + " <artifacts>\n" + " <artifact src=\"artifact1.xml\" dest=\"cruise-output\" />\n" + " </artifacts>\n" + " </job>\n" + " <job name=\"unit\">\n" + " <tasks>\n" + " <exec command=\"ruby\" args=\"args\" workingdir=\"tmp\" />\n" + " </tasks>\n" + " </job>\n" + " </jobs>\n" + " </stage>\n" + " </pipeline>\n" + " <pipeline name=\"pipeline2\">\n" + " <materials>\n" + " <hg url=\"hg\" />\n" + " </materials>\n" + " <stage name=\"mingle\">\n" + " <jobs>\n" + " <job name=\"unit\" />\n" + " </jobs>\n" + " </stage>\n" + " </pipeline>\n" + " </pipelines>\n" + "</cruise>\n\n"; public static final String EMPTY_DEPENDENCIES = "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n" + "<cruise xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" " + "xsi:noNamespaceSchemaLocation=\"cruise-config.xsd\" schemaVersion=\"4\">\n" + " <server artifactsdir=\"other-artifacts\" />\n" + " <pipelines>\n" + " <pipeline name=\"pipeline1\">\n" + " <dependencies />\n" + " <materials>\n" + " <svn url=\"foobar\" checkexternals=\"true\" />\n" + " </materials>\n" + " <stage name=\"mingle\">\n" + " <jobs>\n" + " <job name=\"functional\">\n" + " <artifacts>\n" + " <log src=\"artifact1.xml\" dest=\"cruise-output\" />\n" + " </artifacts>\n" + " </job>\n" + " </jobs>\n" + " </stage>\n" + " </pipeline>\n" + " </pipelines>\n" + "</cruise>\n\n"; public static final String PIPELINE_WITH_TRACKINGTOOL = "<pipeline name=\"pipeline1\">\n" + " <trackingtool link=\"http://mingle05/projects/cce/cards/${ID}\" regex=\"(evo-\\d+)\" />\n" + " <materials>\n" + " <svn url=\"foobar\" checkexternals=\"true\" />\n" + " </materials>\n" + " <stage name=\"stage\">\n" + " <jobs>\n" + " <job name=\"functional\">\n" + " <artifacts>\n" + " <artifact src=\"artifact1.xml\" dest=\"cruise-output\" />\n" + " </artifacts>\n" + " </job>\n" + " </jobs>\n" + " </stage>\n" + "</pipeline>"; public static final String CONFIG_WITH_TRACKINGTOOL = "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n" + "<cruise xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" " + " xsi:noNamespaceSchemaLocation=\"cruise-config.xsd\" schemaVersion=\"" + GoConstants.CONFIG_SCHEMA_VERSION + "\">\n" + " <server artifactsdir=\"other-artifacts\" />\n" + " <pipelines>\n" + PIPELINE_WITH_TRACKINGTOOL + " </pipelines>\n" + "</cruise>\n\n"; public static final String CRUISE = "<cruise schemaVersion=\"" + GoConstants.CONFIG_SCHEMA_VERSION + "\">\n" + "<server artifactsdir='artifactsDir' />" + "<pipelines>\n" + " <pipeline name='cruise'>\n" + " <materials>\n" + " <svn url='svnurl' />\n" + " </materials>\n" + " <stage name='dev'>\n" + " <jobs>\n" + " <job name='linux' >\n " + " <tasks>" + " <ant />" + " </tasks>" + " </job>\n" + " <job name='windows' >\n " + " <tasks>" + " <ant />" + " </tasks>" + " </job>\n" + " </jobs>\n" + " </stage>\n" + " </pipeline>\n" + "</pipelines>\n" + "</cruise>"; public static String withCommand(String jobWithCommand) { return "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n" + "<cruise xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"" + " xsi:noNamespaceSchemaLocation=\"cruise-config.xsd\" schemaVersion=\"4\">\n" + " <server artifactsdir=\"logs\"></server>" + " <pipelines>\n" + " <pipeline name=\"pipeline1\">\n" + " <dependencies />\n" + " <materials>\n" + " <svn url=\"foobar\" checkexternals=\"true\" />\n" + " </materials>\n" + " <stage name=\"mingle\">\n" + " <jobs>\n" + jobWithCommand + " </jobs>\n" + " </stage>\n" + " </pipeline>\n" + " </pipelines>\n" + " <agents>\n" + " <agent hostname=\"agent1\" ipaddress=\"1.2.3.4\" uuid=\"ywZRuHFIKvw93TssFeWl8g==\" />\n" + " </agents>" + "</cruise>"; } public static String withMingleConfig(String mingleConfig) { return "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n" + "<cruise xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"" + " xsi:noNamespaceSchemaLocation=\"cruise-config.xsd\" schemaVersion=\"25\">\n" + " <server artifactsdir=\"logs\"></server>" + " <pipelines>\n" + " <pipeline name=\"pipeline1\">\n" + mingleConfig + " <materials>\n" + " <svn url=\"foobar\" checkexternals=\"true\" />\n" + " </materials>\n" + " <stage name=\"mingle\">\n" + " <jobs>\n" + " <job name=\"functional\">\n" + " <tasks>\n" + " <exec command=\"ls\" args=\"-la\" />\n" + " </tasks>\n" + " </job>\n" + " </jobs>\n" + " </stage>\n" + " </pipeline>\n" + " </pipelines>\n" + "</cruise>"; } public static String withServerConfig(String xml) { return "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n" + "<cruise xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"" + " xsi:noNamespaceSchemaLocation=\"cruise-config.xsd\" schemaVersion=\"" + GoConstants.CONFIG_SCHEMA_VERSION + "\">\n" + " <server artifactsdir=\"logs\">" + xml + "</server>" + " <pipelines>\n" + " <pipeline name=\"pipeline1\">\n" + " <dependencies />\n" + " <materials>\n" + " <svn url=\"foobar\" checkexternals=\"true\" />\n" + " </materials>\n" + " <stage name=\"mingle\">\n" + " <jobs>\n" + " <job name='linux' >\n " + " <tasks>" + " <ant />" + " </tasks>" + " </job>\n" + " </jobs>\n" + " </stage>\n" + " </pipeline>\n" + " </pipelines>\n" + " <agents>\n" + " <agent hostname=\"agent1\" ipaddress=\"1.2.3.4\" uuid=\"ywZRuHFIKvw93TssFeWl8g==\" />\n" + " </agents>" + "</cruise>"; } public static final String WITHOUT_SERVER_TAG = "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n" + "<cruise xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"" + " xsi:noNamespaceSchemaLocation=\"cruise-config.xsd\" schemaVersion=\"4\">\n" + " <pipelines>\n" + " <pipeline name=\"pipeline1\">\n" + " <dependencies />\n" + " <materials>\n" + " <svn url=\"foobar\" checkexternals=\"true\" />\n" + " </materials>\n" + " <stage name=\"mingle\">\n" + " <jobs>\n" + " <job name=\"functional\">\n" + " <artifacts>\n" + " <log src=\"artifact1.xml\" dest=\"cruise-output\" />\n" + " </artifacts>\n" + " </job>\n" + " </jobs>\n" + " </stage>\n" + " </pipeline>\n" + " </pipelines>\n" + " <agents>\n" + " <agent hostname=\"agent1\" ipaddress=\"1.2.3.4\" uuid=\"ywZRuHFIKvw93TssFeWl8g==\" />\n" + " </agents>" + "</cruise>"; public static final String CONFIG = "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n" + "<cruise " + "xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" " + "xsi:noNamespaceSchemaLocation=\"cruise-config.xsd\" schemaVersion=\"" + GoConstants.CONFIG_SCHEMA_VERSION + "\">\n" + "<server artifactsdir=\"logs\">" + " <security>" + " <roles>" + " <role name='admin'/>" + " <role name='qa_lead'/>" + " </roles>" + " </security>" + "</server>" + " <pipelines>" + " <pipeline name='pipeline1' labeltemplate='" + PipelineLabel.COUNT_TEMPLATE + "'>" + " <materials>" + " <svn url ='svnUrl' checkexternals='true' username='username' password='password'/>" + " </materials>" + " <stage name='stage1'>" + " <approval type='manual'>" + " <authorization>" + " <role>admin</role>" + " <role>qa_lead</role>" + " <user>jez</user>" + " </authorization>" + " </approval>" + " <jobs>" + " <job name='plan1'>" + " <resources>" + " <resource>tiger</resource>" + " <resource>tiger </resource>" + " <resource>lion</resource>" + " </resources>" + " <tabs>" + " <tab name=\"Emma\" path=\"logs/emma/index.html\" />" + " <tab name=\"EvolveClientLog\" path=\"logs/evolveClient.log\" />" + " </tabs>" + " </job>" + " </jobs>" + " </stage>" + " <stage name='stage2'>" + " <jobs>" + " <job name='plan2'>" + " <resources>" + " <resource>tiger</resource>" + " <resource>tiger </resource>" + " <resource>lion</resource>" + " </resources>" + " </job>" + " </jobs>" + " </stage>" + " </pipeline>" + " <pipeline name='pipeline2'>" + " <materials>" + " <hg url='http://username:password@hgUrl.com' />" + " </materials>" + " <stage name='stage1'>" + " <jobs>" + " <job name='plan1'>" + " <resources>" + " <resource>mandrill</resource>" + " </resources>" + " </job>" + " </jobs>" + " </stage>" + " </pipeline>" + " <pipeline name='pipeline3'>" + " <materials>" + " <p4 port='localhost:1666' username='cruise' password='password' useTickets='true'>" + " <view><![CDATA[" + "//depot/dir1/... //lumberjack/..." + "]]></view>" + " </p4>" + " </materials>" + " <stage name='stage1'>" + " <jobs>" + " <job name='plan1' />" + " </jobs>" + " </stage>" + " </pipeline>" + " <pipeline name='pipeline4'>" + " <materials>" + " <git url='git://username:password@gitUrl' />" + " </materials>" + " <stage name='stage1'>" + " <jobs>" + " <job name='plan1'>" + " <resources>" + " <resource>mandrill</resource>" + " </resources>" + " </job>" + " </jobs>" + " </stage>" + " </pipeline>" + " </pipelines>" + " <pipelines group=\"foo\">" + " <authorization>" + " <operate>" + " <role>qa_lead</role>" + " </operate>" + " </authorization>" + " <pipeline name=\"non-operatable-pipeline\">" + " <materials>" + " <git url=\"/tmp/git-stuff\" autoUpdate=\"false\" materialName=\"junit-failures-material\" />" + " </materials>" + " <stage name=\"one\">" + " <approval type=\"manual\" />" + " <jobs>" + " <job name=\"defaultJob\">" + " <tasks>" + " <exec command=\"sleep\" args=\"30\" />" + " </tasks>" + " </job>" + " </jobs>" + " </stage>" + " </pipeline>" + " </pipelines>" + " <agents>" + " <agent hostname=\"dev\" ipaddress=\"107.0.0.1\" uuid=\"123\">" + " <resources>" + " <resource>tiger</resource>" + " <resource>lion</resource>" + " </resources>" + " </agent>" + " </agents>" + "</cruise>"; public static final String ONE_PIPELINE = "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n" + "<cruise xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" " + " xsi:noNamespaceSchemaLocation=\"cruise-config.xsd\" schemaVersion=\"" + GoConstants.CONFIG_SCHEMA_VERSION + "\">\n" + " <server artifactsdir=\"other-artifacts\" />\n" + " <pipelines>\n" + " <pipeline name=\"pipeline1\">\n" + " <materials>\n" + " <svn url=\"foobar\" checkexternals=\"true\" />\n" + " </materials>\n" + " <stage name=\"stage\">\n" + " <jobs>\n" + " <job name=\"functional\">\n" + " <artifacts>\n" + " <artifact src=\"artifact1.xml\" dest=\"cruise-output\" />\n" + " </artifacts>\n" + " </job>\n" + " </jobs>\n" + " </stage>\n" + " </pipeline>\n" + " </pipelines>\n" + "</cruise>\n\n"; public static final String TWO_DUPLICATED_FILTER = "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n" + "<cruise xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" " + " xsi:noNamespaceSchemaLocation=\"cruise-config.xsd\" schemaVersion=\"" + GoConstants.CONFIG_SCHEMA_VERSION + "\">\n" + " <server artifactsdir=\"other-artifacts\" />\n" + " <pipelines>\n" + " <pipeline name=\"pipeline1\">\n" + " <materials>\n" + " <svn url=\"foobar\" checkexternals=\"true\" >\n" + " <filter>" + " <ignore pattern='*.doc'/>" + "<ignore pattern='*.doc'/>" + "</filter>" + " </svn>" + " </materials>\n" + " <stage name=\"stage\">\n" + " <jobs>\n" + " <job name=\"functional\">\n" + " <artifacts>\n" + " <artifact src=\"artifact1.xml\" dest=\"cruise-output\" />\n" + " </artifacts>\n" + " </job>\n" + " </jobs>\n" + " </stage>\n" + " </pipeline>\n" + " </pipelines>\n" + "</cruise>\n\n"; public static final String INVALID_CONFIG_WITH_MULTIPLE_TRACKINGTOOLS = "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n" + "<cruise xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" " + " xsi:noNamespaceSchemaLocation=\"cruise-config.xsd\" schemaVersion=\"5\">\n" + " <server artifactsdir=\"other-artifacts\" />\n" + " <pipelines>\n" + " <pipeline name=\"pipeline1\">\n" + " <trackingtool link=\"link\" regex=\"regex\" />\n" + " <trackingtool link=\"link\" regex=\"regex\" />\n" + " <dependencies />\n" + " <materials>\n" + " <svn url=\"foobar\" checkexternals=\"true\" />\n" + " </materials>\n" + " <stage name=\"stage\">\n" + " <jobs>\n" + " <job name=\"functional\">\n" + " <artifacts>\n" + " <log src=\"artifact1.xml\" dest=\"cruise-output\" />\n" + " </artifacts>\n" + " </job>\n" + " </jobs>\n" + " </stage>\n" + " </pipeline>\n" + " </pipelines>\n" + "</cruise>\n\n"; public static final String SERVER_TAG_WITH_DEFAULTS_PLUS_LICENSE_TAG = "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n" + "<cruise xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" " + " xsi:noNamespaceSchemaLocation=\"cruise-config.xsd\" schemaVersion=\"" + GoConstants.CONFIG_SCHEMA_VERSION + "\">\n" + "<server artifactsdir=\"artifacts\">\n" + " </server> \n" + "</cruise>"; // {"licensee"=>"Ricky", // "product"=>"cruise", // "cruise_max_users"=>2, // "cruise_max_agents"=>0,DEFAULT_XML_WITH_2_AGENTS // "cruise_edition"=>"Free", // "max_active_users"=>2, // "expiration_date"=>2050-08-28, // "customer_number"=>"9999"} public static final String TWO_USER_LICENSE_USER = "Ricky"; public static final String TWO_USER_LICENSE = "Pcq9+P3Bz8i826KJFlz9wOAlbJaHhICerFUDJkE6YWfPsbuV1RR6BQ719oe9\n" + "FraHDdqwQ5nGePHdkMkPohcGT9O52OACOVaPCHOVXNrGUAhRkLIvBkIbSXlU\n" + "byoy/wJMuAD3i4jsB5bxnGF1Rnrxj1jtG2EELMLpr3tnPJmdPVjgOifOvrjB\n" + "LqLn2UN//bI7q+Yef+MeMw9vneopdghpX5DFEzTnd4x2jJMo33GyAlmb2ieI\n" + "uxpXg0gj5jOv9T7YXL7UuF+YjehLZRYr4gx5lTDQKb3Y+yujglcJR7EFxFyp\n" + "s1gVxjzrgZIOWTvMDhyXn+JljvWjKwPEP1MlDbMQSQ=="; public static final String DEFAULT_XML_WITH_2_AGENTS = xml(); public static final String XML_WITH_ENTERPRISE_LICENSE_FOR_TWO_USERS = xml(); private static String xml() { return "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n" + "<cruise xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" " + " xsi:noNamespaceSchemaLocation=\"cruise-config.xsd\" schemaVersion=\"6\">\n" + "<server artifactsdir=\"artifactsDir\">\n" + "</server>" + "</cruise>"; } public static final String DEFAULT_XML_WITH_UNLIMITED_AGENTS = "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n" + "<cruise xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" " + " xsi:noNamespaceSchemaLocation=\"cruise-config.xsd\" schemaVersion=\"6\">\n" + "<server artifactsdir=\"../server.logs\">\n" + " </server>" + "</cruise>"; public static final String PIPELINES_WITH_SAME_NAME = "<cruise schemaVersion='" + GoConstants.CONFIG_SCHEMA_VERSION + "'>" + "<server artifactsdir=\"target/testfiles/tmpCCRoot/data/logs\"></server>" + " <pipelines>" + " <pipeline name='studios'>" + " <materials>" + " <svn url='ape'/>" + " </materials>" + " <stage name='mingle'>" + " <jobs>" + " <job name='unit'/>" + " </jobs>" + " </stage>" + " <stage name='mingle'>" + " <jobs>" + " <job name='unit'/>" + " </jobs>" + " </stage>" + " </pipeline>" + " </pipelines>" + "</cruise>"; public static final String JOBS_WITH_SAME_NAME = "<cruise schemaVersion='" + GoConstants.CONFIG_SCHEMA_VERSION + "'>" + "<server artifactsdir=\"target/testfiles/tmpCCRoot/data/logs\"></server>" + " <pipelines>" + " <pipeline name='studios'>" + " <materials>" + " <svn url='ape'/>" + " </materials>" + " <stage name='mingle'>" + " <jobs>" + " <job name='unit'/>" + " <job name='unit'/>" + " </jobs>" + " </stage>" + " </pipeline>" + " </pipelines>" + "</cruise>"; public static final String SIMPLE_PIPELINE = "<pipeline name='mingle_pipeline'>" + " <materials>" + " <svn url ='svnurl'/>" + " </materials>" + " <stage name='mingle'>" + " <jobs>" + " <job name='cardlist' />" + " </jobs>" + " </stage>" + "</pipeline>"; public static final String STAGE_WITH_NO_JOBS = "<cruise schemaVersion='" + GoConstants.CONFIG_SCHEMA_VERSION + "'>" + "<server artifactsdir=\"target/testfiles/tmpCCRoot/data/logs\"></server>" + " <pipelines>" + " <pipeline name='studios'>" + " <materials>" + " <svn url='ape'/>" + " </materials>" + " <stage name='mingle'>" + " <jobs>" + " </jobs>" + " </stage>" + " </pipeline>" + " </pipelines>" + "</cruise>"; public static final String VERSION_0 = "<cruise>" + "<server artifactsdir=\"target/testfiles/tmpCCRoot/data/logs\"></server>" + " <pipelines>" + " <pipeline name='pipeline'>" + " <materials>" + " <svn url='ape'/>" + " </materials>" + " <stage name='auto'>" + " <jobs>" + " <job name='unit'/>" + " </jobs>" + " <approval type='manual'/>" + " </stage>" + " <stage name='manual'>" + " <jobs>" + " <job name='unit'/>" + " </jobs>" + " </stage>" + " </pipeline>" + " </pipelines>" + "</cruise>"; public static final String VERSION_2 = "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n" + "<cruise xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" " + " xsi:noNamespaceSchemaLocation=\"cruise-config.xsd\" schemaVersion=\"2\">\n" + " <server>\n" + " </server>\n" + " <pipelines>\n" + " <pipeline name=\"multiple\">\n" + " <materials>\n" + " <svn url=\"file:///home/cceuser/projects/cruise/manual-testing/multiple/repo/trunk/part1\"\n" + " folder=\"part1\"\n" + " />\n" + " </materials>\n" + " <stage name=\"helloworld-part2\">\n" + " <jobs>\n" + " <job name=\"run1\">\n" + " <tasks>\n" + " <exec command=\"/bin/bash\" args=\"helloworld.sh\" workingdir=\"part1\" />\n" + " </tasks>\n" + " </job>\n" + " </jobs>\n" + " </stage>\n" + " </pipeline>\n" + " </pipelines>\n" + "</cruise>"; public static final String VERSION_5 = "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n" + "<cruise xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" " + " xsi:noNamespaceSchemaLocation=\"cruise-config.xsd\" schemaVersion=\"5\">\n" + "<server artifactsdir='artifactsDir' />" + "<pipelines>\n" + "<pipeline name='framework'>\n" + " <materials>\n" + " <svn url =\"svnurl\"/>" + " </materials>\n" + " <stage name='dist'>\n" + " <jobs>\n" + " <job name='cardlist' />\n" + " <job name='bluemonkeybutt'>\n" + " <artifacts>\n" + " <test src='from' dest='to'/>\n" + " </artifacts>\n" + " </job>\n" + " </jobs>\n" + " </stage>\n" + "</pipeline>\n" + "</pipelines>\n" + "</cruise>"; public static final String VERSION_7 = "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n" + "<cruise xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" " + " xsi:noNamespaceSchemaLocation=\"cruise-config.xsd\" schemaVersion=\"7\">\n" + "<server artifactsdir='artifactsDir' />" + "<pipelines>\n" + "<pipeline name='framework'>\n" + " <materials>\n" + " <hg url =\"svnurl\" dest=\"something\">" + " <filter>" + " <ignore pattern=\"abc\"/>" + " </filter>" + " </hg>" + " </materials>\n" + " <stage name='dist'>\n" + " <jobs>\n" + " <job name='cardlist' />\n" + " <job name='bluemonkeybutt'>\n" + " <artifacts>\n" + " <test src='from' dest='to'/>\n" + " </artifacts>\n" + " </job>\n" + " </jobs>\n" + " </stage>\n" + "</pipeline>\n" + "</pipelines>\n" + "</cruise>"; public static final String JOBS_WITH_DIFFERNT_CASE = "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n" + "<cruise xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" " + " xsi:noNamespaceSchemaLocation=\"cruise-config.xsd\" schemaVersion=\"7\">\n" + "<server artifactsdir='artifactsDir' />" + " <pipelines>\n" + " <pipeline name='framework'>\n" + " <materials>\n" + " <hg url =\"svnurl\" dest=\"something\">" + " </hg>" + " </materials>\n" + " <stage name='dist'>\n" + " <jobs>\n" + " <job name='test' />\n" + " <job name='Test' />\n" + " </jobs>\n" + " </stage>\n" + "</pipeline>\n" + "</pipelines>\n" + "</cruise>"; public static final String PIPELINE_WITH_TIMER = "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n" + "<cruise xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" " + " xsi:noNamespaceSchemaLocation=\"cruise-config.xsd\" schemaVersion=\"16\">\n" + "<server artifactsdir='artifactsDir' />" + " <pipelines>\n" + " <pipeline name='pipeline'>\n" + " <timer>0 15 10 ? * MON-FRI</timer>" + " <materials>\n" + " <hg url =\"svnurl\" dest=\"something\"/>" + " </materials>\n" + " <stage name='dist'>\n" + " <jobs>\n" + " <job name='test' />\n" + " </jobs>\n" + " </stage>\n" + " </pipeline>\n" + " </pipelines>\n" + "</cruise>"; public static String multipleMaterial(String... materials) { StringBuilder sb = new StringBuilder(); for (String material : materials) { sb.append(material).append('\n'); } return "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n" + "<cruise xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" " + " xsi:noNamespaceSchemaLocation=\"cruise-config.xsd\" schemaVersion=\"5\">\n" + "<server artifactsdir='artifactsDir' >" + "</server>" + "<pipelines>\n" + "<pipeline name='ecl'>\n" + " <materials>\n" + " <svn url ='svnurl' dest='a'/>\n" + " </materials>\n" + " <stage name='firstStage'>\n" + " <jobs>\n" + " <job name='cardlist' />\n" + " <job name='bluemonkeybutt'>\n" + " <artifacts>\n" + " <test src='from' dest='to'/>\n" + " </artifacts>\n" + " </job>\n" + " </jobs>\n" + " </stage>\n" + " <stage name='secondStage'>\n" + " <jobs>\n" + " <job name='cardlist' />\n" + " </jobs>\n" + " </stage>\n" + "</pipeline>\n" + "<pipeline name='ec2'>\n" + " <materials>\n" + " <svn url ='svnurl' dest='a'/>\n" + " </materials>\n" + " <stage name='firstStage'>\n" + " <jobs>\n" + " <job name='cardlist' />\n" + " <job name='bluemonkeybutt'>\n" + " <artifacts>\n" + " <test src='from' dest='to'/>\n" + " </artifacts>\n" + " </job>\n" + " </jobs>\n" + " </stage>\n" + " <stage name='secondStage'>\n" + " <jobs>\n" + " <job name='cardlist' />\n" + " </jobs>\n" + " </stage>\n" + "</pipeline>\n" + "<pipeline name='framework'>\n" + " <materials>\n" + sb.toString() + " </materials>\n" + " <stage name='dist'>\n" + " <jobs>\n" + " <job name='cardlist' />\n" + " <job name='bluemonkeybutt'>\n" + " <artifacts>\n" + " <test src='from' dest='to'/>\n" + " </artifacts>\n" + " </job>\n" + " </jobs>\n" + " </stage>\n" + "</pipeline>\n" + "</pipelines>\n" + "</cruise>"; } public static String withJob(String jobXml) { return "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n" + "<cruise xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"" + " xsi:noNamespaceSchemaLocation=\"cruise-config.xsd\" schemaVersion=\"" + GoConstants.CONFIG_SCHEMA_VERSION + "\">\n" + " <server artifactsdir=\"logs\"></server>" + " <pipelines>\n" + " <pipeline name=\"pipeline1\">\n" + " <materials>\n" + " <svn url=\"foobar\" checkexternals=\"true\" />\n" + " </materials>\n" + " <stage name=\"pre-mingle\">\n" + " <jobs>\n" + " <job name=\"run-ant\">\n" + " <tasks>\n" + " <exec command=\"/bin/bash\" args=\"helloworld.sh\" workingdir=\"part1\" />\n" + " </tasks>\n" + " </job>\n" + " </jobs>\n" + " </stage>\n" + " <stage name=\"mingle\">\n" + " <jobs>\n" + jobXml + " </jobs>\n" + " </stage>\n" + " </pipeline>\n" + " </pipelines>\n" + " <agents>\n" + " <agent hostname=\"agent1\" ipaddress=\"1.2.3.4\" uuid=\"ywZRuHFIKvw93TssFeWl8g==\" />\n" + " </agents>" + "</cruise>"; } public static String withJob(String jobXml, String pipelineName) { return "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n" + "<cruise xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"" + " xsi:noNamespaceSchemaLocation=\"cruise-config.xsd\" schemaVersion=\"" + GoConstants.CONFIG_SCHEMA_VERSION + "\">\n" + " <server artifactsdir=\"logs\"></server>" + " <pipelines>\n" + " <pipeline name=\"" + pipelineName + "\">\n" + " <materials>\n" + " <svn url=\"foobar\" checkexternals=\"true\" />\n" + " </materials>\n" + " <stage name=\"pre-mingle\">\n" + " <jobs>\n" + " <job name=\"run-ant\">\n" + " <tasks>\n" + " <exec command=\"/bin/bash\" args=\"helloworld.sh\" workingdir=\"part1\" />\n" + " </tasks>\n" + " </job>\n" + " </jobs>\n" + " </stage>\n" + " <stage name=\"mingle\">\n" + " <jobs>\n" + jobXml + " </jobs>\n" + " </stage>\n" + " </pipeline>\n" + " </pipelines>\n" + " <agents>\n" + " <agent hostname=\"agent1\" ipaddress=\"1.2.3.4\" uuid=\"ywZRuHFIKvw93TssFeWl8g==\" />\n" + " </agents>" + "</cruise>"; } public static final String PIPELINE_GROUPS = "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n" + "<cruise xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" " + " xsi:noNamespaceSchemaLocation=\"cruise-config.xsd\" schemaVersion=\"11\">\n" + "<server artifactsdir='artifactsDir'>" + "</server>" + "<pipelines group=\"studios\">\n" + "<pipeline name='framework'>\n" + " <materials>\n" + " <hg url =\"svnurl\" dest=\"something\">" + " <filter>" + " <ignore pattern=\"abc\"/>" + " </filter>" + " </hg>" + " </materials>\n" + " <stage name='dist'>\n" + " <jobs>\n" + " <job name='cardlist' />\n" + " <job name='bluemonkeybutt'>\n" + " <artifacts>\n" + " <test src='from' dest='to'/>\n" + " </artifacts>\n" + " </job>\n" + " </jobs>\n" + " </stage>\n" + "</pipeline>\n" + "</pipelines>\n" + "<pipelines group=\"perfessionalservice\">\n" + "<pipeline name='framework1'>\n" + " <materials>\n" + " <hg url =\"svnurl\" dest=\"something\">" + " <filter>" + " <ignore pattern=\"abc\"/>" + " </filter>" + " </hg>" + " </materials>\n" + " <stage name='dist'>\n" + " <jobs>\n" + " <job name='cardlist' />\n" + " <job name='bluemonkeybutt'>\n" + " <artifacts>\n" + " <test src='from' dest='to'/>\n" + " </artifacts>\n" + " </job>\n" + " </jobs>\n" + " </stage>\n" + "</pipeline>\n" + "</pipelines>\n" + " <agents>\n" + " <agent hostname=\"lqiao\" ipaddress=\"10.18.3.238\" uuid=\"" + "babb0c14-4477-42fb-81e8-2bdabdb7af03\">\n" + " <resources>\n" + " <resource>ql</resource>\n" + " </resources>\n" + " </agent>\n" + " </agents>" + "</cruise>"; public static final String STAGE_AUTH_WITH_ADMIN_AND_AUTH = "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n" + "<cruise xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" " + " xsi:noNamespaceSchemaLocation=\"cruise-config.xsd\" schemaVersion=\"14\">\n" + "<server artifactsdir='artifactsDir' >" + " <security>" + " <passwordFile path=\"foo\"/>" + " <admins>" + " <user>admin</user>" + " </admins>" + " </security>" + "</server>" + "<pipelines group=\"studios\">\n" + " <authorization>\n" + " <operate>\n" + " <user>operator</user>\n" + " </operate>\n" + " </authorization>\n" + "<pipeline name='framework'>\n" + " <materials>\n" + " <hg url =\"svnurl\" dest=\"something\" />" + " </materials>\n" + " <stage name='dist'>\n" + " <approval type='manual'>\n" + " <authorization>\n" + " <user>admin</user>\n" + " </authorization>\n" + " </approval>\n" + " <jobs>\n" + " <job name='cardlist' />\n" + " </jobs>\n" + " </stage>\n" + "</pipeline>\n" + "</pipelines>\n" + "</cruise>"; public static final String VALID_XML_3169 = "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n" + "<cruise xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:noNamespaceSchemaLocation=\"cruise-config.xsd\" schemaVersion=\"14\">\n" + " <server artifactsdir=\"artifacts\">\n" + " <license user=\"Go UAT ThoughtWorks\">dc7Q7ii7wQA7O8UxZAnud3ZFDi09MDaXYCwNZjjVyyhnZXK1kAQIZ4U+k/Tt\n" + "wCbfAmLCizhqvNvC3ZYCsa2zKfA26f+tUnc0WjRBK6ttfTVl9M9t08t+ZcAI\n" + "JhtONBURkA3YumffkxyAaPdPJq5tMaZYWjaX1pBpGlG0LjR+HwAkZnteTYeI\n" + "XMd7w0z741K8irGi3fLY+pyc8VB0jnv0J8tSWamL2sjy6irkuSw9q70PAtxb\n" + "q7MZBEkIaT3VFpehkyMvutKFUC6igyET3kd5WJoxeXj0W5ZucFGgKgFYlLNa\n" + "UQwnhuako+UAXhDhvMa2ud+fARbyZJasjGQQ77w6NQ==</license>\n" + " </server>\n" + " <pipelines group=\"12345\">\n" + " <pipeline name=\"test\">\n" + " <materials>\n" + " <hg url=\"http://hg-server/hg/connectfour\" />\n" + " </materials>\n" + " <stage name=\"defaultStage\">\n" + " <jobs>\n" + " <job name=\"defaultJob\">\n" + " <tasks>\n" + " <exec command=\"echo\">\n" + " <runif status=\"passed\" />\n" + " <arg value=\"test\" />\n" + " </exec>\n" + " </tasks>\n" + " </job>\n" + " </jobs>\n" + " </stage>\n" + " </pipeline>\n" + " </pipelines>\n" + " </cruise>"; public static final String WITH_VMMS_CONFIG = "<cruise schemaVersion='50'>\n" + "<server artifactsdir='artifactsDir' />" + "<pipelines>\n" + "<pipeline name='pipeline1'>\n" + " <materials>\n" + " <svn url =\"svnurl\"/>" + " </materials>\n" + " <stage name='mingle'>\n" + " <jobs>\n" + " <job name='cardlist' />\n" + " <job name='bluemonkeybutt'>\n" + " <artifacts>\n" + " <log src='from' dest='to'/>\n" + " </artifacts>\n" + " </job>\n" + " </jobs>\n" + " </stage>\n" + "</pipeline>\n" + "</pipelines>\n" + " <agents>\n" + " <agent uuid='1' hostname='test1.com' ipaddress='192.168.0.1' />\n" + " <agent uuid='2' hostname='test1.com' ipaddress='192.168.0.1' />\n" + " </agents>\n" + "<vmms>\n" + "<ec2 accessKey='test' secretAccessKey='test'>\n" + "<ami imageId='test' />\n" + "</ec2>\n" + "</vmms>\n" + "</cruise>"; public static final String WITH_LOG_ARTIFACT_CONFIG = "<cruise schemaVersion='50'>\n" + "<server artifactsdir='artifactsDir' />" + "<pipelines>\n" + "<pipeline name='pipeline1'>\n" + " <materials>\n" + " <svn url =\"svnurl\"/>" + " </materials>\n" + " <stage name='mingle'>\n" + " <jobs>\n" + " <job name='cardlist' />\n" + " <job name='bluemonkeybutt'>\n" + " <artifacts>\n" + " <log src='from1' />\n" + " <log src='from2' dest='to2'/>\n" + " <artifact src='from3'/>\n" + " <artifact src='from4' dest='to4'/>\n" + " </artifacts>\n" + " </job>\n" + " </jobs>\n" + " </stage>\n" + "</pipeline>\n" + "</pipelines>\n" + " <agents>\n" + " <agent uuid='1' hostname='test1.com' ipaddress='192.168.0.1' />\n" + " <agent uuid='2' hostname='test1.com' ipaddress='192.168.0.1' />\n" + " </agents>\n" + "</cruise>"; public static CruiseConfig configWith(PipelineConfigs... pipelineConfigses) { return new CruiseConfig(pipelineConfigses); } public static CruiseConfig configWith(PipelineConfig... pipelineConfigs) { PipelineConfigs configs = new PipelineConfigs(); configs.setGroup("defaultGroup"); configs.addAll(Arrays.asList(pipelineConfigs)); return new CruiseConfig(configs); } // public static String addLicenseIdNeeded(InputStream stream) { // // try { // Document document = new SAXReader().read(stream); // if (document.selectSingleNode("/cruise/server/license") != null) { // return document.asXML(); // } // return addLicense(document, ENTERPRISE_LICENSE_USER, ENTERPRISE_LICENSE); // } catch (DocumentException e) { // throw new RuntimeException(e); // } // } public static String addLicense(String config, String user, String license) { try { Document document = DocumentHelper.parseText(config); return addLicense(document, user, license); } catch (DocumentException e) { throw new RuntimeException(e); } } private static String addLicense(Document document, String user, String license) { Element server = (Element) document.selectSingleNode("/cruise/server"); Node oldLicense = server.selectSingleNode("./license"); if (oldLicense != null) { server.remove(oldLicense); } server.add(new DefaultElement("license").addAttribute("user", user).addText(license)); return document.asXML(); } public static String configwithSecurity(String security) { return "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n" + "<cruise xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:noNamespaceSchemaLocation=\"cruise-config.xsd\" schemaVersion=\"19\">\n" + " <server artifactsdir=\"logs\">\n" + " <license user=\"Cruise UAT ThoughtWorks Beijing\">O5jEQXU0iS9kBdn+l2rSO+uEXvik+G8uNRiaUr1qxOKKLa+EBKMmSFIpDrYw\n" + "dwDsd+MtfgiuAk5MDFImDhOT7R9HuKV7qqGI/a5ktRcBsuPGbYcxwJwbN5pv\n" + "OrEjueo23vMefUn/AxmPtgXaU++yqAPCJ/PXGBg+0LSpe40Z+m2OUz9Pr6BH\n" + "bNoig0/gA57KaziiFazsMdD0EYy83gN7HQdolSEImIZJuW9ABG0WAzPhscFh\n" + "hOI0BEABLEI+yIvWc8zfm6D8bhR4i+3ufPYc+q1J9+00VHY60QPgR2CBE3p5\n" + "BvpkX64b6XCyV9logzYeEr2MRUzct0hkGhGYZkzMag==</license>\n" + security + " </server>" + " </cruise>"; } public static String configWithArtifactSourceAs(String artifactSource) { return String.format(CONFIG_WITH_ARTIFACT_SRC, artifactSource); } }