class TestGlanceServersFacadeMockPersist(TestGlanceServersFacadeMock):
    """This class do the same tests than TestGlanceServerFacadeMock, but
    use the persistence option. Both groups of test should be equivalent,
    because after each test, the tearDown method destroy the persistence
    files"""
    def setUp(self):
        target_master = dict()
        target_other = dict()
        self.dir_persist = tempfile.mkdtemp(prefix='glancesync_tmp')
        self.mock_master = ServersFacade(target_master)
        self.mock_other = ServersFacade(target_other)
        self.mock_master.init_persistence(self.dir_persist)
        self.mock_other.init_persistence(self.dir_persist)
        self.id_image1 = '0$image1'
        self.id_image2 = '0$image2'
        self.mock_master.add_image_to_mock([
            'Valladolid', 'image1', self.id_image1,
            'active', '4984864768', 'c8982de656c0ca2c8b9fb7fdb0922bf4',
            '00000000000000000000000000000001', True,
            "{u'type': u'fiware:data', u'nid': u'855'}"])
        self.mock_master.add_image_to_mock([
            'Valladolid', 'image2', self.id_image2,
            'active', '1', 'd9879de656c0ca2c8b9fb7fdb003bf5',
            '00000000000000000000000000000001', True,
            "{u'type': u'fiware:data', u'nid': u'300'}"])
        self.mock_master.add_emptyregion_to_mock('Burgos')
        self.mock_other.add_emptyregion_to_mock('other:Madrid')
        target_master['tenant'] = '00000000000000000000000000000001'
        target_other['tenant'] = '00000000000000000000000000000001'
        target_master['target_name'] = 'master'
        target_other['target_name'] = 'other'
        self.targets = {'master': target_master, 'other': target_other}
        self.region1 = GlanceSyncRegion('Valladolid', self.targets)
        self.region2 = GlanceSyncRegion('Burgos', self.targets)
        self.region3 = GlanceSyncRegion('other:Madrid', self.targets)

    def tearDown(self):
        super(TestGlanceServersFacadeMockPersist, self).tearDown()
        for filename in glob.glob(self.dir_persist + '/_persist_*'):
            os.remove(filename)
        os.rmdir(self.dir_persist)

    def test_persistence(self):
        """test some operations without calling tearDown but reloading files
        This is to verify persistence"""
        before = len(self.mock_master.get_imagelist(self.region1))
        self.mock_master.delete_image(self.region1, self.id_image1)
        self.mock_master.init_persistence(self.dir_persist)
        after = len(self.mock_master.get_imagelist(self.region1))
        self.assertEquals(before - 1, after)
        image = self.mock_master.get_imagelist(self.region1)[0]
        before = len(self.mock_master.get_imagelist(self.region2))
        id = self.mock_master.upload_image(self.region2, image)
        self.mock_master.init_persistence(self.dir_persist)
        after = len(self.mock_master.get_imagelist(self.region2))
        self.assertEquals(before + 1, after)