Exemplo n.º 1
0
    def testTheSimplestCase(self):
        # so we want to count my guests
        # and they all alike to me, I'm a sociopath
        # so we want only to count them in time

        metrica = Metrica(name='guest_visits', axes=[])

        my_birthday = datetime.datetime(2006, 2,
                                        7)  # my 14th birthday. sorry for that
        day = datetime.timedelta(days=1)
        month = datetime.timedelta(days=31)

        yesterday = my_birthday - day
        before_yesterday = yesterday - day

        prev_month = my_birthday - month
        prev_month_and_a_day_back = prev_month - day

        metrica.kick(date=prev_month_and_a_day_back)
        for i in xrange(2):
            metrica.kick(date=prev_month)

        for i in xrange(5):
            metrica.kick(date=before_yesterday)

        for i in xrange(8):
            metrica.kick(date=yesterday)

        for i in xrange(20):  # all my friends have come
            metrica.kick(date=my_birthday)

        # so, how many of them have visited me?

        self.assertEquals(metrica.timespan(year=2006, month=1).total(), 3)
        self.assertEquals(metrica.timespan(year=2006, month=2).total(), 33)
        self.assertEquals(
            metrica.timespan(year=2006).timespan(month=2).total(), 33)
        self.assertEquals(metrica.timespan(year=2006, month=3).total(), 0)
        self.assertEquals(
            metrica.timespan(year=2006, month=2, day=7).total(), 20)
        self.assertEquals(metrica.timespan(year=2006).total(), 36)
        self.assertEquals(metrica.total(), 36)

        # looks like that

        # and also an iterator

        months = list(metrica.timespan(year=2006).iterate())[:3]
        self.assertEquals(months, [(1, 3), (2, 33), (3, 0)])

        years = list(metrica.timespan().iterate())
        self.assertEquals(years, [(2006, 36)])
Exemplo n.º 2
0
    def testWeighedMetrics(self):
        metrica = Metrica(name='some_weighed_metrics', axes=[], multiplier=100)

        d1 = datetime.datetime(2010, 2, 7)
        d2 = datetime.datetime(2010, 2, 8)
        d3 = datetime.datetime(2010, 2, 9)

        metrica.kick(date=d1, value=12)
        metrica.kick(date=d1, value=2)
        metrica.kick(date=d2, value=7.5)
        metrica.kick(date=d2, value=0.16)
        metrica.kick(date=d3)

        self.assertEquals(metrica.total(), 22.66)
        self.assertEquals(
            metrica.timespan(year=2010, month=2, day=8).total(), 7.66)
Exemplo n.º 3
0
    def testNewTimespans(self):

        metrica = Metrica(name='guest_visits', axes=[])

        my_birthday = datetime.datetime(2011, 2, 7)
        day = datetime.timedelta(days=1)
        month = datetime.timedelta(days=31)

        yesterday = my_birthday - day
        before_yesterday = yesterday - day

        prev_month = my_birthday - month
        prev_month_and_a_day_back = prev_month - day

        metrica.kick(date=prev_month_and_a_day_back)
        for i in xrange(2):
            metrica.kick(date=prev_month)

        for i in xrange(5):
            metrica.kick(date=before_yesterday)

        for i in xrange(8):
            metrica.kick(date=yesterday)

        for i in xrange(20):
            metrica.kick(date=my_birthday)

        print metrica.values().timeserie(dtt(2006, 1, 1), dtt(2011, 3, 1))
Exemplo n.º 4
0
    def testSimpleAxis(self):
        # so I grew older, and I had learned
        # how to tell if it's a boy or a girl

        gender_axis = Axis(choices=['boy', 'girl'])
        metrica = Metrica(name='guest_visits_gender',
                          axes=[('gender', gender_axis)])

        my_birthday = datetime.datetime(2007, 2, 7)
        # my 15th birthday.
        # you know what? I hated that year

        day = datetime.timedelta(days=1)
        month = datetime.timedelta(days=31)

        yesterday = my_birthday - day
        before_yesterday = yesterday - day

        prev_month = my_birthday - month
        prev_month_and_a_day_back = prev_month - day

        # my best friend came, we were playing video games
        metrica.kick(date=prev_month_and_a_day_back, gender='boy')

        metrica.kick(date=prev_month, gender='girl')
        metrica.kick(date=prev_month, gender='girl')  # I got lucky

        for i in xrange(5):
            metrica.kick(date=before_yesterday, gender='boy')
            # we got really drunk

        for i in xrange(4):
            metrica.kick(date=yesterday, gender='girl')
            metrica.kick(date=yesterday, gender='boy')
            # they came in pairs. I was FOREVER ALONE

        for i in xrange(18):  # all my friends have come
            metrica.kick(date=my_birthday, gender='boy')
        for i in xrange(2):  # and two girls
            metrica.kick(date=my_birthday, gender='girl')

        # let's count them!

        self.assertEquals(metrica.timespan(year=2007).total(), 36)
        self.assertEquals(metrica.filter(gender='girl').total(), 8)
        self.assertEquals(
            metrica.timespan(year=2007, month=2).filter(gender='boy').total(),
            27)

        genders = set(metrica.timespan().iterate('gender'))
        self.assertEquals(genders, set([('girl', 8), ('boy', 28)]))
