Merge ~mpontillo/maas:backport-stats-test-fixes--2.3 into maas:2.3

Proposed by Mike Pontillo
Status: Merged
Approved by: Mike Pontillo
Approved revision: 15d728c425e485ad9ff0d085731f50b968613471
Merge reported by: MAAS Lander
Merged at revision: not available
Proposed branch: ~mpontillo/maas:backport-stats-test-fixes--2.3
Merge into: maas:2.3
Diff against target: 61 lines (+16/-5)
2 files modified
src/maasserver/stats.py (+6/-2)
src/maasserver/tests/test_stats.py (+10/-3)
Reviewer Review Type Date Requested Status
Mike Pontillo (community) Approve
Review via email: mp+342675@code.launchpad.net

Commit message

Fix random failures in test_stats.py.

To post a comment you must log in.
Revision history for this message
Mike Pontillo (mpontillo) wrote :

Self-approve backport.

review: Approve

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1diff --git a/src/maasserver/stats.py b/src/maasserver/stats.py
2index f6da73e..978af87 100644
3--- a/src/maasserver/stats.py
4+++ b/src/maasserver/stats.py
5@@ -30,16 +30,20 @@ from maasserver.utils import get_maas_user_agent
6 import requests
7
8
9-def get_maas_stats():
10+def get_machine_stats():
11 nodes = Node.objects.all()
12 machines = nodes.filter(node_type=NODE_TYPE.MACHINE)
13 # Rather overall amount of stats for machines.
14- stats = machines.aggregate(
15+ return machines.aggregate(
16 total_cpu=Sum('cpu_count'), total_mem=Sum('memory'),
17 total_storage=Sum('blockdevice__size'))
18+
19+
20+def get_maas_stats():
21 # Get all node types to get count values
22 node_types = Node.objects.values_list('node_type', flat=True)
23 node_types = Counter(node_types)
24+ stats = get_machine_stats()
25
26 return json.dumps({
27 "controllers": {
28diff --git a/src/maasserver/tests/test_stats.py b/src/maasserver/tests/test_stats.py
29index 2bb0e1a..43aae70 100644
30--- a/src/maasserver/tests/test_stats.py
31+++ b/src/maasserver/tests/test_stats.py
32@@ -13,6 +13,7 @@ from maasserver import stats
33 from maasserver.models import Config
34 from maasserver.stats import (
35 get_maas_stats,
36+ get_machine_stats,
37 get_request_params,
38 make_maas_user_agent_request,
39 )
40@@ -40,12 +41,18 @@ class TestMAASStats(MAASServerTestCase):
41 factory.make_RegionRackController()
42 factory.make_RegionController()
43 factory.make_RackController()
44- m1 = factory.make_Machine(cpu_count=2, memory=200)
45- m2 = factory.make_Machine(cpu_count=3, memory=100)
46+ factory.make_Machine(cpu_count=2, memory=200)
47+ factory.make_Machine(cpu_count=3, memory=100)
48 factory.make_Device()
49
50 stats = get_maas_stats()
51- total_storage = int((m1.storage + m2.storage) * 1000000)
52+ machine_stats = get_machine_stats()
53+
54+ # Due to floating point calculation subtleties, sometimes the value the
55+ # database returns is off by one compared to the value Python
56+ # calculates, so just get it directly from the database for the test.
57+ total_storage = machine_stats['total_storage']
58+
59 compare = {
60 "controllers": {
61 "regionracks": 1,

Subscribers

People subscribed via source and target branches