Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat(frontend): add independent trace vs test data #2815

Merged
merged 3 commits into from Jun 28, 2023

Conversation

jorgeepc
Copy link
Contributor

@jorgeepc jorgeepc commented Jun 23, 2023

This PR introduces the initial work to isolate the trace tab data vs the test tab data. The proposed solution was created with the following key points in mind:

  • Follow recommended redux architecture to keep state minimal and derive additional data
  • Use memoized selectors for optimization only when needed
  • One single derived data model that could be used across UI components (not only DAG). Unify current types
  • Take advantage of the "built-in" node factory pattern that is part of the DAG lib react-flow

TestRun derived data

The idea of the custom useSpanData hook is to have one single component subscribed to updates in the redux state. This hook is responsible of providing span related data, such as: span details and span specific analyzer errors, test specs and test outputs. The selectors used by this hook are optimized and memoized only if needed. Here we are fixing critical performance issues that were introduced by our previous approach.

classDiagram
    useSpanData <|-- TestRun_selectors
    TestRun_selectors <|-- TestRun_service
    useSpanData: span
    useSpanData: analyzerErrors
    useSpanData: testSpecs
    useSpanData: testOutputs
    class TestRun_selectors{
        Optimized Selectors with Memoization
        selectSpanById()
        selectAnalyzerErrorsBySpanId()
        selectTestSpecsBySpanId()
        selectTestOutputsBySpanId()
    }
    class TestRun_service{      
      Helper methods to transform test run data 
    }

UI components

DAG UI components (react-flow built-in factory)

classDiagram
    TraceSpanNode <|-- BaseSpanNode
    TraceSpanNode: useSpanData
    TraceSpanNode: -span
    TraceSpanNode: -analyzerErrors
    TestSpanNode <|-- BaseSpanNode
    TestSpanNode: useSpanData
    TestSpanNode: -span
    TestSpanNode: -testSpecs
    TestSpanNode: -testOutputs
    class BaseSpanNode{
        Base UI component
    }    

AttributeList UI components

classDiagram  
    class SpanDetail{
        useSpanData
        -span
        -analyzerErrors
        -testSpecs
        -testOutputs
    }

Fixes

Checklist

  • tested locally
  • added new dependencies
  • updated the docs
  • added a test

@jorgeepc jorgeepc force-pushed the 2780-refactor-trace-visualization branch from ab234d4 to 28d23cd Compare June 23, 2023 20:37
@jorgeepc jorgeepc self-assigned this Jun 26, 2023
@jorgeepc jorgeepc marked this pull request as ready for review June 26, 2023 18:37
@jorgeepc jorgeepc requested a review from xoscar June 26, 2023 18:37
Copy link
Collaborator

@xoscar xoscar left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Awesome job @jorgeepc 🔥 I left some comments and concerns, let me know what you think