Exemplo n.º 5
0
    def testMultipleAndStrangeAxis(self):
        # I'm eighteen, and I don't want problems with laws
        # so I ask everyone at my parties about their age
        # and I don't give them choices

        gender_axis = Axis(choices=['boy', 'girl'])
        age_axis = StoredChoiceAxis()
        metrica = Metrica(name='guest_visits_gender_age',
                          axes=[('gender', gender_axis), ('age', age_axis)])

        my_birthday = datetime.datetime(2010, 2, 7)

        day = datetime.timedelta(days=1)
        month = datetime.timedelta(days=31)

        yesterday = my_birthday - day
        before_yesterday = yesterday - day

        prev_month = my_birthday - month
        prev_month_and_a_day_back = prev_month - day

        # my best friend came, we were playing video games
        metrica.kick(date=prev_month_and_a_day_back, gender='boy', age=17)

        metrica.kick(date=prev_month, gender='girl', age=18)
        metrica.kick(date=prev_month, gender='girl', age=19)  # I got lucky

        for i in xrange(5):
            metrica.kick(date=before_yesterday, gender='boy', age=18)
            # as always

        for i in xrange(4):
            metrica.kick(date=yesterday, gender='girl', age=17)
            metrica.kick(date=yesterday, gender='boy', age=17)
            # they came in pairs. oh young people

        for i in xrange(12):  # all my friends have come
            metrica.kick(date=my_birthday, gender='boy', age=18)
        for i in xrange(6):
            metrica.kick(date=my_birthday, gender='boy', age=17)
        for i in xrange(2):  # and two girls. they were old
            metrica.kick(date=my_birthday, gender='girl', age=19)
        # also, granddaddy. big boy
        metrica.kick(date=my_birthday, gender='boy', age=120)

        # let's count them!
        self.assertEquals(metrica.timespan(year=2010).total(), 37)
        self.assertEquals(metrica.filter(gender='girl').total(), 8)
        self.assertEquals(metrica.filter(gender='girl', age=19).total(), 3)
        self.assertEquals(
            metrica.filter(gender='boy').timespan(
                year=2010, month=2).filter(age=17).total(), 10)

        ages = metrica.timespan(year=2010,
                                month=2).filter(gender='boy').iterate('age')
        self.assertEquals(set(ages),
                          set([('120', 1), ('19', 0), ('17', 10), ('18', 17)]))
Exemplo n.º 6
0
    def testSimpleAxis(self):
        # so I grew older, and I had learned
        # how to tell if it's a boy or a girl

        gender_axis = Axis(choices=['boy', 'girl'])
        metrica = Metrica(name='guest_visits_gender', axes=[('gender', gender_axis)])

        my_birthday = datetime.datetime(2007, 2, 7)
        # my 15th birthday.
        # you know what? I hated that year

        
        day = datetime.timedelta(days=1)
        month = datetime.timedelta(days=31)

        yesterday = my_birthday - day
        before_yesterday = yesterday - day

        prev_month = my_birthday - month
        prev_month_and_a_day_back = prev_month - day

        # my best friend came, we were playing video games
        metrica.kick(date=prev_month_and_a_day_back, gender='boy')
        
        metrica.kick(date=prev_month, gender='girl')
        metrica.kick(date=prev_month, gender='girl') # I got lucky
            
        for i in xrange(5):
            metrica.kick(date=before_yesterday, gender='boy')
            # we got really drunk

        for i in xrange(4):
            metrica.kick(date=yesterday, gender='girl')
            metrica.kick(date=yesterday, gender='boy')
            # they came in pairs. I was FOREVER ALONE
            
        for i in xrange(18): # all my friends have come
            metrica.kick(date=my_birthday, gender='boy')
        for i in xrange(2): # and two girls
            metrica.kick(date=my_birthday, gender='girl')

        # let's count them!
        
        self.assertEquals(metrica.timespan(year=2007).total(), 36)
        self.assertEquals(metrica.filter(gender='girl').total(), 8)
        self.assertEquals(metrica.timespan(year=2007, month=2).filter(gender='boy').total(), 27)

        genders = set(metrica.timespan().iterate('gender'))
        self.assertEquals(genders, set([('girl', 8), ('boy', 28)]))
