Esempio n. 1
0
    def setUp(self):

        self.testfile = 'test'
        self.fs = MongoFileStorage(data_scope=self.testfile)
Esempio n. 2
0
class MongoFileStorageTest(TestCase):
    """Test MongoFileStream.
    """
    def setUp(self):

        self.testfile = 'test'
        self.fs = MongoFileStorage(data_scope=self.testfile)

    def tearDown(self):

        self.fs.delete()
        sleep(1)

    def test_list(self):
        """Test to list files.
        """

        names = set([str(i) for i in range(5)])

        for name in names:
            self.fs.new_file(name=name).close()

        filenames = set(self.fs.list())

        self.assertEqual(filenames, names)

    def test_notexists(self):
        """Test if a filestream does not exist.
        """

        exists = self.fs.exists(name=self.testfile)

        self.assertFalse(exists)

        fs = self.fs.get(name=self.testfile)

        self.assertIsNone(fs)

        fss = list(self.fs.find(names=[self.testfile]))

        self.assertFalse(fss)

        fss = list(self.fs.find())

        self.assertFalse(fss)

    def test_newfile(self):
        """Test if a filestream does not exist.
        """

        fs = self.fs.new_file(name=self.testfile)

        exists = self.fs.exists(name=self.testfile)

        self.assertFalse(exists)

        fs.close()

        exists = self.fs.exists(name=self.testfile)

        self.assertTrue(exists)

        fs1 = self.fs.get(name=self.testfile)

        self.assertEqual(fs, fs1)

        self.fs.delete(names=self.testfile)

        exists = self.fs.exists(name=self.testfile)

        self.assertFalse(exists)

    def _create_filestream(self):
        """Create a filestream.

        :return: newly created file stream.
        :rtype: canopsis.storage.file.FileStream
        """

        result = self.fs.new_file(name=self.testfile)

        result.close()

        return result

    def test_putr(self):
        """Test to put and read data.
        """

        if pymongov >= '3':
            self.fs.put(name=self.testfile, data=self.testfile)

            fs = self.fs.get(name=self.testfile)

            data = fs.read(size=2)

            self.assertEqual(self.testfile[:2], data)

            data = fs.read(size=-1)

            self.assertEqual(self.testfile[2:], data)

    def test_writer(self):
        """Test to write and read data.
        """

        fs = self.fs.new_file(name=self.testfile)

        fs.write(data=self.testfile)

        fs.close()

        fs = self.fs.get(name=self.testfile)

        data = fs.read(size=2)

        self.assertEqual(self.testfile[:2], data)

        data = fs.read(size=-1)

        self.assertEqual(self.testfile[2:], data)

    def test_pos(self):
        """Test file position only with pymongo3+
        """

        if pymongov >= '3':

            fs = self._create_filestream()

            pos = fs.pos()

            self.assertEqual(pos, 0)

            self.assertRaises(Exception, fs.seek, 2)