Beispiel #1
0
    def test_user_logged(self):
        user_id = random.randrange(0, 100000)
        ls = LoginMetrics(self.date)

        # Initial State
        self.assertEquals(LoginMetrics.FLAG_DOWN, ls.get_flag(user_id))

        # After login
        ls.set_flag(user_id)
        self.assertEquals(LoginMetrics.FLAG_UP, ls.get_flag(user_id))
Beispiel #2
0
    def test_login_user(self):
        user_id = random.randrange(0, 100000)
        ls = LoginMetrics(self.date)

        # Initial State
        bit = self.r.getbit(ls.key, user_id)
        self.assertEquals(LoginMetrics.FLAG_DOWN, bit)

        # After login
        ls.set_flag(user_id)
        bit = self.r.getbit(ls.key, user_id)
        self.assertEquals(LoginMetrics.FLAG_UP, bit)
Beispiel #3
0
    def test_user_login_autodate(self):

        user = random.randrange(0, 100000)
        date = datetime_now_utc().strftime(self.DATE_FORMAT)
        key = self.LOGIN_METRICS_FORMAT.format(date)

        self.assertEquals(LoginMetrics.FLAG_DOWN, self.r.getbit(key, user))

        ls = LoginMetrics()
        ls.save_user_login(user)

        self.assertEquals(LoginMetrics.FLAG_UP, self.r.getbit(key, user))
Beispiel #4
0
    def test_users_logged(self):
        users_ids = [random.randrange(0, 100000) for i in range(100)]
        ls = LoginMetrics(self.date)

        # Initial State
        for i in users_ids:
            self.assertEquals(LoginMetrics.FLAG_DOWN, ls.get_flag(i))

        # After login
        ls.set_flags(users_ids)
        correct_list = [LoginMetrics.FLAG_UP for i in range(len(users_ids))]
        self.assertEquals(correct_list, ls.get_flags(users_ids))
Beispiel #5
0
    def test_login_users(self):
        users_ids = [random.randrange(0, 100000) for i in range(100)]
        ls = LoginMetrics(self.date)

        # Initial State
        for i in users_ids:
            bit = self.r.getbit(ls.key, i)
            self.assertEquals(LoginMetrics.FLAG_DOWN, bit)

        # After login
        ls.set_flags(users_ids)
        for i in users_ids:
            bit = self.r.getbit(ls.key, i)
            self.assertEquals(LoginMetrics.FLAG_UP, bit)
Beispiel #6
0
    def test_users_login(self):

        users_ids = [random.randrange(0, 100000) for i in range(100)]
        date = datetime_now_utc().strftime(self.DATE_FORMAT)
        key = self.LOGIN_METRICS_FORMAT.format(date)

        for i in users_ids:
            self.assertEquals(LoginMetrics.FLAG_DOWN, self.r.getbit(key, i))

        ls = LoginMetrics(datetime_now_utc())
        ls.save_users_login(users_ids)

        for i in users_ids:
            self.assertEquals(LoginMetrics.FLAG_UP, self.r.getbit(key, i))
Beispiel #7
0
    def test_xor_operation(self):
        xor_bitmaps = {
            "test:xorops:1": (1, 1, 0, 1, 0, 0, 0, 0, 1, 1),
            "test:xorops:2": (1, 0, 0, 1, 1, 0, 1, 0, 1, 1),
            "test:xorops:3": (1, 0, 0, 1, 0, 0, 0, 0, 1, 1),
            "test:xorops:4": (1, 1, 0, 1, 0, 0, 0, 0, 0, 1),
        }

        result = (0, 0, 0, 0, 1, 0, 1, 0, 1, 0)

        # Initial State
        for key, val in xor_bitmaps.items():
            for i in range(len(val)):
                self.r.setbit(key, i, val[i])

        # After login
        store_key_default = "test:xorops:result"
        store_key = LoginMetrics.xor_operation(xor_bitmaps.keys(),
                                                  store_key_default)

        #Check if the store key is the same
        self.assertEquals(store_key_default, store_key)

        for i in range(len(result)):
            self.assertEquals(result[i], self.r.getbit(store_key, i))
