def test_transform(self):
        config = self.get_standard_config()
        sub = SubmitterApp(config)
        sub._setup_source_and_destination()

        crash_id = '86b58ff2-9708-487d-bfc4-9dac32121214'

        fake_raw_crash = DotDict()
        mocked_get_raw_crash = mock.Mock(return_value=fake_raw_crash)
        sub.source.get_raw_crash = mocked_get_raw_crash

        fake_dump = {'upload_file_minidump': 'fake dump'}
        mocked_get_raw_dumps_as_files = mock.Mock(return_value=fake_dump)
        sub.source.get_raw_dumps_as_files = mocked_get_raw_dumps_as_files

        sub.destination.save_raw_crash = mock.Mock()

        sub.transform(crash_id)
        sub.source.get_raw_crash.assert_called_with(crash_id)
        sub.source.get_raw_dumps_as_files.assert_called_with(crash_id)
        sub.destination.save_raw_crash_with_file_dumps.assert_called_with(
            fake_raw_crash,
            fake_dump,
            crash_id
        )
示例#2
0
    def test_transform(self):
        config = self.get_standard_config()
        sub = SubmitterApp(config)
        sub._setup_source_and_destination()

        crash_id = '86b58ff2-9708-487d-bfc4-9dac32121214'

        fake_raw_crash = DotDict()
        mocked_get_raw_crash = mock.Mock(return_value=fake_raw_crash)
        sub.source.get_raw_crash = mocked_get_raw_crash

        fake_dump = {'upload_file_minidump': 'fake dump'}
        mocked_get_raw_dumps_as_files = mock.Mock(return_value=fake_dump)
        sub.source.get_raw_dumps_as_files = mocked_get_raw_dumps_as_files

        sub.destination.save_raw_crash = mock.Mock()

        sub.transform(crash_id)
        sub.source.get_raw_crash.assert_called_with(crash_id)
        sub.source.get_raw_dumps_as_files.assert_called_with(crash_id)
        sub.destination.save_raw_crash_with_file_dumps.assert_called_with(
            fake_raw_crash,
            fake_dump,
            crash_id
        )
