Beispiel #1
0
def test_update_tag_stats(transactional_db):
    # Setup some sessions and tags
    now = timezone.now()
    s1 = mommy.make(Session, id=1, identity__data="tester", time=now - timedelta(days=3), device__id=1)
    s2 = mommy.make(Session, id=2, identity__data="tester", time=now - timedelta(days=2), device__id=1)
    s3 = mommy.make(Session, id=3, identity__data="tester", time=now - timedelta(days=1), device__id=1)
    tags = [mommy.make(Tag, id=n, unique_id='tag%i' % n) for n in range(10)]

    utils.update_tag_stats(s1, Tag.objects.values_list('pk', flat=True)[:4])

    # Last seen and first seen should be s1
    for tag_stat in TagStats.objects.all():
        assert tag_stat.last_seen == s1
        assert tag_stat.first_seen == s1

    with pytest.raises(TagStats.DoesNotExist):
        TagStats.objects.get(tag=tags[6], device=s1.device)

    utils.update_tag_stats(s2, Tag.objects.values_list('pk', flat=True)[2:4])

    # Only last_seen session for tags 2,3 should be changed
    assert TagStats.objects.get(tag=tags[0], device=s2.device).last_seen == s1
    assert TagStats.objects.get(tag=tags[0], device=s2.device).first_seen == s1
    assert TagStats.objects.get(tag=tags[1], device=s2.device).last_seen == s1
    assert TagStats.objects.get(tag=tags[1], device=s2.device).first_seen == s1

    assert TagStats.objects.get(tag=tags[2], device=s2.device).last_seen == s2
    assert TagStats.objects.get(tag=tags[2], device=s2.device).first_seen == s1
    assert TagStats.objects.get(tag=tags[3], device=s2.device).last_seen == s2
    assert TagStats.objects.get(tag=tags[3], device=s2.device).first_seen == s1
Beispiel #2
0
def test_update_tag_stats(transactional_db):
    # Setup some sessions and tags
    now = timezone.now()
    s1 = mommy.make(Session,
                    id=1,
                    identity__data="tester",
                    time=now - timedelta(days=3),
                    device__id=1)
    s2 = mommy.make(Session,
                    id=2,
                    identity__data="tester",
                    time=now - timedelta(days=2),
                    device__id=1)
    s3 = mommy.make(Session,
                    id=3,
                    identity__data="tester",
                    time=now - timedelta(days=1),
                    device__id=1)
    tags = [mommy.make(Tag, id=n, unique_id='tag%i' % n) for n in range(10)]

    utils.update_tag_stats(s1, Tag.objects.values_list('pk', flat=True)[:4])

    # Last seen and first seen should be s1
    for tag_stat in TagStats.objects.all():
        assert tag_stat.last_seen == s1
        assert tag_stat.first_seen == s1

    with pytest.raises(TagStats.DoesNotExist):
        TagStats.objects.get(tag=tags[6], device=s1.device)

    utils.update_tag_stats(s2, Tag.objects.values_list('pk', flat=True)[2:4])

    # Only last_seen session for tags 2,3 should be changed
    assert TagStats.objects.get(tag=tags[0], device=s2.device).last_seen == s1
    assert TagStats.objects.get(tag=tags[0], device=s2.device).first_seen == s1
    assert TagStats.objects.get(tag=tags[1], device=s2.device).last_seen == s1
    assert TagStats.objects.get(tag=tags[1], device=s2.device).first_seen == s1

    assert TagStats.objects.get(tag=tags[2], device=s2.device).last_seen == s2
    assert TagStats.objects.get(tag=tags[2], device=s2.device).first_seen == s1
    assert TagStats.objects.get(tag=tags[3], device=s2.device).last_seen == s2
    assert TagStats.objects.get(tag=tags[3], device=s2.device).first_seen == s1
Beispiel #3
0
def tags_and_sessions(transactional_db):
    now = timezone.now()
    s1 = mommy.make(Session, id=1, identity__data="tester", time=now - timedelta(days=3), device__id=1)
    s2 = mommy.make(Session, id=2, identity__data="tester", time=now - timedelta(days=1), device__id=1)
    s3 = mommy.make(Session, id=3, identity__data="tester", time=now + timedelta(days=1), device__id=1)
    mommy.make(Session, id=7, identity__data="tester", time=now + timedelta(days=2), device__id=1)
    s4 = mommy.make(Session, id=4, identity__data="tester", time=now + timedelta(days=3), device__id=1)
    mommy.make(Session, id=5, identity__data="tester", time=now - timedelta(days=4), device__id=1)
    mommy.make(Session, id=6, identity__data="tester", time=now + timedelta(days=4), device__id=1)

    tag1 = mommy.make(Tag, id=1, unique_id='tag1')
    tag2 = mommy.make(Tag, id=2, unique_id='tag2')
    tag3 = mommy.make(Tag, id=3, unique_id='tag3')
    tag4 = mommy.make(Tag, id=4, unique_id='tag4')
    tag5 = mommy.make(Tag, id=5, unique_id='tag5')
    tag6 = mommy.make(Tag, id=6, unique_id='tag6')
    tag7 = mommy.make(Tag, id=7, unique_id='tag7')

    # intital set: tag 1-4
    s1.tag_set.add(tag1, tag2, tag3, tag4)
    utils.update_tag_stats(s1, [1, 2, 3, 4])

    # s2, added: tag5;
    s2.tag_set.add(tag1, tag2, tag3, tag4, tag5)
    utils.update_tag_stats(s2, [1, 2, 3, 4, 5])

    # s3, removed: tag1;
    s3.tag_set.add(tag2, tag3, tag4, tag5)
    utils.update_tag_stats(s3, [2, 3, 4, 5])

    # s4 added: tag6, tag7; removed: tag2;
    s4.tag_set.add(tag3, tag4, tag5, tag6, tag7)
    utils.update_tag_stats(s4, [3, 4, 5, 6, 7])

    return {
        'now': now,
        'sessions': [s1, s2, s3, s4],
        'tags': [tag1, tag2, tag3, tag4, tag5, tag6, tag6]
    }
