def test_withaction(self):
     # set up http server
     TCPServer.allow_reuse_address = True
     http_server = TCPServer(('127.0.0.1', 8090), TCPAcceptHandler)
     http_server.last_payload = b''
     server_thread = threading.Thread(target=http_server.serve_forever)
     server_thread.daemon = True
     server_thread.start()
     print('http server started')
     # set up the forwarder
     fw = forwarder.Forwarder(path='tests/test.config.json')
     fw.connect()
     fw.start()
     time.sleep(1)
     print('forwarder started')
     # create a MQTT client to publish events
     client = mqtt.Client()
     client.connect('127.0.0.1', 1883)
     payload = 'foo'
     client.publish('hello/world', payload=payload)
     print('mqtt client published')
     time.sleep(1)
     self.assertEqual(payload, http_server.last_payload)
     client.disconnect()
     print('mqtt client disconnected')
     fw.stop()
     print('forwarder stopped')
     http_server.shutdown()
     print('httpserver shut down')
     http_server.server_close()
     print('http server stopped')
     self.assertTrue(True)