Enhancement #873

Implement aggregating formatting style

Added by J. Moringen about 12 years ago. Updated about 12 years ago.

Status:ResolvedStart date:02/12/2012
Priority:LowDue 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

Revision 06a3cc4c
Added by J. Moringen about 12 years ago

Added sub-style-for in formatting/{protocol,delegating-mixin}.lisp
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

Revision e82471a1
Added by J. Moringen about 12 years ago

Support :clear directive in formatting/{types,separator-mixin}.lisp
refs #873
  • formatting/types.lisp (separator-spec): allow :clear directive
  • formatting/separator-mixin.lisp (header): updated copyright
    (print-separator): added processing of :clear directive

Revision 299b5ebf
Added by J. Moringen about 12 years ago

Added utility functions in stats/util.lisp
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

Revision d2dca334
Added by J. Moringen about 12 years ago

Added size, size/log, type quantities in stats/quantities.lisp
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

Revision 1cefb7a5
Added by J. Moringen about 12 years ago

Removed support for :self in formatting/delegating-mixin.lisp
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

Revision 8d5ed391
Added by J. Moringen about 12 years ago

Added format-header in formatting/protocol.lisp
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

Revision 4ef5150a
Added by J. Moringen about 12 years ago

Added grouping-mixin in formatting/grouping-mixin.lisp
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

Revision bdc02ff6
Added by J. Moringen about 12 years ago

Added styles in file formatting/event-style-monitor.lisp
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

Revision cf95ca5b
Added by J. Moringen about 12 years ago

Renamed grouping-mixin -> sub-style-grouping-mixin
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

Revision d6b800a5
Added by J. Moringen about 12 years ago

Added mixin class in formatting/sub-style-sorting-mixin.lisp
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

Revision 13942b14
Added by J. Moringen about 12 years ago

Added tests for logger in CMakeLists.txt
refs #873
  • CMakeLists.txt: test logger with formatting styles
    monitor/{scope,origin,type,size}

Revision c382d988
Added by J. Moringen about 12 years ago

Improved column titles in formatting/event-style-monitor.lisp
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

Revision 495cf5de
Added by J. Moringen about 12 years ago

Added class column-constant in formatting/columns.lisp
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

Revision bcac2cef
Added by J. Moringen about 12 years ago

Use column-constant in formatting/event-style-monitor.lisp
refs #873
  • formatting/event-style-monitor.lisp (define-monitor-style): removed
    title parameter; use `column-constant' for the aggregating column

Revision 327f4e8c
Added by J. Moringen about 12 years ago

Updated initarg blacklist in formatting/help.lisp
refs #873, #880
  • formatting/help.lisp (make-style-help-string): added initargs
    sort-predicate and sort-key to blacklist

Revision 51cca974
Added by J. Moringen about 12 years ago

Improved sub-style-for in formatting/sub-style-grouping-mixin.lisp
refs #873, #880
  • formatting/sub-style-grouping-mixin.lisp
    (sub-style-for sub-style-grouping-mixin t): after adding the
    sub-style, retry the next method instead of initiating a new call to
    `sub-style-for'

Revision cb7dc506
Added by J. Moringen about 12 years ago

Moved basic-columns to formatting/columns.lisp
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

Revision 82aa4100
Added by J. Moringen about 12 years ago

Homogenized column widths in formatting/columns.lisp
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"

Revision ba3185d0
Added by J. Moringen almost 12 years ago

Dynamic width support in formatting/event-style-monitor.lisp
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 about 12 years ago

  • % Done changed from 30 to 70

#2 Updated by J. Moringen about 12 years ago

  • Target version changed from 0.6 to rsb-0.7

#3 Updated by J. Moringen about 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 about 12 years ago

Alias monitor for monitor/scope is still missing.

#5 Updated by J. Moringen about 12 years ago

  • Status changed from In Progress to Resolved
  • % Done changed from 90 to 100

Applied in changeset r3501.

Also available in: Atom PDF