예제 #1
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)
예제 #2
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.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)
예제 #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()

        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)
예제 #4
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)