示例#3
0
    def test_source_iterator(self):

        # Test with number of submissions equal to all
        # It raises StopIterations after all the elements were called
        config = self.get_standard_config()
        config.submitter.number_of_submissions = "all"
        sub = SubmitterApp(config)
        sub._setup_source_and_destination()
        sub._setup_task_manager()
        itera = sub.source_iterator()

        sequence_generator = sequencer(1, 2, 3)
        sub.source.new_crashes = mock.Mock(side_effect=sequence_generator)

        eq_(itera.next(), ((1,), {}))
        eq_(itera.next(), ((2,), {}))
        eq_(itera.next(), ((3,), {}))
        assert_raises(StopIteration, itera.next)

        # Test with number of submissions equal to forever
        # It never raises StopIterations
        config = self.get_standard_config()
        config.submitter.number_of_submissions = "forever"
        sub = SubmitterApp(config)
        sub._setup_source_and_destination()
        itera = sub.source_iterator()

        sequence_generator = sequencer(1, 2, 3)
        sub.source.new_crashes = mock.Mock(side_effect=sequence_generator)

        eq_(itera.next(), ((1,), {}))
        eq_(itera.next(), ((2,), {}))
        eq_(itera.next(), ((3,), {}))
        eq_(itera.next(), ((1,), {}))
        eq_(itera.next(), ((2,), {}))
        eq_(itera.next(), ((3,), {}))

        # Test with number of submissions equal to an integer > number of items
        # It raises StopIterations after some number of elements were called
        config = self.get_standard_config()
        config.submitter.number_of_submissions = "5"
        sub = SubmitterApp(config)
        sub._setup_source_and_destination()
        sub._setup_task_manager()
        itera = sub.source_iterator()

        sequence_generator = sequencer(1, 2, 3)
        sub.source.new_crashes = mock.Mock(side_effect=sequence_generator)

        eq_(itera.next(), ((1,), {}))
        eq_(itera.next(), ((2,), {}))
        eq_(itera.next(), ((3,), {}))
        eq_(itera.next(), ((1,), {}))
        eq_(itera.next(), ((2,), {}))
        assert_raises(StopIteration, itera.next)

        # Test with number of submissions equal to an integer < number of items
        # It raises StopIterations after some number of elements were called
        config = self.get_standard_config()
        config.submitter.number_of_submissions = "1"
        sub = SubmitterApp(config)
        sub._setup_source_and_destination()
        sub._setup_task_manager()
        itera = sub.source_iterator()

        sequence_generator = sequencer(1, 2, 3)
        sub.source.new_crashes = mock.Mock(side_effect=sequence_generator)

        eq_(itera.next(), ((1,), {}))
        assert_raises(StopIteration, itera.next)
    def test_source_iterator(self):

        # Test with number of submissions equal to all
        # It raises StopIterations after all the elements were called
        config = self.get_standard_config()
        config.submitter.number_of_submissions = "all"
        sub = SubmitterApp(config)
        sub._setup_source_and_destination()
        sub._setup_task_manager()

        sub.source.new_crashes = lambda: iter([1, 2, 3])
        itera = sub.source_iterator()

        eq_(itera.next(), ((1, ), {}))
        eq_(itera.next(), ((2, ), {}))
        eq_(itera.next(), ((3, ), {}))
        assert_raises(StopIteration, itera.next)

        # Test with number of submissions equal to forever
        # It never raises StopIterations
        config = self.get_standard_config()
        config.submitter.number_of_submissions = "forever"
        sub = SubmitterApp(config)
        sub._setup_source_and_destination()
        itera = sub.source_iterator()

        sub.source.new_crashes = lambda: iter([1, 2, 3])

        eq_(itera.next(), ((1, ), {}))
        eq_(itera.next(), ((2, ), {}))
        eq_(itera.next(), ((3, ), {}))
        eq_(itera.next(), ((1, ), {}))
        eq_(itera.next(), ((2, ), {}))
        eq_(itera.next(), ((3, ), {}))

        # Test with number of submissions equal to an integer > number of items
        # It raises StopIterations after some number of elements were called
        config = self.get_standard_config()
        config.submitter.number_of_submissions = "5"
        sub = SubmitterApp(config)
        sub._setup_source_and_destination()
        sub._setup_task_manager()
        itera = sub.source_iterator()

        sub.source.new_crashes = lambda: iter([1, 2, 3])

        eq_(itera.next(), ((1, ), {}))
        eq_(itera.next(), ((2, ), {}))
        eq_(itera.next(), ((3, ), {}))
        eq_(itera.next(), ((1, ), {}))
        eq_(itera.next(), ((2, ), {}))
        assert_raises(StopIteration, itera.next)

        # Test with number of submissions equal to an integer < number of items
        # It raises StopIterations after some number of elements were called
        config = self.get_standard_config()
        config.submitter.number_of_submissions = "1"
        sub = SubmitterApp(config)
        sub._setup_source_and_destination()
        sub._setup_task_manager()
        itera = sub.source_iterator()

        sub.source.new_crashes = lambda: iter([1, 2, 3])

        eq_(itera.next(), ((1, ), {}))
        assert_raises(StopIteration, itera.next)
 def test_setup(self):
     config = self.get_standard_config()
     sub = SubmitterApp(config)
     eq_(sub.config, config)
     eq_(sub.config.logger, config.logger)
    def test_new_crash_source_iterator(self):

        # Test with number of submissions equal to all
        # It raises StopIterations after all the elements were called
        config = self.get_new_crash_source_config()
        config.number_of_submissions = "all"
        sub = SubmitterApp(config)
        sub._setup_source_and_destination()
        sub._setup_task_manager()

        config.new_crash_source.new_crash_source_class.return_value \
            .new_crashes = lambda: iter([1, 2, 3])
        itera = sub.source_iterator()

        eq_(itera.next(), ((1,), {}))
        eq_(itera.next(), ((2,), {}))
        eq_(itera.next(), ((3,), {}))
        assert_raises(StopIteration, itera.next)

        # Test with number of submissions equal to forever
        # It never raises StopIterations
        config = self.get_new_crash_source_config()
        config.number_of_submissions = "forever"
        sub = SubmitterApp(config)
        sub._setup_source_and_destination()
        sub._setup_task_manager()
        itera = sub.source_iterator()

        # setup a fake iter using two form of the data to ensure it deals
        # with both forms correctly.
        config.new_crash_source.new_crash_source_class.return_value \
            .new_crashes = lambda: iter([1, ((2, ), {}), 3])

        eq_(itera.next(), ((1,), {}))
        eq_(itera.next(), ((2,), {}))
        eq_(itera.next(), ((3,), {}))
        eq_(itera.next(), ((1,), {}))
        eq_(itera.next(), ((2,), {}))
        eq_(itera.next(), ((3,), {}))

        # Test with number of submissions equal to an integer > number of items
        # It raises StopIterations after some number of elements were called
        config = self.get_new_crash_source_config()
        config.number_of_submissions = "5"
        sub = SubmitterApp(config)
        sub._setup_source_and_destination()
        sub._setup_task_manager()
        itera = sub.source_iterator()

        config.new_crash_source.new_crash_source_class.return_value \
            .new_crashes = lambda: iter([((1, ), {'finished_func': 1,}), 2, 3])

        eq_(itera.next(), ((1,), {'finished_func': 1,}))
        eq_(itera.next(), ((2,), {}))
        eq_(itera.next(), ((3,), {}))
        eq_(itera.next(), ((1,), {'finished_func': 1,}))
        eq_(itera.next(), ((2,), {}))
        assert_raises(StopIteration, itera.next)

        # Test with number of submissions equal to an integer < number of items
        # It raises StopIterations after some number of elements were called
        config = self.get_new_crash_source_config()
        config.number_of_submissions = "1"
        sub = SubmitterApp(config)
        sub._setup_source_and_destination()
        sub._setup_task_manager()
        itera = sub.source_iterator()

        config.new_crash_source.new_crash_source_class.return_value \
            .new_crashes = lambda: iter([1, 2, 3])

        eq_(itera.next(), ((1,), {}))
        assert_raises(StopIteration, itera.next)

        # Test with number of submissions equal to an integer < number of items
        # AND the new_crashes iter returning an args, kwargs form rather than
        # than a crash_id
        # It raises StopIterations after some number of elements were called
        config = self.get_new_crash_source_config()
        config.number_of_submissions = "2"
        sub = SubmitterApp(config)
        sub._setup_source_and_destination()
        sub._setup_task_manager()
        itera = sub.source_iterator()

        config.new_crash_source.new_crash_source_class.return_value \
            .new_crashes = lambda: iter(
                [
                    (((1, ['./1.json', './1.dump', './1.other.dump']), ), {}),
                    (((2, ['./2.json', './1.dump']), ), {})
                ]
            )

        eq_(
            itera.next(),
            (((1, ['./1.json', './1.dump', './1.other.dump']), ), {})
        )
        eq_(
            itera.next(),
            (((2, ['./2.json', './1.dump']), ), {})
        )
        assert_raises(StopIteration, itera.next)
