Exemple #1
0
    def test_on_succeeded(self):
        request = Request('T1', {'A': 1}, 'http://test', '/tmp/test')
        request.data = Mock()
        content_listener = Mock()

        # test
        listener = ContainerListener(content_listener)
        listener.on_succeeded(request)

        # validation
        calls = content_listener.download_succeeded.mock_calls
        self.assertEqual(len(calls), 1)
        report = calls[0][1][0]
        self.assertEqual(report.url, request.url)
        self.assertEqual(report.destination, request.destination)
        self.assertEqual(report.data, request.data)
Exemple #2
0
    def test_download_succeeded(self):
        request = Request("T1", {"A": 1}, "http://test", "/tmp/test")
        request.data = Mock()
        content_listener = Mock()

        # test
        listener = ContainerListener(content_listener)
        listener.download_succeeded(request)

        # validation
        calls = content_listener.download_succeeded.mock_calls
        self.assertEqual(len(calls), 1)
        report = calls[0][1][0]
        self.assertEqual(report.url, request.url)
        self.assertEqual(report.destination, request.destination)
        self.assertEqual(report.data, request.data)
Exemple #3
0
    def get_requests(self):
        """
        Get requests for the units requested to be downloaded.

        :return: An iterable of: Request
        :rtype: iterable
        """
        for unit in self.units:
            base_url = unit.base_url or self.base_url
            url = self.url_modify(base_url, path_append=unit.download_path)
            destination = os.path.join(self.dst_dir, unit.filename)
            request = Request(type_id=unit.type_id,
                              unit_key=unit.unit_key,
                              url=url,
                              destination=destination)
            request.data = unit
            yield request
Exemple #4
0
    def test_download_failed(self):
        request = Request('T1', {'A': 1}, 'http://test', '/tmp/test')
        request.data = Mock()
        request.errors = [1, 2, 3]
        content_listener = Mock()

        # test
        listener = ContainerListener(content_listener)
        listener.download_failed(request)

        # validation
        calls = content_listener.download_failed.mock_calls
        self.assertEqual(len(calls), 1)
        report = calls[0][1][0]
        self.assertEqual(report.url, request.url)
        self.assertEqual(report.destination, request.destination)
        self.assertEqual(report.data, request.data)
        self.assertEqual(report.error_report['errors'], request.errors)
Exemple #5
0
    def get_requests(self):
        """
        Get requests for the units requested to be downloaded.

        :return: An iterable of: Request
        :rtype: iterable
        """
        for unit in self.units:
            base_url = unit.base_url or self.base_url
            url = self.url_modify(base_url, path_append=unit.filename)
            destination = os.path.join(self.dst_dir, unit.filename)
            request = Request(
                type_id=unit.type_id,
                unit_key=unit.unit_key,
                url=url,
                destination=destination)
            request.data = unit
            yield request
Exemple #6
0
    def test_on_failed(self):
        request = Request("T1", {"A": 1}, "http://test", "/tmp/test")
        request.data = Mock()
        request.errors = [1, 2, 3]
        content_listener = Mock()

        # test
        listener = ContainerListener(content_listener)
        listener.on_failed(request)

        # validation
        calls = content_listener.download_failed.mock_calls
        self.assertEqual(len(calls), 1)
        report = calls[0][1][0]
        self.assertEqual(report.url, request.url)
        self.assertEqual(report.destination, request.destination)
        self.assertEqual(report.data, request.data)
        self.assertEqual(report.error_report["errors"], request.errors)
Exemple #7
0
 def get_requests(self):
     """
     Get requests for the units requested to be downloaded.
     :return: An iterable of: Request
     :rtype: iterable
     """
     for unit in self.units:
         if unit.metadata.get('base_url'):
             url = urljoin(unit.metadata.get('base_url'), unit.download_path)
         else:
             url = urljoin(self.base_url, unit.download_path)
         file_name = os.path.basename(unit.relative_path)
         destination = os.path.join(self.dst_dir, file_name)
         request = Request(
             type_id=unit.TYPE,
             unit_key=unit.unit_key,
             url=url,
             destination=destination)
         request.data = unit
         yield request
Exemple #8
0
 def create_request(url, destination, unit, unit_ref):
     """
     Create a content container download request that is compatible with the listener.
     The destination directory is created as needed.
     :param url: The download URL.
     :type url: str
     :param destination: The absolute path to where the file is to be downloaded.
     :type destination: str
     :param unit: A published content unit.
     :type unit: dict
     :param unit_ref: A reference to the unit association.
     :type unit_ref: pulp_node.manifest.UnitRef.
     :return: A download request.
     :rtype: Request
     """
     data = {STORAGE_PATH: unit[constants.STORAGE_PATH], UNIT_REF: unit_ref}
     dir_path = os.path.dirname(destination)
     pathlib.mkdir(dir_path)
     request = Request(unit[constants.TYPE_ID], unit[constants.UNIT_KEY],
                       url, destination)
     request.data = data
     return request
Exemple #9
0
 def create_request(url, destination, unit, unit_ref):
     """
     Create a content container download request that is compatible with the listener.
     The destination directory is created as needed.
     :param url: The download URL.
     :type url: str
     :param destination: The absolute path to where the file is to be downloaded.
     :type destination: str
     :param unit: A published content unit.
     :type unit: dict
     :param unit_ref: A reference to the unit association.
     :type unit_ref: pulp_node.manifest.UnitRef.
     :return: A download request.
     :rtype: Request
     """
     data = {
         STORAGE_PATH: unit[constants.STORAGE_PATH],
         UNIT_REF: unit_ref
     }
     dir_path = os.path.dirname(destination)
     pathlib.mkdir(dir_path)
     request = Request(unit[constants.TYPE_ID], unit[constants.UNIT_KEY], url, destination)
     request.data = data
     return request