Skip to content

Commit 90b9746

Browse files
committed
Changed to use a gzipped release coverage JSON file, instead of a plain JSON file, if the name given in settings.py ends in .gz. Reduces the current release coverage file size from ~1.6MB to ~200kB. This is a preparation for saving more information in the release coverage file than we currently do.
- Legacy-Id: 10235
1 parent 7975991 commit 90b9746

4 files changed

Lines changed: 33 additions & 14 deletions

File tree

ietf/release/views.py

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
import re
33
import json
44
import datetime
5+
import gzip
56

67
from django.template import RequestContext
78
from django.shortcuts import render_to_response
@@ -43,8 +44,12 @@ def release(request, version=None):
4344

4445
coverage = {}
4546
if os.path.exists(settings.TEST_COVERAGE_MASTER_FILE):
46-
with open(settings.TEST_COVERAGE_MASTER_FILE) as file:
47-
coverage_data = json.load(file)
47+
if settings.TEST_COVERAGE_MASTER_FILE.endswith(".gz"):
48+
with gzip.open(settings.TEST_COVERAGE_MASTER_FILE, "rb") as file:
49+
coverage_data = json.load(file)
50+
else:
51+
with open(settings.TEST_COVERAGE_MASTER_FILE) as file:
52+
coverage_data = json.load(file)
4853
if version in coverage_data:
4954
coverage = coverage_data[version]
5055
for key in coverage:

ietf/settings.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -346,7 +346,7 @@ def skip_unreadable_post(record):
346346
"ietf/utils/test_runner.py",
347347
]
348348

349-
TEST_COVERAGE_MASTER_FILE = os.path.join(BASE_DIR, "../release-coverage.json")
349+
TEST_COVERAGE_MASTER_FILE = os.path.join(BASE_DIR, "../release-coverage.json.gz")
350350
TEST_COVERAGE_LATEST_FILE = os.path.join(BASE_DIR, "../latest-coverage.json")
351351

352352
TEST_CODE_COVERAGE_CHECKER = None

ietf/utils/management/commands/coverage_changes.py

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11

22
import json
33
import codecs
4+
import gzip
45
from optparse import make_option
56

67
from django.conf import settings
@@ -25,7 +26,10 @@ class Command(BaseCommand):
2526
def read_coverage(self, filename, version=None):
2627
if isinstance(filename, string_types):
2728
try:
28-
file = codecs.open(filename, "r", encoding="utf-8")
29+
if filename.endswith(".gz"):
30+
file = gzip.open(filename, "rb")
31+
else:
32+
file = codecs.open(filename, "r", encoding="utf-8")
2933
except IOError as e:
3034
self.stderr.write(u"%s" % e)
3135
exit(1)

ietf/utils/test_runner.py

Lines changed: 20 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,8 @@
4444
import warnings
4545
import datetime
4646
import codecs
47+
import gzip
48+
4749
from coverage.report import Reporter
4850
from coverage.results import Numbers
4951
from coverage.misc import NotPython
@@ -285,7 +287,7 @@ def code_coverage_test(self):
285287
checker.stop()
286288
# Save to the .coverage file
287289
checker.save()
288-
# Apply the confirured and requested omit and include data
290+
# Apply the configured and requested omit and include data
289291
checker.config.from_args(ignore_errors=None, omit=settings.TEST_CODE_COVERAGE_EXCLUDE,
290292
include=include, file=None)
291293
# Maybe output a html report
@@ -324,8 +326,12 @@ def setup_test_environment(self, **kwargs):
324326
ietf.utils.mail.SMTP_ADDR['port'] = 2025
325327
#
326328
if self.check_coverage:
327-
with codecs.open(self.coverage_file, encoding='utf-8') as file:
328-
self.coverage_master = json.load(file)
329+
if self.coverage_file.endswith('.gz'):
330+
with gzip.open(self.coverage_file, "rb") as file:
331+
self.coverage_master = json.load(file)
332+
else:
333+
with codecs.open(self.coverage_file, encoding='utf-8') as file:
334+
self.coverage_master = json.load(file)
329335
self.coverage_data = {
330336
"time": datetime.datetime.now(pytz.utc).strftime("%Y-%m-%dT%H:%M:%SZ"),
331337
"template": {
@@ -381,16 +387,20 @@ def teardown_test_environment(self, **kwargs):
381387
self.smtpd_driver.stop()
382388
if self.check_coverage:
383389
latest_coverage_file = os.path.join(self.root_dir, settings.TEST_COVERAGE_LATEST_FILE)
390+
coverage_latest = {}
391+
coverage_latest["version"] = "latest"
392+
coverage_latest["latest"] = self.coverage_data
384393
with codecs.open(latest_coverage_file, "w", encoding='utf-8') as file:
385-
coverage_latest = {}
386-
coverage_latest["version"] = "latest"
387-
coverage_latest["latest"] = self.coverage_data
388394
json.dump(coverage_latest, file, indent=2, sort_keys=True)
389395
if self.save_version_coverage:
390-
with codecs.open(self.coverage_file, "w", encoding="utf-8") as file:
391-
self.coverage_master["version"] = self.save_version_coverage
392-
self.coverage_master[self.save_version_coverage] = self.coverage_data
393-
json.dump(self.coverage_master, file, indent=2, sort_keys=True)
396+
self.coverage_master["version"] = self.save_version_coverage
397+
self.coverage_master[self.save_version_coverage] = self.coverage_data
398+
if self.coverage_file.endswith('.gz'):
399+
with gzip.open(self.coverage_file, "wb") as file:
400+
json.dump(self.coverage_master, file, indent=2, sort_keys=True)
401+
else:
402+
with codecs.open(self.coverage_file, "w", encoding="utf-8") as file:
403+
json.dump(self.coverage_master, file, indent=2, sort_keys=True)
394404
super(IetfTestRunner, self).teardown_test_environment(**kwargs)
395405

396406
def get_test_paths(self, test_labels):

0 commit comments

Comments
 (0)