@jorgeepc jorgeepc merged commit 62d8ccd into main Jun 28, 2023
25 checks passed
@jorgeepc jorgeepc deleted the 2780-refactor-trace-visualization branch June 28, 2023 19:01
mathnogueira added a commit that referenced this pull request Jul 3, 2023
* chore(docs): Adding App Insights Configuration Page (#2820)

* chore(docs): Adding App Insights Configuration Page

* fixing typo

* fix(frontend): Fixing Resizable Panels UI bugs (#2827)

* fix(tests): add analyzer resource to cli e2e table (#2826)

* chore(docs): Azure App Insights Recipes (#2821)

* chore(docs): Adding App Insights Configuration Page

* chore(docs): Adding App Insights Recipes

* chore(docs): Adding App Insights Recipes

* chore(docs): fixing typo

* adding recipe links

* adding recipe links

* fixing typo

* chore(frotend): Test Definition Name Input (#2830)

* chore(frotend): Updating Panel Splitter w/ Tooltip (#2828)

* chore(frotend): Updating Panel Splitter w/ Tooltip

* Updating theme color

* removing unnecessary flag

* undo change

* fix(frontend): fix missing font-face (#2833)

* feat(cli): refactor list formatter for better resource manager support (#2829)

* feat(frontend): add independent trace vs test data (#2815)

* feat(cli): refactor Get formatter for better resource manager support (#2831)

* feat(cli): dynamic list of available resources (#2832)

* feat(cli): refactor Delete to new resource manager client (#2836)

* feat(cli): update export command with new resourcemanager client (#2838)

* Standardize old resources to to use list method with SQL Injection protection and stardardize PollingProfile file (#2839)

* wip: update list on demo and environment to use the same standards as tests and transactions

* Fixing provisioning test

* Update provisioning test

* feature(frontend): Contact Us Modal (#2835)

* feature(frontend): Contact Us Modal

* feature(frontend): Contact Us Modal

* feat(cli): update apply command with new resourcemanager client (#2841)

* feat(frontend): trace vs test data for timeline and attribute list (#2837)

* feat: new tests openapi spec (#2658)

update get tests endpoint to use resource manager

* fix: move transactions to it's own module (#2664)

* fix: move transactions to the transactions folder

* remove alias to transactions module

* feat: test models + list tests endpoint (#2681)

* add test, run, and trigger objects

* feat: move test and run structs into the test package

* list tests

* add old format attributes again

* fix mapping

* compatibility mode

* fix server prefix integration test

* force server unit tests to run

* fix tracetest test

* trigger CI

* Apply suggestions from code review

Co-authored-by: Sebastian Choren <schoren@users.noreply.github.com>

* fix build

* version test specs

* update test names

* use sqlutils

* dont specify branch target in pull_request

* fix list test

---------

Co-authored-by: Sebastian Choren <schoren@users.noreply.github.com>

* 2659 cli improvements migrate tests to resource manager architecture get tests frontend (#2702)

chore(frontend): updating FE to support GET /tests endpoint changes

* feat: test list augmented response (#2732)

add augmented list

* fix(server): fix trigger json encoding versioning and test (#2795)

* feat: test models + list tests endpoint (#2681)

* add test, run, and trigger objects

* feat: move test and run structs into the test package

* list tests

* add old format attributes again

* fix mapping

* compatibility mode

* fix server prefix integration test

* force server unit tests to run

* fix tracetest test

* trigger CI

* Apply suggestions from code review

Co-authored-by: Sebastian Choren <schoren@users.noreply.github.com>

* fix build

* version test specs

* update test names

* use sqlutils

* dont specify branch target in pull_request

* fix list test

---------

Co-authored-by: Sebastian Choren <schoren@users.noreply.github.com>

* GET endpoint

* fix rebase

* add create method and fix tests

* add rest of methods

* Changing test structure and fixing method by method

* Update tests

* Fixing test errors for Delete

* Adding gRPC tests

* Adding tests for traceid trigger

* migrate rest of endpoints and fix compilation errors

* fix all unit and integration tests

* Improving tests

* fix building errors

---------

Co-authored-by: Oscar Reyes <oscar-rreyes1@hotmail.com>
Co-authored-by: Jorge Padilla <jorge.esteban.padilla@gmail.com>
Co-authored-by: Sebastian Choren <schoren@users.noreply.github.com>
Co-authored-by: Daniel Baptista Dias <danielbdias@users.noreply.github.com>
Co-authored-by: Daniel Dias <danielbpdias@gmail.com>
xoscar added a commit that referenced this pull request Jul 6, 2023
* feat: new tests openapi spec (#2658)

update get tests endpoint to use resource manager

* fix: move transactions to it's own module (#2664)

* fix: move transactions to the transactions folder

* remove alias to transactions module

* feat: test models + list tests endpoint (#2681)

* add test, run, and trigger objects

* feat: move test and run structs into the test package

* list tests

* add old format attributes again

* fix mapping

* compatibility mode

* fix server prefix integration test

* force server unit tests to run

* fix tracetest test

* trigger CI

* Apply suggestions from code review

Co-authored-by: Sebastian Choren <schoren@users.noreply.github.com>

* fix build

* version test specs

* update test names

* use sqlutils

* dont specify branch target in pull_request

* fix list test

---------

Co-authored-by: Sebastian Choren <schoren@users.noreply.github.com>

* 2659 cli improvements migrate tests to resource manager architecture get tests frontend (#2702)

chore(frontend): updating FE to support GET /tests endpoint changes

* feat: test list augmented response (#2732)

add augmented list

* fix(server): fix trigger json encoding versioning and test (#2795)

* WIP feat: get endpoint (#2789)

* chore(docs): Adding App Insights Configuration Page (#2820)

* chore(docs): Adding App Insights Configuration Page

* fixing typo

* fix(frontend): Fixing Resizable Panels UI bugs (#2827)

* fix(tests): add analyzer resource to cli e2e table (#2826)

* chore(docs): Azure App Insights Recipes (#2821)

* chore(docs): Adding App Insights Configuration Page

* chore(docs): Adding App Insights Recipes

* chore(docs): Adding App Insights Recipes

* chore(docs): fixing typo

* adding recipe links

* adding recipe links

* fixing typo

* chore(frotend): Test Definition Name Input (#2830)

* chore(frotend): Updating Panel Splitter w/ Tooltip (#2828)

* chore(frotend): Updating Panel Splitter w/ Tooltip

* Updating theme color

* removing unnecessary flag

* undo change

* fix(frontend): fix missing font-face (#2833)

* feat(cli): refactor list formatter for better resource manager support (#2829)

* feat(frontend): add independent trace vs test data (#2815)

* feat(cli): refactor Get formatter for better resource manager support (#2831)

* feat(cli): dynamic list of available resources (#2832)

* feat(cli): refactor Delete to new resource manager client (#2836)

* feat(cli): update export command with new resourcemanager client (#2838)

* Standardize old resources to to use list method with SQL Injection protection and stardardize PollingProfile file (#2839)

* wip: update list on demo and environment to use the same standards as tests and transactions

* Fixing provisioning test

* Update provisioning test

* feature(frontend): Contact Us Modal (#2835)

* feature(frontend): Contact Us Modal

* feature(frontend): Contact Us Modal

* feat(cli): update apply command with new resourcemanager client (#2841)

* feat(frontend): trace vs test data for timeline and attribute list (#2837)

* feat: new tests openapi spec (#2658)

update get tests endpoint to use resource manager

* fix: move transactions to it's own module (#2664)

* fix: move transactions to the transactions folder

* remove alias to transactions module

* feat: test models + list tests endpoint (#2681)

* add test, run, and trigger objects

* feat: move test and run structs into the test package

* list tests

* add old format attributes again

* fix mapping

* compatibility mode

* fix server prefix integration test

* force server unit tests to run

* fix tracetest test

* trigger CI

* Apply suggestions from code review

Co-authored-by: Sebastian Choren <schoren@users.noreply.github.com>

* fix build

* version test specs

* update test names

* use sqlutils

* dont specify branch target in pull_request

* fix list test

---------

Co-authored-by: Sebastian Choren <schoren@users.noreply.github.com>

* 2659 cli improvements migrate tests to resource manager architecture get tests frontend (#2702)

chore(frontend): updating FE to support GET /tests endpoint changes

* feat: test list augmented response (#2732)

add augmented list

* fix(server): fix trigger json encoding versioning and test (#2795)

* feat: test models + list tests endpoint (#2681)

* add test, run, and trigger objects

* feat: move test and run structs into the test package

* list tests

* add old format attributes again

* fix mapping

* compatibility mode

* fix server prefix integration test

* force server unit tests to run

* fix tracetest test

* trigger CI

* Apply suggestions from code review

Co-authored-by: Sebastian Choren <schoren@users.noreply.github.com>

* fix build

* version test specs

* update test names

* use sqlutils

* dont specify branch target in pull_request

* fix list test

---------

Co-authored-by: Sebastian Choren <schoren@users.noreply.github.com>

* GET endpoint

* fix rebase

* add create method and fix tests

* add rest of methods

* Changing test structure and fixing method by method

* Update tests

* Fixing test errors for Delete

* Adding gRPC tests

* Adding tests for traceid trigger

* migrate rest of endpoints and fix compilation errors

* fix all unit and integration tests

* Improving tests

* fix building errors

---------

Co-authored-by: Oscar Reyes <oscar-rreyes1@hotmail.com>
Co-authored-by: Jorge Padilla <jorge.esteban.padilla@gmail.com>
Co-authored-by: Sebastian Choren <schoren@users.noreply.github.com>
Co-authored-by: Daniel Baptista Dias <danielbdias@users.noreply.github.com>
Co-authored-by: Daniel Dias <danielbpdias@gmail.com>

* fix a couple of issues

* fix wrong variable name

* fix part of the tracetests

* Fixing small bugs on server

* Fixing test run problem

* fix: tracetests (#2852)

fix grpc tests and transaction tracetests

* fixing FE tests and types

* Updating test assertion validation

* Tests cli resourcemanager client (#2849)

* fixing FE tests and updating models

* fixing FE tests and updating models

* Updating trigger mapping to populate httpRequest field on OpenAPI based endpoints

* Removing deprecated fields

* fix trigger type in fe

* add cli e2e test for test resource (#2854)

* Fixed bug in dogfooding test

* Making backend-arch-graph step not block CI on failure

* fix trigger result type in fe

* Deprecate commands (#2857)

* Move test deprecated notice to subcommands

* Update CLI e2e docs

* fix(docs): fix deprecated test command (#2874)

---------

Co-authored-by: Matheus Nogueira <matheus.nogueira2008@gmail.com>
Co-authored-by: Sebastian Choren <schoren@users.noreply.github.com>
Co-authored-by: Jorge Padilla <jorge.esteban.padilla@gmail.com>
Co-authored-by: Daniel Baptista Dias <danielbdias@users.noreply.github.com>
Co-authored-by: Daniel Dias <danielbpdias@gmail.com>
Co-authored-by: Sebastian Choren <sebastian.choren@gmail.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

2 participants