mirror of
https://github.com/carrotquest/django-clickhouse.git
synced 2025-05-29 10:13:07 +03:00
Added tests on
This commit is contained in:
parent
a37cd25453
commit
2dab8fcccb
|
@ -9,6 +9,7 @@ from typing import List, Tuple
|
||||||
from django.db.models import Model as DjangoModel
|
from django.db.models import Model as DjangoModel
|
||||||
from django.utils.timezone import now
|
from django.utils.timezone import now
|
||||||
from infi.clickhouse_orm.database import Database
|
from infi.clickhouse_orm.database import Database
|
||||||
|
from infi.clickhouse_orm.engines import CollapsingMergeTree
|
||||||
from infi.clickhouse_orm.models import Model as InfiModel, ModelBase as InfiModelBase
|
from infi.clickhouse_orm.models import Model as InfiModel, ModelBase as InfiModelBase
|
||||||
from six import with_metaclass
|
from six import with_metaclass
|
||||||
from statsd.defaults.django import statsd
|
from statsd.defaults.django import statsd
|
||||||
|
@ -91,8 +92,11 @@ class ClickHouseModel(with_metaclass(ClickHouseModelMeta, InfiModel)):
|
||||||
def _prepare_val_for_eq(self, field_name, field, val):
|
def _prepare_val_for_eq(self, field_name, field, val):
|
||||||
if isinstance(val, datetime.datetime):
|
if isinstance(val, datetime.datetime):
|
||||||
return val.replace(microsecond=0)
|
return val.replace(microsecond=0)
|
||||||
elif field_name == '_version':
|
|
||||||
return True # Независимо от версии должно сравнение быть истиной
|
# Sign column for collapsing should be ignored
|
||||||
|
if isinstance(self.engine, CollapsingMergeTree) and field_name == self.engine.sign_col:
|
||||||
|
return True
|
||||||
|
|
||||||
return val
|
return val
|
||||||
|
|
||||||
def __eq__(self, other):
|
def __eq__(self, other):
|
||||||
|
@ -184,4 +188,6 @@ class ClickHouseModel(with_metaclass(ClickHouseModelMeta, InfiModel)):
|
||||||
if last_sync_time is None:
|
if last_sync_time is None:
|
||||||
return True
|
return True
|
||||||
|
|
||||||
|
print(last_sync_time)
|
||||||
|
|
||||||
return (last_sync_time - datetime.datetime.now()).total_seconds() >= cls.get_sync_delay()
|
return (last_sync_time - datetime.datetime.now()).total_seconds() >= cls.get_sync_delay()
|
||||||
|
|
|
@ -1,3 +1,5 @@
|
||||||
|
from enum import Enum
|
||||||
|
|
||||||
from django_clickhouse.clickhouse_models import ClickHouseModel
|
from django_clickhouse.clickhouse_models import ClickHouseModel
|
||||||
from django_clickhouse.engines import MergeTree, CollapsingMergeTree
|
from django_clickhouse.engines import MergeTree, CollapsingMergeTree
|
||||||
from infi.clickhouse_orm import fields
|
from infi.clickhouse_orm import fields
|
||||||
|
@ -25,4 +27,4 @@ class ClickHouseCollapseTestModel(ClickHouseModel):
|
||||||
value = fields.Int32Field()
|
value = fields.Int32Field()
|
||||||
sign = fields.Int8Field()
|
sign = fields.Int8Field()
|
||||||
|
|
||||||
engine = CollapsingMergeTree('created_date', ('id',), 'sign')
|
engine = CollapsingMergeTree('created_date', ('id',), 'sign')
|
||||||
|
|
29
tests/test_clickhouse_models.py
Normal file
29
tests/test_clickhouse_models.py
Normal file
|
@ -0,0 +1,29 @@
|
||||||
|
import datetime
|
||||||
|
|
||||||
|
from django.test import TestCase
|
||||||
|
|
||||||
|
from tests.clickhouse_models import ClickHouseTestModel
|
||||||
|
|
||||||
|
|
||||||
|
class ClickHouseModelTest(TestCase):
|
||||||
|
def setUp(self):
|
||||||
|
self.storage = ClickHouseTestModel.get_storage()
|
||||||
|
self.storage.flush()
|
||||||
|
|
||||||
|
def test_need_sync(self):
|
||||||
|
# sync is disabled by default
|
||||||
|
self.assertFalse(ClickHouseTestModel.need_sync())
|
||||||
|
|
||||||
|
# There were no syncs. So it should be done
|
||||||
|
ClickHouseTestModel.sync_enabled = True
|
||||||
|
self.assertTrue(ClickHouseTestModel.need_sync())
|
||||||
|
|
||||||
|
# Time hasn't passed - no sync
|
||||||
|
self.storage.set_last_sync_time(ClickHouseTestModel.get_import_key(), datetime.datetime.now())
|
||||||
|
self.assertFalse(ClickHouseTestModel.need_sync())
|
||||||
|
|
||||||
|
# Time has passed
|
||||||
|
sync_delay = ClickHouseTestModel.get_sync_delay()
|
||||||
|
self.storage.set_last_sync_time(ClickHouseTestModel.get_import_key(),
|
||||||
|
datetime.datetime.now() - datetime.timedelta(seconds=sync_delay))
|
||||||
|
self.assertFalse(ClickHouseTestModel.need_sync())
|
Loading…
Reference in New Issue
Block a user