fixing LookupError of metrics
This commit is contained in:
parent
821656ffc8
commit
2ed3e3f77f
|
@ -7,6 +7,11 @@ from ereuse_devicehub.resources.device import models as m
|
||||||
from ereuse_devicehub.resources.metric.schema import Metric
|
from ereuse_devicehub.resources.metric.schema import Metric
|
||||||
|
|
||||||
|
|
||||||
|
def last_action(dev, action):
|
||||||
|
act = [e for e in reversed(dev.actions) if isinstance(e, action)]
|
||||||
|
return act[0] if act else None
|
||||||
|
|
||||||
|
|
||||||
class MetricsView(View):
|
class MetricsView(View):
|
||||||
def find(self, args: dict):
|
def find(self, args: dict):
|
||||||
|
|
||||||
|
@ -27,8 +32,8 @@ class MetricsView(View):
|
||||||
devices = m.Device.query.filter(m.Device.allocated==True)
|
devices = m.Device.query.filter(m.Device.allocated==True)
|
||||||
count = 0
|
count = 0
|
||||||
for dev in devices:
|
for dev in devices:
|
||||||
live = dev.last_action_of(Live)
|
live = last_action(dev, Live)
|
||||||
allocate = dev.last_action_of(Allocate)
|
allocate = last_action(dev, Allocate)
|
||||||
if not live:
|
if not live:
|
||||||
continue
|
continue
|
||||||
if allocate and allocate.created > live.created:
|
if allocate and allocate.created > live.created:
|
||||||
|
|
|
@ -90,3 +90,26 @@ def test_second_hdd_metrics(user: UserClient):
|
||||||
res, _ = user.get("/metrics/")
|
res, _ = user.get("/metrics/")
|
||||||
assert res == metrics
|
assert res == metrics
|
||||||
|
|
||||||
|
|
||||||
|
@pytest.mark.mvp
|
||||||
|
@pytest.mark.usefixtures(conftest.app_context.__name__)
|
||||||
|
def test_metrics_with_live_null(user: UserClient):
|
||||||
|
""" Checks one standard query of metrics """
|
||||||
|
# Insert computer
|
||||||
|
acer = file('acer.happy.battery.snapshot')
|
||||||
|
snapshot, _ = user.post(acer, res=ma.Snapshot)
|
||||||
|
device_id = snapshot['device']['id']
|
||||||
|
post_request = {"Transaction": "ccc", "name": "John", "end_users": 1,
|
||||||
|
"devices": [device_id], "description": "aaa",
|
||||||
|
"start_time": "2020-11-01T02:00:00+00:00",
|
||||||
|
"end_time": "2020-12-01T02:00:00+00:00"
|
||||||
|
}
|
||||||
|
|
||||||
|
# Create Allocate
|
||||||
|
user.post(res=ma.Allocate, data=post_request)
|
||||||
|
|
||||||
|
# Check metrics if we change the hdd we need a result of one device
|
||||||
|
metrics = {'allocateds': 1, 'live': 0}
|
||||||
|
res, _ = user.get("/metrics/")
|
||||||
|
assert res == metrics
|
||||||
|
|
||||||
|
|
Reference in New Issue