Exemplo n.º 7
0

########NEW FILE########
__FILENAME__ = metrics
from staste.metrica import Metrica
from staste.axis import Axis, StoredChoiceAxis

from .forms import GENDERS

gender_axis = Axis(choices=GENDERS.keys())

age_axis = StoredChoiceAxis()

gender_age_metrica = Metrica(name='visitors_gender_and_age',
                             axes=[
                                 ('gender', gender_axis),
                                 ('age', age_axis),
                             ])

########NEW FILE########
__FILENAME__ = models

########NEW FILE########
__FILENAME__ = urls
from django.conf.urls.defaults import *

from staste.charts.views import PieChart, TimeserieChart, LatestCountAndAverageChart
from staste.middleware import response_time_metrica

from .views import IndexView
from .metrics import gender_age_metrica
Exemplo n.º 8
0
    def testTheSimplestCase(self):
        # so we want to count my guests
        # and they all alike to me, I'm a sociopath
        # so we want only to count them in time

        metrica = Metrica(name='guest_visits', axes=[])

        my_birthday = datetime.datetime(2006, 2, 7) # my 14th birthday. sorry for that
        day = datetime.timedelta(days=1)
        month = datetime.timedelta(days=31)

        yesterday = my_birthday - day
        before_yesterday = yesterday - day

        prev_month = my_birthday - month
        prev_month_and_a_day_back = prev_month - day

        metrica.kick(date=prev_month_and_a_day_back)
        for i in xrange(2):
            metrica.kick(date=prev_month)

            
        for i in xrange(5):
            metrica.kick(date=before_yesterday)

        for i in xrange(8):
            metrica.kick(date=yesterday)

        for i in xrange(20): # all my friends have come
            metrica.kick(date=my_birthday)


        # so, how many of them have visited me?

        self.assertEquals(metrica.timespan(year=2006, month=1).total(), 3)
        self.assertEquals(metrica.timespan(year=2006, month=2).total(), 33)
        self.assertEquals(metrica.timespan(year=2006).timespan(month=2).total(), 33)
        self.assertEquals(metrica.timespan(year=2006, month=3).total(), 0)
        self.assertEquals(metrica.timespan(year=2006, month=2, day=7).total(), 20)
        self.assertEquals(metrica.timespan(year=2006).total(), 36)
        self.assertEquals(metrica.total(), 36)
                

        # looks like that


        # and also an iterator

        months = list(metrica.timespan(year=2006).iterate())[:3]
        self.assertEquals(months, [(1, 3), (2, 33), (3, 0)])
            

        years = list(metrica.timespan().iterate())
        self.assertEquals(years, [(2006, 36)])
Exemplo n.º 9
0
    def testNewTimespans(self):
    
        metrica = Metrica(name='guest_visits', axes=[])

        my_birthday = datetime.datetime(2011, 2, 7)
        day = datetime.timedelta(days=1)
        month = datetime.timedelta(days=31)

        yesterday = my_birthday - day
        before_yesterday = yesterday - day

        prev_month = my_birthday - month
        prev_month_and_a_day_back = prev_month - day

        metrica.kick(date=prev_month_and_a_day_back)
        for i in xrange(2):
            metrica.kick(date=prev_month)
            
        for i in xrange(5):
            metrica.kick(date=before_yesterday)

        for i in xrange(8):
            metrica.kick(date=yesterday)

        for i in xrange(20):
            metrica.kick(date=my_birthday)

        print metrica.values().timeserie(dtt(2006, 1, 1), dtt(2011, 3, 1))
Exemplo n.º 10
0
    def testWeighedMetrics(self):
        metrica = Metrica(name='some_weighed_metrics', axes=[], multiplier=100)

        d1 = datetime.datetime(2010, 2, 7)
        d2 = datetime.datetime(2010, 2, 8)
        d3 = datetime.datetime(2010, 2, 9)
        
        metrica.kick(date=d1, value=12)
        metrica.kick(date=d1, value=2)
        metrica.kick(date=d2, value=7.5)
        metrica.kick(date=d2, value=0.16)
        metrica.kick(date=d3)

        self.assertEquals(metrica.total(), 22.66)
        self.assertEquals(metrica.timespan(year=2010, month=2, day=8).total(), 7.66)
