Esempio n. 1
0
 def test_read_message_unicode(self):
     inputs = [  # Task IDs
         '[12, 22, 24]\n',
         'end\n',
         # Incoming Tuple for bolt
         ('{ "id": "-6955786537413359385", "comp": "1", "stream": "1"'
          ', "task": 9, "tuple": ["snow white \uFFE6 the seven dwarfs"'
          ', "field2", 3]}\n'),
         'end\n',
         # next command for spout
         '{"command": "next"}\n',
         'end\n',
         # empty message, which should trigger sys.exit (end ignored)
         '',
         ''
     ]
     outputs = [json.loads(msg) for msg in inputs[::2] if msg]
     outputs.append('')
     component = Component(input_stream=BytesIO(
         ''.join(inputs).encode('utf8')),
                           output_stream=BytesIO())
     for output in outputs:
         log.info('Checking msg for %r', output)
         if output:
             msg = component.read_message()
             self.assertEqual(output, msg)
         else:
             with self.assertRaises(StormWentAwayError):
                 component.read_message()
Esempio n. 2
0
    def test_read_split_message(self):
        # Make sure we can read something that's broken up into many "lines"
        inputs = [
            '{ "id": "-6955786537413359385", ', '"comp": "1", "stream": "1"\n',
            '\n', ', "task": 9, "tuple": ["snow white and the seven dwarfs", ',
            '"field2", 3]}\n', 'end\n'
        ]
        output = json.loads(''.join(inputs[:-1]))

        component = Component(input_stream=BytesIO(
            ''.join(inputs).encode('utf-8')),
                              output_stream=BytesIO())
        msg = component.read_message()
        self.assertEqual(output, msg)
Esempio n. 3
0
 def test_read_message(self):
     inputs = [# Task IDs
               '[12, 22, 24]\n', 'end\n',
               # Incoming Tuple for bolt
               ('{ "id": "-6955786537413359385", "comp": "1", "stream": "1"'
                ', "task": 9, "tuple": ["snow white and the seven dwarfs", '
                '"field2", 3]}\n'), 'end\n',
               # next command for spout
               '{"command": "next"}\n', 'end\n',
               # empty message, which should trigger sys.exit (end ignored)
               '', '']
     outputs = [json.loads(msg) for msg in inputs[::2] if msg]
     outputs.append('')
     component = Component(input_stream=BytesIO(''.join(inputs).encode('utf-8')),
                           output_stream=BytesIO())
     for output in outputs:
         log.info('Checking msg for %r', output)
         if output:
             msg = component.read_message()
             self.assertEqual(output, msg)
         else:
             with self.assertRaises(StormWentAwayError):
                 component.read_message()
Esempio n. 4
0
    def test_read_split_message(self):
        # Make sure we can read something that's broken up into many "lines"
        inputs = ['{ "id": "-6955786537413359385", ',
                  '"comp": "1", "stream": "1"\n',
                  '\n',
                  ', "task": 9, "tuple": ["snow white and the seven dwarfs", ',
                  '"field2", 3]}\n',
                  'end\n']
        output = json.loads(''.join(inputs[:-1]))

        component = Component(input_stream=BytesIO(''.join(inputs).encode('utf-8')),
                              output_stream=BytesIO())
        msg = component.read_message()
        self.assertEqual(output, msg)