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

ci: Bootstrap initial AppMap archive #130

Merged
merged 9 commits into from
Mar 1, 2024
Merged

ci: Bootstrap initial AppMap archive #130

merged 9 commits into from
Mar 1, 2024

Conversation

hopsoft
Copy link
Owner

@hopsoft hopsoft commented Mar 1, 2024

No description provided.

Copy link

github-actions bot commented Mar 1, 2024

AppMap configuration report

Success! Your project has been successfully configured to record AppMaps when
you run your tests.

Continue with AppMap Setup >>


The following sections contain detailed information about the AppMap integration with your project.

AppMap data sources

In GitHub Actions and other CI systems, AppMaps are created by recording
test cases. Here's how the AppMaps in this project were created:

Number of AppMaps Type of recording
42 minitest

Code recording settings

Your appmap.yml configuration file specifies all the code that you want AppMap to instrument and record.
By default, sub-modules of any requested code are recorded as well. In this project, the packages specified
in appmap.yml are:

- path: app
- path: lib

By applying this configuration to your ruby project, AppMap has recorded the
following packages and modules:

app/views

Web service API profile

When you record AppMaps that include HTTP server requests, AppMap automatically generates OpenAPI definitions
based on the observed data.

43% of the AppMaps in this project contain at least one HTTP server request.

43% of the AppMaps in this project contain more than one HTTP server request.

Here's a summary of the web service routes that are provided by this project:

/assets /basic_command /tests /tests/method /tests/{id}

And here are the different content types served by the API:

Response Content Type Number of Routes

As you change your code and tests, AppMap will automatically update the OpenAPI definitions.
You'll see a summary of the REST API changes in each pull request.

SQL profile

When your code makes a SQL query, AppMap records the SQL query in detail. It even parses the queries
to figure out which tables your app is using, and how it's using them.

90% of the AppMaps in this project contain at least one SQL query.

90% of the AppMaps in this project contain more than one SQL query.

Here are the SQL tables that are present in the observed queries:

sqlite_master sqlite_temp_master users

Large AppMaps

Some tests can produce large AppMaps, because they exercise longer or highly repeated code paths.
AppMap runtime code review is optimized for AppMaps that
are less than 10 MB in size. You may want to consider disabling AppMap for tests that produce
large AppMaps, since they can slow down your CI job and they are hard to analyze. Also, note that
AppMaps greater than 50 MB in size will not be analyzed at all.

You can disable recording of a test case by adding a code comment or annotation to the test case file.
Learn how by visiting the
reference documentation for appmap-ruby.

Here are the largest AppMaps that are greater than 1 MB:

Size Location Test name AppMap path
3.98 MB test/system/tests/drivers/window_test.rb:27 Drivers_window command that ALLOWS the rails controller action to perform tmp/appmap/minitest/Drivers_window_command_that_ALLOWS_the_rails_controller_action_to_perform.appmap.json
3.24 MB test/system/basic_commands/decrement_no_frame_test.rb:23 Decrement_no_frame decrement 3 times tmp/appmap/minitest/Decrement_no_frame_decrement_3_times.appmap.json
2.3 MB test/system/basic_commands/increment_frame_test.rb:23 Increment_frame increment 3 times tmp/appmap/minitest/Increment_frame_increment_3_times.appmap.json
2.3 MB test/system/basic_commands/increment_no_frame_test.rb:23 Increment_no_frame increment 3 times tmp/appmap/minitest/Increment_no_frame_increment_3_times.appmap.json
2.3 MB test/system/basic_commands/decrement_frame_test.rb:23 Decrement_frame decrement 3 times tmp/appmap/minitest/Decrement_frame_decrement_3_times.appmap.json
2.29 MB test/system/tests/drivers/frame_test.rb:27 Drivers_frame command that ALLOWS the rails controller action to perform tmp/appmap/minitest/Drivers_frame_command_that_ALLOWS_the_rails_controller_action_to_perform.appmap.json
2.29 MB test/system/tests/drivers/method_test.rb:27 Drivers_method command that ALLOWS the rails controller action to perform tmp/appmap/minitest/Drivers_method_command_that_ALLOWS_the_rails_controller_action_to_perform.appmap.json
2.25 MB test/system/tests/drivers/form_test.rb:8 Drivers_form command that PREVENTS the rails controller action from performing tmp/appmap/minitest/Drivers_form_command_that_PREVENTS_the_rails_controller_action_from_performing.appmap.json
2.22 MB test/system/tests/drivers/window_test.rb:8 Drivers_window command that PREVENTS the rails controller action from performing tmp/appmap/minitest/Drivers_window_command_that_PREVENTS_the_rails_controller_action_from_performing.appmap.json
2.19 MB test/system/tests/drivers/method_test.rb:8 Drivers_method command that PREVENTS the rails controller action from performing tmp/appmap/minitest/Drivers_method_command_that_PREVENTS_the_rails_controller_action_from_performing.appmap.json
2.18 MB test/system/tests/drivers/frame_test.rb:8 Drivers_frame command that PREVENTS the rails controller action from performing tmp/appmap/minitest/Drivers_frame_command_that_PREVENTS_the_rails_controller_action_from_performing.appmap.json
2.13 MB test/system/tests/drivers/form_test.rb:27 Drivers_form command that ALLOWS the rails controller action to perform tmp/appmap/minitest/Drivers_form_command_that_ALLOWS_the_rails_controller_action_to_perform.appmap.json
1.87 MB test/system/basic_commands/decrement_no_frame_test.rb:8 Decrement_no_frame decrement once tmp/appmap/minitest/Decrement_no_frame_decrement_once.appmap.json
1.87 MB test/system/basic_commands/increment_frame_test.rb:8 Increment_frame increment once tmp/appmap/minitest/Increment_frame_increment_once.appmap.json
1.87 MB test/system/basic_commands/increment_no_frame_test.rb:8 Increment_no_frame increment once tmp/appmap/minitest/Increment_no_frame_increment_once.appmap.json
1.86 MB test/system/basic_commands/decrement_frame_test.rb:8 Decrement_frame decrement once tmp/appmap/minitest/Decrement_frame_decrement_once.appmap.json
1.68 MB test/system/turbo_boost_globals_test.rb:6 Turbo_boost_globals turbo boost commands loaded and configured tmp/appmap/minitest/Turbo_boost_globals_turbo_boost_commands_loaded_and_configured.appmap.json
1.66 MB test/system/turbo_boost_globals_test.rb:25 Turbo_boost_globals turbo boost state tmp/appmap/minitest/Turbo_boost_globals_turbo_boost_state.appmap.json

