Ejemplo n.º 1
0
    def test_fetch_from_non_set_cache(self):
        """Test if a error is raised when the cache was not set"""

        dockerhub = DockerHub('grimoirelab', 'perceval')

        with self.assertRaises(CacheError):
            _ = [item for item in dockerhub.fetch_from_cache()]
Ejemplo n.º 2
0
    def test_fetch_from_empty_cache(self):
        """Test if there are not any event returned when the cache is empty"""

        cache = Cache(self.tmp_path)
        dockerhub = DockerHub('grimoirelab', 'perceval', cache=cache)
        cached_items = [item for item in dockerhub.fetch_from_cache()]
        self.assertEqual(len(cached_items), 0)
 def setUp(self):
     super().setUp()
     self.backend_write_archive = DockerHub('grimoirelab',
                                            'perceval',
                                            archive=self.archive)
     self.backend_read_archive = DockerHub('grimoirelab',
                                           'perceval',
                                           archive=self.archive)
Ejemplo n.º 4
0
    def test_fetch_from_cache(self, mock_utcnow):
        """Test whether the cache works"""

        setup_http_server()

        # First, we fetch the items from the server,
        # storing them in a cache. We do it twice as each call
        # to fetch only returns one item.
        cache = Cache(self.tmp_path)
        dockerhub = DockerHub('grimoirelab', 'perceval', cache=cache)

        mock_utcnow.return_value = datetime.datetime(
            2017, 1, 1, tzinfo=dateutil.tz.tzutc())
        items = [item for item in dockerhub.fetch()]

        mock_utcnow.return_value = datetime.datetime(
            2017, 1, 2, tzinfo=dateutil.tz.tzutc())
        aux = [item for item in dockerhub.fetch()]
        items.extend(aux)

        self.assertEqual(len(httpretty.httpretty.latest_requests), 2)

        # Now, we get the items from the cache.
        # The items should be the same and there won't be
        # any new request to the server
        cached_items = [item for item in dockerhub.fetch_from_cache()]
        self.assertEqual(len(cached_items), len(items))

        expected = [(1483228800.0, '0fa16dc4edab9130a14914a8d797f634d13b4ff4',
                     1483228800.0),
                    (1483315200.0, '0ce2bdf5ddeef42886d9ce4b573c98345e6f1b9a',
                     1483315200.0)]

        self.assertEqual(len(cached_items), len(expected))

        for x in range(len(cached_items)):
            item = cached_items[x]
            expc = expected[x]
            self.assertEqual(item['data']['fetched_on'], expc[0])
            self.assertEqual(item['uuid'], expc[1])
            self.assertEqual(item['origin'],
                             'https://hub.docker.com/grimoirelab/perceval')
            self.assertEqual(item['updated_on'], expc[2])
            self.assertEqual(item['category'], 'dockerhub-data')
            self.assertEqual(item['tag'],
                             'https://hub.docker.com/grimoirelab/perceval')

            # Compare chached and fetched task
            self.assertDictEqual(item['data'], items[x]['data'])

        # No more requests were sent
        self.assertEqual(len(httpretty.httpretty.latest_requests), 2)
    def test_parse_json(self):
        """Test if it parses a JSON stream"""

        raw_json = read_file('data/dockerhub/dockerhub_repository_1.json')

        item = DockerHub.parse_json(raw_json)
        self.assertEqual(item['user'], 'grimoirelab')
        self.assertEqual(item['name'], 'perceval')
Ejemplo n.º 6
0
    def test_search_fields(self, mock_utcnow):
        """Test whether the search_fields is properly set"""

        mock_utcnow.return_value = datetime.datetime(
            2017, 1, 1, tzinfo=dateutil.tz.tzutc())
        setup_http_server()

        dockerhub = DockerHub('grimoirelab', 'perceval')
        items = [item for item in dockerhub.fetch()]

        self.assertEqual(len(items), 1)
        item = items[0]
        self.assertEqual(dockerhub.metadata_id(item['data']),
                         item['search_fields']['item_id'])
        self.assertEqual(item['data']['name'], 'perceval')
        self.assertEqual(item['data']['name'], item['search_fields']['name'])
        self.assertEqual(item['data']['namespace'], 'grimoirelab')
        self.assertEqual(item['data']['namespace'],
                         item['search_fields']['namespace'])
    def test_shortcut_official_owner(self):
        """Test if the shortcut owner is replaced when it is given on init"""

        # Value '_' should be replaced by 'library'
        dockerhub = DockerHub('_', 'redis', tag='test')

        expected_origin = urijoin(DOCKERHUB_URL, 'library', 'redis')

        self.assertEqual(dockerhub.owner, 'library')
        self.assertEqual(dockerhub.repository, 'redis')
        self.assertEqual(dockerhub.origin, expected_origin)
Ejemplo n.º 8
0
    def test_fetch(self, mock_utcnow):
        """Test whether it fetches data from a repository"""

        mock_utcnow.return_value = datetime.datetime(2017, 1, 1,
                                                     tzinfo=dateutil.tz.tzutc())
        setup_http_server()

        dockerhub = DockerHub('grimoirelab', 'perceval')
        items = [item for item in dockerhub.fetch()]

        self.assertEqual(len(items), 1)
        item = items[0]
        self.assertEqual(item['data']['fetched_on'], 1483228800.0)
        self.assertEqual(item['uuid'], '0fa16dc4edab9130a14914a8d797f634d13b4ff4')
        self.assertEqual(item['origin'], 'https://hub.docker.com/grimoirelab/perceval')
        self.assertEqual(item['updated_on'], 1483228800.0)
        self.assertEqual(item['category'], 'dockerhub-data')
        self.assertEqual(item['tag'], 'https://hub.docker.com/grimoirelab/perceval')

        # Check requests
        self.assertEqual(len(httpretty.httpretty.latest_requests), 1)
    def test_initialization(self):
        """Test whether attributes are initializated"""

        dockerhub = DockerHub('grimoirelab', 'perceval', tag='test')

        expected_origin = urijoin(DOCKERHUB_URL, 'grimoirelab', 'perceval')

        self.assertEqual(dockerhub.owner, 'grimoirelab')
        self.assertEqual(dockerhub.repository, 'perceval')
        self.assertEqual(dockerhub.origin, expected_origin)
        self.assertEqual(dockerhub.tag, 'test')
        self.assertIsNone(dockerhub.client)

        # When tag is empty or None it will be set to
        # the value in
        dockerhub = DockerHub('grimoirelab', 'perceval')
        self.assertEqual(dockerhub.origin, expected_origin)
        self.assertEqual(dockerhub.tag, expected_origin)

        dockerhub = DockerHub('grimoirelab', 'perceval', tag='')
        self.assertEqual(dockerhub.origin, expected_origin)
        self.assertEqual(dockerhub.tag, expected_origin)
Ejemplo n.º 10
0
    def test_has_resuming(self):
        """Test if it returns True when has_resuming is called"""

        self.assertEqual(DockerHub.has_resuming(), True)
Ejemplo n.º 11
0
    def test_has_caching(self):
        """Test if it returns False when has_caching is called"""

        self.assertEqual(DockerHub.has_caching(), False)