Beispiel #8
0
    def test_get_bit_from_bitmap(self):

        bitmap = (1, 1, 0, 1, 0, 0, 0, 0, 1, 1)
        key = "test:get:result"

        for i in range(len(bitmap)):
            self.r.setbit(key, i, bitmap[i])

        for i in range(len(bitmap)):
            self.assertEquals(bitmap[i], LoginMetrics.check_flag(key, i))
    def handle(self, *args, **options):
        max_users = 5000 if len(args) < 1 else int(args[0])
        min_users = 0 if len(args) < 2 else int(args[1])
        day = None if len(args) < 3 else int(args[2])

        # Populate the DB for one day
        for hour in range(24):
            # Create the datetime for the key
            now = datetime_now_utc()
            if not day:
                day = now.day
            date = datetime(year=now.year,
                            month=now.month,
                            day=day,
                            hour=hour)

            # Get random login users
            logins = range(random.randrange(min_users, max_users))
            users = [random.randrange(min_users, max_users) for i in logins]

            # Save the users
            ls = LoginMetrics(date)
            ls.save_users_login(users)
Beispiel #10
0
    def test_count_bitmap(self):

        bitmaps = (
            ((1, 1, 0, 1, 0, 0, 0, 0, 1, 1), 5),
            ((1, 0, 0, 1, 1, 0, 1, 0, 1, 1), 6),
            ((1, 0, 0, 1, 0, 0, 0, 0, 1, 1), 4),
            ((1, 1, 0, 1, 0, 0, 0, 0, 0, 1), 4),
            ((0, 0, 0, 0, 0, 0, 0, 0, 0, 0), 0),
        )

        for bitmap_result in bitmaps:
            bitmap = bitmap_result[0]
            key = "test:{0}:result".format(random.randrange(0, 100000))
            good_result = bitmap_result[1]

            for i in range(len(bitmap)):
                self.r.setbit(key, i, bitmap[i])

            self.assertEquals(good_result, LoginMetrics.count_flags(key))
Beispiel #11
0
    def test_and_operation_random_result_key(self):
        and_bitmaps = {
            "test:andops:1": (1, 1, 0, 1, 0, 0, 0, 0, 1, 1),
            "test:andops:2": (1, 0, 0, 1, 1, 0, 1, 0, 1, 1),
            "test:andops:3": (1, 0, 0, 1, 0, 0, 0, 0, 1, 1),
            "test:andops:4": (1, 1, 0, 1, 0, 0, 0, 0, 0, 1),
        }

        result = (1, 0, 0, 1, 0, 0, 0, 0, 0, 1)

        # Initial State
        for key, val in and_bitmaps.items():
            for i in range(len(val)):
                self.r.setbit(key, i, val[i])

        # After login
        store_key = LoginMetrics.and_operation(and_bitmaps.keys())

        for i in range(len(result)):
            self.assertEquals(result[i], self.r.getbit(store_key, i))
Beispiel #12
0
    def test_users_state(self):
        users_ids = [random.randrange(0, 100000) for i in range(100)]
        ls = LoginMetrics(self.date)

        # Initial State
        for i in users_ids:
            self.assertEquals(LoginMetrics.FLAG_DOWN, ls.get_flag(i))

        # After login
        ls.set_flags(users_ids)
        correct_list = [LoginMetrics.FLAG_UP for i in range(len(users_ids))]
        self.assertEquals(correct_list, ls.get_flags(users_ids))

        # take some random users out
        black_ships = [random.randrange(0, len(users_ids)) for i in range(
                                                            len(users_ids))]

        for i in black_ships:
            ls.unset_flag(users_ids[i])
            correct_list[i] = LoginMetrics.FLAG_DOWN

        # Test again
        self.assertEquals(correct_list, ls.get_flags(users_ids))
Beispiel #13
0
    def test_not_bitmap(self):

        bitmaps = (
            ((1, 1, 0, 1, 0, 0, 0, 0, 1, 1), (0, 0, 1, 0, 1, 1, 1, 1, 0, 0)),
            ((1, 0, 0, 1, 1, 0, 1, 0, 1, 1), (0, 1, 1, 0, 0, 1, 0, 1, 0, 0)),
            ((1, 0, 0, 1, 0, 0, 0, 0, 1, 1), (0, 1, 1, 0, 1, 1, 1, 1, 0, 0)),
            ((1, 1, 0, 1, 0, 0, 0, 0, 0, 1), (0, 0, 1, 0, 1, 1, 1, 1, 1, 0)),
            ((0, 0, 0, 0, 0, 0, 0, 0, 0, 0), (1, 1, 1, 1, 1, 1, 1, 1, 1, 1)),
        )

        for bitmap_result in bitmaps:
            bitmap = bitmap_result[0]
            key = "test:{0}:result".format(random.randrange(0, 100000))
            result = bitmap_result[1]

            for i in range(len(bitmap)):
                self.r.setbit(key, i, bitmap[i])

            # Apply NOT
            result_key = LoginMetrics.not_operation(key)

            # Check
            for i in range(len(result)):
                self.assertEquals(result[i], self.r.getbit(result_key, i))