Exemplo n.º 1
0
 def test_meta_is_immuatable_after_commit(self):
     n = models.Node('lunr',
                     12,
                     volume_type=self.volume_type,
                     hostname='127.0.0.1',
                     port=8080)
     # this works here because the instance is new
     n.meta.update(key1='val1')
     expected = {'key1': 'val1'}
     self.assertEquals(expected, n.meta)
     self.db.add(n)
     self.db.commit()
     n = self.db.query(models.Node).filter_by(name='lunr').first()
     self.assertEquals(expected, n.meta)
     # when you load an object from the database the meta attribute is
     # not directly mutable, you have to use _meta
     try:
         n.meta.update(key2='val2')
     except Exception:
         pass
     else:
         raise AssertionError('node meta should not support item '
                              'assignment directly')
     # assignment still works
     n.meta = dict(n.meta)
     n.meta.update(key2='val2')
     self.db.commit()
     n = self.db.query(models.Node).filter_by(name='lunr').first()
     expected = {'key1': 'val1', 'key2': 'val2'}
     self.assertEquals(expected, n.meta)
Exemplo n.º 2
0
 def test_default_empty_meta(self):
     n = models.Node('lunr',
                     12,
                     volume_type=self.volume_type,
                     hostname='127.0.0.1',
                     port=8080)
     self.assertEquals({}, n.meta)
     self.db.add(n)
     self.db.commit()
     self.assertEquals({}, n.meta)
Exemplo n.º 3
0
 def test_set_meta_after_init(self):
     n = models.Node('lunr',
                     12,
                     volume_type=self.volume_type,
                     hostname='127.0.0.1',
                     port=8080)
     n.meta = {'key1': 'val1'}
     expected = {'key1': 'val1'}
     self.assertEquals(expected, n.meta)
     self.db.add(n)
     self.db.commit()
     n = self.db.query(models.Node).filter_by(name='lunr').first()
     self.assertEquals(expected, n.meta)
Exemplo n.º 4
0
 def test_update_meta_after_commit(self):
     n = models.Node('lunr',
                     8,
                     volume_type=self.volume_type,
                     hostname='test',
                     port=8080)
     self.db.add(n)
     self.db.commit()
     n = self.db.query(models.Node).filter_by(name='lunr').first()
     # use the _meta property to update isntance meta
     n._meta.update(key1='val1')
     self.assertEquals({'key1': 'val1'}, n.meta)
     self.db.commit()
     n = self.db.query(models.Node).filter_by(name='lunr').first()
     self.assertEquals({'key1': 'val1'}, n.meta)
Exemplo n.º 5
0
 def test_create_default(self):
     n = models.Node()
     self.assert_(isinstance(dict(n), dict))
     self.db.add(n)
     self.db.commit()
     n = self.db.query(models.Node).first()
     self.assert_(isinstance(dict(n), dict))
     expected = {
         'size': 0,
         'port': 8081,
         'hostname': 'localhost',
         'storage_hostname': 'localhost',
         'storage_port': 3260,
         'volume_type_name': models.DEFAULT_VOLUME_TYPE,
         'affinity_group': '',
     }
     for k, v in expected.items():
         err_msg = '%s != %s (%s)' % (v, getattr(n, k), k)
         self.assertEquals(v, getattr(n, k), err_msg)
Exemplo n.º 6
0
 def test_calculate_storage_used(self):
     a = models.Account()
     n = models.Node('lunr',
                     12,
                     volume_type=self.volume_type,
                     hostname='127.0.0.1',
                     port=8080)
     v = models.Volume(account=a,
                       size=1,
                       volume_type=self.volume_type,
                       node=n)
     self.db.add_all([a, n, v])
     self.db.commit()
     n.calc_storage_used()
     self.assertEquals(1, n.storage_used)
     v.status = 'DELETED'
     self.db.add(v)
     n.calc_storage_used()
     self.assertEquals(0, n.storage_used)
Exemplo n.º 7
0
 def test_active_backup_count(self):
     vt = models.VolumeType('lunr')
     a = models.Account()
     n = models.Node('lunr',
                     10,
                     volume_type=vt,
                     hostname='127.0.0.1',
                     port=8080)
     v = models.Volume(account=a, size=1, volume_type=vt, node=n)
     b1 = models.Backup(volume=v, status='AVAILABLE')
     b2 = models.Backup(volume=v, status='AVAILABLE')
     b3 = models.Backup(volume=v, status='NOTAVAILABLE')
     b4 = models.Backup(volume=v, status='SOMETHING')
     b5 = models.Backup(volume=v, status='AVAILABLE')
     b6 = models.Backup(volume=v, status='AUDITING')
     b7 = models.Backup(volume=v, status='DELETED')
     self.db.add_all([a, n, v, b1, b2, b3, b4, b5, b6, b7])
     self.db.commit()
     self.db.refresh(v)
     self.assertEquals(5, v.active_backup_count())