Пример #1
0
    def test_response_with_no_status_should_keep_running_with_no_error(
            self, mock_socket, mock_wait_for_event):
        full_url = 'https://ci.prontomarketing.com/job/04-Prontoworld-Deploy-'
        full_url += 'Dev%20-%2010.3.0.20/731/'
        response = {
            'name': '00-Prontoworld-Checkin - 10.3.0.20',
            'url': 'job/00-Prontoworld-Checkin%20-%2010.3.0.20/',
            'build': {
                'full_url': full_url,
                'number': 1992,
                'phase': 'COMPLETED',
                'url': 'job/00-Prontoworld-Checkin%20-%2010.3.0.20/1992/',
                'scm': {},
                'log': '',
                'artifacts': {}
            }
        }
        data = (json.dumps(response), ('10.3.0.20', 44450))

        mock_socket.socket.return_value.recvfrom.side_effect = [data, data]
        mock_wait_for_event.side_effect = [True, True, False]

        jenkins_wait_for_event()

        self.assertEqual(mock_wait_for_event.call_count, 3)
        expected_calls = [call(8 * 1024), call(8 * 1024)]
        mock_socket.socket.return_value.recvfrom.assert_has_calls(
            expected_calls)
Пример #2
0
    def test_when_build_passes_it_should_not_get_any_responsible_user(
            self, mock_socket, mock_wait_for_event, mock_get_responsible_user):
        full_url = 'https://ci.prontomarketing.com/job/04-Prontoworld-Deploy-'
        full_url += 'Dev%20-%2010.3.0.20/731/'
        response = {
            'name': '00-Prontoworld-Checkin - 10.3.0.20',
            'url': 'job/00-Prontoworld-Checkin%20-%2010.3.0.20/',
            'build': {
                'full_url': full_url,
                'number': 1992,
                'phase': 'COMPLETED',
                'status': 'SUCCESS',
                'url': 'job/00-Prontoworld-Checkin%20-%2010.3.0.20/1992/',
                'scm': {
                    'url': '[email protected]:prontodev/pronto-dashboard.git',
                    'branch': 'origin/develop',
                    'commit': '067169c64bfe4cfe203537ccf05c9e71e7378921'
                },
                'log': '',
                'artifacts': {}
            }
        }
        data = (json.dumps(response), ('10.3.0.20', 44450))

        mock_socket.socket.return_value.recvfrom.return_value = data
        mock_wait_for_event.side_effect = [True, False]

        jenkins_wait_for_event()

        self.assertEqual(mock_wait_for_event.call_count, 2)
        mock_socket.socket.return_value.recvfrom.assert_called_once_with(8 *
                                                                         1024)
        self.assertEqual(mock_get_responsible_user.call_count, 0)
Пример #3
0
    def test_jenkins_wait_for_event_should_always_try_to_receive_data(
            self, mock_socket, mock_wait_for_event):
        full_url = 'https://ci.prontomarketing.com/job/04-Prontoworld-Deploy-'
        full_url += 'Dev%20-%2010.3.0.20/731/'
        response = {
            'name': '00-Prontoworld-Checkin - 10.3.0.20',
            'url': 'job/00-Prontoworld-Checkin%20-%2010.3.0.20/',
            'build': {
                'full_url': full_url,
                'number': 1992,
                'phase': 'COMPLETED',
                'status': 'SUCCESS',
                'url': 'job/00-Prontoworld-Checkin%20-%2010.3.0.20/1992/',
                'scm': {
                    'url': '[email protected]:prontodev/pronto-dashboard.git',
                    'branch': 'origin/develop',
                    'commit': '067169c64bfe4cfe203537ccf05c9e71e7378921'
                },
                'log': '',
                'artifacts': {}
            }
        }
        data = (json.dumps(response), ('10.3.0.20', 44450))

        mock_socket.socket.return_value.recvfrom.side_effect = [data, data]
        mock_wait_for_event.side_effect = [True, True, False]

        jenkins_wait_for_event()

        self.assertEqual(mock_wait_for_event.call_count, 3)
        expected_calls = [call(8 * 1024), call(8 * 1024)]
        mock_socket.socket.return_value.recvfrom.assert_has_calls(
            expected_calls)
Пример #4
0
    def test_when_build_fails_yell_at_should_take_slack_username(
            self, mock_socket, mock_wait_for_event, mock_get_responsible_user,
            mock_yell_at):
        full_url = 'https://ci.prontomarketing.com/job/03-Prontoworld-'
        full_url += 'AcceptanceTests-Group/193/'
        response = {
            'name': '03-Prontoworld-AcceptanceTests-Group',
            'url': 'job/03-Prontoworld-AcceptanceTests-Group/',
            'build': {
                'full_url': full_url,
                'number': 193,
                'phase': 'COMPLETED',
                'status': 'FAILURE',
                'url': 'job/03-Prontoworld-AcceptanceTests-Group/193/',
                'scm': {},
                'log': '',
                'artifacts': {}
            }
        }
        data = (json.dumps(response), ('10.3.0.20', 48580))

        mock_socket.socket.return_value.recvfrom.return_value = data
        mock_wait_for_event.side_effect = [True, False]
        mock_get_responsible_user.return_value = 'Sandy S'

        jenkins_wait_for_event()

        mock_yell_at.assert_called_once_with('sandy')
    def test_when_build_fails_yell_at_should_take_slack_username(
        self,
        mock_socket,
        mock_wait_for_event,
        mock_get_responsible_user,
        mock_yell_at
    ):
        full_url = 'https://ci.prontomarketing.com/job/03-Prontoworld-'
        full_url += 'AcceptanceTests-Group/193/'
        response = {
            'name': '03-Prontoworld-AcceptanceTests-Group',
            'url': 'job/03-Prontoworld-AcceptanceTests-Group/',
            'build': {
                'full_url': full_url,
                'number': 193,
                'phase': 'COMPLETED',
                'status': 'FAILURE',
                'url': 'job/03-Prontoworld-AcceptanceTests-Group/193/',
                'scm': {},
                'log': '',
                'artifacts':{}
            }
        }
        data = (
            json.dumps(response),
            ('10.3.0.20', 48580)
        )

        mock_socket.socket.return_value.recvfrom.return_value = data
        mock_wait_for_event.side_effect = [True, False]
        mock_get_responsible_user.return_value = 'Sandy S'

        jenkins_wait_for_event()

        mock_yell_at.assert_called_once_with('sandy')
