changed the Usage.values() function to return a list of all the combined resources,

rather than a tuple. Changed all the places that used it to take advantage of the change.

Have begun setting up testing of the database module.
This commit is contained in:
adriant 2014-02-28 17:07:38 +13:00
parent 054703b91a
commit 0b7b1fd08a
4 changed files with 18 additions and 25 deletions

View File

@ -136,11 +136,10 @@ def run_usage_collection():
replace(minute=0, second=0, microsecond=0) replace(minute=0, second=0, microsecond=0)
usage = tenant.usage(start, end) usage = tenant.usage(start, end)
# .values() returns a tuple of lists of artifice Resource models
# enter expects a list of direct resource models. # enter all resources into the db
# So, unwind the list. d.enter(usage.values(), start, end)
for resource in usage.values():
d.enter(resource, start, end)
try: try:
session.commit() session.commit()
resp["tenants"].append( resp["tenants"].append(

View File

@ -291,7 +291,8 @@ class Usage(object):
# self._replace() # self._replace()
def values(self): def values(self):
return (self.vms, self.objects, self.volumes, self.networks, self.ips) return (self.vms + self.objects + self.volumes +
self.networks + self.ips)
@property @property
def vms(self): def vms(self):

View File

@ -1,7 +1,6 @@
from . import test_interface, helpers from . import test_interface, helpers
from decimal import Decimal
from artifice import database from artifice import database
from artifice.models import Tenant, UsageEntry, billing from artifice import models
from sqlalchemy.ext.declarative import declarative_base from sqlalchemy.ext.declarative import declarative_base
from datetime import datetime from datetime import datetime
@ -28,16 +27,15 @@ class TestDatabaseModels(test_interface.TestInterface):
usage = helpers.get_usage() usage = helpers.get_usage()
db = self.artifice_start_session() db = self.artifice_start_session()
db.session.add(Tenant(id="3f7b702e4ca14cd99aebf4c4320e00ec", db.insert_tenant("3f7b702e4ca14cd99aebf4c4320e00ec",
name="demo", info="", created=datetime.now())) "demo", "")
db.enter(usage.vms, self.start, self.end) db.enter(usage.values(), self.start, self.end)
db.enter(usage.objects, self.start, self.end)
db.enter(usage.networks, self.start, self.end)
db.enter(usage.volumes, self.start, self.end)
db.enter(usage.ips, self.start, self.end)
self.assertEqual(self.session.query(UsageEntry).count(), 17) self.assertEqual(self.session.query(models.UsageEntry).count(), 17)
self.assertEqual(self.session.query(models.Resource).count(),
len(usage.values()))
self.assertEqual(self.session.query(models.Tenant).count(), 1)
def test_get_from_db_1(self): def test_get_from_db_1(self):
"""Test to return a list of billable tenant objects, """Test to return a list of billable tenant objects,
@ -46,8 +44,8 @@ class TestDatabaseModels(test_interface.TestInterface):
usage = helpers.get_usage() usage = helpers.get_usage()
db = self.artifice_start_session() db = self.artifice_start_session()
db.session.add(Tenant(id="3f7b702e4ca14cd99aebf4c4320e00ec", db.insert_tenant("3f7b702e4ca14cd99aebf4c4320e00ec",
name="demo", info="", created=datetime.now())) "demo", "")
db.enter(usage.vms, self.start, self.end) db.enter(usage.vms, self.start, self.end)
db.enter(usage.objects, self.start, self.end) db.enter(usage.objects, self.start, self.end)
@ -55,9 +53,6 @@ class TestDatabaseModels(test_interface.TestInterface):
db.enter(usage.volumes, self.start, self.end) db.enter(usage.volumes, self.start, self.end)
db.enter(usage.ips, self.start, self.end) db.enter(usage.ips, self.start, self.end)
query = db.usage(self.start, self.end, "3f7b702e4ca14cd99aebf4c4320e00ec")
# tenant = billing.build_billable(query, db.session)
# def test_get_from_db_2(self): # def test_get_from_db_2(self):
# """Test to return a list of billable tenant objects, # """Test to return a list of billable tenant objects,

View File

@ -51,10 +51,8 @@ class TestApi(test_interface.TestInterface):
usages = self.session.query(models.UsageEntry) usages = self.session.query(models.UsageEntry)
self.assertTrue(usages.count() > 0) self.assertTrue(usages.count() > 0)
resources = self.session.query(models.Resource) resources = self.session.query(models.Resource)
count = 0
for res_type in usage.values(): self.assertEquals(resources.count(), len(usage.values()))
count += len(res_type)
self.assertEquals(resources.count(), count)
def test_sales_run_for_all(self): def test_sales_run_for_all(self):
""""Assertion that a sales run generates all tenant orders""" """"Assertion that a sales run generates all tenant orders"""