示例#7
0
    def test_new_crash_source_iterator(self):

        # Test with number of submissions equal to all
        # It raises StopIterations after all the elements were called
        config = self.get_new_crash_source_config()
        config.submitter.number_of_submissions = "all"
        sub = SubmitterApp(config)
        sub._setup_source_and_destination()
        sub._setup_task_manager()

        config.new_crash_source.new_crash_source_class.return_value \
            .new_crashes = lambda: iter([1, 2, 3])
        itera = sub.source_iterator()

        eq_(itera.next(), ((1, ), {}))
        eq_(itera.next(), ((2, ), {}))
        eq_(itera.next(), ((3, ), {}))
        assert_raises(StopIteration, itera.next)

        # Test with number of submissions equal to forever
        # It never raises StopIterations
        config = self.get_new_crash_source_config()
        config.submitter.number_of_submissions = "forever"
        sub = SubmitterApp(config)
        sub._setup_source_and_destination()
        itera = sub.source_iterator()

        # setup a fake iter using two form of the data to ensure it deals
        # with both forms correctly.
        config.new_crash_source.new_crash_source_class.return_value \
            .new_crashes = lambda: iter([1, ((2, ), {}), 3])

        eq_(itera.next(), ((1, ), {}))
        eq_(itera.next(), ((2, ), {}))
        eq_(itera.next(), ((3, ), {}))
        eq_(itera.next(), ((1, ), {}))
        eq_(itera.next(), ((2, ), {}))
        eq_(itera.next(), ((3, ), {}))

        # Test with number of submissions equal to an integer > number of items
        # It raises StopIterations after some number of elements were called
        config = self.get_new_crash_source_config()
        config.submitter.number_of_submissions = "5"
        sub = SubmitterApp(config)
        sub._setup_source_and_destination()
        sub._setup_task_manager()
        itera = sub.source_iterator()

        config.new_crash_source.new_crash_source_class.return_value \
            .new_crashes = lambda: iter([((1, ), {'finished_func': 1,}), 2, 3])

        eq_(itera.next(), ((1, ), {
            'finished_func': 1,
        }))
        eq_(itera.next(), ((2, ), {}))
        eq_(itera.next(), ((3, ), {}))
        eq_(itera.next(), ((1, ), {
            'finished_func': 1,
        }))
        eq_(itera.next(), ((2, ), {}))
        assert_raises(StopIteration, itera.next)

        # Test with number of submissions equal to an integer < number of items
        # It raises StopIterations after some number of elements were called
        config = self.get_new_crash_source_config()
        config.submitter.number_of_submissions = "1"
        sub = SubmitterApp(config)
        sub._setup_source_and_destination()
        sub._setup_task_manager()
        itera = sub.source_iterator()

        config.new_crash_source.new_crash_source_class.return_value \
            .new_crashes = lambda: iter([1, 2, 3])

        eq_(itera.next(), ((1, ), {}))
        assert_raises(StopIteration, itera.next)