Beispiel #1
0
 def test_put_is_dir(self):
     td = tempfile.mkdtemp()
     the_path = os.path.join(td, "vol0", "bar")
     the_dir = os.path.join(the_path, "dir")
     try:
         os.makedirs(the_dir)
         gdf = Gluster_DiskFile(td, "vol0", "p57", "ufo47", "bar",
                                "dir", self.lg)
         origmd = gdf.metadata.copy()
         origfmd = _metadata[the_dir]
         newmd = gdf.metadata.copy()
         # FIXME: This is a hack to get to the code-path; it is not clear
         # how this can happen normally.
         newmd['Content-Type'] = ''
         newmd['X-Object-Meta-test'] = '1234'
         try:
             gdf.put(None, newmd, extension='.data')
         except AlreadyExistsAsDir:
             pass
         else:
             self.fail("Expected to encounter 'already-exists-as-dir' exception")
         assert gdf.metadata == origmd
         assert _metadata[the_dir] == origfmd
     finally:
         shutil.rmtree(td)
Beispiel #2
0
    def test_put_obj_path(self):
        the_obj_path = os.path.join("b", "a")
        the_file = os.path.join(the_obj_path, "z")
        td = tempfile.mkdtemp()
        try:
            gdf = Gluster_DiskFile(td, "vol0", "p57", "ufo47", "bar",
                                   the_file, self.lg)
            assert gdf._obj == "z"
            assert gdf._obj_path == the_obj_path
            assert gdf.name == os.path.join("bar", "b", "a")
            assert gdf.datadir == os.path.join(td, "vol0", "bar", "b", "a")
            assert gdf.data_file is None

            body = '1234\n'
            etag = md5()
            etag.update(body)
            etag = etag.hexdigest()
            metadata = {
                'X-Timestamp': '1234',
                'Content-Type': 'file',
                'ETag': etag,
                'Content-Length': '5',
                }

            with gdf.mkstemp() as fd:
                assert gdf.tmppath is not None
                tmppath = gdf.tmppath
                os.write(fd, body)
                gdf.put(fd, metadata)

            assert gdf.data_file == os.path.join(td, "vol0", "bar", "b", "a", "z")
            assert os.path.exists(gdf.data_file)
            assert not os.path.exists(tmppath)
        finally:
            shutil.rmtree(td)
Beispiel #3
0
    def test_put_obj_path(self):
        the_obj_path = os.path.join("b", "a")
        the_file = os.path.join(the_obj_path, "z")
        td = tempfile.mkdtemp()
        try:
            gdf = Gluster_DiskFile(td, "vol0", "p57", "ufo47", "bar",
                                   the_file, self.lg)
            assert gdf._obj == "z"
            assert gdf._obj_path == the_obj_path
            assert gdf.name == os.path.join("bar", "b", "a")
            assert gdf.datadir == os.path.join(td, "vol0", "bar", "b", "a")
            assert gdf.data_file is None

            body = '1234\n'
            etag = md5()
            etag.update(body)
            etag = etag.hexdigest()
            metadata = {
                'X-Timestamp': '1234',
                'Content-Type': 'file',
                'ETag': etag,
                'Content-Length': '5',
                }

            with gdf.mkstemp() as fd:
                assert gdf.tmppath is not None
                tmppath = gdf.tmppath
                os.write(fd, body)
                gdf.put(fd, metadata)

            assert gdf.data_file == os.path.join(td, "vol0", "bar", "b", "a", "z")
            assert os.path.exists(gdf.data_file)
            assert not os.path.exists(tmppath)
        finally:
            shutil.rmtree(td)
Beispiel #4
0
 def test_put_is_dir(self):
     td = tempfile.mkdtemp()
     the_path = os.path.join(td, "vol0", "bar")
     the_dir = os.path.join(the_path, "dir")
     try:
         os.makedirs(the_dir)
         gdf = Gluster_DiskFile(td, "vol0", "p57", "ufo47", "bar",
                                "dir", self.lg)
         origmd = gdf.metadata.copy()
         origfmd = _metadata[the_dir]
         newmd = gdf.metadata.copy()
         # FIXME: This is a hack to get to the code-path; it is not clear
         # how this can happen normally.
         newmd['Content-Type'] = ''
         newmd['X-Object-Meta-test'] = '1234'
         try:
             gdf.put(None, newmd, extension='.data')
         except AlreadyExistsAsDir:
             pass
         else:
             self.fail("Expected to encounter 'already-exists-as-dir' exception")
         assert gdf.metadata == origmd
         assert _metadata[the_dir] == origfmd
     finally:
         shutil.rmtree(td)
