       loader.registerComponent 'wirepattern', 'Merge', wirePatternMerge
       loader.registerComponent 'process', 'Async', processAsync
       loader.registerComponent 'process', 'Merge', processMerge
+      loader.registerComponent 'process', 'Generator', processGenerator
       loader.registerComponent 'legacy', 'Sync', legacyBasic
       done()
 

        in2.connect()
        in2.send 'foo'
        in2.disconnect()

    output.sendDone
      out: "1#{first}:2#{second}:#{c.nodeId}"

processGenerator = ->
  c = new noflo.Component
  c.inPorts.add 'start',
    datatype: 'bang'
  c.inPorts.add 'stop',
    datatype: 'bang'
  c.outPorts.add 'out',
    datatype: 'bang'
  c.autoOrdering = false

  cleanUp = ->
    clearInterval c.timer.interval
    c.timer.deactivate()
    c.timer = null

  c.process (input, output, context) ->
    if input.hasData 'start'
      cleanUp() if c.timer
      input.getData 'start'
      c.timer = context
      c.timer.interval = setInterval ->
        output.send out: true
      , 100
    if input.hasData 'stop'
      input.getData 'stop'
      return output.done() unless c.timer
      cleanUp()
      output.done()

  baseShutdown = c.shutdown.bind c
  c.shutdown = ->
    cleanUp() if c.timer
    do baseShutdown

  c

describe 'Network Lifecycle', ->
  loader = null
  before (done) ->
