All Downloads are FREE. Search and download functionalities are using the official Maven repository.

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