Beispiel #5
0
    def test_put(self):
        td = tempfile.mkdtemp()
        try:
            gdf = Gluster_DiskFile(td, "vol0", "p57", "ufo47", "bar", "z", self.lg)
            assert gdf._obj == "z"
            assert gdf._obj_path == ""
            assert gdf.name == "bar"
            assert gdf.datadir == os.path.join(td, "vol0", "bar")
            assert gdf.data_file is None

            body = "1234\n"
            etag = md5()
            etag.update(body)
            etag = etag.hexdigest()
            metadata = {"X-Timestamp": "1234", "Content-Type": "file", "ETag": etag, "Content-Length": "5"}

            with gdf.mkstemp() as fd:
                assert gdf.tmppath is not None
                tmppath = gdf.tmppath
                os.write(fd, body)
                gdf.put(fd, metadata)

            assert gdf.data_file == os.path.join(td, "vol0", "bar", "z")
            assert os.path.exists(gdf.data_file)
            assert not os.path.exists(tmppath)
        finally:
            shutil.rmtree(td)
Beispiel #6
0
 def test_put_w_marker_dir_create(self):
     td = tempfile.mkdtemp()
     the_path = os.path.join(td, "vol0", "bar")
     the_dir = os.path.join(the_path, "dir")
     try:
         gdf = Gluster_DiskFile(td, "vol0", "p57", "ufo47", "bar", "dir", self.lg)
         assert gdf.metadata == {}
         newmd = {"Content-Length": 0, "ETag": "etag", "X-Timestamp": "ts", "Content-Type": "application/directory"}
         gdf.put(None, newmd, extension=".dir")
         assert gdf.data_file == the_dir
         assert gdf.metadata == newmd
         assert _metadata[the_dir] == newmd
     finally:
         shutil.rmtree(td)
Beispiel #7
0
 def test_put_w_marker_dir_create(self):
     td = tempfile.mkdtemp()
     the_path = os.path.join(td, "vol0", "bar")
     the_dir = os.path.join(the_path, "dir")
     try:
         gdf = Gluster_DiskFile(td, "vol0", "p57", "ufo47", "bar",
                                "dir", self.lg)
         assert gdf.metadata == {}
         newmd = {
             'Content-Length': 0,
             'ETag': 'etag',
             'X-Timestamp': 'ts',
             'Content-Type': 'application/directory'}
         gdf.put(None, newmd, extension='.dir')
         assert gdf.data_file == the_dir
         assert gdf.metadata == newmd
         assert _metadata[the_dir] == newmd
     finally:
         shutil.rmtree(td)
Beispiel #8
0
 def test_put_w_marker_dir_create(self):
     td = tempfile.mkdtemp()
     the_path = os.path.join(td, "vol0", "bar")
     the_dir = os.path.join(the_path, "dir")
     try:
         gdf = Gluster_DiskFile(td, "vol0", "p57", "ufo47", "bar",
                                "dir", self.lg)
         assert gdf.metadata == {}
         newmd = {
             'Content-Length': 0,
             'ETag': 'etag',
             'X-Timestamp': 'ts',
             'Content-Type': 'application/directory'}
         gdf.put(None, newmd, extension='.dir')
         assert gdf.data_file == the_dir
         assert gdf.metadata == newmd
         assert _metadata[the_dir] == newmd
     finally:
         shutil.rmtree(td)
 def test_put_w_marker_dir_create(self):
     td = tempfile.mkdtemp()
     the_cont = os.path.join(td, "vol0", "bar")
     the_dir = os.path.join(the_cont, "dir")
     try:
         os.makedirs(the_cont)
         gdf = Gluster_DiskFile(td, "vol0", "p57", "ufo47", "bar",
                                "dir", self.lg)
         assert gdf.metadata == {}
         newmd = {
             'ETag': 'etag',
             'X-Timestamp': 'ts',
             'Content-Type': 'application/directory'}
         gdf.put(None, newmd, extension='.dir')
         assert gdf.data_file == the_dir
         for key,val in newmd.items():
             assert gdf.metadata[key] == val
             assert _metadata[the_dir][key] == val
         assert gdf.metadata[X_OBJECT_TYPE] == DIR_OBJECT
         assert _metadata[the_dir][X_OBJECT_TYPE] == DIR_OBJECT
     finally:
         shutil.rmtree(td)