From e0008f8b1cd2ccb1e044dfbabfa30c54d07d71fa Mon Sep 17 00:00:00 2001 From: Aleksey Lim Date: Mon, 12 May 2014 15:12:24 +0000 Subject: Revert node statistics --- (limited to 'tests/units/node/stats.py') diff --git a/tests/units/node/stats.py b/tests/units/node/stats.py new file mode 100755 index 0000000..738b5f6 --- /dev/null +++ b/tests/units/node/stats.py @@ -0,0 +1,444 @@ +#!/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() -- cgit v0.9.1