Пример #6
0
    def test_jenkins_wait_for_event_should_listen_to_udp_port_22222(
            self, mock_socket, mock_wait_for_event):
        mock_wait_for_event.side_effect = [False]

        jenkins_wait_for_event()

        mock_socket.socket.assert_called_once_with(settings.AF_INET,
                                                   settings.SOCK_DGRAM)
        mock_socket.socket.return_value.bind.assert_called_once_with(
            ('', settings.JENKINS_NOTIFICATION_UDP_PORT))
    def test_jenkins_wait_for_event_should_listen_to_udp_port_22222(
        self,
        mock_socket,
        mock_wait_for_event
    ):
        mock_wait_for_event.side_effect = [False]

        jenkins_wait_for_event()

        mock_socket.socket.assert_called_once_with(
            settings.AF_INET,
            settings.SOCK_DGRAM
        )
        mock_socket.socket.return_value.bind.assert_called_once_with(
            ('', settings.JENKINS_NOTIFICATION_UDP_PORT)
        )
    def test_jenkins_wait_for_event_should_always_try_to_receive_data(
        self,
        mock_socket,
        mock_wait_for_event
    ):
        full_url = 'https://ci.prontomarketing.com/job/04-Prontoworld-Deploy-'
        full_url += 'Dev%20-%2010.3.0.20/731/'
        response = {
            'name': '00-Prontoworld-Checkin - 10.3.0.20',
            'url': 'job/00-Prontoworld-Checkin%20-%2010.3.0.20/',
            'build': {
                'full_url': full_url,
                'number': 1992,
                'phase': 'COMPLETED',
                'status': 'SUCCESS',
                'url': 'job/00-Prontoworld-Checkin%20-%2010.3.0.20/1992/',
                'scm': {
                    'url': '[email protected]:prontodev/pronto-dashboard.git',
                    'branch': 'origin/develop',
                    'commit': '067169c64bfe4cfe203537ccf05c9e71e7378921'
                },
                'log': '',
                'artifacts': {}
            }
        }
        data = (
            json.dumps(response),
            ('10.3.0.20', 44450)
        )

        mock_socket.socket.return_value.recvfrom.side_effect = [
            data,
            data
        ]
        mock_wait_for_event.side_effect = [True, True, False]

        jenkins_wait_for_event()

        self.assertEqual(mock_wait_for_event.call_count, 3)
        expected_calls = [
            call(8 * 1024),
            call(8 * 1024)
        ]
        mock_socket.socket.return_value.recvfrom.assert_has_calls(
            expected_calls
        )
    def test_when_build_passes_it_should_not_get_any_responsible_user(
        self,
        mock_socket,
        mock_wait_for_event,
        mock_get_responsible_user
    ):
        full_url = 'https://ci.prontomarketing.com/job/04-Prontoworld-Deploy-'
        full_url += 'Dev%20-%2010.3.0.20/731/'
        response = {
            'name': '00-Prontoworld-Checkin - 10.3.0.20',
            'url': 'job/00-Prontoworld-Checkin%20-%2010.3.0.20/',
            'build': {
                'full_url': full_url,
                'number': 1992,
                'phase': 'COMPLETED',
                'status': 'SUCCESS',
                'url': 'job/00-Prontoworld-Checkin%20-%2010.3.0.20/1992/',
                'scm': {
                    'url': '[email protected]:prontodev/pronto-dashboard.git',
                    'branch': 'origin/develop',
                    'commit': '067169c64bfe4cfe203537ccf05c9e71e7378921'
                },
                'log': '',
                'artifacts': {}
            }
        }
        data = (
            json.dumps(response),
            ('10.3.0.20', 44450)
        )

        mock_socket.socket.return_value.recvfrom.return_value = data
        mock_wait_for_event.side_effect = [True, False]

        jenkins_wait_for_event()

        self.assertEqual(mock_wait_for_event.call_count, 2)
        mock_socket.socket.return_value.recvfrom.assert_called_once_with(
            8 * 1024
        )
        self.assertEqual(mock_get_responsible_user.call_count, 0)
    def test_response_with_no_status_should_keep_running_with_no_error(
        self,
        mock_socket,
        mock_wait_for_event
    ):
        full_url = 'https://ci.prontomarketing.com/job/04-Prontoworld-Deploy-'
        full_url += 'Dev%20-%2010.3.0.20/731/'
        response = {
            'name': '00-Prontoworld-Checkin - 10.3.0.20',
            'url': 'job/00-Prontoworld-Checkin%20-%2010.3.0.20/',
            'build': {
                'full_url': full_url,
                'number': 1992,
                'phase': 'COMPLETED',
                'url': 'job/00-Prontoworld-Checkin%20-%2010.3.0.20/1992/',
                'scm': {},
                'log': '',
                'artifacts': {}
            }
        }
        data = (
            json.dumps(response),
            ('10.3.0.20', 44450)
        )

        mock_socket.socket.return_value.recvfrom.side_effect = [
            data,
            data
        ]
        mock_wait_for_event.side_effect = [True, True, False]

        jenkins_wait_for_event()

        self.assertEqual(mock_wait_for_event.call_count, 3)
        expected_calls = [
            call(8 * 1024),
            call(8 * 1024)
        ]
        mock_socket.socket.return_value.recvfrom.assert_has_calls(
            expected_calls
        )