Re: Good way to test when topology in local cluster is fully active

2014-08-05 Thread P. Taylor Goetz
My guess is that the slowdown you are seeing is a result of the new version of 
ZooKeeper and how it handles IPv4/6.

Try adding the following JVM parameter when running your tests:

-Djava.net.preferIPv4Stack=true

-Taylor

On Aug 4, 2014, at 8:49 PM, Corey Nolet cjno...@gmail.com wrote:

 I'm testing some sliding window algorithms with tuples emitted from a mock 
 spout based on a timer but the amount of time it takes the topology to fully 
 start up and activate seems to vary from computer to computer. Specifically, 
 I just updated from 0.8.2 to 0.9.2-incubating and all of my tests are 
 breaking because the time to activate the topology is taking longer (because 
 of Netty possibly?). I'd like to make my tests more resilient to things like 
 this.
 
 Is there something I can look at in LocalCluster where I could do 
 while(!notActive) { Thread.sleep(50) } ?
 
 This is what my test looks like currently:
 
   StormTopology topology = buildTopology(...);
   Config conf = new Config();
   conf.setNumWorkers(1);
 
   LocalCluster cluster = new LocalCluster();
   cluster.submitTopology(getTopologyName(), conf, topology);
 
   try {
 Thread.sleep(4000);
   } catch (InterruptedException e) {
 e.printStackTrace();
   }
 
   cluster.shutdown();
 
   assertEquals(4, MockSinkBolt.getEvents().size());
 
 
 
 Thanks!
 
 



signature.asc
Description: Message signed with OpenPGP using GPGMail


Re: Good way to test when topology in local cluster is fully active

2014-08-05 Thread Corey Nolet
Vincent  P.Taylor,

I played with the testing framework for a little bit last night and don't
see any easy way to provide pauses in between the emissions of the mock
tuples. For instance, my sliding window semantics are heavily orchestrated
by time evictions and triggers which mean that I need to be able to time
the tuples being fed into the tests (i.e. emit a tuple every 500ms and run
the test for 25 secons).


On Tue, Aug 5, 2014 at 2:23 PM, P. Taylor Goetz ptgo...@gmail.com wrote:

 My guess is that the slowdown you are seeing is a result of the new
 version of ZooKeeper and how it handles IPv4/6.

 Try adding the following JVM parameter when running your tests:

 -Djava.net.preferIPv4Stack=true

 -Taylor

 On Aug 4, 2014, at 8:49 PM, Corey Nolet cjno...@gmail.com wrote:

  I'm testing some sliding window algorithms with tuples emitted from a
 mock spout based on a timer but the amount of time it takes the topology to
 fully start up and activate seems to vary from computer to computer.
 Specifically, I just updated from 0.8.2 to 0.9.2-incubating and all of my
 tests are breaking because the time to activate the topology is taking
 longer (because of Netty possibly?). I'd like to make my tests more
 resilient to things like this.
 
  Is there something I can look at in LocalCluster where I could do
 while(!notActive) { Thread.sleep(50) } ?
 
  This is what my test looks like currently:
 
StormTopology topology = buildTopology(...);
Config conf = new Config();
conf.setNumWorkers(1);
 
LocalCluster cluster = new LocalCluster();
cluster.submitTopology(getTopologyName(), conf, topology);
 
try {
  Thread.sleep(4000);
} catch (InterruptedException e) {
  e.printStackTrace();
}
 
cluster.shutdown();
 
assertEquals(4, MockSinkBolt.getEvents().size());
 
 
 
  Thanks!
 
 




Re: Good way to test when topology in local cluster is fully active

2014-08-05 Thread Corey Nolet
Sorry- the ipv4 fix worked.


On Tue, Aug 5, 2014 at 9:13 PM, Corey Nolet cjno...@gmail.com wrote:

 This did work. Thanks!


 On Tue, Aug 5, 2014 at 2:23 PM, P. Taylor Goetz ptgo...@gmail.com wrote:

 My guess is that the slowdown you are seeing is a result of the new
 version of ZooKeeper and how it handles IPv4/6.

 Try adding the following JVM parameter when running your tests:

 -Djava.net.preferIPv4Stack=true

 -Taylor

 On Aug 4, 2014, at 8:49 PM, Corey Nolet cjno...@gmail.com wrote:

  I'm testing some sliding window algorithms with tuples emitted from a
 mock spout based on a timer but the amount of time it takes the topology to
 fully start up and activate seems to vary from computer to computer.
 Specifically, I just updated from 0.8.2 to 0.9.2-incubating and all of my
 tests are breaking because the time to activate the topology is taking
 longer (because of Netty possibly?). I'd like to make my tests more
 resilient to things like this.
 
  Is there something I can look at in LocalCluster where I could do
 while(!notActive) { Thread.sleep(50) } ?
 
  This is what my test looks like currently:
 
StormTopology topology = buildTopology(...);
Config conf = new Config();
conf.setNumWorkers(1);
 
LocalCluster cluster = new LocalCluster();
cluster.submitTopology(getTopologyName(), conf, topology);
 
try {
  Thread.sleep(4000);
} catch (InterruptedException e) {
  e.printStackTrace();
}
 
cluster.shutdown();
 
assertEquals(4, MockSinkBolt.getEvents().size());
 
 
 
  Thanks!
 
 





Re: Good way to test when topology in local cluster is fully active

2014-08-05 Thread Corey Nolet
This did work. Thanks!


On Tue, Aug 5, 2014 at 2:23 PM, P. Taylor Goetz ptgo...@gmail.com wrote:

 My guess is that the slowdown you are seeing is a result of the new
 version of ZooKeeper and how it handles IPv4/6.

 Try adding the following JVM parameter when running your tests:

 -Djava.net.preferIPv4Stack=true

 -Taylor

 On Aug 4, 2014, at 8:49 PM, Corey Nolet cjno...@gmail.com wrote:

  I'm testing some sliding window algorithms with tuples emitted from a
 mock spout based on a timer but the amount of time it takes the topology to
 fully start up and activate seems to vary from computer to computer.
 Specifically, I just updated from 0.8.2 to 0.9.2-incubating and all of my
 tests are breaking because the time to activate the topology is taking
 longer (because of Netty possibly?). I'd like to make my tests more
 resilient to things like this.
 
  Is there something I can look at in LocalCluster where I could do
 while(!notActive) { Thread.sleep(50) } ?
 
  This is what my test looks like currently:
 
StormTopology topology = buildTopology(...);
Config conf = new Config();
conf.setNumWorkers(1);
 
LocalCluster cluster = new LocalCluster();
cluster.submitTopology(getTopologyName(), conf, topology);
 
try {
  Thread.sleep(4000);
} catch (InterruptedException e) {
  e.printStackTrace();
}
 
cluster.shutdown();
 
assertEquals(4, MockSinkBolt.getEvents().size());
 
 
 
  Thanks!
 
 




Re: Good way to test when topology in local cluster is fully active

2014-08-04 Thread Vincent Russell
Corey,

Have you tried using the integration testing framework that comes with
storm?