Exemplo n.º 11
0
    def testMultipleAndStrangeAxis(self):
        # I'm eighteen, and I don't want problems with laws
        # so I ask everyone at my parties about their age
        # and I don't give them choices
        
        gender_axis = Axis(choices=['boy', 'girl'])
        age_axis = StoredChoiceAxis()
        metrica = Metrica(name='guest_visits_gender_age',
                          axes=[('gender', gender_axis),
                                ('age', age_axis)])


        my_birthday = datetime.datetime(2010, 2, 7)

        day = datetime.timedelta(days=1)
        month = datetime.timedelta(days=31)

        yesterday = my_birthday - day
        before_yesterday = yesterday - day

        prev_month = my_birthday - month
        prev_month_and_a_day_back = prev_month - day


        # my best friend came, we were playing video games
        metrica.kick(date=prev_month_and_a_day_back,
                     gender='boy',
                     age=17)
        
        metrica.kick(date=prev_month,
                     gender='girl',
                     age=18)
        metrica.kick(date=prev_month,
                     gender='girl',
                     age=19) # I got lucky
            
        for i in xrange(5):
            metrica.kick(date=before_yesterday, gender='boy', age=18)
            # as always

        for i in xrange(4):
            metrica.kick(date=yesterday, gender='girl', age=17)
            metrica.kick(date=yesterday, gender='boy', age=17)
            # they came in pairs. oh young people
            
        for i in xrange(12): # all my friends have come
            metrica.kick(date=my_birthday, gender='boy', age=18)
        for i in xrange(6):
            metrica.kick(date=my_birthday, gender='boy', age=17)
        for i in xrange(2): # and two girls. they were old
            metrica.kick(date=my_birthday, gender='girl', age=19)
        # also, granddaddy. big boy
        metrica.kick(date=my_birthday, gender='boy', age=120)
        
            

        # let's count them!
        self.assertEquals(metrica.timespan(year=2010).total(), 37)
        self.assertEquals(metrica.filter(gender='girl').total(), 8)
        self.assertEquals(metrica.filter(gender='girl', age=19).total(), 3)
        self.assertEquals(metrica.filter(gender='boy').timespan(year=2010, month=2).filter(age=17).total(), 10)

        ages = metrica.timespan(year=2010, month=2).filter(gender='boy').iterate('age')
        self.assertEquals(set(ages), set([('120', 1), ('19', 0), ('17', 10), ('18', 17)]))
Exemplo n.º 12
0
    def test_hierarchical_axis(self):
        metrica = Metrica(name='hierarchi-test', axes=[
            ('action', Axis()),
            ('label', HierarchicalAxis()),
            ('id', Axis(value_type=int)),
        ])

        id1, id2 = 1, 2

        metrica.kick(action='impression', label=('exp', 'city', 'all', 1), id=id1)
        metrica.kick(action='impression', label=('exp', 'city', 'all', 1), id=id1)

        metrica.kick(action='impression', label=('exp', 'city', 'tag', 1, 1), id=id1)
        metrica.kick(action='impression', label=('exp', 'city', 'tag', 1, 2), id=id1)

        metrica.kick(action='pageview', label=('out', 'se', 'google', u'Экскурсия'), id=id1)
        metrica.kick(action='pageview', label=('out', 'se', 'google', u'Москва'), id=id2)

        metrica.kick(action='pageview', label=('out', 'link', 'tripster.ru'), id=id1)
        metrica.kick(action='pageview', label=('out', 'link', 'sociation.org'), id=id2)

        self.assertEqual(metrica.values().total(), 8)
        self.assertEqual(metrica.filter(label=None).total(), 8)
        self.assertEqual(metrica.filter(label=('exp', 'city')).total(), 4)
        self.assertEqual(metrica.filter(id=id1, label=('out', 'se', 'google')).total(), 1)
        self.assertEqual(metrica.filter(id=id2, label=('out', 'se', 'google', u'Москва')).total(), 1)
        self.assertEqual(
            metrica.filter(id=id1, label=('exp', 'city')).iterate('label'),
            [(('exp', 'city', 'all'), 2), (('exp', 'city', 'tag'), 2)]
        )