diff options
Diffstat (limited to 'framework/src/maven/apache-maven-3.3.3/maven-core/src/test/java/org/apache/maven/lifecycle/internal/builder/multithreaded/ThreadOutputMuxerTest.java')
-rw-r--r-- | framework/src/maven/apache-maven-3.3.3/maven-core/src/test/java/org/apache/maven/lifecycle/internal/builder/multithreaded/ThreadOutputMuxerTest.java | 167 |
1 files changed, 0 insertions, 167 deletions
diff --git a/framework/src/maven/apache-maven-3.3.3/maven-core/src/test/java/org/apache/maven/lifecycle/internal/builder/multithreaded/ThreadOutputMuxerTest.java b/framework/src/maven/apache-maven-3.3.3/maven-core/src/test/java/org/apache/maven/lifecycle/internal/builder/multithreaded/ThreadOutputMuxerTest.java deleted file mode 100644 index dc75a947..00000000 --- a/framework/src/maven/apache-maven-3.3.3/maven-core/src/test/java/org/apache/maven/lifecycle/internal/builder/multithreaded/ThreadOutputMuxerTest.java +++ /dev/null @@ -1,167 +0,0 @@ -package org.apache.maven.lifecycle.internal.builder.multithreaded; - -/* - * Licensed to the Apache Software Foundation (ASF) under one or more contributor license - * agreements. See the NOTICE file distributed with this work for additional information regarding - * copyright ownership. The ASF licenses this file to you 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. - */ - -import junit.framework.TestCase; - -import org.apache.maven.execution.MavenSession; -import org.apache.maven.lifecycle.LifecycleNotFoundException; -import org.apache.maven.lifecycle.LifecyclePhaseNotFoundException; -import org.apache.maven.lifecycle.internal.ProjectBuildList; -import org.apache.maven.lifecycle.internal.ProjectSegment; -import org.apache.maven.lifecycle.internal.builder.multithreaded.ThreadOutputMuxer; -import org.apache.maven.lifecycle.internal.stub.ProjectDependencyGraphStub; -import org.apache.maven.plugin.InvalidPluginDescriptorException; -import org.apache.maven.plugin.MojoNotFoundException; -import org.apache.maven.plugin.PluginDescriptorParsingException; -import org.apache.maven.plugin.PluginNotFoundException; -import org.apache.maven.plugin.PluginResolutionException; -import org.apache.maven.plugin.prefix.NoPluginFoundForPrefixException; -import org.apache.maven.plugin.version.PluginVersionResolutionException; - -import java.io.ByteArrayOutputStream; -import java.io.PrintStream; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.Iterator; -import java.util.List; -import java.util.concurrent.Callable; -import java.util.concurrent.CompletionService; -import java.util.concurrent.ExecutorCompletionService; -import java.util.concurrent.ExecutorService; -import java.util.concurrent.Executors; -import java.util.concurrent.Future; - -/** - * @author Kristian Rosenvold - */ -public class ThreadOutputMuxerTest - extends TestCase -{ - - final String paid = "Paid"; - - final String in = "In"; - - final String full = "Full"; - - public void testSingleThreaded() - throws Exception - { - ProjectBuildList src = getProjectBuildList(); - ProjectBuildList projectBuildList = - new ProjectBuildList( Arrays.asList( src.get( 0 ), src.get( 1 ), src.get( 2 ) ) ); - - ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); - PrintStream systemOut = new PrintStream( byteArrayOutputStream ); - ThreadOutputMuxer threadOutputMuxer = new ThreadOutputMuxer( projectBuildList, systemOut ); - - threadOutputMuxer.associateThreadWithProjectSegment( projectBuildList.get( 0 ) ); - System.out.print( paid ); // No, this does not print to system.out. It's part of the test - assertEquals( paid.length(), byteArrayOutputStream.size() ); - threadOutputMuxer.associateThreadWithProjectSegment( projectBuildList.get( 1 ) ); - System.out.print( in ); // No, this does not print to system.out. It's part of the test - assertEquals( paid.length(), byteArrayOutputStream.size() ); - threadOutputMuxer.associateThreadWithProjectSegment( projectBuildList.get( 2 ) ); - System.out.print( full ); // No, this does not print to system.out. It's part of the test - assertEquals( paid.length(), byteArrayOutputStream.size() ); - - threadOutputMuxer.setThisModuleComplete( projectBuildList.get( 0 ) ); - threadOutputMuxer.setThisModuleComplete( projectBuildList.get( 1 ) ); - threadOutputMuxer.setThisModuleComplete( projectBuildList.get( 2 ) ); - threadOutputMuxer.close(); - assertEquals( ( paid + in + full ).length(), byteArrayOutputStream.size() ); - } - - public void testMultiThreaded() - throws Exception - { - ProjectBuildList projectBuildList = getProjectBuildList(); - - ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); - PrintStream systemOut = new PrintStream( byteArrayOutputStream ); - final ThreadOutputMuxer threadOutputMuxer = new ThreadOutputMuxer( projectBuildList, systemOut ); - - final List<String> stringList = - Arrays.asList( "Thinkin", "of", "a", "master", "plan", "Cuz", "ain’t", "nuthin", "but", "sweat", "inside", - "my", "hand" ); - Iterator<String> lyrics = stringList.iterator(); - - ExecutorService executor = Executors.newFixedThreadPool( 10 ); - CompletionService<ProjectSegment> service = new ExecutorCompletionService<ProjectSegment>( executor ); - - List<Future<ProjectSegment>> futures = new ArrayList<Future<ProjectSegment>>(); - for ( ProjectSegment projectBuild : projectBuildList ) - { - final Future<ProjectSegment> buildFuture = - service.submit( new Outputter( threadOutputMuxer, projectBuild, lyrics.next() ) ); - futures.add( buildFuture ); - } - - for ( Future<ProjectSegment> future : futures ) - { - future.get(); - } - int expectedLength = 0; - for ( int i = 0; i < projectBuildList.size(); i++ ) - { - expectedLength += stringList.get( i ).length(); - } - - threadOutputMuxer.close(); - final byte[] bytes = byteArrayOutputStream.toByteArray(); - String result = new String( bytes ); - assertEquals( result, expectedLength, bytes.length ); - - - } - - class Outputter - implements Callable<ProjectSegment> - { - private final ThreadOutputMuxer threadOutputMuxer; - - private final ProjectSegment item; - - private final String response; - - Outputter( ThreadOutputMuxer threadOutputMuxer, ProjectSegment item, String response ) - { - this.threadOutputMuxer = threadOutputMuxer; - this.item = item; - this.response = response; - } - - public ProjectSegment call() - throws Exception - { - threadOutputMuxer.associateThreadWithProjectSegment( item ); - System.out.print( response ); - threadOutputMuxer.setThisModuleComplete( item ); - return item; - } - } - - - private ProjectBuildList getProjectBuildList() - throws InvalidPluginDescriptorException, PluginVersionResolutionException, PluginDescriptorParsingException, - NoPluginFoundForPrefixException, MojoNotFoundException, PluginNotFoundException, PluginResolutionException, - LifecyclePhaseNotFoundException, LifecycleNotFoundException - { - final MavenSession session = ProjectDependencyGraphStub.getMavenSession(); - return ProjectDependencyGraphStub.getProjectBuildList( session ); - } -} |