#!/usr/bin/env python # sugar-lint: disable import time from cStringIO import StringIO from __init__ import tests from sugar_network.node.auth import RootAuth from sugar_network.node.model import Volume from sugar_network.node.stats import StatRoutes from sugar_network.toolkit.coroutine import this class StatsTest(tests.Test): def test_StatContexts(self): ts = int(time.time()) volume = self.start_master(auth=RootAuth()) self.node_routes.stats_init('.', 1, ['RRA:AVERAGE:0.5:1:10']) self.override(time, 'time', lambda: ts) guid1 = this.call(method='POST', path=['context'], content={'title': '', 'summary': '', 'description': '', 'type': 'activity'}) self.node_routes.stats_commit() self.assertEqual([ (ts + 0, {'contexts': 1.0, 'released': 0.0, 'reported': 0.0, 'solved': 0.0, 'topics': 0.0, 'posts': 0.0, 'users': 0.0}), ], this.call(method='GET', cmd='stats')) self.override(time, 'time', lambda: ts + 1) guid2 = this.call(method='POST', path=['context'], content={'title': '', 'summary': '', 'description': '', 'type': 'activity'}) self.node_routes.stats_commit() self.assertEqual([ (ts + 0, {'contexts': 1.0, 'released': 0.0, 'reported': 0.0, 'solved': 0.0, 'topics': 0.0, 'posts': 0.0, 'users': 0.0}), (ts + 1, {'contexts': 2.0, 'released': 0.0, 'reported': 0.0, 'solved': 0.0, 'topics': 0.0, 'posts': 0.0, 'users': 0.0}), ], this.call(method='GET', cmd='stats')) self.override(time, 'time', lambda: ts + 2) this.call(method='DELETE', path=['context', guid1]) self.node_routes.stats_commit() self.assertEqual([ (ts + 0, {'contexts': 1.0, 'released': 0.0, 'reported': 0.0, 'solved': 0.0, 'topics': 0.0, 'posts': 0.0, 'users': 0.0}), (ts + 1, {'contexts': 2.0, 'released': 0.0, 'reported': 0.0, 'solved': 0.0, 'topics': 0.0, 'posts': 0.0, 'users': 0.0}), (ts + 2, {'contexts': 1.0, 'released': 0.0, 'reported': 0.0, 'solved': 0.0, 'topics': 0.0, 'posts': 0.0, 'users': 0.0}), ], this.call(method='GET', cmd='stats')) self.override(time, 'time', lambda: ts + 3) this.call(method='DELETE', path=['context', guid2]) self.node_routes.stats_commit() self.assertEqual([ (ts + 0, {'contexts': 1.0, 'released': 0.0, 'reported': 0.0, 'solved': 0.0, 'topics': 0.0, 'posts': 0.0, 'users': 0.0}), (ts + 1, {'contexts': 2.0, 'released': 0.0, 'reported': 0.0, 'solved': 0.0, 'topics': 0.0, 'posts': 0.0, 'users': 0.0}), (ts + 2, {'contexts': 1.0, 'released': 0.0, 'reported': 0.0, 'solved': 0.0, 'topics': 0.0, 'posts': 0.0, 'users': 0.0}), (ts + 3, {'contexts': 0.0, 'released': 0.0, 'reported': 0.0, 'solved': 0.0, 'topics': 0.0, 'posts': 0.0, 'users': 0.0}), ], this.call(method='GET', cmd='stats')) def test_StatReleased(self): ts = int(time.time()) volume = self.start_master(auth=RootAuth()) self.node_routes.stats_init('.', 1, ['RRA:AVERAGE:0.5:1:10']) self.override(time, 'time', lambda: ts) guid = this.call(method='POST', path=['context'], content={'title': '', 'summary': '', 'description': '', 'type': 'activity'}) agg1 = this.call(method='POST', path=['context', guid, 'releases'], content=StringIO( self.zips(('topdir/activity/activity.info', '\n'.join([ '[Activity]', 'name = Activity', 'bundle_id = %s' % guid, 'exec = true', 'icon = icon', 'activity_version = 1', 'license = Public Domain', ]))))) self.node_routes.stats_commit() self.assertEqual([ (ts + 0, {'contexts': 1.0, 'released': 1.0, 'reported': 0.0, 'solved': 0.0, 'topics': 1.0, 'posts': 0.0, 'users': 0.0}), ], this.call(method='GET', cmd='stats')) self.override(time, 'time', lambda: ts + 1) this.call(method='POST', path=['user'], content={'name': '', 'pubkey': tests.PUBKEY}) self.node_routes.stats_commit() self.assertEqual([ (ts + 0, {'contexts': 1.0, 'released': 1.0, 'reported': 0.0, 'solved': 0.0, 'topics': 1.0, 'posts': 0.0, 'users': 0.0}), (ts + 1, {'contexts': 1.0, 'released': 0.0, 'reported': 0.0, 'solved': 0.0, 'topics': 1.0, 'posts': 0.0, 'users': 1.0}), ], this.call(method='GET', cmd='stats')) self.override(time, 'time', lambda: ts + 2) agg2 = this.call(method='POST', path=['context', guid, 'releases'], content=StringIO( self.zips(('topdir/activity/activity.info', '\n'.join([ '[Activity]', 'name = Activity', 'bundle_id = %s' % guid, 'exec = true', 'icon = icon', 'activity_version = 2', 'license = Public Domain', ]))))) self.node_routes.stats_commit() self.assertEqual([ (ts + 0, {'contexts': 1.0, 'released': 1.0, 'reported': 0.0, 'solved': 0.0, 'topics': 1.0, 'posts': 0.0, 'users': 0.0}), (ts + 1, {'contexts': 1.0, 'released': 0.0, 'reported': 0.0, 'solved': 0.0, 'topics': 1.0, 'posts': 0.0, 'users': 1.0}), (ts + 2, {'contexts': 1.0, 'released': 1.0, 'reported': 0.0, 'solved': 0.0, 'topics': 2.0, 'posts': 0.0, 'users': 1.0}), ], this.call(method='GET', cmd='stats')) self.override(time, 'time', lambda: ts + 3) agg2 = this.call(method='POST', path=['context', guid, 'releases'], content=StringIO( self.zips(('topdir/activity/activity.info', '\n'.join([ '[Activity]', 'name = Activity', 'bundle_id = %s' % guid, 'exec = true', 'icon = icon', 'activity_version = 3', 'license = Public Domain', ]))))) self.node_routes.stats_commit() self.assertEqual([ (ts + 0, {'contexts': 1.0, 'released': 1.0, 'reported': 0.0, 'solved': 0.0, 'topics': 1.0, 'posts': 0.0, 'users': 0.0}), (ts + 1, {'contexts': 1.0, 'released': 0.0, 'reported': 0.0, 'solved': 0.0, 'topics': 1.0, 'posts': 0.0, 'users': 1.0}), (ts + 2, {'contexts': 1.0, 'released': 1.0, 'reported': 0.0, 'solved': 0.0, 'topics': 2.0, 'posts': 0.0, 'users': 1.0}), (ts + 3, {'contexts': 1.0, 'released': 1.0, 'reported': 0.0, 'solved': 0.0, 'topics': 3.0, 'posts': 0.0, 'users': 1.0}), ], this.call(method='GET', cmd='stats')) def test_StatSolved(self): ts = int(time.time()) volume = self.start_master(auth=RootAuth()) self.node_routes.stats_init('.', 1, ['RRA:AVERAGE:0.5:1:10']) self.override(time, 'time', lambda: ts) guid = this.call(method='POST', path=['context'], content={'title': '', 'summary': '', 'description': '', 'type': 'activity'}) this.call(method='POST', path=['context', guid, 'releases'], content=StringIO( self.zips(('topdir/activity/activity.info', '\n'.join([ '[Activity]', 'name = Activity', 'bundle_id = %s' % guid, 'exec = true', 'icon = icon', 'activity_version = 1', 'license = Public Domain', ]))))) this.call(method='GET', path=['context', guid], cmd='solve') self.node_routes.stats_commit() self.assertEqual([ (ts + 0, {'contexts': 1.0, 'released': 1.0, 'reported': 0.0, 'solved': 1.0, 'topics': 1.0, 'posts': 0.0, 'users': 0.0}), ], this.call(method='GET', cmd='stats')) self.override(time, 'time', lambda: ts + 1) this.call(method='POST', path=['user'], content={'name': '', 'pubkey': tests.PUBKEY}) self.node_routes.stats_commit() self.assertEqual([ (ts + 0, {'contexts': 1.0, 'released': 1.0, 'reported': 0.0, 'solved': 1.0, 'topics': 1.0, 'posts': 0.0, 'users': 0.0}), (ts + 1, {'contexts': 1.0, 'released': 0.0, 'reported': 0.0, 'solved': 0.0, 'topics': 1.0, 'posts': 0.0, 'users': 1.0}), ], this.call(method='GET', cmd='stats')) self.override(time, 'time', lambda: ts + 2) this.call(method='GET', path=['context', guid], cmd='solve') self.node_routes.stats_commit() self.assertEqual([ (ts + 0, {'contexts': 1.0, 'released': 1.0, 'reported': 0.0, 'solved': 1.0, 'topics': 1.0, 'posts': 0.0, 'users': 0.0}), (ts + 1, {'contexts': 1.0, 'released': 0.0, 'reported': 0.0, 'solved': 0.0, 'topics': 1.0, 'posts': 0.0, 'users': 1.0}), (ts + 2, {'contexts': 1.0, 'released': 0.0, 'reported': 0.0, 'solved': 1.0, 'topics': 1.0, 'posts': 0.0, 'users': 1.0}), ], this.call(method='GET', cmd='stats')) self.override(time, 'time', lambda: ts + 3) this.call(method='GET', path=['context', guid], cmd='solve') self.node_routes.stats_commit() self.assertEqual([ (ts + 0, {'contexts': 1.0, 'released': 1.0, 'reported': 0.0, 'solved': 1.0, 'topics': 1.0, 'posts': 0.0, 'users': 0.0}), (ts + 1, {'contexts': 1.0, 'released': 0.0, 'reported': 0.0, 'solved': 0.0, 'topics': 1.0, 'posts': 0.0, 'users': 1.0}), (ts + 2, {'contexts': 1.0, 'released': 0.0, 'reported': 0.0, 'solved': 1.0, 'topics': 1.0, 'posts': 0.0, 'users': 1.0}), (ts + 3, {'contexts': 1.0, 'released': 0.0, 'reported': 0.0, 'solved': 1.0, 'topics': 1.0, 'posts': 0.0, 'users': 1.0}), ], this.call(method='GET', cmd='stats')) def test_StatReported(self): ts = int(time.time()) volume = self.start_master(auth=RootAuth()) self.node_routes.stats_init('.', 1, ['RRA:AVERAGE:0.5:1:10']) self.override(time, 'time', lambda: ts) this.call(method='POST', path=['report'], content={'context': 'context', 'error': '', 'lsb_release': {}, 'uname': ''}) self.node_routes.stats_commit() self.assertEqual([ (ts + 0, {'contexts': 0.0, 'released': 0.0, 'reported': 1.0, 'solved': 0.0, 'topics': 0.0, 'posts': 0.0, 'users': 0.0}), ], this.call(method='GET', cmd='stats')) self.override(time, 'time', lambda: ts + 1) this.call(method='POST', path=['user'], content={'name': '', 'pubkey': tests.PUBKEY}) self.node_routes.stats_commit() self.assertEqual([ (ts + 0, {'contexts': 0.0, 'released': 0.0, 'reported': 1.0, 'solved': 0.0, 'topics': 0.0, 'posts': 0.0, 'users': 0.0}), (ts + 1, {'contexts': 0.0, 'released': 0.0, 'reported': 0.0, 'solved': 0.0, 'topics': 0.0, 'posts': 0.0, 'users': 1.0}), ], this.call(method='GET', cmd='stats')) self.override(time, 'time', lambda: ts + 2) this.call(method='POST', path=['report'], content={'context': 'context', 'error': '', 'lsb_release': {}, 'uname': ''}) self.node_routes.stats_commit() self.assertEqual([ (ts + 0, {'contexts': 0.0, 'released': 0.0, 'reported': 1.0, 'solved': 0.0, 'topics': 0.0, 'posts': 0.0, 'users': 0.0}), (ts + 1, {'contexts': 0.0, 'released': 0.0, 'reported': 0.0, 'solved': 0.0, 'topics': 0.0, 'posts': 0.0, 'users': 1.0}), (ts + 2, {'contexts': 0.0, 'released': 0.0, 'reported': 1.0, 'solved': 0.0, 'topics': 0.0, 'posts': 0.0, 'users': 1.0}), ], this.call(method='GET', cmd='stats')) self.override(time, 'time', lambda: ts + 3) this.call(method='POST', path=['report'], content={'context': 'context', 'error': '', 'lsb_release': {}, 'uname': ''}) self.node_routes.stats_commit() self.assertEqual([ (ts + 0, {'contexts': 0.0, 'released': 0.0, 'reported': 1.0, 'solved': 0.0, 'topics': 0.0, 'posts': 0.0, 'users': 0.0}), (ts + 1, {'contexts': 0.0, 'released': 0.0, 'reported': 0.0, 'solved': 0.0, 'topics': 0.0, 'posts': 0.0, 'users': 1.0}), (ts + 2, {'contexts': 0.0, 'released': 0.0, 'reported': 1.0, 'solved': 0.0, 'topics': 0.0, 'posts': 0.0, 'users': 1.0}), (ts + 3, {'contexts': 0.0, 'released': 0.0, 'reported': 1.0, 'solved': 0.0, 'topics': 0.0, 'posts': 0.0, 'users': 1.0}), ], this.call(method='GET', cmd='stats')) def test_StatUsers(self): ts = int(time.time()) volume = self.start_master(auth=RootAuth()) self.node_routes.stats_init('.', 1, ['RRA:AVERAGE:0.5:1:10']) self.override(time, 'time', lambda: ts) this.call(method='POST', path=['user'], content={'name': '', 'pubkey': tests.PUBKEY}) self.node_routes.stats_commit() self.assertEqual([ (ts + 0, {'contexts': 0.0, 'released': 0.0, 'reported': 0.0, 'solved': 0.0, 'topics': 0.0, 'posts': 0.0, 'users': 1.0}), ], this.call(method='GET', cmd='stats')) self.override(time, 'time', lambda: ts + 1) this.call(method='POST', path=['user'], content={'name': '', 'pubkey': tests.PUBKEY2}) self.node_routes.stats_commit() self.assertEqual([ (ts + 0, {'contexts': 0.0, 'released': 0.0, 'reported': 0.0, 'solved': 0.0, 'topics': 0.0, 'posts': 0.0, 'users': 1.0}), (ts + 1, {'contexts': 0.0, 'released': 0.0, 'reported': 0.0, 'solved': 0.0, 'topics': 0.0, 'posts': 0.0, 'users': 2.0}), ], this.call(method='GET', cmd='stats')) self.override(time, 'time', lambda: ts + 2) this.call(method='DELETE', path=['user', tests.UID]) self.node_routes.stats_commit() self.assertEqual([ (ts + 0, {'contexts': 0.0, 'released': 0.0, 'reported': 0.0, 'solved': 0.0, 'topics': 0.0, 'posts': 0.0, 'users': 1.0}), (ts + 1, {'contexts': 0.0, 'released': 0.0, 'reported': 0.0, 'solved': 0.0, 'topics': 0.0, 'posts': 0.0, 'users': 2.0}), (ts + 2, {'contexts': 0.0, 'released': 0.0, 'reported': 0.0, 'solved': 0.0, 'topics': 0.0, 'posts': 0.0, 'users': 1.0}), ], this.call(method='GET', cmd='stats')) self.override(time, 'time', lambda: ts + 3) this.call(method='DELETE', path=['user', tests.UID2]) self.node_routes.stats_commit() self.assertEqual([ (ts + 0, {'contexts': 0.0, 'released': 0.0, 'reported': 0.0, 'solved': 0.0, 'topics': 0.0, 'posts': 0.0, 'users': 1.0}), (ts + 1, {'contexts': 0.0, 'released': 0.0, 'reported': 0.0, 'solved': 0.0, 'topics': 0.0, 'posts': 0.0, 'users': 2.0}), (ts + 2, {'contexts': 0.0, 'released': 0.0, 'reported': 0.0, 'solved': 0.0, 'topics': 0.0, 'posts': 0.0, 'users': 1.0}), (ts + 3, {'contexts': 0.0, 'released': 0.0, 'reported': 0.0, 'solved': 0.0, 'topics': 0.0, 'posts': 0.0, 'users': 0.0}), ], this.call(method='GET', cmd='stats')) def test_StatTopics(self): ts = int(time.time()) volume = self.start_master(auth=RootAuth()) self.node_routes.stats_init('.', 1, ['RRA:AVERAGE:0.5:1:10']) self.override(time, 'time', lambda: ts) guid1 = this.call(method='POST', path=['post'], content={'context': '', 'type': 'post', 'title': '', 'message': ''}) self.node_routes.stats_commit() self.assertEqual([ (ts + 0, {'contexts': 0.0, 'released': 0.0, 'reported': 0.0, 'solved': 0.0, 'topics': 1.0, 'posts': 0.0, 'users': 0.0}), ], this.call(method='GET', cmd='stats')) self.override(time, 'time', lambda: ts + 1) guid2 = this.call(method='POST', path=['post'], content={'context': '', 'type': 'post', 'title': '', 'message': ''}) self.node_routes.stats_commit() self.assertEqual([ (ts + 0, {'contexts': 0.0, 'released': 0.0, 'reported': 0.0, 'solved': 0.0, 'topics': 1.0, 'posts': 0.0, 'users': 0.0}), (ts + 1, {'contexts': 0.0, 'released': 0.0, 'reported': 0.0, 'solved': 0.0, 'topics': 2.0, 'posts': 0.0, 'users': 0.0}), ], this.call(method='GET', cmd='stats')) self.override(time, 'time', lambda: ts + 2) this.call(method='DELETE', path=['post', guid1]) self.node_routes.stats_commit() self.assertEqual([ (ts + 0, {'contexts': 0.0, 'released': 0.0, 'reported': 0.0, 'solved': 0.0, 'topics': 1.0, 'posts': 0.0, 'users': 0.0}), (ts + 1, {'contexts': 0.0, 'released': 0.0, 'reported': 0.0, 'solved': 0.0, 'topics': 2.0, 'posts': 0.0, 'users': 0.0}), (ts + 2, {'contexts': 0.0, 'released': 0.0, 'reported': 0.0, 'solved': 0.0, 'topics': 1.0, 'posts': 0.0, 'users': 0.0}), ], this.call(method='GET', cmd='stats')) self.override(time, 'time', lambda: ts + 3) this.call(method='DELETE', path=['post', guid2]) self.node_routes.stats_commit() self.assertEqual([ (ts + 0, {'contexts': 0.0, 'released': 0.0, 'reported': 0.0, 'solved': 0.0, 'topics': 1.0, 'posts': 0.0, 'users': 0.0}), (ts + 1, {'contexts': 0.0, 'released': 0.0, 'reported': 0.0, 'solved': 0.0, 'topics': 2.0, 'posts': 0.0, 'users': 0.0}), (ts + 2, {'contexts': 0.0, 'released': 0.0, 'reported': 0.0, 'solved': 0.0, 'topics': 1.0, 'posts': 0.0, 'users': 0.0}), (ts + 3, {'contexts': 0.0, 'released': 0.0, 'reported': 0.0, 'solved': 0.0, 'topics': 0.0, 'posts': 0.0, 'users': 0.0}), ], this.call(method='GET', cmd='stats')) def test_StatPosts(self): ts = int(time.time()) volume = self.start_master(auth=RootAuth()) self.node_routes.stats_init('.', 1, ['RRA:AVERAGE:0.5:1:10']) self.override(time, 'time', lambda: ts) guid1 = this.call(method='POST', path=['post'], content={'topic': 'topic', 'context': '', 'type': 'post', 'title': '', 'message': ''}) self.node_routes.stats_commit() self.assertEqual([ (ts + 0, {'contexts': 0.0, 'released': 0.0, 'reported': 0.0, 'solved': 0.0, 'topics': 0.0, 'posts': 1.0, 'users': 0.0}), ], this.call(method='GET', cmd='stats')) self.override(time, 'time', lambda: ts + 1) guid2 = this.call(method='POST', path=['post'], content={'topic': 'topic', 'context': '', 'type': 'post', 'title': '', 'message': ''}) self.node_routes.stats_commit() self.assertEqual([ (ts + 0, {'contexts': 0.0, 'released': 0.0, 'reported': 0.0, 'solved': 0.0, 'topics': 0.0, 'posts': 1.0, 'users': 0.0}), (ts + 1, {'contexts': 0.0, 'released': 0.0, 'reported': 0.0, 'solved': 0.0, 'topics': 0.0, 'posts': 2.0, 'users': 0.0}), ], this.call(method='GET', cmd='stats')) self.override(time, 'time', lambda: ts + 2) this.call(method='DELETE', path=['post', guid1]) self.node_routes.stats_commit() self.assertEqual([ (ts + 0, {'contexts': 0.0, 'released': 0.0, 'reported': 0.0, 'solved': 0.0, 'topics': 0.0, 'posts': 1.0, 'users': 0.0}), (ts + 1, {'contexts': 0.0, 'released': 0.0, 'reported': 0.0, 'solved': 0.0, 'topics': 0.0, 'posts': 2.0, 'users': 0.0}), (ts + 2, {'contexts': 0.0, 'released': 0.0, 'reported': 0.0, 'solved': 0.0, 'topics': 0.0, 'posts': 1.0, 'users': 0.0}), ], this.call(method='GET', cmd='stats')) self.override(time, 'time', lambda: ts + 3) this.call(method='DELETE', path=['post', guid2]) self.node_routes.stats_commit() self.assertEqual([ (ts + 0, {'contexts': 0.0, 'released': 0.0, 'reported': 0.0, 'solved': 0.0, 'topics': 0.0, 'posts': 1.0, 'users': 0.0}), (ts + 1, {'contexts': 0.0, 'released': 0.0, 'reported': 0.0, 'solved': 0.0, 'topics': 0.0, 'posts': 2.0, 'users': 0.0}), (ts + 2, {'contexts': 0.0, 'released': 0.0, 'reported': 0.0, 'solved': 0.0, 'topics': 0.0, 'posts': 1.0, 'users': 0.0}), (ts + 3, {'contexts': 0.0, 'released': 0.0, 'reported': 0.0, 'solved': 0.0, 'topics': 0.0, 'posts': 0.0, 'users': 0.0}), ], this.call(method='GET', cmd='stats')) def test_ReuseTotalsOnInitialStart(self): volume = self.start_master(auth=RootAuth()) this.call(method='POST', path=['context'], content={'title': '', 'summary': '', 'description': '', 'type': 'activity'}) this.call(method='POST', path=['user'], content={'name': '', 'pubkey': tests.PUBKEY}) this.call(method='POST', path=['post'], content={'context': '', 'type': 'post', 'title': '', 'message': ''}) this.call(method='POST', path=['post'], content={'topic': 'topic', 'context': '', 'type': 'post', 'title': '', 'message': ''}) ts = int(time.time()) self.override(time, 'time', lambda: ts) self.node_routes.stats_init('.', 1, ['RRA:AVERAGE:0.5:1:10']) this.call(method='POST', path=['report'], content={'context': 'context', 'error': '', 'lsb_release': {}, 'uname': ''}) self.node_routes.stats_commit() self.assertEqual([ (ts + 0, {'contexts': 1.0, 'released': 0.0, 'reported': 1.0, 'solved': 0.0, 'topics': 1.0, 'posts': 1.0, 'users': 1.0}), ], this.call(method='GET', cmd='stats')) def test_StatContextRating(self): ts = int(time.time()) volume = self.start_master(auth=RootAuth()) self.node_routes.stats_init('.', 1, ['RRA:AVERAGE:0.5:1:10']) guid = this.call(method='POST', path=['context'], content={'title': '', 'summary': '', 'description': '', 'type': 'activity'}) self.node_routes.stats_commit() self.assertEqual([0, 0], volume['context'][guid]['rating']) post1 = this.call(method='POST', path=['post'], content={'context': guid, 'type': 'review', 'title': '', 'message': '', 'vote': 0}) self.node_routes.stats_commit() self.assertEqual([1, 0], volume['context'][guid]['rating']) post2 = this.call(method='POST', path=['post'], content={'context': guid, 'type': 'review', 'title': '', 'message': '', 'vote': 1}) self.node_routes.stats_commit() self.assertEqual([2, 1], volume['context'][guid]['rating']) post3 = this.call(method='POST', path=['post'], content={'context': guid, 'type': 'review', 'title': '', 'message': '', 'vote': 4}) self.node_routes.stats_commit() self.assertEqual([3, 5], volume['context'][guid]['rating']) this.call(method='DELETE', path=['post', post2]) self.node_routes.stats_commit() self.assertEqual([2, 4], volume['context'][guid]['rating']) this.call(method='DELETE', path=['post', post1]) self.node_routes.stats_commit() self.assertEqual([1, 4], volume['context'][guid]['rating']) this.call(method='DELETE', path=['post', post3]) self.node_routes.stats_commit() self.assertEqual([0, 0], volume['context'][guid]['rating']) def test_StatTopicRating(self): ts = int(time.time()) volume = self.start_master(auth=RootAuth()) self.node_routes.stats_init('.', 1, ['RRA:AVERAGE:0.5:1:10']) guid = this.call(method='POST', path=['post'], content={'context': '', 'type': 'post', 'title': '', 'message': ''}) self.assertEqual([0, 0], volume['post'][guid]['rating']) self.node_routes.stats_commit() self.assertEqual([0, 0], volume['post'][guid]['rating']) post1 = this.call(method='POST', path=['post'], content={'context': '', 'topic': guid, 'type': 'post', 'title': '', 'message': '', 'vote': 0}) self.node_routes.stats_commit() self.assertEqual([1, 0], volume['post'][guid]['rating']) post2 = this.call(method='POST', path=['post'], content={'context': '', 'topic': guid, 'type': 'post', 'title': '', 'message': '', 'vote': 1}) self.node_routes.stats_commit() self.assertEqual([2, 1], volume['post'][guid]['rating']) post3 = this.call(method='POST', path=['post'], content={'context': '', 'topic': guid, 'type': 'post', 'title': '', 'message': '', 'vote': 4}) self.node_routes.stats_commit() self.assertEqual([3, 5], volume['post'][guid]['rating']) this.call(method='DELETE', path=['post', post2]) self.node_routes.stats_commit() self.assertEqual([2, 4], volume['post'][guid]['rating']) this.call(method='DELETE', path=['post', post1]) self.node_routes.stats_commit() self.assertEqual([1, 4], volume['post'][guid]['rating']) this.call(method='DELETE', path=['post', post3]) self.node_routes.stats_commit() self.assertEqual([0, 0], volume['post'][guid]['rating']) if __name__ == '__main__': tests.main()