Ejemplo n.º 1
0
    def test_get_if_match(self):
        if pithos_settings.UPDATE_MD5:
            etag = md5_hash(self.odata)
        else:
            etag = merkle(self.odata)

        r = self.view(self.view_url, HTTP_IF_MATCH=etag)

        # assert get success
        self.assertEqual(r.status_code, 200)

        # assert response content
        self.assertEqual(r.content, self.odata)
Ejemplo n.º 2
0
    def test_get_if_match(self):
        if pithos_settings.UPDATE_MD5:
            etag = md5_hash(self.odata)
        else:
            etag = merkle(self.odata)

        r = self.view(self.view_url, HTTP_IF_MATCH=etag)

        # assert get success
        self.assertEqual(r.status_code, 200)

        # assert response content
        self.assertEqual(r.content, self.odata)
Ejemplo n.º 3
0
    def test_get_multiple_if_match(self):
        if pithos_settings.UPDATE_MD5:
            etag = md5_hash(self.odata)
        else:
            etag = merkle(self.odata)

        quoted = lambda s: '"%s"' % s
        r = self.view(self.view_url, HTTP_IF_MATCH=','.join(
            [quoted(etag), quoted(get_random_data(64))]))

        # assert get success
        self.assertEqual(r.status_code, 200)

        # assert response content
        self.assertEqual(r.content, self.odata)
Ejemplo n.º 4
0
    def test_get_multiple_if_match(self):
        if pithos_settings.UPDATE_MD5:
            etag = md5_hash(self.odata)
        else:
            etag = merkle(self.odata)

        quoted = lambda s: '"%s"' % s
        r = self.view(self.view_url,
                      HTTP_IF_MATCH=','.join(
                          [quoted(etag),
                           quoted(get_random_data(64))]))

        # assert get success
        self.assertEqual(r.status_code, 200)

        # assert response content
        self.assertEqual(r.content, self.odata)
Ejemplo n.º 5
0
    def test_if_none_match(self):
        if pithos_settings.UPDATE_MD5:
            etag = md5_hash(self.odata)
        else:
            etag = merkle(self.odata)

        # perform get with If-None-Match
        r = self.view(self.view_url, HTTP_IF_NONE_MATCH=etag)

        # assert precondition_failed
        self.assertEqual(r.status_code, 304)

        # update object data
        r = self.append_object_data(self.cname, self.oname)[-1]
        self.assertTrue(etag != r['ETag'])

        # perform get with If-None-Match
        r = self.view(self.view_url, HTTP_IF_NONE_MATCH=etag)

        # assert get success
        self.assertEqual(r.status_code, 200)
Ejemplo n.º 6
0
    def test_if_none_match(self):
        if pithos_settings.UPDATE_MD5:
            etag = md5_hash(self.odata)
        else:
            etag = merkle(self.odata)

        # perform get with If-None-Match
        r = self.view(self.view_url, HTTP_IF_NONE_MATCH=etag)

        # assert precondition_failed
        self.assertEqual(r.status_code, 304)

        # update object data
        r = self.append_object_data(self.cname, self.oname)[-1]
        self.assertTrue(etag != r['ETag'])

        # perform get with If-None-Match
        r = self.view(self.view_url, HTTP_IF_NONE_MATCH=etag)

        # assert get success
        self.assertEqual(r.status_code, 200)
Ejemplo n.º 7
0
    def test_hashes(self):
        l = random.randint(2, 5) * pithos_settings.BACKEND_BLOCK_SIZE
        oname, odata = self.upload_object(self.cname, length=l)[:-1]
        size = len(odata)

        view_url = join_urls(self.view_path, self.user, self.cname, oname)
        r = self.view('%s?format=json&hashmap' % view_url)
        self.assertEqual(r.status_code, 200)
        body = json.loads(r.content)

        hashes = body['hashes']
        block_size = body['block_size']
        block_num = size / block_size if size / block_size == 0 else\
            size / block_size + 1
        self.assertTrue(len(hashes), block_num)
        i = 0
        for h in hashes:
            start = i * block_size
            end = (i + 1) * block_size
            hash = merkle(odata[start:end])
            self.assertEqual(h, hash)
            i += 1
Ejemplo n.º 8
0
    def test_hashes(self):
        l = random.randint(2, 5) * pithos_settings.BACKEND_BLOCK_SIZE
        oname, odata = self.upload_object(self.cname, length=l)[:-1]
        size = len(odata)

        view_url = join_urls(self.view_path, self.user, self.cname, oname)
        r = self.view('%s?format=json&hashmap' % view_url)
        self.assertEqual(r.status_code, 200)
        body = json.loads(r.content)

        hashes = body['hashes']
        block_size = body['block_size']
        block_num = size / block_size if size / block_size == 0 else\
            size / block_size + 1
        self.assertTrue(len(hashes), block_num)
        i = 0
        for h in hashes:
            start = i * block_size
            end = (i + 1) * block_size
            hash = merkle(odata[start:end])
            self.assertEqual(h, hash)
            i += 1