
com.automationrockstars.bmo.proxy.AppTest Maven / Gradle / Ivy
The newest version!
/*******************************************************************************
* Copyright (c) 2015, 2016 Automation RockStars Ltd.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Apache License v2.0
* which accompanies this distribution, and is available at
* http://www.apache.org/licenses/LICENSE-2.0
*
* Contributors:
* Automation RockStars - initial API and implementation
*******************************************************************************/
package com.automationrockstars.bmo.proxy;
import static java.lang.Thread.sleep;
import java.net.InetSocketAddress;
import java.util.concurrent.atomic.AtomicBoolean;
import org.junit.Test;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import net.lightbody.bmp.BrowserMobProxy;
import net.lightbody.bmp.BrowserMobProxyServer;
/**
* Unit test for simple App.
*/
public class AppTest{
public static class Proxy implements Runnable {
private static Logger log = LoggerFactory.getLogger(Proxy.class);
BrowserMobProxy proxy = new BrowserMobProxyServer();
public static AtomicBoolean run = new AtomicBoolean(true);
@Override
public void run() {
proxy.setHostNameResolver(new HttpHostResolver());
proxy.setChainedProxy(new InetSocketAddress("localhost", 3128));
// proxy.addRequestFilter(new RequestFilter() {
// @Override
// public HttpResponse filterRequest(HttpRequest request, HttpMessageContents contents, HttpMessageInfo messageInfo) {
//// String uri = request.getUri();
//
//// request.setUri(uri.replace("193.120.161.189", "172.31.33.53"));
//
// try {
// log.info("Getting content of {}", DefaultGroovyMethods.dump(request));
// Class> cl = request.getClass();
// log.info("class {}", cl);
// Field f = request.getClass().getSuperclass().getDeclaredField("message");
// f.setAccessible(true);
// DefaultHttpRequest msg = (DefaultHttpRequest) f.get(request);
//
// Field h = msg.getClass().getSuperclass().getDeclaredField("headers");
// h.setAccessible(true);
// DefaultHttpHeaders headers = (DefaultHttpHeaders) h.get(msg);
// log.info("Headers {}", headers.get("Host"));
// headers.remove("Host");
// log.info("Got content: {} and {}", DefaultGroovyMethods.dump(msg),DefaultGroovyMethods.dump(headers));
// log.info("requesting: {}", request.getUri());
//// log.info("info {}",messageInfo.getUrl());
//// log.info("content {} :: {} :: {}",contents.getTextContents(),contents.getBinaryContents(),contents.getContentType());
// log.info("req: {}\n==============\ncnt: {}\n============\ninfo: {}", DefaultGroovyMethods.dump(request), DefaultGroovyMethods.dump(contents), DefaultGroovyMethods.dump(messageInfo));
//
// } catch ( Exception e) {
// log.error("Exception during handing of request",e);
// }
//
//
// return null;
// }
////
// });
// proxy.addResponseFilter(new ResponseFilter() {
// @Override
// public void filterResponse(HttpResponse response, HttpMessageContents contents, HttpMessageInfo messageInfo) {
// log.info("response {} from {}", response.getStatus(), messageInfo.getOriginalRequest().getUri());
//// log.info("content {}", Objects.toString(contents.getTextContents()));
//// log.info("info {}", Objects.toString(messageInfo));
// }
// });
//
// proxy.rewriteUrl("https://193.120.161.189/RichChannelWS/Service.svc", "https://172.31.33.53/RichChannelWS/Service.svc");
proxy.start(8082);
while (run.get()){
try {
sleep(1000);
} catch (InterruptedException e) {
run.set(false);
}
}
System.out.println("stopping");
proxy.stop();
}
}
@Test
public void simple1() throws InterruptedException {
Runtime.getRuntime().addShutdownHook(
new Thread(new Runnable() {
@Override
public void run() {
Proxy.run.set(false);
}
})
);
new Thread(new Proxy()).start();
Thread.sleep(3600000);
Proxy.run.set(false);
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy