コード例 #1
0
    def testCompletedWithBuildbucket(self):
        """Tests Completed returns proper bool with Buildbucket."""
        buildbucket_id_dict = {'build1': 'id_1', 'build2': 'id_2'}
        statusNotCompleted = {
            'build1': {
                'status': constants.BUILDBUCKET_BUILDER_STATUS_STARTED,
                'result': None
            },
            'build2': {
                'status': constants.BUILDBUCKET_BUILDER_STATUS_COMPLETED,
                'result': constants.BUILDBUCKET_BUILDER_RESULT_SUCCESS
            }
        }
        statusCompleted = {
            'build1': {
                'status': constants.BUILDBUCKET_BUILDER_STATUS_COMPLETED,
                'result': constants.BUILDBUCKET_BUILDER_RESULT_SUCCESS
            },
            'build2': {
                'status': constants.BUILDBUCKET_BUILDER_STATUS_COMPLETED,
                'result': constants.BUILDBUCKET_BUILDER_RESULT_FAILURE
            }
        }
        builders_array = ['build1', 'build2', 'not_scheduled_build']
        slaveStatusNotCompleted = manifest_version.SlaveStatus(
            statusNotCompleted, datetime.datetime.now(), builders_array, set(),
            buildbucket_id_dict)
        slaveStatusCompleted = manifest_version.SlaveStatus(
            statusCompleted, datetime.datetime.now(), builders_array, set(),
            buildbucket_id_dict)

        self.assertFalse(slaveStatusNotCompleted.Completed())
        self.assertTrue(slaveStatusCompleted.Completed())
コード例 #2
0
    def testShouldFailForStartTimeoutFalseNotCompletedWithBuildbucket(self):
        """Tests that ShouldWait doesn't fail with Buildbucket.

    With Buildbucket, make sure that we don't fail if there are missing builders
    and we're checking after the timeout but the other builders haven't
    completed.
    """
        buildbucket_id_dict = {
            'build1': 'id_1',
            'build2': 'id_2',
        }
        status = {
            'build1': {
                'status': constants.BUILDBUCKET_BUILDER_STATUS_STARTED,
                'result': None
            },
        }
        start_time = datetime.datetime.now()
        builders_array = ['build1', 'build2']
        slaveStatus = manifest_version.SlaveStatus(status,
                                                   start_time, builders_array,
                                                   set(), buildbucket_id_dict)
        check_time = start_time + datetime.timedelta(
            minutes=slaveStatus.BUILDER_START_TIMEOUT + 1)

        self.assertFalse(
            slaveStatus.ShouldFailForBuilderStartTimeout(check_time))
コード例 #3
0
    def testGetCompleted(self):
        """Tests GetCompleted returns the right builders that have completed."""
        status = {
            'passed': constants.BUILDER_STATUS_PASSED,
            'failed': constants.BUILDER_STATUS_FAILED,
            'aborted': constants.BUILDER_STATUS_ABORTED,
            'skipped': constants.BUILDER_STATUS_SKIPPED,
            'forgiven': constants.BUILDER_STATUS_FORGIVEN,
            'inflight': constants.BUILDER_STATUS_INFLIGHT,
            'missing': constants.BUILDER_STATUS_MISSING,
            'planned': constants.BUILDER_STATUS_PLANNED
        }
        builders_array = [
            'passed', 'failed', 'aborted', 'skipped', 'forgiven', 'inflight',
            'missing', 'planning'
        ]
        previous_completed = set(['passed'])
        expected_completed = set(
            ['passed', 'failed', 'aborted', 'skipped', 'forgiven'])
        slaveStatus = manifest_version.SlaveStatus(status,
                                                   datetime.datetime.now(),
                                                   builders_array,
                                                   previous_completed)

        self.assertEqual(slaveStatus.GetCompleted(), expected_completed)
        self.assertEqual(slaveStatus.previous_completed, expected_completed)
コード例 #4
0
    def testShouldFailForBuilderStartTimeoutTrueWithBuildbucket(self):
        """Tests that ShouldFailForBuilderStartTimeout says fail when it should."""
        buildbucket_id_dict = {
            'build1': 'id_1',
            'build2': 'id_2',
        }
        status = {
            'build1': {
                'status': constants.BUILDBUCKET_BUILDER_STATUS_SCHEDULED,
                'result': None
            },
            'build2': {
                'status': constants.BUILDBUCKET_BUILDER_STATUS_COMPLETED,
                'result': constants.BUILDBUCKET_BUILDER_RESULT_SUCCESS
            }
        }

        start_time = datetime.datetime.now()
        builders_array = ['build1', 'build2']
        slaveStatus = manifest_version.SlaveStatus(status,
                                                   start_time, builders_array,
                                                   set(), buildbucket_id_dict)
        check_time = start_time + datetime.timedelta(
            minutes=slaveStatus.BUILDER_START_TIMEOUT + 1)

        self.assertTrue(
            slaveStatus.ShouldFailForBuilderStartTimeout(check_time))
コード例 #5
0
    def testShouldFailForBuilderStartTimeoutFalseTooEarlyWithBuildbucket(self):
        """Tests that ShouldFailForBuilderStartTimeout doesn't fail.

    With Buildbucket, make sure that we don't fail if there are missing
    builders but we're checking before the timeout and the other builders
    have completed.
    """
        buildbucket_id_dict = {
            'build1': 'id_1',
            'build2': 'id_2',
        }
        status = {
            'build2': {
                'status': constants.BUILDBUCKET_BUILDER_STATUS_COMPLETED,
                'result': constants.BUILDBUCKET_BUILDER_RESULT_SUCCESS
            }
        }

        start_time = datetime.datetime.now()
        builders_array = ['build1', 'build2']
        slaveStatus = manifest_version.SlaveStatus(status,
                                                   start_time, builders_array,
                                                   set(), buildbucket_id_dict)

        self.assertFalse(
            slaveStatus.ShouldFailForBuilderStartTimeout(start_time))
コード例 #6
0
    def testCompleted(self):
        """Tests Completed returns proper bool."""
        statusNotCompleted = {
            'build1': constants.BUILDER_STATUS_FAILED,
            'build2': constants.BUILDER_STATUS_INFLIGHT
        }
        statusCompleted = {
            'build1': constants.BUILDER_STATUS_FAILED,
            'build2': constants.BUILDER_STATUS_PASSED
        }
        builders_array = ['build1', 'build2']
        slaveStatusNotCompleted = manifest_version.SlaveStatus(
            statusNotCompleted, datetime.datetime.now(), builders_array, set())
        slaveStatusCompleted = manifest_version.SlaveStatus(
            statusCompleted, datetime.datetime.now(), builders_array, set())

        self.assertFalse(slaveStatusNotCompleted.Completed())
        self.assertTrue(slaveStatusCompleted.Completed())
コード例 #7
0
    def testShouldWaitMissingBuilder(self):
        """Tests that ShouldWait says no waiting because a builder is missing."""
        status = {'build1': constants.BUILDER_STATUS_FAILED}
        builders_array = ['build1', 'build2']
        start_time = datetime.datetime.now() - datetime.timedelta(hours=1)
        slaveStatus = manifest_version.SlaveStatus(status, start_time,
                                                   builders_array, set())

        self.assertFalse(slaveStatus.ShouldWait())
コード例 #8
0
    def testShouldFailForBuilderStartTimeoutTrue(self):
        """Tests that ShouldFailForBuilderStartTimeout says fail when it should."""
        status = {'build1': constants.BUILDER_STATUS_FAILED}
        start_time = datetime.datetime.now()
        builders_array = ['build1', 'build2']
        slaveStatus = manifest_version.SlaveStatus(status, start_time,
                                                   builders_array, set())
        check_time = start_time + datetime.timedelta(
            minutes=slaveStatus.BUILDER_START_TIMEOUT + 1)

        self.assertTrue(
            slaveStatus.ShouldFailForBuilderStartTimeout(check_time))
コード例 #9
0
    def testGetMissing(self):
        """Tests GetMissing returns the missing builders."""
        status = {
            'build1': constants.BUILDER_STATUS_FAILED,
            'build2': constants.BUILDER_STATUS_INFLIGHT
        }
        builders_array = ['build1', 'build2', 'missing_builder']
        slaveStatus = manifest_version.SlaveStatus(status,
                                                   datetime.datetime.now(),
                                                   builders_array, set())

        self.assertEqual(slaveStatus.GetMissing(), ['missing_builder'])
コード例 #10
0
    def testShouldWaitBuildersStillBuilding(self):
        """Tests that ShouldWait says to wait because builders still building."""
        status = {
            'build1': constants.BUILDER_STATUS_INFLIGHT,
            'build2': constants.BUILDER_STATUS_FAILED
        }
        builders_array = ['build1', 'build2']
        slaveStatus = manifest_version.SlaveStatus(status,
                                                   datetime.datetime.now(),
                                                   builders_array, set())

        self.assertTrue(slaveStatus.ShouldWait())
コード例 #11
0
    def testShouldWaitAllBuildersCompleted(self):
        """Tests that ShouldWait says no waiting because all builders finished."""
        status = {
            'build1': constants.BUILDER_STATUS_FAILED,
            'build2': constants.BUILDER_STATUS_PASSED
        }
        builders_array = ['build1', 'build2']
        slaveStatus = manifest_version.SlaveStatus(status,
                                                   datetime.datetime.now(),
                                                   builders_array, set())

        self.assertFalse(slaveStatus.ShouldWait())
コード例 #12
0
    def testGetMissingNone(self):
        """Tests GetMissing returns nothing when all builders are accounted for."""
        status = {
            'build1': constants.BUILDER_STATUS_FAILED,
            'build2': constants.BUILDER_STATUS_INFLIGHT
        }
        builders_array = ['build1', 'build2']
        slaveStatus = manifest_version.SlaveStatus(status,
                                                   datetime.datetime.now(),
                                                   builders_array, set())

        self.assertEqual(slaveStatus.GetMissing(), [])
コード例 #13
0
    def testShouldFailForBuilderStartTimeoutFalseTooEarly(self):
        """Tests that ShouldFailForBuilderStartTimeout doesn't fail.

    Make sure that we don't fail if there are missing builders but we're
    checking before the timeout and the other builders have completed.
    """
        status = {'build1': constants.BUILDER_STATUS_FAILED}
        start_time = datetime.datetime.now()
        builders_array = ['build1', 'build2']
        slaveStatus = manifest_version.SlaveStatus(status, start_time,
                                                   builders_array, set())

        self.assertFalse(
            slaveStatus.ShouldFailForBuilderStartTimeout(start_time))
コード例 #14
0
    def testShouldFailForBuilderStartTimeoutFalseNotCompleted(self):
        """Tests that ShouldFailForBuilderStartTimeout doesn't fail.

    Make sure that we don't fail if there are missing builders and we're
    checking after the timeout but the other builders haven't completed.
    """
        status = {'build1': constants.BUILDER_STATUS_INFLIGHT}
        start_time = datetime.datetime.now()
        builders_array = ['build1', 'build2']
        slaveStatus = manifest_version.SlaveStatus(status, start_time,
                                                   builders_array, set())
        check_time = start_time + datetime.timedelta(
            minutes=slaveStatus.BUILDER_START_TIMEOUT + 1)

        self.assertFalse(
            slaveStatus.ShouldFailForBuilderStartTimeout(check_time))
コード例 #15
0
    def testGetCompletedWithBuildbucket(self):
        """Tests GetCompleted with Buildbucket"""
        buildbucket_id_dict = {
            'scheduled': 'id_1',
            'started': 'id_2',
            'completed_success': 'id_3',
            'completed_failure': 'id_4',
            'completed_canceled': 'id_5'
        }
        status = {
            'scheduled': {
                'status': constants.BUILDBUCKET_BUILDER_STATUS_SCHEDULED,
                'result': None
            },
            'started': {
                'status': constants.BUILDBUCKET_BUILDER_STATUS_STARTED,
                'result': None
            },
            'completed_success': {
                'status': constants.BUILDBUCKET_BUILDER_STATUS_COMPLETED,
                'result': constants.BUILDBUCKET_BUILDER_RESULT_SUCCESS
            },
            'completed_failure': {
                'status': constants.BUILDBUCKET_BUILDER_STATUS_COMPLETED,
                'result': constants.BUILDBUCKET_BUILDER_RESULT_FAILURE
            },
            'completed_canceled': {
                'status': constants.BUILDBUCKET_BUILDER_STATUS_COMPLETED,
                'result': constants.BUILDBUCKET_BUILDER_RESULT_CANCELED
            }
        }
        builders_array = [
            'scheduled', 'started', 'completed_success', 'completed_failure',
            'completed_canceled'
        ]
        previous_completed = set(['completed_success'])
        expected_completed = set(
            ['completed_success', 'completed_failure', 'completed_canceled'])
        slaveStatus = manifest_version.SlaveStatus(status,
                                                   datetime.datetime.now(),
                                                   builders_array,
                                                   previous_completed,
                                                   buildbucket_id_dict)

        self.assertEqual(slaveStatus.GetCompleted(), expected_completed)
        self.assertEqual(slaveStatus.previous_completed, expected_completed)
コード例 #16
0
    def testShouldWaitMissingBuilderWithBuildbucket(self):
        """ShouldWait says yes waiting because one build status is missing."""
        buildbucket_id_dict = {
            'build1': 'id_1',
            'build2': 'id_2',
        }
        status = {
            'build2': {
                'status': constants.BUILDBUCKET_BUILDER_STATUS_COMPLETED,
                'result': constants.BUILDBUCKET_BUILDER_RESULT_FAILURE
            }
        }
        builders_array = ['build1', 'build2']
        start_time = datetime.datetime.now() - datetime.timedelta(hours=1)
        slaveStatus = manifest_version.SlaveStatus(status,
                                                   start_time, builders_array,
                                                   set(), buildbucket_id_dict)

        self.assertTrue(slaveStatus.ShouldWait())
コード例 #17
0
    def testGetMissingNoneWithBuildbucket(self):
        """Tests GetMissing returns nothing with Buildbucket."""
        buildbucket_id_dict = {'build1': 'id_1', 'build2': 'id_2'}
        status = {
            'build1': {
                'status': constants.BUILDBUCKET_BUILDER_STATUS_SCHEDULED,
                'result': None
            },
            'build2': {
                'status': constants.BUILDBUCKET_BUILDER_STATUS_STARTED,
                'result': None
            }
        }
        builders_array = ['build1', 'build2']
        slaveStatus = manifest_version.SlaveStatus(status,
                                                   datetime.datetime.now(),
                                                   builders_array, set(),
                                                   buildbucket_id_dict)

        self.assertEqual(slaveStatus.GetMissing(), [])
コード例 #18
0
    def testShouldWaitBuildersStillBuildingWithBuildbucket(self):
        """ShouldWait says yes because builders still in started status."""
        buildbucket_id_dict = {
            'build1': 'id_1',
            'build2': 'id_2',
        }
        status = {
            'build1': {
                'status': constants.BUILDBUCKET_BUILDER_STATUS_STARTED,
                'result': None
            },
            'build2': {
                'status': constants.BUILDBUCKET_BUILDER_STATUS_COMPLETED,
                'result': constants.BUILDBUCKET_BUILDER_RESULT_SUCCESS
            }
        }
        builders_array = ['build1', 'build2']
        slaveStatus = manifest_version.SlaveStatus(status,
                                                   datetime.datetime.now(),
                                                   builders_array, set(),
                                                   buildbucket_id_dict)

        self.assertTrue(slaveStatus.ShouldWait())
コード例 #19
0
    def testShouldWaitNoScheduledBuilderWithBuildbucket(self):
        """ShouldWait says no because all scheduled builds are completed."""
        buildbucket_id_dict = {
            'build1': 'id_1',
            'build2': 'id_2',
        }
        status = {
            'build1': {
                'status': constants.BUILDBUCKET_BUILDER_STATUS_COMPLETED,
                'result': constants.BUILDBUCKET_BUILDER_RESULT_SUCCESS
            },
            'build2': {
                'status': constants.BUILDBUCKET_BUILDER_STATUS_COMPLETED,
                'result': constants.BUILDBUCKET_BUILDER_RESULT_FAILURE
            }
        }
        builders_array = ['build1', 'build2', 'missing_builder']
        start_time = datetime.datetime.now() - datetime.timedelta(hours=1)
        slaveStatus = manifest_version.SlaveStatus(status,
                                                   start_time, builders_array,
                                                   set(), buildbucket_id_dict)

        self.assertFalse(slaveStatus.ShouldWait())
コード例 #20
0
    def testShouldWaitAllBuildersCompletedWithBuildbucket(self):
        """ShouldWait says no because all builders finished with Buildbucket."""
        buildbucket_id_dict = {
            'build1': 'id_1',
            'build2': 'id_2',
        }
        status = {
            'build1': {
                'status': constants.BUILDBUCKET_BUILDER_STATUS_COMPLETED,
                'result': constants.BUILDBUCKET_BUILDER_RESULT_FAILURE
            },
            'build2': {
                'status': constants.BUILDBUCKET_BUILDER_STATUS_COMPLETED,
                'result': constants.BUILDBUCKET_BUILDER_RESULT_SUCCESS
            }
        }
        builders_array = ['build1', 'build2']
        slaveStatus = manifest_version.SlaveStatus(status,
                                                   datetime.datetime.now(),
                                                   builders_array, set(),
                                                   buildbucket_id_dict)

        self.assertFalse(slaveStatus.ShouldWait())