Skip to content

Commit

Permalink
fix cleanup database for expired testresults
Browse files Browse the repository at this point in the history
  • Loading branch information
ira committed Dec 2, 2015
1 parent d931b4a commit 6623b4d
Show file tree
Hide file tree
Showing 3 changed files with 51 additions and 48 deletions.
91 changes: 46 additions & 45 deletions cdws_api/tests.py
Original file line number Diff line number Diff line change
Expand Up @@ -16,9 +16,13 @@
from djcelery.models import PeriodicTask, CrontabSchedule

from testreport.tasks import update_bugs
from testreport.tasks import cleanup_database

from django.test.utils import override_settings

from django.utils import timezone
from datetime import timedelta

import requests_mock
import json
import random
Expand Down Expand Up @@ -474,71 +478,46 @@ def setUp(self):
self.launch = Launch.objects.create(test_plan=self.test_plan,
started_by='http://2gis.local/')

def _create_testresult(self, data):
return self._call_rest('post', 'testresults/', data)

def _get_testresults(self, filter=None):
if filter is not None:
return self._call_rest('get',
'testresults/custom_list/?{}'.format(
filter))
else:
return self._call_rest('get', 'testresults/')

def test_creation(self):
data = [{
'launch': self.launch.id,
def _get_testresult_data(self, launch_id):
return [{
'launch': launch_id,
'name': 'DummyTestCase',
'suite': 'DummyTestSuite',
'state': PASSED,
'failure_reason': None,
'duration': 1
}, {
'launch': self.launch.id,
'launch': launch_id,
'name': 'SecondDummyTestSuite',
'suite': 'SecondDummyTestSuite',
'state': FAILED,
'failure_reason': 'Exception: Clear message about failure',
'duration': 5
}]

def _create_testresult(self, data):
return self._call_rest('post', 'testresults/', data)

def _get_testresults(self, filter=None):
if filter is not None:
return self._call_rest('get',
'testresults/custom_list/?{}'.format(
filter))
else:
return self._call_rest('get', 'testresults/')

def test_creation(self):
data = self._get_testresult_data(self.launch.id)
self._create_testresult(data)
self.assertEqual(len(self._get_testresults()['results']), 2)

def test_filter_in(self):
launches = [self.launch,
Launch.objects.create(test_plan=self.test_plan,
started_by='http://2gis.local/')]
data1 = [{
'launch': launches[0].id,
'name': 'DummyTestCase',
'suite': 'DummyTestSuite',
'state': PASSED,
'failure_reason': None,
'duration': 1
}, {
'launch': launches[0].id,
'name': 'SecondDummyTestSuite',
'suite': 'SecondDummyTestSuite',
'state': FAILED,
'failure_reason': 'Exception: Clear message about failure',
'duration': 5
}]
data1 = self._get_testresult_data(launches[0].id)
self._create_testresult(data1)
data2 = [{
'launch': launches[1].id,
'name': 'DummyTestCase',
'suite': 'DummyTestSuite',
'state': PASSED,
'failure_reason': None,
'duration': 1
}, {
'launch': launches[1].id,
'name': 'SecondDummyTestSuite',
'suite': 'SecondDummyTestSuite',
'state': FAILED,
'failure_reason': 'Exception: Clear message about failure',
'duration': 5
}]
data2 = self._get_testresult_data(launches[1].id)
self._create_testresult(data2)
url = 'launch_id__in={},{}&state={}'.format(
launches[0].id, launches[1].id, FAILED)
Expand All @@ -553,6 +532,28 @@ def test_filter_in(self):
self.assertEqual(4, self._get_testresults('launch_id__in=')['count'])
self.assertEqual(4, self._get_testresults('state__in=')['count'])

def test_clean_expired_results(self):
data = self._get_testresult_data(self.launch.id)
self._create_testresult(data)
self.assertEqual(len(self._get_testresults()['results']), 2)
self.launch.finished = timezone.now().date() - timedelta(days=31)
self.launch.save()

cleanup_database()
print(self._get_testresults())
self.assertEqual(len(self._get_testresults()['results']), 0)

def test_not_clean_actual_results(self):
data = self._get_testresult_data(self.launch.id)
self._create_testresult(data)
self.assertEqual(len(self._get_testresults()['results']), 2)
self.launch.finished = timezone.now().date() - timedelta(days=1)
self.launch.save()

cleanup_database()
print(self._get_testresults())
self.assertEqual(len(self._get_testresults()['results']), 2)


class CommentsApiTestCase(AbstractEntityApiTestCase):
comment = 'Dummy comment text'
Expand Down
2 changes: 1 addition & 1 deletion pycd/settings.py
Original file line number Diff line number Diff line change
Expand Up @@ -202,7 +202,7 @@
COOKIE_DOMAIN = os.environ.get('COOKIE_DOMAIN', '')
SESSION_COOKIE_DOMAIN = COOKIE_DOMAIN

STORE_TESTRESULTS_IN_DAYS = os.environ.get('STORE_TESTRESULTS_IN_DAYS', 7)
STORE_TESTRESULTS_IN_DAYS = os.environ.get('STORE_TESTRESULTS_IN_DAYS', 30)
RUNDECK_URL = os.environ.get('RUNDECK_URL', '')

STATIC_URL = os.environ.get('STATIC_URL', '/static/')
Expand Down
6 changes: 4 additions & 2 deletions testreport/tasks.py
Original file line number Diff line number Diff line change
Expand Up @@ -92,8 +92,10 @@ def cleanup_database():
days = timezone.now().date() - timedelta(
days=settings.STORE_TESTRESULTS_IN_DAYS)

map(lambda launch: launch.testresult_set.all().delete(),
Launch.objects.filter(finished__lte=days))
list(map(lambda launch: (
launch.testresult_set.all().delete(),
log.info('Delete results for launch {}'.format(launch.id))
), Launch.objects.filter(finished__lte=days)))


@celery.task()
Expand Down

0 comments on commit 6623b4d

Please sign in to comment.