Beispiel #4
0
def test_large_tagstats_update(transactional_db):
    now = timezone.now()
    s1 = mommy.make(Session, id=1,time=now)
    tags = range(2000)
    utils.update_tag_stats(s1, tags)
    assert TagStats.objects.count() == 2000
Beispiel #5
0
def test_large_tagstats_update(transactional_db):
    now = timezone.now()
    s1 = mommy.make(Session, id=1, time=now)
    tags = range(2000)
    utils.update_tag_stats(s1, tags)
    assert TagStats.objects.count() == 2000
Beispiel #6
0
def tags_and_sessions(transactional_db):
    now = timezone.now()
    s1 = mommy.make(Session,
                    id=1,
                    identity__data="tester",
                    time=now - timedelta(days=3),
                    device__id=1)
    s2 = mommy.make(Session,
                    id=2,
                    identity__data="tester",
                    time=now - timedelta(days=1),
                    device__id=1)
    s3 = mommy.make(Session,
                    id=3,
                    identity__data="tester",
                    time=now + timedelta(days=1),
                    device__id=1)
    mommy.make(Session,
               id=7,
               identity__data="tester",
               time=now + timedelta(days=2),
               device__id=1)
    s4 = mommy.make(Session,
                    id=4,
                    identity__data="tester",
                    time=now + timedelta(days=3),
                    device__id=1)
    mommy.make(Session,
               id=5,
               identity__data="tester",
               time=now - timedelta(days=4),
               device__id=1)
    mommy.make(Session,
               id=6,
               identity__data="tester",
               time=now + timedelta(days=4),
               device__id=1)

    tag1 = mommy.make(Tag, id=1, unique_id='tag1')
    tag2 = mommy.make(Tag, id=2, unique_id='tag2')
    tag3 = mommy.make(Tag, id=3, unique_id='tag3')
    tag4 = mommy.make(Tag, id=4, unique_id='tag4')
    tag5 = mommy.make(Tag, id=5, unique_id='tag5')
    tag6 = mommy.make(Tag, id=6, unique_id='tag6')
    tag7 = mommy.make(Tag, id=7, unique_id='tag7')

    # intital set: tag 1-4
    s1.tag_set.add(tag1, tag2, tag3, tag4)
    utils.update_tag_stats(s1, [1, 2, 3, 4])

    # s2, added: tag5;
    s2.tag_set.add(tag1, tag2, tag3, tag4, tag5)
    utils.update_tag_stats(s2, [1, 2, 3, 4, 5])

    # s3, removed: tag1;
    s3.tag_set.add(tag2, tag3, tag4, tag5)
    utils.update_tag_stats(s3, [2, 3, 4, 5])

    # s4 added: tag6, tag7; removed: tag2;
    s4.tag_set.add(tag3, tag4, tag5, tag6, tag7)
    utils.update_tag_stats(s4, [3, 4, 5, 6, 7])

    return {
        'now': now,
        'sessions': [s1, s2, s3, s4],
        'tags': [tag1, tag2, tag3, tag4, tag5, tag6, tag6]
    }
# -*- coding: utf-8 -*-
"""
Migration script for issue 294: https://github.com/tnc-ba/strongTNC/pull/294
"""
from __future__ import print_function, division, absolute_import, unicode_literals

from apps.core.models import Session
from apps.swid.models import TagStats
from apps.swid.utils import update_tag_stats


for session in Session.objects.all().order_by('time'):
    print('Processing session %d...' % session.pk)
    tag_ids = session.tag_set.values_list('pk', flat=True)
    update_tag_stats(session, tag_ids)

print('Done.')
# -*- coding: utf-8 -*-
"""
Migration script for issue 294: https://github.com/tnc-ba/strongTNC/pull/294
"""
from __future__ import print_function, division, absolute_import, unicode_literals

from apps.core.models import Session
from apps.swid.utils import update_tag_stats


for session in Session.objects.all().order_by('time'):
    print('Processing session %d...' % session.pk)
    tag_ids = session.tag_set.values_list('pk', flat=True)
    update_tag_stats(session, tag_ids)

print('Done.')