Frequently recorded functions

The AppMap configuration file appmap.yml specifies which functions to record.
Some functions may be called very frequently, adding little to the understandability of the code
while adding a lot of overhead to the AppMap recording process.

Note that some functions are automatically added to the recording by
the AppMap agent. For example, the AppMap agent automatically records functions that are
relevant to detecting security flaws and performance problems. If you disable recording of these
functions, then some problems may become undetectable.

You can disable recording of a class or function by updating the appmap.yml configuration file.
Learn how by visiting the
reference documentation for appmap-ruby.

Here are some of the most frequently recorded functions in this project:

Number of occurrences Function name Source location
5482 String#unpack1 <internal:pack>:280
5092 JSON::Ext::Parser#parse JSON::Ext::Parser#parse
4044 Logger::LogDevice#write /opt/hostedtoolcache/Ruby/3.0.6/x64/lib/ruby/3.0.0/logger/log_device.rb:31
3615 ActionView::Resolver#find_all vendor/bundle/ruby/3.0.0/gems/actionview-7.1.3.2/lib/action_view/template/resolver.rb:63
3236 Array#pack <internal:pack>:133
2309 String#unpack <internal:pack>:256
2199 JSON::Ext::Generator::State#generate JSON::Ext::Generator::State#generate
1548 ActiveSupport::Callbacks::CallbackSequence#invoke_before vendor/bundle/ruby/3.0.0/gems/activesupport-7.1.3.2/lib/active_support/callbacks.rb:597
1548 ActiveSupport::Callbacks::CallbackSequence#invoke_after vendor/bundle/ruby/3.0.0/gems/activesupport-7.1.3.2/lib/active_support/callbacks.rb:601

Learn more

To learn more about AppMap, visit
appmap.io/docs.

Copy link

github-actions bot commented Mar 1, 2024

AppMap project summary

AppMap runtime code review scans the AppMaps for security flaws, performance
problems, and code anti-patterns. When you use AppMap runtime code review on a pull request,
only the new problems and resolved problems are shown in the report.

AppMap didn't detect any flaws or problems in the runtime code review of your project.

Note that AppMap runtime code review is optimized for projects that use SQL databases,
serve HTTP requests, and make HTTP client requests to other services.

If your project doesn't do any of these things, then AppMap runtime code review will be primarily
useful for:

  • Fixing broken test cases.
  • Determining whether a pull request has new test cases, and if so, what they do.
  • Reviewing AppMaps of new and changed test cases

Copy link

github-actions bot commented Mar 1, 2024

AppMap runtime code review

Summary Status
Failed tests ⚠️ 4 failed
New AppMaps 0️⃣ No new AppMaps

