def test_put_node_ok(self):
        # write it
        node_id = "dinw78cdync8"
        ds = DiskStorage(self.tmpdir)
        data = 'test content to write'
        consumer = ds.put(node_id)
        consumer.write(data)
        consumer.unregisterProducer()

        # check the file
        path = ds._get_treepath(node_id)
        with open(os.path.join(path, node_id), 'rb') as fh:
            written = fh.read()
        self.assertEqual(written, data)
    def test_get_node_ok(self):
        # write a fake file
        node_id = "dinw78cdync8"
        path = DiskStorage(self.tmpdir)._get_treepath(node_id)
        os.makedirs(path)
        data = 'test content'
        with open(os.path.join(path, node_id), 'wb') as fh:
            fh.write(data)

        # get it
        ds = DiskStorage(self.tmpdir)
        producer = ds.get(node_id)
        consumer = StringIO.StringIO()
        yield producer.startProducing(consumer)
        self.assertEqual(consumer.getvalue(), data)
    def test_put_node_resumed(self):
        # write some
        node_id = "dinw78cdync8"
        ds = DiskStorage(self.tmpdir)
        data1 = b'test content to write part 1'
        consumer = ds.put(node_id)
        consumer.write(data1)
        consumer.unregisterProducer()

        # write more
        data2 = b' and part 2'
        consumer = ds.put(node_id, len(data1))
        consumer.write(data2)
        consumer.unregisterProducer()

        # check the file
        path = ds._get_treepath(node_id)
        with open(os.path.join(path, node_id), 'rb') as fh:
            written = fh.read()
        self.assertEqual(written, data1 + data2)
 def test_put_node_twice_similar_name(self):
     node_id_1 = "abcJJJJJJJJJ"
     node_id_2 = "abcYYYYYYYYY"
     ds = DiskStorage(self.tmpdir)
     ds.put(node_id_1)
     ds.put(node_id_2)