-
Notifications
You must be signed in to change notification settings - Fork 5
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Implement automated tests for plugin API HTTP Client
Implement automated tests for plugin API HTTP resource Add Mockito and Power Mock dependency Implement automated tests for ConfigurationsManager. Implement additional tests for HTTP Client and HTTP resource Exclude artifacts forbidden by maven enforce plugin
- Loading branch information
1 parent
af01346
commit 50b1883
Showing
14 changed files
with
578 additions
and
73 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
38 changes: 38 additions & 0 deletions
38
...griddynamics/cd/nrp/internal/uploading/impl/factories/AsyncWebResourceBuilderFactory.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,38 @@ | ||
package com.griddynamics.cd.nrp.internal.uploading.impl.factories; | ||
|
||
import com.sun.jersey.api.client.AsyncWebResource; | ||
import com.sun.jersey.api.client.Client; | ||
|
||
import javax.inject.Inject; | ||
import javax.inject.Singleton; | ||
import javax.ws.rs.core.MediaType; | ||
import javax.ws.rs.core.UriBuilder; | ||
|
||
@Singleton | ||
public class AsyncWebResourceBuilderFactory { | ||
|
||
private final JerseyClientFactory jerseyClientFactory; | ||
|
||
@Inject | ||
public AsyncWebResourceBuilderFactory(JerseyClientFactory jerseyClientFactory) { | ||
this.jerseyClientFactory = jerseyClientFactory; | ||
} | ||
|
||
|
||
/** | ||
* Returns jersey HTTP resource to access to the remote replication servers | ||
* | ||
* @param nexusUrl URL of the remote server | ||
* @param login Username on the remote server | ||
* @param password User's password | ||
* @return Jersey HTTP client | ||
*/ | ||
public AsyncWebResource.Builder getAsyncWebResourceBuilder(String nexusUrl, String login, String password) { | ||
Client client = jerseyClientFactory.getClient(login, password); | ||
AsyncWebResource webResource = client.asyncResource(UriBuilder.fromUri(nexusUrl).build()); | ||
webResource = webResource.path("service").path("local").path("artifact").path("maven").path("update"); | ||
return webResource.accept(MediaType.APPLICATION_XML_TYPE) | ||
.type(MediaType.APPLICATION_XML_TYPE); | ||
} | ||
|
||
} |
32 changes: 32 additions & 0 deletions
32
...a/com/griddynamics/cd/nrp/internal/uploading/impl/factories/FileBlockingQueueFactory.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,32 @@ | ||
package com.griddynamics.cd.nrp.internal.uploading.impl.factories; | ||
|
||
import com.griddynamics.cd.nrp.internal.model.api.ArtifactMetaInfo; | ||
import com.griddynamics.cd.nrp.internal.uploading.ConfigurationsManager; | ||
import com.griddynamics.cd.nrp.internal.uploading.impl.FileBlockingQueue; | ||
|
||
import javax.inject.Inject; | ||
import javax.inject.Singleton; | ||
import java.util.concurrent.BlockingQueue; | ||
import java.util.concurrent.LinkedBlockingQueue; | ||
|
||
@Singleton | ||
public class FileBlockingQueueFactory { | ||
|
||
private final ConfigurationsManager configurationsManager; | ||
|
||
@Inject | ||
public FileBlockingQueueFactory(ConfigurationsManager configurationsManager) { | ||
this.configurationsManager = configurationsManager; | ||
} | ||
|
||
public FileBlockingQueue getFileBlockingQueue() { | ||
BlockingQueue<ArtifactMetaInfo> blockingQueue = | ||
new LinkedBlockingQueue<>(configurationsManager. | ||
getConfiguration().getRequestsQueueSize()); | ||
String blockingQueueDumpFileName = configurationsManager.getConfiguration().getQueueDumpFileName(); | ||
|
||
return new FileBlockingQueue(blockingQueue, | ||
blockingQueueDumpFileName); | ||
} | ||
|
||
} |
49 changes: 49 additions & 0 deletions
49
...n/java/com/griddynamics/cd/nrp/internal/uploading/impl/factories/JerseyClientFactory.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,49 @@ | ||
package com.griddynamics.cd.nrp.internal.uploading.impl.factories; | ||
|
||
import com.griddynamics.cd.nrp.internal.uploading.ConfigurationsManager; | ||
import com.sun.jersey.api.client.Client; | ||
import com.sun.jersey.api.client.config.ClientConfig; | ||
import com.sun.jersey.api.client.config.DefaultClientConfig; | ||
import com.sun.jersey.api.client.filter.HTTPBasicAuthFilter; | ||
import org.slf4j.Logger; | ||
import org.slf4j.LoggerFactory; | ||
|
||
import javax.inject.Inject; | ||
import javax.inject.Singleton; | ||
import java.util.concurrent.ExecutorService; | ||
import java.util.concurrent.LinkedBlockingQueue; | ||
import java.util.concurrent.ThreadPoolExecutor; | ||
import java.util.concurrent.TimeUnit; | ||
|
||
@Singleton | ||
public class JerseyClientFactory { | ||
|
||
private Logger log = LoggerFactory.getLogger(JerseyClientFactory.class); | ||
|
||
private final ExecutorService executorService; | ||
|
||
@Inject | ||
public JerseyClientFactory(ConfigurationsManager configurationsManager) { | ||
this.executorService = new ThreadPoolExecutor( | ||
configurationsManager.getConfiguration().getRequestsSendingThreadsCount(), | ||
configurationsManager.getConfiguration().getRequestsSendingThreadsCount(), | ||
30, | ||
TimeUnit.SECONDS, | ||
new LinkedBlockingQueue<Runnable>( | ||
configurationsManager.getConfiguration().getRequestsQueueSize())); | ||
} | ||
|
||
public Client getClient(String login, String password) { | ||
ClientConfig config = new DefaultClientConfig(); | ||
Client client = Client.create(config); | ||
client.setExecutorService(executorService); | ||
if (login != null && !login.isEmpty() && password != null) { | ||
log.debug("Creating HTTP client with authorized HTTPBasicAuthFilter."); | ||
client.addFilter(new HTTPBasicAuthFilter(login, password)); | ||
} else { | ||
log.debug("Creating HTTP client with anonymous HTTPBasicAuthFilter."); | ||
} | ||
return client; | ||
} | ||
|
||
} |
Oops, something went wrong.