1 package org.apache.maven.it;
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 import org.apache.maven.it.Verifier;
23 import org.apache.maven.it.util.FileUtils;
24 import org.apache.maven.it.util.ResourceExtractor;
25
26 import java.io.File;
27 import java.io.IOException;
28 import java.util.ArrayList;
29 import java.util.Collections;
30 import java.util.List;
31 import java.util.Properties;
32
33 import javax.servlet.ServletException;
34 import javax.servlet.http.HttpServletRequest;
35 import javax.servlet.http.HttpServletResponse;
36
37 import org.mortbay.jetty.Server;
38 import org.mortbay.jetty.handler.AbstractHandler;
39 import org.mortbay.jetty.handler.DefaultHandler;
40 import org.mortbay.jetty.handler.HandlerList;
41 import org.mortbay.jetty.handler.ResourceHandler;
42
43
44
45
46
47
48 public class MavenITmng4554PluginPrefixMappingUpdateTest
49 extends AbstractMavenIntegrationTestCase
50 {
51
52 public MavenITmng4554PluginPrefixMappingUpdateTest()
53 {
54 super( "[2.0.3,3.0-alpha-1),[3.0-alpha-7,)" );
55 }
56
57
58
59
60
61 public void testitCached()
62 throws Exception
63 {
64 File testDir = ResourceExtractor.simpleExtractResources( getClass(), "/mng-4554" );
65
66 String metadataUri = "/repo-1/org/apache/maven/its/mng4554/maven-metadata.xml";
67
68 final List requestedUris = Collections.synchronizedList( new ArrayList() );
69
70 AbstractHandler logHandler = new AbstractHandler()
71 {
72 public void handle( String target, HttpServletRequest request, HttpServletResponse response, int dispatch )
73 throws IOException, ServletException
74 {
75 requestedUris.add( request.getRequestURI() );
76 }
77 };
78
79 ResourceHandler repoHandler = new ResourceHandler();
80 repoHandler.setResourceBase( testDir.getAbsolutePath() );
81
82 HandlerList handlerList = new HandlerList();
83 handlerList.addHandler( logHandler );
84 handlerList.addHandler( repoHandler );
85 handlerList.addHandler( new DefaultHandler() );
86
87 Server server = new Server( 0 );
88 server.setHandler( handlerList );
89 server.start();
90
91 Verifier verifier = newVerifier( testDir.getAbsolutePath() );
92 try
93 {
94 verifier.setAutoclean( false );
95 verifier.deleteDirectory( "target" );
96 try
97 {
98 verifier.deleteArtifacts( "org.apache.maven.its.mng4554" );
99 }
100 catch ( IOException e )
101 {
102
103 assertFalse( new File( verifier.getArtifactMetadataPath( "org.apache.maven.its.mng4554", null, null, "maven-metadata-mng4554.xml" ) ).exists() );
104 }
105 Properties filterProps = verifier.newDefaultFilterProperties();
106 filterProps.setProperty( "@port@", Integer.toString( server.getConnectors()[0].getLocalPort() ) );
107 filterProps.setProperty( "@repo@", "repo-1" );
108 verifier.filterFile( "settings-template.xml", "settings.xml", "UTF-8", filterProps );
109 verifier.getCliOptions().add( "-s" );
110 verifier.getCliOptions().add( "settings.xml" );
111
112 verifier.setLogFileName( "log-cached-1.txt" );
113 verifier.executeGoal( "a:touch" );
114 verifier.verifyErrorFreeLog();
115
116 verifier.assertFilePresent( "target/touch.txt" );
117 assertTrue( requestedUris.toString(), requestedUris.contains( metadataUri ) );
118
119 requestedUris.clear();
120
121 verifier.setLogFileName( "log-cached-2.txt" );
122 verifier.executeGoal( "a:touch" );
123 verifier.verifyErrorFreeLog();
124
125 assertFalse( requestedUris.toString(), requestedUris.contains( metadataUri ) );
126 }
127 finally
128 {
129 verifier.resetStreams();
130 server.stop();
131 }
132 }
133
134
135
136
137
138 public void testitForcedUpdate()
139 throws Exception
140 {
141 File testDir = ResourceExtractor.simpleExtractResources( getClass(), "/mng-4554" );
142
143 String metadataUri = "/repo-1/org/apache/maven/its/mng4554/maven-metadata.xml";
144
145 final List requestedUris = Collections.synchronizedList( new ArrayList() );
146
147 AbstractHandler logHandler = new AbstractHandler()
148 {
149 public void handle( String target, HttpServletRequest request, HttpServletResponse response, int dispatch )
150 throws IOException, ServletException
151 {
152 requestedUris.add( request.getRequestURI() );
153 }
154 };
155
156 ResourceHandler repoHandler = new ResourceHandler();
157 repoHandler.setResourceBase( testDir.getAbsolutePath() );
158
159 HandlerList handlerList = new HandlerList();
160 handlerList.addHandler( logHandler );
161 handlerList.addHandler( repoHandler );
162 handlerList.addHandler( new DefaultHandler() );
163
164 Server server = new Server( 0 );
165 server.setHandler( handlerList );
166 server.start();
167
168 Verifier verifier = newVerifier( testDir.getAbsolutePath() );
169 try
170 {
171 verifier.setAutoclean( false );
172 verifier.deleteDirectory( "target" );
173 try
174 {
175 verifier.deleteArtifacts( "org.apache.maven.its.mng4554" );
176 }
177 catch ( IOException e )
178 {
179
180 assertFalse( new File( verifier.getArtifactMetadataPath( "org.apache.maven.its.mng4554", null, null, "maven-metadata-mng4554.xml" ) ).exists() );
181 }
182 Properties filterProps = verifier.newDefaultFilterProperties();
183 filterProps.setProperty( "@port@", Integer.toString( server.getConnectors()[0].getLocalPort() ) );
184 filterProps.setProperty( "@repo@", "repo-1" );
185 verifier.filterFile( "settings-template.xml", "settings.xml", "UTF-8", filterProps );
186 verifier.getCliOptions().add( "-U" );
187 verifier.getCliOptions().add( "-s" );
188 verifier.getCliOptions().add( "settings.xml" );
189
190 verifier.setLogFileName( "log-forced-1.txt" );
191 verifier.executeGoal( "a:touch" );
192 verifier.verifyErrorFreeLog();
193
194 verifier.assertFilePresent( "target/touch.txt" );
195 assertTrue( requestedUris.toString(), requestedUris.contains( metadataUri ) );
196
197 requestedUris.clear();
198
199 verifier.setLogFileName( "log-forced-2.txt" );
200 verifier.executeGoal( "a:touch" );
201 verifier.verifyErrorFreeLog();
202
203 assertTrue( requestedUris.toString(), requestedUris.contains( metadataUri ) );
204 }
205 finally
206 {
207 verifier.resetStreams();
208 server.stop();
209 }
210 }
211
212
213
214
215
216 public void testitRefetched()
217 throws Exception
218 {
219 requiresMavenVersion( "[3.0-alpha-3,)" );
220
221 File testDir = ResourceExtractor.simpleExtractResources( getClass(), "/mng-4554" );
222
223 String metadataUri = "/repo-it/org/apache/maven/its/mng4554/maven-metadata.xml";
224
225 final List requestedUris = Collections.synchronizedList( new ArrayList() );
226
227 AbstractHandler logHandler = new AbstractHandler()
228 {
229 public void handle( String target, HttpServletRequest request, HttpServletResponse response, int dispatch )
230 throws IOException, ServletException
231 {
232 requestedUris.add( request.getRequestURI() );
233 }
234 };
235
236 ResourceHandler repoHandler = new ResourceHandler();
237 repoHandler.setResourceBase( testDir.getAbsolutePath() );
238
239 HandlerList handlerList = new HandlerList();
240 handlerList.addHandler( logHandler );
241 handlerList.addHandler( repoHandler );
242 handlerList.addHandler( new DefaultHandler() );
243
244 Server server = new Server( 0 );
245 server.setHandler( handlerList );
246 server.start();
247
248 Verifier verifier = newVerifier( testDir.getAbsolutePath() );
249 try
250 {
251 verifier.setAutoclean( false );
252 verifier.deleteDirectory( "target" );
253 try
254 {
255 verifier.deleteArtifacts( "org.apache.maven.its.mng4554" );
256 }
257 catch ( IOException e )
258 {
259
260 assertFalse( new File( verifier.getArtifactMetadataPath( "org.apache.maven.its.mng4554", null, null, "maven-metadata-mng4554.xml" ) ).exists() );
261 }
262 Properties filterProps = verifier.newDefaultFilterProperties();
263 filterProps.setProperty( "@port@", Integer.toString( server.getConnectors()[0].getLocalPort() ) );
264 filterProps.setProperty( "@repo@", "repo-it" );
265 verifier.filterFile( "settings-template.xml", "settings.xml", "UTF-8", filterProps );
266 verifier.getCliOptions().add( "-s" );
267 verifier.getCliOptions().add( "settings.xml" );
268
269 FileUtils.copyDirectoryStructure( new File( testDir, "repo-1" ), new File( testDir, "repo-it" ) );
270
271 verifier.setLogFileName( "log-refetched-1.txt" );
272 verifier.executeGoal( "a:touch" );
273 verifier.verifyErrorFreeLog();
274
275 verifier.assertFilePresent( "target/touch.txt" );
276 assertTrue( requestedUris.toString(), requestedUris.contains( metadataUri ) );
277
278 requestedUris.clear();
279
280
281 FileUtils.copyDirectoryStructure( new File( testDir, "repo-2" ), new File( testDir, "repo-it" ) );
282
283 verifier.setLogFileName( "log-refetched-2.txt" );
284 verifier.executeGoal( "b:touch" );
285 verifier.verifyErrorFreeLog();
286
287 assertTrue( requestedUris.toString(), requestedUris.contains( metadataUri ) );
288 }
289 finally
290 {
291 verifier.resetStreams();
292 server.stop();
293 }
294 }
295
296 }