[sdc] update code of sdc
[sdc.git] / ui-ci / src / main / java / org / openecomp / sdc / ci / tests / execute / setup / MobProxy.java
1 package org.openecomp.sdc.ci.tests.execute.setup;
2
3 import java.net.InetSocketAddress;
4 import java.net.Proxy;
5 import java.net.ProxySelector;
6 import java.net.SocketAddress;
7 import java.net.URI;
8 import java.util.HashMap;
9 import java.util.List;
10 import java.util.stream.Collectors;
11
12 import org.slf4j.LoggerFactory;
13
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;
19
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;
24
25 public class MobProxy {
26         
27         private static HashMap<Long, BrowserMobProxyServer> mobProxyServerMap = new HashMap<Long, BrowserMobProxyServer>();
28         public static InetSocketAddress localProxyAddress = getProxy(); 
29         
30         public static InetSocketAddress getProxy(){             
31                 setLogger();
32             
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);
47                     return null;
48                 } else {
49                     proxySearch.addStrategy(Strategy.OS_DEFAULT);
50                 }
51                 ProxySelector proxySelector = proxySearch.getProxySelector(); 
52
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); 
58                 String host = null;
59                 String port = null;
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); 
69                    } 
70                  } 
71                 }
72                 InetSocketAddress address = new InetSocketAddress(host, Integer.parseInt(port));
73                 return address;
74         }
75     
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);
82                 }
83         }
84         
85         public static synchronized void setProxyServer() {
86                 BrowserMobProxyServer server = new BrowserMobProxyServer();
87                 server.setTrustAllServers(true);
88                 if (localProxyAddress != null){
89                         server.setChainedProxy(localProxyAddress);
90                         server.start();
91                 } else {
92                         server.start();
93                         // filter firefox requests to mozilla when system proxy is absent
94                         server.blacklistRequests(".*mozilla.*", 200);
95                 }
96                 addProxyServerToPull(Thread.currentThread().getId(), server);
97         }
98         
99         public static synchronized BrowserMobProxyServer getPoxyServer() {
100         return mobProxyServerMap.get(Thread.currentThread().getId());
101     }
102         
103         public static void addProxyServerToPull(Long threadId, BrowserMobProxyServer server){
104                 mobProxyServerMap.put(threadId, server);
105         }
106         
107         public static synchronized void removePoxyServer() {
108                 if (getPoxyServer() != null){
109                         getPoxyServer().stop();
110                         mobProxyServerMap.remove(Thread.currentThread().getId());
111                 }
112     }
113         
114         public static void removeAllProxyServers(){
115                 for(Long threadNumber :mobProxyServerMap.keySet()){
116                         mobProxyServerMap.get(threadNumber).stop();
117                 }
118         }
119
120 }