def METHOD_NAME(self):
    """Tests PubSub with subprocesses.
    PubSub is launched on the main process.
    A subprocess (writer) publishes a message, while another subprocess (reader) is waiting for this message.
    The reader should receive the message and send it to the main process.
    """
    def worker_reader(pubsub, out_queue):
        """Subscribes, wait for a message with the subscription, and return the message on 'out_queue'."""
        channel = pubsub.subscribe("main.worker")
        # notify main process that the worker started
        out_queue.put("started")
        out_queue.put(channel.get())
        pubsub.unsubscribe(channel)
        # done
        return
    def worker_writer(pubsub, publisher):
        subpub = publisher.SubPublisher("worker") # worker submodule of main
        subpub.publish("hello there", "")
        return
    # expected message to receive
    msg = PubSubMessage("hello there", "main.worker")
    publisher = self.pubsub.Publisher("main")
    out_queue = multiprocessing.Queue()
    reader = multiprocessing.Process(
        target=worker_reader, args=(self.pubsub, out_queue,))
    reader.start()
    out_queue.get()  # waiting for the process to start and send a notification
    writer = multiprocessing.Process(
        target=worker_writer, args=(self.pubsub, publisher))
    writer.start()
    got = out_queue.get()
    self.assertEqual(str(got), str(msg))
    reader.join()
    writer.join()