Skip to content

Record existing automatic naming performance #74

Description

@marcinpsk

Parent

#73

What to build

Add a manually invoked test-suite performance runner and use it to record the existing automatic naming implementation before production family behavior changes. The runner must exercise real NetBox models, committed callbacks, and PostgreSQL. It must produce a normalized baseline that the completed refactor can run again on the same hardware.

Acceptance criteria

  • The runner covers no matching rule, one plain rename, four-channel structural creation, rename of an installed parent with four channels, deferred channel reconciliation, and virtual-chassis reapplication with one and eight families.
  • Complete model-save signal paths and direct deferred callbacks are measured as distinct scenarios.
  • A PostgreSQL work-profile pass records normalized statements, execution plans, selected indexes, planner cost, actual rows and loops, buffer access, temporary blocks, rows affected, WAL activity, and scaling behavior.
  • PostgreSQL profiling observes the real statements without replaying mutating SQL, and node timing is disabled.
  • A separate uninstrumented pass records warm-up behavior, raw wall-time samples, process CPU samples, median, and p95.
  • Results record source, NetBox, Python, and PostgreSQL revisions together with planner settings and fixture sizes.
  • SQL parameter values and environment-specific data are excluded from artifacts.
  • The runner uses an isolated PostgreSQL test database and fails when required profiling support is unavailable.
  • The runner remains outside default test discovery and is not added to CI.
  • The existing-implementation baseline and a readable summary are retained as implementation evidence.
  • No production naming behavior changes in this ticket.

Blocked by

None — can start immediately.

Metadata

Metadata

Assignees

No one assigned

    Labels

    ready-for-agentSpecification is complete and ready for implementation

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions