Exemple #1
0
    def test_constructor(self):
        builder = TopologyBuilder("WordCount")
        self.assertEqual(builder.topology_name, "WordCount")

        with self.assertRaises(AssertionError):
            TopologyBuilder("Topology")

        with self.assertRaises(AssertionError):
            TopologyBuilder(123)

        with self.assertRaises(AssertionError):
            TopologyBuilder(None)
Exemple #2
0
    def test_add_spec(self):
        builder = TopologyBuilder("Test")

        with self.assertRaises(ValueError):
            builder.add_spec(HeronComponentSpec(None, "path", True, 1))

        with self.assertRaises(TypeError):
            builder.add_spec(None)

        self.assertEqual(len(builder._specs), 0)

        # add 10 specs
        specs = []
        for i in range(10):
            specs.append(HeronComponentSpec(str(i), "path", True, 1))
        builder.add_spec(*specs)
        self.assertEqual(len(builder._specs), 10)
Exemple #3
0
 def run(self, name, config=None):
     """Runs the Streamlet. This is run as a Heron python topology under the name
    'name'. The config attached is passed on to this Heron topology
    Once submitted, run returns immediately
 """
     if name is None or not isinstance(name, str):
         raise RuntimeError("Job Name has to be a string")
     bldr = TopologyBuilder(name=name)
     stage_names = {}
     bldr = self._build(bldr, stage_names)
     if config is not None:
         if not isinstance(config, dict):
             raise RuntimeError("config has to be a dict")
         bldr.set_config(config)
     bldr.build_and_submit()
import heron.api.src.python.api_constants as constants
from heron.api.src.python.topology import TopologyBuilder
from heron.api.src.python.streams import Grouping

from heron.examples.src.python.spout import WordSpout
from heron.examples.src.python.bolt import HalfAckBolt

# Topology is defined using a topology builder
# Refer to multi_stream_topology for defining a topology by subclassing Topology
if __name__ == '__main__':
  if len(sys.argv) != 2:
    print "Topology's name is not specified"
    sys.exit(1)

  builder = TopologyBuilder(name=sys.argv[1])

  word_spout = builder.add_spout("word_spout", WordSpout, par=2)
  half_ack_bolt = builder.add_bolt("half_ack_bolt", HalfAckBolt, par=2,
                                   inputs={word_spout: Grouping.fields('word')},
                                   config={constants.TOPOLOGY_TICK_TUPLE_FREQ_SECS: 10})

  topology_config = {constants.TOPOLOGY_RELIABILITY_MODE:
                     constants.TopologyReliabilityMode.ATLEAST_ONCE,
                     constants.TOPOLOGY_MAX_SPOUT_PENDING: 100000000,
                     constants.TOPOLOGY_MESSAGE_TIMEOUT_SECS: 300}

  builder.set_config(topology_config)

  builder.build_and_submit()
Exemple #5
0
'''Example WindowSizeTopology'''
import sys

import heron.api.src.python.api_constants as constants
from heron.api.src.python.topology import TopologyBuilder
from heron.api.src.python.stream import Grouping
from heron.api.src.python.bolt.window_bolt import SlidingWindowBolt
from heron.examples.src.python.spout import WordSpout
from heron.examples.src.python.bolt import WindowSizeBolt

# Topology is defined using a topology builder
# Refer to multi_stream_topology for defining a topology by subclassing Topology
if __name__ == '__main__':
  if len(sys.argv) != 2:
    print "Topology's name is not specified"
    sys.exit(1)

  builder = TopologyBuilder(name=sys.argv[1])

  word_spout = builder.add_spout("word_spout", WordSpout, par=2)
  count_bolt = builder.add_bolt("count_bolt", WindowSizeBolt, par=2,
                                inputs={word_spout: Grouping.fields('word')},
                                config={SlidingWindowBolt.WINDOW_DURATION_SECS: 10,
                                        SlidingWindowBolt.WINDOW_SLIDEINTERVAL_SECS: 2})

  topology_config = {constants.TOPOLOGY_RELIABILITY_MODE:
                         constants.TopologyReliabilityMode.ATLEAST_ONCE}
  builder.set_config(topology_config)

  builder.build_and_submit()