def testPerformSymbolsFileUploadMixed(self):
        """Upload symbols in mixed starting states.

    Demonstrate that INITIAL and ERROR are uploaded, but DUPLICATE/UPLOADED are
    ignored.
    """
        symbols = [
            self.sym_initial, self.sym_error, self.sym_duplicate,
            self.sym_uploaded
        ]

        result = upload_symbols.PerformSymbolsFileUpload(
            symbols, 'fake_url', product_name='product')

        #
        self.assertEqual(list(result), symbols)
        self.assertEqual(self.sym_initial.status,
                         upload_symbols.SymbolFile.UPLOADED)
        self.assertEqual(self.sym_error.status,
                         upload_symbols.SymbolFile.UPLOADED)
        self.assertEqual(self.sym_duplicate.status,
                         upload_symbols.SymbolFile.DUPLICATE)
        self.assertEqual(self.sym_uploaded.status,
                         upload_symbols.SymbolFile.UPLOADED)
        self.assertEqual(self.urlopen_mock.call_count, 2)
  def testPerformSymbolsFileUploadFailure(self):
    """All network requests fail."""
    self.urlopen_mock.side_effect = urllib2.URLError('network failure')
    symbols = [self.sym_initial]

    result = upload_symbols.PerformSymbolsFileUpload(
        symbols, 'fake_url', product_name='product')

    self.assertEqual(list(result), symbols)
    self.assertEqual(self.sym_initial.status, upload_symbols.SymbolFile.ERROR)
    self.assertEqual(self.urlopen_mock.call_count, 7)
    def testPerformSymbolsFileUpload(self):
        """We upload on first try."""
        symbols = [self.sym_initial]

        result = upload_symbols.PerformSymbolsFileUpload(
            symbols, 'fake_url', product_name='product')

        self.assertEqual(list(result), symbols)
        self.assertEqual(self.sym_initial.status,
                         upload_symbols.SymbolFile.UPLOADED)
        self.assertEqual(self.urlopen_mock.call_count, 1)
  def testPerformSymbolsFileUploadTransisentFailure(self):
    """We fail once, then succeed."""
    self.urlopen_mock.side_effect = (urllib2.URLError('network failure'), None)
    symbols = [self.sym_initial]

    result = upload_symbols.PerformSymbolsFileUpload(
        symbols, 'fake_url', product_name='product')

    self.assertEqual(list(result), symbols)
    self.assertEqual(self.sym_initial.status,
                     upload_symbols.SymbolFile.UPLOADED)
    self.assertEqual(self.urlopen_mock.call_count, 2)
Exemple #5
0
    def testPerformSymbolsFileUpload(self):
        """We upload on first try."""
        symbols = [self.sym_initial]

        result = upload_symbols.PerformSymbolsFileUpload(symbols,
                                                         'fake_url',
                                                         api_key='testkey')

        self.assertEqual(list(result), symbols)
        self.assertEqual(self.sym_initial.status,
                         upload_symbols.SymbolFile.UPLOADED)
        self.assertEqual(self.request_mock.call_count, 3)
Exemple #6
0
    def testPerformSymbolsFileUploadTransisentFailure(self):
        """We fail once, then succeed."""
        self.urlopen_mock.side_effect = (IOError('network failure'), None)
        symbols = [self.sym_initial]

        result = upload_symbols.PerformSymbolsFileUpload(symbols,
                                                         'fake_url',
                                                         api_key='testkey')

        self.assertEqual(list(result), symbols)
        self.assertEqual(self.sym_initial.status,
                         upload_symbols.SymbolFile.UPLOADED)
        self.assertEqual(self.request_mock.call_count, 3)
Exemple #7
0
    def testPerformSymbolsFileUploadFailure(self):
        """All network requests fail."""
        self.request_mock.side_effect = IOError('network failure')
        symbols = [self.sym_initial]

        result = upload_symbols.PerformSymbolsFileUpload(symbols,
                                                         'fake_url',
                                                         api_key='testkey')

        self.assertEqual(list(result), symbols)
        self.assertEqual(self.sym_initial.status,
                         upload_symbols.SymbolFile.ERROR)
        self.assertEqual(self.request_mock.call_count, 6)
Exemple #8
0
    def testPerformSymbolsFileUploadErrorOut(self):
        """Demonstate we exit only after X errors."""

        symbol_count = upload_symbols.MAX_TOTAL_ERRORS_FOR_RETRY + 10
        symbols = []
        fail_file = None

        # potentially twice as many errors as we should attempt.
        for _ in range(symbol_count):
            # Each loop will get unique SymbolFile instances that use the same files.
            fail = self.createSymbolFile('fail.sym')
            fail_file = fail.file_name
            symbols.append(self.createSymbolFile('pass.sym'))
            symbols.append(fail)

        # Mock out UploadSymbolFile and fail for fail.sym files.
        def failSome(_url, symbol, _api_key):
            if symbol.file_name == fail_file:
                raise IOError('network failure')

        upload_mock = self.PatchObject(upload_symbols,
                                       'UploadSymbolFile',
                                       side_effect=failSome)
        upload_mock.__name__ = 'UploadSymbolFileMock2'

        result = upload_symbols.PerformSymbolsFileUpload(symbols,
                                                         'fake_url',
                                                         api_key='testkey')

        self.assertEqual(list(result), symbols)

        passed = sum(s.status == upload_symbols.SymbolFile.UPLOADED
                     for s in symbols)
        failed = sum(s.status == upload_symbols.SymbolFile.ERROR
                     for s in symbols)
        skipped = sum(s.status == upload_symbols.SymbolFile.INITIAL
                      for s in symbols)

        # Shows we all pass.sym files worked until limit hit.
        self.assertEqual(passed, upload_symbols.MAX_TOTAL_ERRORS_FOR_RETRY)

        # Shows we all fail.sym files failed until limit hit.
        self.assertEqual(failed, upload_symbols.MAX_TOTAL_ERRORS_FOR_RETRY)

        # Shows both pass/fail were skipped after limit hit.
        self.assertEqual(skipped, 10 * 2)