⚠️ Note Because 4 tests failed, AppMap is showing an abbreviated analysis to help you get them working. Once all tests are passing, all report sections will be available.

⚠️ Failed tests

test/system/basic_commands/reset_frame_test.rb:12

test/system/basic_commands/reset_frame_test.rb:12 failed with error:

Playwright dialog handling not working yet

The error occurred at test/system/basic_commands/reset_frame_test.rb:13:

   4: 
   5: class ResetFrameTest < ApplicationSystemTestCase
   6:   PARENT_SELECTOR = "#basic_command-turbo-frame"
   7: 
   8:   def accept_dialod(dialog)
   9:     dialog.accept
   10:   end
   11: 
   12:   test "increment once then reset and accept confirm" do
>  13:     skip "Playwright dialog handling not working yet"
   14:     page.goto basic_command_url
   15:     user = User.last
   16: 
   17:     assert_equal 0, user.count
   18:     assert_equal "0000", page.wait_for_selector("code[role='counter']").inner_text
   19: 
   20:     trigger = page.wait_for_selector("[data-turbo-command='IncrementCountCommand']")
   21:     trigger.click
   22:     wait_for_detach trigger
   23: 

View AppMap of this test »


test/system/basic_commands/reset_frame_test.rb:36

test/system/basic_commands/reset_frame_test.rb:36 failed with error:

Playwright dialog handling not working yet

The error occurred at test/system/basic_commands/reset_frame_test.rb:37:

   28:     trigger = page.wait_for_selector("[data-turbo-command='ResetCountCommand']")
   29:     trigger.click
   30:     wait_for_detach trigger
   31: 
   32:     assert_equal 0, user.reload.count
   33:     assert_equal "0000", page.wait_for_selector("code[role='counter']").inner_text
   34:   end
   35: 
   36:   test "increment once then reset and dismiss confirm" do
>  37:     skip "Playwright dialog handling not working yet"
   38:     page.goto basic_command_url
   39:     user = User.last
   40: 
   41:     assert_equal 0, user.count
   42:     assert_equal "0000", page.wait_for_selector("code[role='counter']").inner_text
   43: 
   44:     trigger = page.wait_for_selector("[data-turbo-command='IncrementCountCommand']")
   45:     trigger.click
   46:     wait_for_detach trigger
   47: 

View AppMap of this test »


test/system/basic_commands/reset_no_frame_test.rb:8

test/system/basic_commands/reset_no_frame_test.rb:8 failed with error:

Playwright dialog handling not working yet

The error occurred at test/system/basic_commands/reset_no_frame_test.rb:9:

   1: # frozen_string_literal: true
   2: 
   3: require "application_system_test_case"
   4: 
   5: class ResetNoFrameTest < ApplicationSystemTestCase
   6:   PARENT_SELECTOR = "#basic_command-no-frame"
   7: 
   8:   test "increment once then reset and accept confirm" do
>  9:     skip "Playwright dialog handling not working yet"
   10:     page.goto basic_command_url
   11:     user = User.last
   12: 
   13:     assert_equal 0, user.count
   14:     assert_equal "0000", page.wait_for_selector("code[role='counter']").inner_text
   15: 
   16:     trigger = page.wait_for_selector("[data-turbo-command='IncrementCountCommand']")
   17:     trigger.click
   18:     wait_for_detach trigger
   19: 

View AppMap of this test »


test/system/basic_commands/reset_no_frame_test.rb:32

test/system/basic_commands/reset_no_frame_test.rb:32 failed with error:

Playwright dialog handling not working yet

The error occurred at test/system/basic_commands/reset_no_frame_test.rb:33:

   24:     trigger = page.wait_for_selector("[data-turbo-command='ResetCountCommand']")
   25:     trigger.click
   26:     wait_for_detach trigger
   27: 
   28:     assert_equal 2, user.reload.count
   29:     assert_equal "0002", page.wait_for_selector("code[role='counter']").inner_text
   30:   end
   31: 
   32:   test "increment once then reset and dismiss confirm" do
>  33:     skip "Playwright dialog handling not working yet"
   34:     page.goto basic_command_url
   35:     user = User.last
   36: 
   37:     assert_equal 0, user.count
   38:     assert_equal "0000", page.wait_for_selector("code[role='counter']").inner_text
   39: 
   40:     trigger = page.wait_for_selector("[data-turbo-command='IncrementCountCommand']")
   41:     trigger.click
   42:     wait_for_detach trigger
   43: 

View AppMap of this test »


@hopsoft hopsoft merged commit 9434239 into main Mar 1, 2024
9 of 10 checks passed
@hopsoft hopsoft deleted the appmap-ci branch March 1, 2024 04:57
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant