Skip to content

Draft: Speed up generation of frontend fixtures for analytics

Peter Leitzen requested to merge pl-frontend-fixtures-analytics-perf into master

What does this MR do?

This MR attempts to speed up frontend fixtures generation (run via rake frontend:fixture) for analytics by sevaral minutes.

It uses let_it_be and before_all where feasible but also introduces a "run once" concept to run expensive steps in before (which cannot be run with before_all) only once per context.

Currently, the produced JSON fixtures do match the original once - hence Draft 😞

Contributes to https://gitlab.com/gitlab-org/plan/-/issues/145.

Here's the output from test-prof when run with FPROF=1. Note:

  • Total amount of factories created went down from 654 to 105 🚀
  • Total events went down from 53261 to 5714
  • Time went down from 7 minutes 26 seconds to 49.84 seconds
  • Queries saved: 47547

Before

Total time: 01:48.098 of 07:19.649 (24.59%)
Total events: 53261

Top 5 slowest suites (by time):

Analytics (Ja...ript fixtures) (./ee/spec/frontend/fixtures/analytics.rb:4) – 01:48.098 (53261 / 18) of 07:19.649 (24.59%)


Finished in 7 minutes 26 seconds (files took 2.19 seconds to load)
18 examples, 0 failures

[TEST PROF INFO] Factories usage

 Total: 654
 Total top-level: 529
 Total time: 49.7842s
 Total uniq factories: 16

   total   top-level     total time      time per call      top-level time               name

     154         154       15.6746s            0.1018s            15.6746s           ci_build
      68          68        4.5836s            0.0674s             4.5836s              issue
      50          18        4.5746s            0.0915s             1.7780s               user
      49          49        9.7396s            0.1988s             9.7396s      merge_request
      49          49        2.1604s            0.0441s             2.1604s  ci_empty_pipeline
      48          18        2.6381s            0.0550s             1.1548s              group
      48           0        0.3491s            0.0073s             0.0000s namespace_settings
      45          45        1.1753s            0.0261s             1.1753s        ci_pipeline
      32          32        8.5108s            0.2660s             8.5108s            project
      30          30        2.5374s            0.0846s             2.5374s cycle_analytics_group_stage
      18          18        0.3137s            0.0174s             0.3137s        group_label
      17          17        0.9429s            0.0555s             0.9429s          milestone
      15          15        0.1620s            0.0108s             0.1620s cycle_analytics_group_value_stream
      15           0        1.3198s            0.0880s             0.0000s          namespace
      15          15        1.0397s            0.0693s             1.0397s      labeled_issue
       1           1        0.0113s            0.0113s             0.0113s            license

After

Total time: 00:09.803 of 00:43.930 (22.32%)
Total events: 5714

Top 5 slowest suites (by time):

Analytics (Ja...ript fixtures) (./ee/spec/frontend/fixtures/analytics.rb:4) – 00:09.803 (5714 / 18) of 00:43.930 (22.32%)


Finished in 49.84 seconds (files took 2.01 seconds to load)
18 examples, 0 failures

[TEST PROF INFO] Factories usage

 Total: 105
 Total top-level: 69
 Total time: 8.6895s
 Total uniq factories: 16

   total   top-level     total time      time per call      top-level time               name

      17           1        1.4826s            0.0872s             0.0516s               user
      16          16        4.2686s            0.2668s             4.2686s            project
      15           0        0.9995s            0.0666s             0.0000s          namespace
      15          15        1.0602s            0.0707s             1.0602s      labeled_issue
      13          13        0.8314s            0.0640s             0.8314s           ci_build
       5           5        0.2819s            0.0564s             0.2819s              issue
       4           4        0.0675s            0.0169s             0.0675s        group_label
       3           1        0.1974s            0.0658s             0.1098s              group
       3           0        0.0289s            0.0096s             0.0000s namespace_settings
       3           3        1.5953s            0.5318s             1.5953s      merge_request
       3           3        0.0920s            0.0307s             0.0920s  ci_empty_pipeline
       3           3        0.0866s            0.0289s             0.0866s        ci_pipeline
       2           2        0.1651s            0.0825s             0.1651s cycle_analytics_group_stage
       1           1        0.0108s            0.0108s             0.0108s            license
       1           1        0.0150s            0.0150s             0.0150s cycle_analytics_group_value_stream
       1           1        0.0535s            0.0535s             0.0535s          milestone

Output diff

diff --git a/tmp/frontend/fixtures-ee/analytics/type_of_work/tasks_by_type.json b/tmp/tests/frontend/fixtures-ee/analytics/type_of_work/tasks_by_type.json
index 2abd9529c2b..31c1d1b497b 100644
--- a/tmp/frontend/fixtures-ee/analytics/type_of_work/tasks_by_type.json
+++ b/tmp/tests/frontend/fixtures-ee/analytics/type_of_work/tasks_by_type.json
@@ -1 +1 @@
-[{"label":{"id":16,"title":"label16","color":"#990000","description":null,"group_id":82,"project_id":null,"template":false,"text_color":"#FFFFFF","created_at":"2015-07-03T10:00:00.000Z","updated_at":"2015-07-03T10:00:00.000Z"},"series":[["2015-06-29",1],["2015-06-30",1],["2015-07-01",1],["2015-07-02",1]]},{"label":{"id":17,"title":"label17","color":"#990000","description":null,"group_id":82,"project_id":null,"template":false,"text_color":"#FFFFFF","created_at":"2015-07-03T10:00:00.000Z","updated_at":"2015-07-03T10:00:00.000Z"},"series":[["2015-06-29",1],["2015-06-30",1],["2015-07-01",1],["2015-07-02",1]]},{"label":{"id":18,"title":"label18","color":"#990000","description":null,"group_id":82,"project_id":null,"template":false,"text_color":"#FFFFFF","created_at":"2015-07-03T10:00:00.000Z","updated_at":"2015-07-03T10:00:00.000Z"},"series":[["2015-06-29",1],["2015-06-30",1],["2015-07-01",1],["2015-07-02",1]]}]
\ No newline at end of file
+[{"label":{"id":2,"title":"label2","color":"#990000","description":null,"group_id":1,"project_id":null,"template":false,"text_color":"#FFFFFF","created_at":"2015-07-03T10:00:00.000Z","updated_at":"2015-07-03T10:00:00.000Z"},"series":[["2015-06-29",1],["2015-06-30",1],["2015-07-01",1],["2015-07-02",1]]},{"label":{"id":3,"title":"label3","color":"#990000","description":null,"group_id":1,"project_id":null,"template":false,"text_color":"#FFFFFF","created_at":"2015-07-03T10:00:00.000Z","updated_at":"2015-07-03T10:00:00.000Z"},"series":[["2015-06-29",1],["2015-06-30",1],["2015-07-01",1],["2015-07-02",1]]},{"label":{"id":4,"title":"label4","color":"#990000","description":null,"group_id":1,"project_id":null,"template":false,"text_color":"#FFFFFF","created_at":"2015-07-03T10:00:00.000Z","updated_at":"2015-07-03T10:00:00.000Z"},"series":[["2015-06-29",1],["2015-06-30",1],["2015-07-01",1],["2015-07-02",1]]}]
\ No newline at end of file
diff --git a/tmp/frontend/fixtures-ee/analytics/value_stream_analytics/stages/code/median.json b/tmp/tests/frontend/fixtures-ee/analytics/value_stream_analytics/stages/code/median.json
index 5b3860c931f..bf751ebe561 100644
--- a/tmp/frontend/fixtures-ee/analytics/value_stream_analytics/stages/code/median.json
+++ b/tmp/tests/frontend/fixtures-ee/analytics/value_stream_analytics/stages/code/median.json
@@ -1 +1 @@
-{"value":129600.0}
\ No newline at end of file
+{"value":null}
\ No newline at end of file
diff --git a/tmp/frontend/fixtures-ee/analytics/value_stream_analytics/stages/code/records.json b/tmp/tests/frontend/fixtures-ee/analytics/value_stream_analytics/stages/code/records.json
index d2dda095cb9..0637a088a01 100644
--- a/tmp/frontend/fixtures-ee/analytics/value_stream_analytics/stages/code/records.json
+++ b/tmp/tests/frontend/fixtures-ee/analytics/value_stream_analytics/stages/code/records.json
@@ -1 +1 @@
-[{"title":"Awesome merge_request","author":{"id":12,"name":"John Doe13","username":"user12","state":"active","avatar_url":"https://www.gravatar.com/avatar/d25e135de81d110251ed8ed3e2798d79?s=80\u0026d=identicon","web_url":"http://localhost/user12","status_tooltip_html":null,"path":"/user12"},"iid":"3","total_time":{"days":2},"created_at":"less than a minute ago","url":"http://localhost/group16/project6/-/merge_requests/3","state":"merged"},{"title":"Awesome merge_request","author":{"id":12,"name":"John Doe13","username":"user12","state":"active","avatar_url":"https://www.gravatar.com/avatar/d25e135de81d110251ed8ed3e2798d79?s=80\u0026d=identicon","web_url":"http://localhost/user12","status_tooltip_html":null,"path":"/user12"},"iid":"4","total_time":{"days":1},"created_at":"less than a minute ago","url":"http://localhost/group16/project6/-/merge_requests/4","state":"merged"}]
\ No newline at end of file
+[]
\ No newline at end of file
diff --git a/tmp/frontend/fixtures-ee/analytics/value_stream_analytics/stages/issue/median.json b/tmp/tests/frontend/fixtures-ee/analytics/value_stream_analytics/stages/issue/median.json
index d93bd21bb95..bf751ebe561 100644
--- a/tmp/frontend/fixtures-ee/analytics/value_stream_analytics/stages/issue/median.json
+++ b/tmp/tests/frontend/fixtures-ee/analytics/value_stream_analytics/stages/issue/median.json
@@ -1 +1 @@
-{"value":345600.0}
\ No newline at end of file
+{"value":null}
\ No newline at end of file
diff --git a/tmp/frontend/fixtures-ee/analytics/value_stream_analytics/stages/issue/records.json b/tmp/tests/frontend/fixtures-ee/analytics/value_stream_analytics/stages/issue/records.json
index 25455fb2dc4..0637a088a01 100644
--- a/tmp/frontend/fixtures-ee/analytics/value_stream_analytics/stages/issue/records.json
+++ b/tmp/tests/frontend/fixtures-ee/analytics/value_stream_analytics/stages/issue/records.json
@@ -1 +1 @@
-[{"title":"My title 10","author":{"id":3,"name":"John Doe4","username":"user3","state":"active","avatar_url":"https://www.gravatar.com/avatar/2c75f98f3ea6cd6ee75cfbdfbb031388?s=80\u0026d=identicon","web_url":"http://localhost/user3","status_tooltip_html":null,"path":"/user3"},"iid":"2","total_time":{"days":5},"created_at":"5 days ago","url":"http://localhost/group4/project2/-/issues/2"},{"title":"My title 13","author":{"id":3,"name":"John Doe4","username":"user3","state":"active","avatar_url":"https://www.gravatar.com/avatar/2c75f98f3ea6cd6ee75cfbdfbb031388?s=80\u0026d=identicon","web_url":"http://localhost/user3","status_tooltip_html":null,"path":"/user3"},"iid":"3","total_time":{"days":4},"created_at":"4 days ago","url":"http://localhost/group4/project2/-/issues/3"},{"title":"My title 15","author":{"id":3,"name":"John Doe4","username":"user3","state":"active","avatar_url":"https://www.gravatar.com/avatar/2c75f98f3ea6cd6ee75cfbdfbb031388?s=80\u0026d=identicon","web_url":"http://localhost/user3","status_tooltip_html":null,"path":"/user3"},"iid":"4","total_time":{"days":3},"created_at":"3 days ago","url":"http://localhost/group4/project2/-/issues/4"}]
\ No newline at end of file
+[]
\ No newline at end of file
diff --git a/tmp/frontend/fixtures-ee/analytics/value_stream_analytics/stages/review/median.json b/tmp/tests/frontend/fixtures-ee/analytics/value_stream_analytics/stages/review/median.json
index 532470c78f0..bf751ebe561 100644
--- a/tmp/frontend/fixtures-ee/analytics/value_stream_analytics/stages/review/median.json
+++ b/tmp/tests/frontend/fixtures-ee/analytics/value_stream_analytics/stages/review/median.json
@@ -1 +1 @@
-{"value":388800.0}
\ No newline at end of file
+{"value":null}
\ No newline at end of file
diff --git a/tmp/frontend/fixtures-ee/analytics/value_stream_analytics/stages/review/records.json b/tmp/tests/frontend/fixtures-ee/analytics/value_stream_analytics/stages/review/records.json
index 4fbb2d5d7b9..0637a088a01 100644
--- a/tmp/frontend/fixtures-ee/analytics/value_stream_analytics/stages/review/records.json
+++ b/tmp/tests/frontend/fixtures-ee/analytics/value_stream_analytics/stages/review/records.json
@@ -1 +1 @@
-[{"title":"Awesome merge_request","author":{"id":20,"name":"John Doe21","username":"user20","state":"active","avatar_url":"https://www.gravatar.com/avatar/fb32cf62136a195ec4f40ec6d1cfffdc?s=80\u0026d=identicon","web_url":"http://localhost/user20","status_tooltip_html":null,"path":"/user20"},"iid":"4","total_time":{"seconds":0},"created_at":"less than a minute ago","url":"http://localhost/group28/project10/-/merge_requests/4","state":"merged"},{"title":"Awesome merge_request","author":{"id":20,"name":"John Doe21","username":"user20","state":"active","avatar_url":"https://www.gravatar.com/avatar/fb32cf62136a195ec4f40ec6d1cfffdc?s=80\u0026d=identicon","web_url":"http://localhost/user20","status_tooltip_html":null,"path":"/user20"},"iid":"3","total_time":{"seconds":0},"created_at":"less than a minute ago","url":"http://localhost/group28/project10/-/merge_requests/3","state":"merged"},{"title":"My title 75","author":{"id":19,"name":"John Doe20","username":"user19","state":"active","avatar_url":"https://www.gravatar.com/avatar/dea4d12fdc8c28ba84bb0cba36cbbd8f?s=80\u0026d=identicon","web_url":"http://localhost/user19","status_tooltip_html":null,"path":"/user19"},"iid":"1","total_time":{"days":15},"created_at":"20 days ago","url":"http://localhost/group28/project10/-/merge_requests/1","state":"opened"},{"title":"My title 78","author":{"id":19,"name":"John Doe20","username":"user19","state":"active","avatar_url":"https://www.gravatar.com/avatar/dea4d12fdc8c28ba84bb0cba36cbbd8f?s=80\u0026d=identicon","web_url":"http://localhost/user19","status_tooltip_html":null,"path":"/user19"},"iid":"2","total_time":{"days":9},"created_at":"19 days ago","url":"http://localhost/group28/project10/-/merge_requests/2","state":"opened"}]
\ No newline at end of file
+[]
\ No newline at end of file
diff --git a/tmp/frontend/fixtures-ee/analytics/value_stream_analytics/stages/staging/median.json b/tmp/tests/frontend/fixtures-ee/analytics/value_stream_analytics/stages/staging/median.json
index 532470c78f0..bf751ebe561 100644
--- a/tmp/frontend/fixtures-ee/analytics/value_stream_analytics/stages/staging/median.json
+++ b/tmp/tests/frontend/fixtures-ee/analytics/value_stream_analytics/stages/staging/median.json
@@ -1 +1 @@
-{"value":388800.0}
\ No newline at end of file
+{"value":null}
\ No newline at end of file
diff --git a/tmp/frontend/fixtures-ee/analytics/value_stream_analytics/stages/staging/records.json b/tmp/tests/frontend/fixtures-ee/analytics/value_stream_analytics/stages/staging/records.json
index 09596f2a45d..0637a088a01 100644
--- a/tmp/frontend/fixtures-ee/analytics/value_stream_analytics/stages/staging/records.json
+++ b/tmp/tests/frontend/fixtures-ee/analytics/value_stream_analytics/stages/staging/records.json
@@ -1 +1 @@
-[{"name":"test","id":111,"branch":{"name":"master","url":"http://localhost/group34/project12/-/tree/master"},"short_sha":"b83d6e39","author":{"id":24,"name":"John Doe25","username":"user24","state":"active","avatar_url":"https://www.gravatar.com/avatar/b2a36e6b7d4eac0f4663a285a6578a7c?s=80\u0026d=identicon","web_url":"http://localhost/user24","status_tooltip_html":null,"path":"/user24"},"date":"Not started","total_time":{},"url":"http://localhost/group34/project12/-/jobs/111","commit_url":"http://localhost/group34/project12/-/commit/b83d6e391c22777fca1ed3012fce84f633d7fed0"},{"name":"test","id":115,"branch":{"name":"master","url":"http://localhost/group34/project12/-/tree/master"},"short_sha":"b83d6e39","author":{"id":24,"name":"John Doe25","username":"user24","state":"active","avatar_url":"https://www.gravatar.com/avatar/b2a36e6b7d4eac0f4663a285a6578a7c?s=80\u0026d=identicon","web_url":"http://localhost/user24","status_tooltip_html":null,"path":"/user24"},"date":"about 1 hour ago","total_time":{"mins":2},"url":"http://localhost/group34/project12/-/jobs/115","commit_url":"http://localhost/group34/project12/-/commit/b83d6e391c22777fca1ed3012fce84f633d7fed0"},{"name":"test","id":117,"branch":{"name":"master","url":"http://localhost/group34/project12/-/tree/master"},"short_sha":"b83d6e39","author":{"id":24,"name":"John Doe25","username":"user24","state":"active","avatar_url":"https://www.gravatar.com/avatar/b2a36e6b7d4eac0f4663a285a6578a7c?s=80\u0026d=identicon","web_url":"http://localhost/user24","status_tooltip_html":null,"path":"/user24"},"date":"Not started","total_time":{},"url":"http://localhost/group34/project12/-/jobs/117","commit_url":"http://localhost/group34/project12/-/commit/b83d6e391c22777fca1ed3012fce84f633d7fed0"},{"name":"test","id":112,"branch":{"name":"master","url":"http://localhost/group34/project12/-/tree/master"},"short_sha":"b83d6e39","author":{"id":24,"name":"John Doe25","username":"user24","state":"active","avatar_url":"https://www.gravatar.com/avatar/b2a36e6b7d4eac0f4663a285a6578a7c?s=80\u0026d=identicon","web_url":"http://localhost/user24","status_tooltip_html":null,"path":"/user24"},"date":"Not started","total_time":{},"url":"http://localhost/group34/project12/-/jobs/112","commit_url":"http://localhost/group34/project12/-/commit/b83d6e391c22777fca1ed3012fce84f633d7fed0"},{"name":"test","id":116,"branch":{"name":"master","url":"http://localhost/group34/project12/-/tree/master"},"short_sha":"b83d6e39","author":{"id":24,"name":"John Doe25","username":"user24","state":"active","avatar_url":"https://www.gravatar.com/avatar/b2a36e6b7d4eac0f4663a285a6578a7c?s=80\u0026d=identicon","web_url":"http://localhost/user24","status_tooltip_html":null,"path":"/user24"},"date":"about 1 hour ago","total_time":{"mins":2},"url":"http://localhost/group34/project12/-/jobs/116","commit_url":"http://localhost/group34/project12/-/commit/b83d6e391c22777fca1ed3012fce84f633d7fed0"},{"name":"test","id":118,"branch":{"name":"master","url":"http://localhost/group34/project12/-/tree/master"},"short_sha":"b83d6e39","author":{"id":24,"name":"John Doe25","username":"user24","state":"active","avatar_url":"https://www.gravatar.com/avatar/b2a36e6b7d4eac0f4663a285a6578a7c?s=80\u0026d=identicon","web_url":"http://localhost/user24","status_tooltip_html":null,"path":"/user24"},"date":"Not started","total_time":{},"url":"http://localhost/group34/project12/-/jobs/118","commit_url":"http://localhost/group34/project12/-/commit/b83d6e391c22777fca1ed3012fce84f633d7fed0"}]
\ No newline at end of file
+[]
\ No newline at end of file
diff --git a/tmp/frontend/fixtures-ee/analytics/value_stream_analytics/stages/test/median.json b/tmp/tests/frontend/fixtures-ee/analytics/value_stream_analytics/stages/test/median.json
index 18707b73f73..bf751ebe561 100644
--- a/tmp/frontend/fixtures-ee/analytics/value_stream_analytics/stages/test/median.json
+++ b/tmp/tests/frontend/fixtures-ee/analytics/value_stream_analytics/stages/test/median.json
@@ -1 +1 @@
-{"value":259200.0}
\ No newline at end of file
+{"value":null}
\ No newline at end of file
diff --git a/tmp/frontend/fixtures-ee/analytics/value_stream_analytics/stages/test/records.json b/tmp/tests/frontend/fixtures-ee/analytics/value_stream_analytics/stages/test/records.json
index f52969b165d..0637a088a01 100644
--- a/tmp/frontend/fixtures-ee/analytics/value_stream_analytics/stages/test/records.json
+++ b/tmp/tests/frontend/fixtures-ee/analytics/value_stream_analytics/stages/test/records.json
@@ -1 +1 @@
-[{"name":"test","id":75,"branch":{"name":"master","url":"http://localhost/group22/project8/-/tree/master"},"short_sha":"b83d6e39","author":{"id":16,"name":"John Doe17","username":"user16","state":"active","avatar_url":"https://www.gravatar.com/avatar/611cced270e17d59c17d32af607cfe09?s=80\u0026d=identicon","web_url":"http://localhost/user16","status_tooltip_html":null,"path":"/user16"},"date":"about 1 hour ago","total_time":{"mins":2},"url":"http://localhost/group22/project8/-/jobs/75","commit_url":"http://localhost/group22/project8/-/commit/b83d6e391c22777fca1ed3012fce84f633d7fed0"},{"name":"test","id":71,"branch":{"name":"master","url":"http://localhost/group22/project8/-/tree/master"},"short_sha":"b83d6e39","author":{"id":16,"name":"John Doe17","username":"user16","state":"active","avatar_url":"https://www.gravatar.com/avatar/611cced270e17d59c17d32af607cfe09?s=80\u0026d=identicon","web_url":"http://localhost/user16","status_tooltip_html":null,"path":"/user16"},"date":"Not started","total_time":{},"url":"http://localhost/group22/project8/-/jobs/71","commit_url":"http://localhost/group22/project8/-/commit/b83d6e391c22777fca1ed3012fce84f633d7fed0"},{"name":"test","id":77,"branch":{"name":"master","url":"http://localhost/group22/project8/-/tree/master"},"short_sha":"b83d6e39","author":{"id":16,"name":"John Doe17","username":"user16","state":"active","avatar_url":"https://www.gravatar.com/avatar/611cced270e17d59c17d32af607cfe09?s=80\u0026d=identicon","web_url":"http://localhost/user16","status_tooltip_html":null,"path":"/user16"},"date":"Not started","total_time":{},"url":"http://localhost/group22/project8/-/jobs/77","commit_url":"http://localhost/group22/project8/-/commit/b83d6e391c22777fca1ed3012fce84f633d7fed0"},{"name":"test","id":76,"branch":{"name":"master","url":"http://localhost/group22/project8/-/tree/master"},"short_sha":"b83d6e39","author":{"id":16,"name":"John Doe17","username":"user16","state":"active","avatar_url":"https://www.gravatar.com/avatar/611cced270e17d59c17d32af607cfe09?s=80\u0026d=identicon","web_url":"http://localhost/user16","status_tooltip_html":null,"path":"/user16"},"date":"about 1 hour ago","total_time":{"mins":2},"url":"http://localhost/group22/project8/-/jobs/76","commit_url":"http://localhost/group22/project8/-/commit/b83d6e391c22777fca1ed3012fce84f633d7fed0"},{"name":"test","id":72,"branch":{"name":"master","url":"http://localhost/group22/project8/-/tree/master"},"short_sha":"b83d6e39","author":{"id":16,"name":"John Doe17","username":"user16","state":"active","avatar_url":"https://www.gravatar.com/avatar/611cced270e17d59c17d32af607cfe09?s=80\u0026d=identicon","web_url":"http://localhost/user16","status_tooltip_html":null,"path":"/user16"},"date":"Not started","total_time":{},"url":"http://localhost/group22/project8/-/jobs/72","commit_url":"http://localhost/group22/project8/-/commit/b83d6e391c22777fca1ed3012fce84f633d7fed0"},{"name":"test","id":78,"branch":{"name":"master","url":"http://localhost/group22/project8/-/tree/master"},"short_sha":"b83d6e39","author":{"id":16,"name":"John Doe17","username":"user16","state":"active","avatar_url":"https://www.gravatar.com/avatar/611cced270e17d59c17d32af607cfe09?s=80\u0026d=identicon","web_url":"http://localhost/user16","status_tooltip_html":null,"path":"/user16"},"date":"Not started","total_time":{},"url":"http://localhost/group22/project8/-/jobs/78","commit_url":"http://localhost/group22/project8/-/commit/b83d6e391c22777fca1ed3012fce84f633d7fed0"}]
\ No newline at end of file
+[]
\ No newline at end of file
diff --git a/tmp/frontend/fixtures-ee/analytics/value_stream_analytics/stages.json b/tmp/tests/frontend/fixtures-ee/analytics/value_stream_analytics/stages.json
index 49752a805ff..ca4ae120996 100644
--- a/tmp/frontend/fixtures-ee/analytics/value_stream_analytics/stages.json
+++ b/tmp/tests/frontend/fixtures-ee/analytics/value_stream_analytics/stages.json
@@ -1 +1 @@
-{"events":[{"name":"Issue closed","identifier":"issue_closed","type":"simple","can_be_start_event":true,"allowed_end_events":["issue_last_edited","issue_label_added","issue_label_removed"]},{"name":"Issue created","identifier":"issue_created","type":"simple","can_be_start_event":true,"allowed_end_events":["issue_closed","issue_first_added_to_board","issue_first_associated_with_milestone","issue_first_mentioned_in_commit","issue_last_edited","issue_label_added","issue_label_removed"]},{"name":"Issue first added to a board","identifier":"issue_first_added_to_board","type":"simple","can_be_start_event":true,"allowed_end_events":["issue_closed","issue_first_associated_with_milestone","issue_first_mentioned_in_commit","issue_last_edited","issue_label_added","issue_label_removed"]},{"name":"Issue first associated with a milestone","identifier":"issue_first_associated_with_milestone","type":"simple","can_be_start_event":true,"allowed_end_events":["issue_closed","issue_first_added_to_board","issue_first_mentioned_in_commit","issue_last_edited","issue_label_added","issue_label_removed"]},{"name":"Issue first mentioned in a commit","identifier":"issue_first_mentioned_in_commit","type":"simple","can_be_start_event":true,"allowed_end_events":["issue_closed","issue_first_associated_with_milestone","issue_first_added_to_board","issue_last_edited","issue_label_added","issue_label_removed"]},{"name":"Issue label was added","identifier":"issue_label_added","type":"label","can_be_start_event":true,"allowed_end_events":["issue_label_added","issue_label_removed","issue_closed"]},{"name":"Issue label was removed","identifier":"issue_label_removed","type":"label","can_be_start_event":true,"allowed_end_events":["issue_closed"]},{"name":"Issue last edited","identifier":"issue_last_edited","type":"simple","can_be_start_event":false,"allowed_end_events":[]},{"name":"Merge request closed","identifier":"merge_request_closed","type":"simple","can_be_start_event":true,"allowed_end_events":["merge_request_first_deployed_to_production","merge_request_last_edited","merge_request_label_added","merge_request_label_removed"]},{"name":"Merge request created","identifier":"merge_request_created","type":"simple","can_be_start_event":true,"allowed_end_events":["merge_request_merged","merge_request_closed","merge_request_first_deployed_to_production","merge_request_last_build_started","merge_request_last_build_finished","merge_request_last_edited","merge_request_label_added","merge_request_label_removed"]},{"name":"Merge request first deployed to production","identifier":"merge_request_first_deployed_to_production","type":"simple","can_be_start_event":true,"allowed_end_events":["merge_request_last_edited","merge_request_label_added","merge_request_label_removed"]},{"name":"Merge request label was added","identifier":"merge_request_label_added","type":"label","can_be_start_event":true,"allowed_end_events":["merge_request_label_added","merge_request_label_removed"]},{"name":"Merge request label was removed","identifier":"merge_request_label_removed","type":"label","can_be_start_event":true,"allowed_end_events":["merge_request_label_added","merge_request_label_removed"]},{"name":"Merge request last build finish time","identifier":"merge_request_last_build_finished","type":"simple","can_be_start_event":true,"allowed_end_events":["merge_request_closed","merge_request_first_deployed_to_production","merge_request_last_edited","merge_request_merged","merge_request_label_added","merge_request_label_removed"]},{"name":"Merge request last build start time","identifier":"merge_request_last_build_started","type":"simple","can_be_start_event":true,"allowed_end_events":["merge_request_last_build_finished","merge_request_closed","merge_request_first_deployed_to_production","merge_request_last_edited","merge_request_merged","merge_request_label_added","merge_request_label_removed"]},{"name":"Merge request last edited","identifier":"merge_request_last_edited","type":"simple","can_be_start_event":false,"allowed_end_events":[]},{"name":"Merge request merged","identifier":"merge_request_merged","type":"simple","can_be_start_event":true,"allowed_end_events":["merge_request_first_deployed_to_production","merge_request_closed","merge_request_first_deployed_to_production","merge_request_last_edited","merge_request_label_added","merge_request_label_removed"]}],"stages":[{"title":"Issue","hidden":false,"legend":"","description":"Time before an issue gets scheduled","id":1,"custom":false},{"title":"Plan","hidden":false,"legend":"","description":"Time before an issue starts implementation","id":2,"custom":false},{"title":"Code","hidden":false,"legend":"","description":"Time until first merge request","id":3,"custom":false},{"title":"Test","hidden":false,"legend":"","description":"Total test time for all commits/merges","id":4,"custom":false},{"title":"Review","hidden":false,"legend":"","description":"Time between merge request creation and merge/close","id":5,"custom":false},{"title":"Staging","hidden":false,"legend":"","description":"From merge request merge until deploy to production","id":6,"custom":false},{"title":"label-based-stage","hidden":false,"legend":"","description":"","id":7,"custom":true,"start_event_identifier":"issue_label_added","end_event_identifier":"issue_label_removed","start_event_label":{"id":1,"title":"in-code-review","color":"#990000","description":null,"group_id":1,"project_id":null,"template":false,"text_color":"#FFFFFF","created_at":"2015-07-03T10:00:00.000Z","updated_at":"2015-07-03T10:00:00.000Z"},"end_event_label":{"id":1,"title":"in-code-review","color":"#990000","description":null,"group_id":1,"project_id":null,"template":false,"text_color":"#FFFFFF","created_at":"2015-07-03T10:00:00.000Z","updated_at":"2015-07-03T10:00:00.000Z"}},{"title":"Stage #1","hidden":false,"legend":"","description":"","id":8,"custom":true,"start_event_identifier":"merge_request_created","end_event_identifier":"merge_request_merged"}]}
\ No newline at end of file
+{"events":[{"name":"Issue closed","identifier":"issue_closed","type":"simple","can_be_start_event":true,"allowed_end_events":["issue_last_edited","issue_label_added","issue_label_removed"]},{"name":"Issue created","identifier":"issue_created","type":"simple","can_be_start_event":true,"allowed_end_events":["issue_closed","issue_first_added_to_board","issue_first_associated_with_milestone","issue_first_mentioned_in_commit","issue_last_edited","issue_label_added","issue_label_removed"]},{"name":"Issue first added to a board","identifier":"issue_first_added_to_board","type":"simple","can_be_start_event":true,"allowed_end_events":["issue_closed","issue_first_associated_with_milestone","issue_first_mentioned_in_commit","issue_last_edited","issue_label_added","issue_label_removed"]},{"name":"Issue first associated with a milestone","identifier":"issue_first_associated_with_milestone","type":"simple","can_be_start_event":true,"allowed_end_events":["issue_closed","issue_first_added_to_board","issue_first_mentioned_in_commit","issue_last_edited","issue_label_added","issue_label_removed"]},{"name":"Issue first mentioned in a commit","identifier":"issue_first_mentioned_in_commit","type":"simple","can_be_start_event":true,"allowed_end_events":["issue_closed","issue_first_associated_with_milestone","issue_first_added_to_board","issue_last_edited","issue_label_added","issue_label_removed"]},{"name":"Issue label was added","identifier":"issue_label_added","type":"label","can_be_start_event":true,"allowed_end_events":["issue_label_added","issue_label_removed","issue_closed"]},{"name":"Issue label was removed","identifier":"issue_label_removed","type":"label","can_be_start_event":true,"allowed_end_events":["issue_closed"]},{"name":"Issue last edited","identifier":"issue_last_edited","type":"simple","can_be_start_event":false,"allowed_end_events":[]},{"name":"Merge request closed","identifier":"merge_request_closed","type":"simple","can_be_start_event":true,"allowed_end_events":["merge_request_first_deployed_to_production","merge_request_last_edited","merge_request_label_added","merge_request_label_removed"]},{"name":"Merge request created","identifier":"merge_request_created","type":"simple","can_be_start_event":true,"allowed_end_events":["merge_request_merged","merge_request_closed","merge_request_first_deployed_to_production","merge_request_last_build_started","merge_request_last_build_finished","merge_request_last_edited","merge_request_label_added","merge_request_label_removed"]},{"name":"Merge request first deployed to production","identifier":"merge_request_first_deployed_to_production","type":"simple","can_be_start_event":true,"allowed_end_events":["merge_request_last_edited","merge_request_label_added","merge_request_label_removed"]},{"name":"Merge request label was added","identifier":"merge_request_label_added","type":"label","can_be_start_event":true,"allowed_end_events":["merge_request_label_added","merge_request_label_removed"]},{"name":"Merge request label was removed","identifier":"merge_request_label_removed","type":"label","can_be_start_event":true,"allowed_end_events":["merge_request_label_added","merge_request_label_removed"]},{"name":"Merge request last build finish time","identifier":"merge_request_last_build_finished","type":"simple","can_be_start_event":true,"allowed_end_events":["merge_request_closed","merge_request_first_deployed_to_production","merge_request_last_edited","merge_request_merged","merge_request_label_added","merge_request_label_removed"]},{"name":"Merge request last build start time","identifier":"merge_request_last_build_started","type":"simple","can_be_start_event":true,"allowed_end_events":["merge_request_last_build_finished","merge_request_closed","merge_request_first_deployed_to_production","merge_request_last_edited","merge_request_merged","merge_request_label_added","merge_request_label_removed"]},{"name":"Merge request last edited","identifier":"merge_request_last_edited","type":"simple","can_be_start_event":false,"allowed_end_events":[]},{"name":"Merge request merged","identifier":"merge_request_merged","type":"simple","can_be_start_event":true,"allowed_end_events":["merge_request_first_deployed_to_production","merge_request_closed","merge_request_first_deployed_to_production","merge_request_last_edited","merge_request_label_added","merge_request_label_removed"]}],"stages":[{"title":"Issue","hidden":false,"legend":"","description":"Time before an issue gets scheduled","id":2,"custom":false},{"title":"Plan","hidden":false,"legend":"","description":"Time before an issue starts implementation","id":3,"custom":false},{"title":"Code","hidden":false,"legend":"","description":"Time until first merge request","id":4,"custom":false},{"title":"Test","hidden":false,"legend":"","description":"Total test time for all commits/merges","id":5,"custom":false},{"title":"Review","hidden":false,"legend":"","description":"Time between merge request creation and merge/close","id":6,"custom":false},{"title":"Staging","hidden":false,"legend":"","description":"From merge request merge until deploy to production","id":7,"custom":false},{"title":"label-based-stage","hidden":false,"legend":"","description":"","id":1,"custom":true,"start_event_identifier":"issue_label_added","end_event_identifier":"issue_label_removed","start_event_label":{"id":1,"title":"in-code-review","color":"#990000","description":null,"group_id":1,"project_id":null,"template":false,"text_color":"#FFFFFF","created_at":"2020-10-17T22:35:14.757Z","updated_at":"2020-10-17T22:35:14.757Z"},"end_event_label":{"id":1,"title":"in-code-review","color":"#990000","description":null,"group_id":1,"project_id":null,"template":false,"text_color":"#FFFFFF","created_at":"2020-10-17T22:35:14.757Z","updated_at":"2020-10-17T22:35:14.757Z"}},{"title":"Stage #1","hidden":false,"legend":"","description":"","id":8,"custom":true,"start_event_identifier":"merge_request_created","end_event_identifier":"merge_request_merged"}]}
\ No newline at end of file
diff --git a/tmp/frontend/fixtures-ee/analytics/value_stream_analytics/summary.json b/tmp/tests/frontend/fixtures-ee/analytics/value_stream_analytics/summary.json
index aa21465dbc9..2afc55b7a2a 100644
--- a/tmp/frontend/fixtures-ee/analytics/value_stream_analytics/summary.json
+++ b/tmp/tests/frontend/fixtures-ee/analytics/value_stream_analytics/summary.json
@@ -1 +1 @@
-[{"value":"4","title":"New Issues"},{"value":"-","title":"Deploys"},{"value":"-","title":"Deployment Frequency","unit":"per day"}]
\ No newline at end of file
+[{"value":"2","title":"New Issues"},{"value":"-","title":"Deploys"},{"value":"-","title":"Deployment Frequency","unit":"per day"}]
\ No newline at end of file
diff --git a/tmp/frontend/fixtures-ee/analytics/value_stream_analytics/time_summary.json b/tmp/tests/frontend/fixtures-ee/analytics/value_stream_analytics/time_summary.json
index 13ea1e7e7da..c96c7fdc3d4 100644
--- a/tmp/frontend/fixtures-ee/analytics/value_stream_analytics/time_summary.json
+++ b/tmp/tests/frontend/fixtures-ee/analytics/value_stream_analytics/time_summary.json
@@ -1 +1 @@
-[{"value":"4.5","title":"Lead Time","unit":"days"},{"value":"3.0","title":"Cycle Time","unit":"days"}]
\ No newline at end of file
+[{"value":"-","title":"Lead Time","unit":"days"},{"value":"-","title":"Cycle Time","unit":"days"}]
\ No newline at end of file

Does this MR meet the acceptance criteria?

Conformity

Availability and Testing

Security

If this MR contains changes to processing or storing of credentials or tokens, authorization and authentication methods and other items described in the security review guidelines:

  • Label as security and @ mention @gitlab-com/gl-security/appsec
  • The MR includes necessary changes to maintain consistency between UI, API, email, or other methods
  • Security reports checked/validated by a reviewer from the AppSec team
Edited by Peter Leitzen

Merge request reports