Testing.withSimulatedTimeLocalCluster(mkClusterParam,
 new TestJob() {
@Override
public void run(ILocalCluster cluster) throws Exception {

CompleteTopologyParam completeTopologyParam = new CompleteTopologyParam();
completeTopologyParam
.setMockedSources(mockedSources);
 completeTopologyParam.setStormConf(daemonConf);

completeTopologyParam.setTopologyName(getTopologyName());
Map result = Testing.completeTopology(cluster,
 topology, completeTopologyParam);

});

-Vincent

On Mon, Aug 4, 2014 at 8:49 PM, Corey Nolet cjno...@gmail.com wrote:

 I'm testing some sliding window algorithms with tuples emitted from a mock
 spout based on a timer but the amount of time it takes the topology to
 fully start up and activate seems to vary from computer to computer.
 Specifically, I just updated from 0.8.2 to 0.9.2-incubating and all of my
 tests are breaking because the time to activate the topology is taking
 longer (because of Netty possibly?). I'd like to make my tests more
 resilient to things like this.

 Is there something I can look at in LocalCluster where I could do
 while(!notActive) { Thread.sleep(50) } ?

 This is what my test looks like currently:

   StormTopology topology = buildTopology(...);
   Config conf = new Config();
   conf.setNumWorkers(1);

   LocalCluster cluster = new LocalCluster();
   cluster.submitTopology(getTopologyName(), conf, topology);

   try {
 Thread.sleep(4000);
   } catch (InterruptedException e) {
 e.printStackTrace();
   }

   cluster.shutdown();

   assertEquals(4, MockSinkBolt.getEvents().size());



 Thanks!





Re: Good way to test when topology in local cluster is fully active

2014-08-04 Thread Corey Nolet
Oh Nice. Is this new in 0.9.*? I just updated so I haven't looked much into
what's changed yet, other than Netty.


On Mon, Aug 4, 2014 at 10:40 PM, Vincent Russell vincent.russ...@gmail.com
wrote:

 Corey,

 Have you tried using the integration testing framework that comes with
 storm?


 Testing.withSimulatedTimeLocalCluster(mkClusterParam,
  new TestJob() {
 @Override
 public void run(ILocalCluster cluster) throws Exception {

 CompleteTopologyParam completeTopologyParam = new CompleteTopologyParam();
 completeTopologyParam
 .setMockedSources(mockedSources);
  completeTopologyParam.setStormConf(daemonConf);

 completeTopologyParam.setTopologyName(getTopologyName());
 Map result = Testing.completeTopology(cluster,
  topology, completeTopologyParam);

 });

 -Vincent

 On Mon, Aug 4, 2014 at 8:49 PM, Corey Nolet cjno...@gmail.com wrote:

 I'm testing some sliding window algorithms with tuples emitted from a
 mock spout based on a timer but the amount of time it takes the topology to
 fully start up and activate seems to vary from computer to computer.
 Specifically, I just updated from 0.8.2 to 0.9.2-incubating and all of my
 tests are breaking because the time to activate the topology is taking
 longer (because of Netty possibly?). I'd like to make my tests more
 resilient to things like this.

 Is there something I can look at in LocalCluster where I could do
 while(!notActive) { Thread.sleep(50) } ?

 This is what my test looks like currently:

   StormTopology topology = buildTopology(...);
   Config conf = new Config();
   conf.setNumWorkers(1);

   LocalCluster cluster = new LocalCluster();
   cluster.submitTopology(getTopologyName(), conf, topology);

   try {
 Thread.sleep(4000);
   } catch (InterruptedException e) {
 e.printStackTrace();
   }

   cluster.shutdown();

   assertEquals(4, MockSinkBolt.getEvents().size());



 Thanks!






Re: Good way to test when topology in local cluster is fully active

2014-08-04 Thread Corey Nolet
Nevermind, I wrote that before looking. This has been around since 0.8.1.
Thanks again Vincent!


On Mon, Aug 4, 2014 at 11:01 PM, Corey Nolet cjno...@gmail.com wrote:

 Oh Nice. Is this new in 0.9.*? I just updated so I haven't looked much
 into what's changed yet, other than Netty.


 On Mon, Aug 4, 2014 at 10:40 PM, Vincent Russell 
 vincent.russ...@gmail.com wrote:

 Corey,

 Have you tried using the integration testing framework that comes with
 storm?


 Testing.withSimulatedTimeLocalCluster(mkClusterParam,
  new TestJob() {
 @Override
 public void run(ILocalCluster cluster) throws Exception {

 CompleteTopologyParam completeTopologyParam = new CompleteTopologyParam();
 completeTopologyParam
 .setMockedSources(mockedSources);
  completeTopologyParam.setStormConf(daemonConf);

 completeTopologyParam.setTopologyName(getTopologyName());
 Map result = Testing.completeTopology(cluster,
  topology, completeTopologyParam);

 });

 -Vincent

  On Mon, Aug 4, 2014 at 8:49 PM, Corey Nolet cjno...@gmail.com wrote:

 I'm testing some sliding window algorithms with tuples emitted from a
 mock spout based on a timer but the amount of time it takes the topology to
 fully start up and activate seems to vary from computer to computer.
 Specifically, I just updated from 0.8.2 to 0.9.2-incubating and all of my
 tests are breaking because the time to activate the topology is taking
 longer (because of Netty possibly?). I'd like to make my tests more
 resilient to things like this.

 Is there something I can look at in LocalCluster where I could do
 while(!notActive) { Thread.sleep(50) } ?

 This is what my test looks like currently:

   StormTopology topology = buildTopology(...);
   Config conf = new Config();
   conf.setNumWorkers(1);

   LocalCluster cluster = new LocalCluster();
   cluster.submitTopology(getTopologyName(), conf, topology);

   try {
 Thread.sleep(4000);
   } catch (InterruptedException e) {
 e.printStackTrace();
   }

   cluster.shutdown();

   assertEquals(4, MockSinkBolt.getEvents().size());



 Thanks!







Re: Good way to test when topology in local cluster is fully active

2014-08-04 Thread Vincent Russell
No worries.  I haven't found the testing framework the easiest thing to
use.  If you see errors that say something like cannot convert object to
iterable I use the code below to disable storm from being able to call
System.exit()

   private static class ExitTrappedException extends SecurityException {
}

private static void forbidSystemExitCall() {
final SecurityManager securityManager = new SecurityManager() {
public void checkPermission(Permission permission) {
if (permission.getName().startsWith(exitVM)) {
throw new ExitTrappedException();
}
}
};
System.setSecurityManager(securityManager);
}

private static void enableSystemExitCall() {
System.setSecurityManager(null);
}


On Mon, Aug 4, 2014 at 11:02 PM, Corey Nolet cjno...@gmail.com wrote:

 Nevermind, I wrote that before looking. This has been around since 0.8.1.
 Thanks again Vincent!


 On Mon, Aug 4, 2014 at 11:01 PM, Corey Nolet cjno...@gmail.com wrote:

 Oh Nice. Is this new in 0.9.*? I just updated so I haven't looked much
 into what's changed yet, other than Netty.


 On Mon, Aug 4, 2014 at 10:40 PM, Vincent Russell 
 vincent.russ...@gmail.com wrote:

 Corey,

 Have you tried using the integration testing framework that comes with
 storm?


 Testing.withSimulatedTimeLocalCluster(mkClusterParam,
  new TestJob() {
 @Override
 public void run(ILocalCluster cluster) throws Exception {

 CompleteTopologyParam completeTopologyParam = new
 CompleteTopologyParam();
 completeTopologyParam
 .setMockedSources(mockedSources);
  completeTopologyParam.setStormConf(daemonConf);

 completeTopologyParam.setTopologyName(getTopologyName());
 Map result = Testing.completeTopology(cluster,
  topology, completeTopologyParam);

 });

 -Vincent

  On Mon, Aug 4, 2014 at 8:49 PM, Corey Nolet cjno...@gmail.com wrote:

 I'm testing some sliding window algorithms with tuples emitted from a
 mock spout based on a timer but the amount of time it takes the topology to
 fully start up and activate seems to vary from computer to computer.
 Specifically, I just updated from 0.8.2 to 0.9.2-incubating and all of my
 tests are breaking because the time to activate the topology is taking
 longer (because of Netty possibly?). I'd like to make my tests more
 resilient to things like this.

 Is there something I can look at in LocalCluster where I could do
 while(!notActive) { Thread.sleep(50) } ?

 This is what my test looks like currently:

   StormTopology topology = buildTopology(...);
   Config conf = new Config();
   conf.setNumWorkers(1);

   LocalCluster cluster = new LocalCluster();
   cluster.submitTopology(getTopologyName(), conf, topology);

   try {
 Thread.sleep(4000);
   } catch (InterruptedException e) {
 e.printStackTrace();
   }

   cluster.shutdown();

   assertEquals(4, MockSinkBolt.getEvents().size());



 Thanks!