pact - How to make Netty listen on all interfaces via System property? -


i using https://github.com/dius/pact-jvm/tree/master/pact-jvm-consumer-junit, uses mockserver, uses netty.

the launched netty listens on loopback (netstat -tulpn output:)

tcp 0 0 127.0.0.1:21221 0.0.0.0:* listen 27681/java 

, want listen "the outside world". want launched netty accept connections on lan-ip address (192.168.x.y:21221 local address, example), or every incoming connection netty-port (0.0.0.0:21221 local address). framework chain somehow makes netty-configuration, well, far away, when starting application, using system property.

    system.setproperty("io.netty.listenaddress", "0.0.0.0"); 

is somehow possible?

you can achieve requirement placing reverseproxy in front of (pact->mockserver->)netty.

here full example. having reverseproxy, littleproxy used. example uses, mentioned, pact-jvm-consumer-junit, , doing http-calls, htmlunit.

import au.com.dius.pact.consumer.pact; import au.com.dius.pact.consumer.pactproviderrule; import au.com.dius.pact.consumer.pactverification; import au.com.dius.pact.consumer.dsl.pactdslwithprovider; import au.com.dius.pact.model.mockproviderconfig; import au.com.dius.pact.model.pactfragment; import com.gargoylesoftware.htmlunit.page; import com.gargoylesoftware.htmlunit.webclient; import java.io.ioexception; import java.net.inetsocketaddress; import org.junit.assert; import org.junit.rule; import org.junit.test; import org.littleshoot.proxy.chainedproxyadapter; import org.littleshoot.proxy.chainedproxymanager; import org.littleshoot.proxy.httpproxyserver; import org.littleshoot.proxy.impl.defaulthttpproxyserver;  public class helloit {    private static final string provider_service_path = "/provider-endpoint";    @rule   public pactproviderrule pactproviderservicemock     = new pactproviderrule("provider-service", this);    private final string providerservicereverseproxyurl;    private static httpproxyserver createreverseproxy(final mockproviderconfig mockproviderconfig) {     final string ip = mockproviderconfig.gethostname();     final int port = mockproviderconfig.getport();      final chainedproxymanager cpm = (httprequest, chainedproxies) -> {       final chainedproxyadapter chainedproxy = new chainedproxyadapter() {         @override         public inetsocketaddress getchainedproxyaddress() {           return new inetsocketaddress(ip, port);         }       };       chainedproxies.add(chainedproxy);     };      return defaulthttpproxyserver.bootstrap()       .withchainproxymanager(cpm)       .withport(0)       .withallowlocalonly(false)       .withallowrequesttooriginserver(true)       .start();   }    {     /*      * pact-mock provider-service listens on loopback only. using reverse proxy interaction      * between consumer-service , provider-service on external ip.      */     final httpproxyserver providerservicereverseproxy       = helloit.createreverseproxy(pactproviderservicemock.getconfig());      this.providerservicereverseproxyurl       = "http://<your-external-ip>:" + providerservicereverseproxy.getlistenaddress().getport();   }    @pact(consumer = "consumer-service")   public pactfragment createfragment(final pactdslwithprovider builder) {     return builder       .uponreceiving("some request")       .path(provider_service_path)       .method("get")       .willrespondwith()       .status(200)       .tofragment();   }    @test   @pactverification   public void index() throws ioexception {     final page page       = new webclient().getpage(this.providerservicereverseproxyurl + provider_service_path);     assert.assertequals(200, page.getwebresponse().getstatuscode());   } } 

Comments

Popular posts from this blog

Command prompt result in label. Python 2.7 -

javascript - How do I use URL parameters to change link href on page? -

amazon web services - AWS Route53 Trying To Get Site To Resolve To www -