1 package org.openecomp.sdc.ci.tests.execute.setup;
3 import java.net.InetSocketAddress;
5 import java.net.ProxySelector;
6 import java.net.SocketAddress;
8 import java.util.HashMap;
10 import java.util.stream.Collectors;
12 import org.slf4j.LoggerFactory;
14 import com.aventstack.extentreports.ExtentTest;
15 import com.github.markusbernhardt.proxy.ProxySearch;
16 import com.github.markusbernhardt.proxy.ProxySearch.Strategy;
17 import com.github.markusbernhardt.proxy.util.PlatformUtil;
18 import com.github.markusbernhardt.proxy.util.PlatformUtil.Platform;
20 import ch.qos.logback.classic.Level;
21 import ch.qos.logback.classic.Logger;
22 import ch.qos.logback.classic.LoggerContext;
23 import net.lightbody.bmp.BrowserMobProxyServer;
25 public class MobProxy {
27 private static HashMap<Long, BrowserMobProxyServer> mobProxyServerMap = new HashMap<Long, BrowserMobProxyServer>();
28 public static InetSocketAddress localProxyAddress = getProxy();
30 public static InetSocketAddress getProxy(){
33 ProxySearch proxySearch = new ProxySearch();
34 // proxySearch.addStrategy(Strategy.JAVA);
35 // proxySearch.addStrategy(Strategy.BROWSER);
36 // proxySearch.addStrategy(Strategy.OS_DEFAULT);
37 // proxySearch.addStrategy(Strategy.ENV_VAR);
38 if (PlatformUtil.getCurrentPlattform() == Platform.WIN) {
39 proxySearch.addStrategy(Strategy.IE);
40 proxySearch.addStrategy(Strategy.FIREFOX);
41 proxySearch.addStrategy(Strategy.JAVA);
42 } else if (PlatformUtil.getCurrentPlattform() == Platform.LINUX) {
43 proxySearch.addStrategy(Strategy.GNOME);
44 proxySearch.addStrategy(Strategy.KDE);
45 proxySearch.addStrategy(Strategy.FIREFOX);
46 proxySearch.addStrategy(Strategy.ENV_VAR);
49 proxySearch.addStrategy(Strategy.OS_DEFAULT);
51 ProxySelector proxySelector = proxySearch.getProxySelector();
53 ProxySelector.setDefault(proxySelector);
54 URI home = URI.create("http://www.google.com");
55 System.out.println("ProxySelector: " + proxySelector);
56 System.out.println("URI: " + home);
57 List<Proxy> proxyList = proxySelector.select(home);
60 if (proxyList != null && !proxyList.isEmpty()) {
61 for (Proxy proxy : proxyList) {
62 System.out.println(proxy);
63 SocketAddress address = proxy.address();
64 if (address instanceof InetSocketAddress) {
65 host = ((InetSocketAddress) address).getHostName();
66 port = Integer.toString(((InetSocketAddress) address).getPort());
67 System.setProperty("http.proxyHost", host);
68 System.setProperty("http.proxyPort", port);
72 InetSocketAddress address = new InetSocketAddress(host, Integer.parseInt(port));
76 // set logger for all classes connected to MobProxy
77 public static void setLogger() {
78 LoggerContext lc = (LoggerContext) LoggerFactory. getILoggerFactory();
79 // lc.getLogger("ROOT").setLevel(Level.DEBUG);
80 for(Logger logger:lc.getLoggerList()){
81 logger.setLevel(Level.INFO);
85 public static synchronized void setProxyServer() {
86 BrowserMobProxyServer server = new BrowserMobProxyServer();
87 server.setTrustAllServers(true);
88 if (localProxyAddress != null){
89 server.setChainedProxy(localProxyAddress);
93 // filter firefox requests to mozilla when system proxy is absent
94 server.blacklistRequests(".*mozilla.*", 200);
96 addProxyServerToPull(Thread.currentThread().getId(), server);
99 public static synchronized BrowserMobProxyServer getPoxyServer() {
100 return mobProxyServerMap.get(Thread.currentThread().getId());
103 public static void addProxyServerToPull(Long threadId, BrowserMobProxyServer server){
104 mobProxyServerMap.put(threadId, server);
107 public static synchronized void removePoxyServer() {
108 if (getPoxyServer() != null){
109 getPoxyServer().stop();
110 mobProxyServerMap.remove(Thread.currentThread().getId());
114 public static void removeAllProxyServers(){
115 for(Long threadNumber :mobProxyServerMap.keySet()){
116 mobProxyServerMap.get(threadNumber).stop();