Exemple #1
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)]
        )
Exemple #2
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)]))
Exemple #3
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)]))
Exemple #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)]))
Exemple #5
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)]))