Enhancement #873
Implement aggregating formatting style
Status: | Resolved | Start date: | 02/12/2012 | |
---|---|---|---|---|
Priority: | Low | Due date: | ||
Assignee: | J. Moringen | % Done: | 100% | |
Category: | Common Lisp Tools | |||
Target version: | rsb-0.7 |
Description
As a generalization of the C++ logger's "monitor" mode:
- Aggregate events for formatting according to certain criteria
- Apply a formatting style to each such collection
- Format all groups when producing output
The "monitor" mode would be a special case in which events would be aggregated by scope and sub-styles would be instances of the ordinary statistics style.
Associated revisions
Added sub-style-for in formatting/{protocol,delegating-mixin}.lisp
refs #873
refs #873
- formatting/protocol.lisp (header): updated copyright
(sub-style-for): new generic function; return a list of suitable
sub-styles of a composite style - formatting/delegating-mixin.lisp (sub-style-for delegating-mixin t):
new method; return list of sub-styles whose predicate succeeds for
given event
(format-event t delegating-mixin t): use `sub-style-for'
(print-object delegating-mixin t): new method; `print-object' method
for `delegating-mixin' which prints the number of sub-styles - formatting/package.lisp (package rsb.formatting): added exported
symbol sub-style-for
Support :clear directive in formatting/{types,separator-mixin}.lisp
refs #873
refs #873
- formatting/types.lisp (separator-spec): allow :clear directive
- formatting/separator-mixin.lisp (header): updated copyright
(print-separator): added processing of :clear directive
Added utility functions in stats/util.lisp
refs #873
refs #873
- stats/util.lisp: new file; contains the utility functions
`event-size', `event-size/power-of-2' and `event-type/simple' - stats/quantities.lisp (define-simple-quantity throughput): use
`event-size' - stats/package.lisp (package rsb.stats): added exported symbols
event-size, event-size/power-of-2 and event-type/simple - cl-rsb-stats.asd (system cl-rsb-stats): added file stats/util.lisp;
added dependency of stats/quantities.lisp on stats/util.lisp
Added size, size/log, type quantities in stats/quantities.lisp
refs #873
refs #873
- stats/quantities.lisp (define-simple-quantity size): new quantity;
moments of event sizes
(define-simple-quantity size/log): new quantity; histogram of event
sizes
(define-simple-quantity type): new quantity; histogram of event
types
Removed support for :self in formatting/delegating-mixin.lisp
refs #873, #880
refs #873, #880
- formatting/protocol.lisp (delegate): new generic function; delegate
to a sub-style of a formatting style - formatting/delegating-mixin.lisp (delegating-mixin): the sub-styles
initarg is no longer required
(delegating-mixin::sub-styles): added initarg
(shared-initialize :after delegating-mixin t): removed; special
initialization is no longer required
(setf style-sub-styles :around sequence delegating-mixin): removed;
special setter behavior is no longer required
(delegate t delegating-mixin t): new method; delegate to sub-style
(format-event t delegating-mixin t): call `delegate' method - formatting/event-style-compact.lisp (define-compact-style): define a
method on `format-header' - formatting/package.lisp (package :rsb.formatting): added exported
symbol delegate
Added format-header in formatting/protocol.lisp
refs #873, #880
refs #873, #880
- formatting/protocol.lisp (format-header): new generic function;
format a header for a thing onto a formatting target - formatting/columns-mixin.lisp (format-header columns-mixin t): use
`format-header' for individual columns - formatting/columns.lisp (basic-column): new class; superclass for
column classes
(format-header basic-column t): new method; format column name as
header
(define-simple-column): add superclass `basic-column' - formatting/quantity-column.lisp (format-header quantity-column t):
new method; print column name and, later, unit, if available - formatting/package.lisp (package rsb.formatting): added exported
symbols format-header and basic-column
Added grouping-mixin in formatting/grouping-mixin.lisp
refs #873, #880
refs #873, #880
- formatting/grouping-mixin.lisp: new file; contains
`grouping-mixin' mixin class - formatting/protocol.lisp (make-sub-style-entry): new generic
function; create a sub-style entry for a style - formatting/package.lisp (package rsb.formatting): added exported
symbols make-sub-style-entry, grouping-mixin, style-key and
style-test - cl-rsb-formatting.asd (system cl-rsb-formatting): added file
formatting/grouping-mixin.lisp
Added styles in file formatting/event-style-monitor.lisp
refs #873
refs #873
- formatting/event-style-monitor.lisp: new file; contains
`basic-monitor' class and `style-monitor/scope',
`style-monitor/origin', `style-monitor/type' and
`style-monitor/size' classes - cl-rsb-formatting.asd
(system connection cl-rsb-formatting-and-cl-rsb-stats): added file
formatting/event-style-monitor.lisp
Renamed grouping-mixin -> sub-style-grouping-mixin
refs #873
refs #873
- formatting/sub-style-grouping-mixin.lisp: renamed
formatting/grouping-mixin.lisp ->
formatting/sub-style-grouping-mixin.lisp
(header): changed one-line summary accordingly
(sub-style-grouping-mixin): renamed grouping-mixin ->
sub-style-grouping-mixin - formatting/event-style-monitor.lisp (basic-monitor): changed
superclass grouping-mixin -> sub-style-grouping-mixin - formatting/package.lisp (package rsb.formatting): changed export
symbol grouping-mixin -> sub-style-grouping-mixin - cl-rsb-formatting.asd (system cl-rsb-formatting): changed file name
formatting/grouping-mixin.lisp ->
formatting/sub-style-grouping-mixin.lisp
Added mixin class in formatting/sub-style-sorting-mixin.lisp
refs #873
refs #873
- formatting/protocol.lisp (style-sub-styles/sorted): new generic
function; return sub style of a style in a particular order - formatting/sub-style-sorting-mixin.lisp: new file; contains the
`sub-style-sorting-mixin' mixin class - formatting/event-style-monitor.lisp (basic-monitor): added
superclass `sub-style-sorting-mixin'; added default initargs
sort-predicate and sort-key
(format-event eql :trigger basic-monitor t): use
`style-sub-styles/sorted'
(%make-safe-predicate): new function; utility function for
generating safe comparison predicates
(%make-column-key-function): new function; utility function for
extracting the value of a particular quantity column of a column
based style - formatting/package.lisp (package rsb.formatting): added exported
symbols style-sub-styles/sorted, sub-style-sorting-mixin,
style-sort-predicate and style-sort-key - cl-rsb-formatting.asd (system cl-rsb-formatting): added file
formatting/sub-style-sorting-mixin.lisp
Added tests for logger in CMakeLists.txt
refs #873
refs #873
- CMakeLists.txt: test logger with formatting styles
monitor/{scope,origin,type,size}
Improved column titles in formatting/event-style-monitor.lisp
refs #873
refs #873
- formatting/event-style-monitor.lisp (basic-monitor-style): renamed
basic-monitor -> basic-monitor-style
(format-header basic-monitor-style t): changed specializer
basic-monitor -> basic-monitor-style
(format-event eql :trigger basic-monitor-style t): likewise
(basic-columns): new variable; stores some common column
specifications
(define-monitor-style): accept arbitrary initargs; generate column
title more flexibly; use compact specifications via basic-columns
Added class column-constant in formatting/columns.lisp
refs #873, #880
refs #873, #880
- formatting/columns.lisp (column-constant): new class; emit constant
value
(format-event t column-constant t): new method; emit the value - formatting/package.lisp (package rsb.formatting): added exported
symbols column-constant, column-value and column-formatter
Use column-constant in formatting/event-style-monitor.lisp
refs #873
refs #873
- formatting/event-style-monitor.lisp (define-monitor-style): removed
title parameter; use `column-constant' for the aggregating column
Moved basic-columns to formatting/columns.lisp
refs #873
refs #873
- formatting/columns.lisp (basic-columns): new variable; moved from
formatting/event-style-monitor.lisp - formatting/event-style-monitor.lisp (basic-columns): removed;
moved to formatting/columns.lisp (define-monitor-style): adapted to
changed names - formatting/event-style-statistics.lisp (define-statistics-style):
process templates contained in `*basic-columns*' to abbreviate
specifications
Homogenized column widths in formatting/columns.lisp
fixes #873
fixes #873
- formatting/columns.lisp (basic-columns): homogenized column widths
- formatting/event-style-statistics.lisp (define-statistics-style):
use new column specs - formatting/event-style-monitor.lisp (define-monitor-style):
likewise; added alias "monitor" for "monitor/scope"
Dynamic width support in formatting/event-style-monitor.lisp
refs #873
refs #873
- formatting/event-style-monitor.lisp (basic-monitor-style::columns):
new slot; stores column specification for creating sub-styles
(make-sub-style-entry basic-monitor-style t): new method; now
specialized for superclass one instead of for every subclass
(define-monitor-style): process columns spec
(define-dynamic-width-monitor-style): new local macro; define
monitor style with width-based dispatching
(define-monitor-style scope): define a dynamic width monitor style
(define-monitor-style origin): likewise
(define-monitor-style type): likewise
(define-monitor-style size): likewise
History
#1 Updated by J. Moringen over 12 years ago
- % Done changed from 30 to 70
#2 Updated by J. Moringen over 12 years ago
- Target version changed from 0.6 to rsb-0.7
#3 Updated by J. Moringen over 12 years ago
- Subject changed from Implement aggregating formatting mode to Implement aggregating formatting style
- % Done changed from 70 to 90
#4 Updated by J. Moringen over 12 years ago
Alias monitor
for monitor/scope
is still missing.
#5 Updated by J. Moringen over 12 years ago
- Status changed from In Progress to Resolved
- % Done changed from 90 to 100
Applied in changeset r3501.