def GetReportData(self, get_report_args, token): """Filter the last week of user actions.""" ret = report_plugins.ApiReportData( representation_type=report_plugins.ApiReportData. RepresentationType.PIE_CHART) try: timerange_offset = get_report_args.duration timerange_end = get_report_args.start_time + timerange_offset counts = {} try: for event in report_utils.GetAuditLogEntries( timerange_offset, timerange_end, token): counts.setdefault(event.user, 0) counts[event.user] += 1 except ValueError: # Couldn't find any logs.. pass ret.pie_chart.data = sorted( (report_plugins.ApiReportDataPoint1D(x=count, label=user) for user, count in counts.iteritems() if user not in aff4_users.GRRUser.SYSTEM_USERS), key=lambda series: series.label) except IOError: pass return ret
def GetReportData(self, get_report_args, token): ret = report_plugins.ApiReportData( representation_type=report_plugins.ApiReportData.RepresentationType. STACK_CHART) database = { rdfvalue.RDFDatetime.FromHumanReadable("2012/12/11"): (1, 0), rdfvalue.RDFDatetime.FromHumanReadable("2012/12/12"): (2, 1), rdfvalue.RDFDatetime.FromHumanReadable("2012/12/13"): (3, 2), rdfvalue.RDFDatetime.FromHumanReadable("2012/12/14"): (5, 3), rdfvalue.RDFDatetime.FromHumanReadable("2012/12/15"): (8, 4), rdfvalue.RDFDatetime.FromHumanReadable("2012/12/16"): (13, 5), rdfvalue.RDFDatetime.FromHumanReadable("2012/12/17"): (21, 6), rdfvalue.RDFDatetime.FromHumanReadable("2012/12/18"): (34, 7) } ret.stack_chart.data = [ report_plugins.ApiReportDataSeries2D( label="Bar", points=[ report_plugins.ApiReportDataPoint2D( x=x, y=y) for (t, (x, y)) in sorted(database.iteritems()) if get_report_args.start_time <= t and t < get_report_args.start_time + get_report_args.duration ]) ] return ret
def testClientsActivityReportPluginWithNoActivityToReport(self): report = server_report_plugins.ClientsActivityReportPlugin() api_report_data = report.GetReportData( stats_api.ApiGetReportArgs(name=report.__class__.__name__), token=self.token) self.assertEqual( api_report_data, report_plugins.ApiReportData( representation_type=report_plugins.ApiReportData. RepresentationType.STACK_CHART, stack_chart=report_plugins.ApiStackChartReportData(data=[])))
def testMostActiveUsersReportPlugin(self): with test_lib.FakeTime( rdfvalue.RDFDatetime.FromHumanReadable("2012/12/14")): AddFakeAuditLog("Fake audit description 14 Dec.", "C.123", "User123", token=self.token) with test_lib.FakeTime( rdfvalue.RDFDatetime.FromHumanReadable("2012/12/22")): for _ in xrange(10): AddFakeAuditLog("Fake audit description 22 Dec.", "C.123", "User123", token=self.token) AddFakeAuditLog("Fake audit description 22 Dec.", "C.456", "User456", token=self.token) with test_lib.FakeTime( rdfvalue.RDFDatetime.FromHumanReadable("2012/12/31")): report = server_report_plugins.MostActiveUsersReportPlugin() now = rdfvalue.RDFDatetime().Now() month_duration = rdfvalue.Duration("30d") api_report_data = report.GetReportData(stats_api.ApiGetReportArgs( name=report.__class__.__name__, start_time=now - month_duration, duration=month_duration), token=self.token) # pyformat: disable self.assertEqual( api_report_data, report_plugins.ApiReportData( representation_type=report_plugins.ApiReportData. RepresentationType.PIE_CHART, pie_chart=report_plugins.ApiPieChartReportData(data=[ report_plugins.ApiReportDataPoint1D(label="User123", x=11), report_plugins.ApiReportDataPoint1D(label="User456", x=1) ])))
def testMostActiveUsersReportPluginWithNoActivityToReport(self): report = server_report_plugins.MostActiveUsersReportPlugin() now = rdfvalue.RDFDatetime().Now() month_duration = rdfvalue.Duration("30d") api_report_data = report.GetReportData(stats_api.ApiGetReportArgs( name=report.__class__.__name__, start_time=now - month_duration, duration=month_duration), token=self.token) self.assertEqual( api_report_data, report_plugins.ApiReportData( representation_type=report_plugins.ApiReportData. RepresentationType.PIE_CHART, pie_chart=report_plugins.ApiPieChartReportData(data=[])))
def GetReportData(self, get_report_args, token): """Filter the last week of flows.""" ret = report_plugins.ApiReportData( representation_type=report_plugins.ApiReportData. RepresentationType.STACK_CHART) try: now = rdfvalue.RDFDatetime().Now() week_duration = rdfvalue.Duration("7d") offset = week_duration * ClientsActivityReportPlugin.WEEKS client_activity = {} try: logs_gen = report_utils.GetAuditLogFiles(offset, now, token) except ValueError: # Couldn't find any logs.. logs_gen = iter(()) for fd in logs_gen: for week in range(ClientsActivityReportPlugin.WEEKS): start = now - week * week_duration for event in fd.GenerateItems(): if start <= event.timestamp < (start + week_duration): weekly_activity = client_activity.setdefault( event.client, [[x, 0] for x in range( -ClientsActivityReportPlugin.WEEKS, 0, 1)]) weekly_activity[-week][1] += 1 ret.stack_chart.data = sorted( (report_plugins.ApiReportDataSeries2D( label=str(client), points=[ report_plugins.ApiReportDataPoint2D(x=x, y=y) for x, y in client_data ]) for client, client_data in client_activity.iteritems() if client), key=lambda series: series.label) except IOError: pass return ret
def testClientsActivityReportPlugin(self): with test_lib.FakeTime( rdfvalue.RDFDatetime.FromHumanReadable("2012/12/14")): AddFakeAuditLog("Fake audit description 14 Dec.", "C.123", token=self.token) with test_lib.FakeTime( rdfvalue.RDFDatetime.FromHumanReadable("2012/12/22")): for _ in xrange(10): AddFakeAuditLog("Fake audit description 22 Dec.", "C.123", token=self.token) AddFakeAuditLog("Fake audit description 22 Dec.", "C.456", token=self.token) with test_lib.FakeTime( rdfvalue.RDFDatetime.FromHumanReadable("2012/12/31")): report = server_report_plugins.ClientsActivityReportPlugin() api_report_data = report.GetReportData( stats_api.ApiGetReportArgs(name=report.__class__.__name__), token=self.token) # pyformat: disable self.assertEqual( api_report_data, report_plugins.ApiReportData( representation_type=report_plugins.ApiReportData. RepresentationType.STACK_CHART, stack_chart=report_plugins.ApiStackChartReportData(data=[ report_plugins.ApiReportDataSeries2D( label="aff4:/C.123", points=[ report_plugins.ApiReportDataPoint2D(x=-10, y=0), report_plugins.ApiReportDataPoint2D(x=-9, y=0), report_plugins.ApiReportDataPoint2D(x=-8, y=0), report_plugins.ApiReportDataPoint2D(x=-7, y=0), report_plugins.ApiReportDataPoint2D(x=-6, y=0), report_plugins.ApiReportDataPoint2D(x=-5, y=0), report_plugins.ApiReportDataPoint2D(x=-4, y=0), report_plugins.ApiReportDataPoint2D(x=-3, y=1), report_plugins.ApiReportDataPoint2D(x=-2, y=10), report_plugins.ApiReportDataPoint2D(x=-1, y=0) ]), report_plugins.ApiReportDataSeries2D( label="aff4:/C.456", points=[ report_plugins.ApiReportDataPoint2D(x=-10, y=0), report_plugins.ApiReportDataPoint2D(x=-9, y=0), report_plugins.ApiReportDataPoint2D(x=-8, y=0), report_plugins.ApiReportDataPoint2D(x=-7, y=0), report_plugins.ApiReportDataPoint2D(x=-6, y=0), report_plugins.ApiReportDataPoint2D(x=-5, y=0), report_plugins.ApiReportDataPoint2D(x=-4, y=0), report_plugins.ApiReportDataPoint2D(x=-3, y=0), report_plugins.ApiReportDataPoint2D(x=-2, y=1), report_plugins.ApiReportDataPoint2D(x=-1, y=0) ]) ])))