shinyloadtest Report

{ glue_multi_component("gantt_button", gantt) }
{ glue_multi_component("gantt", gantt)}
{ glue_multi_component("gantt_duration_button", gantt) }
{ glue_multi_component("gantt_duration", gantt)}
{ glue_multi_component("waterfall_button", gantt) }
{ glue_multi_component("waterfall", gantt)}

Total HTTP and supporting files (JS/CSS) latency (load time) is displayed for each session and run combination. Each vertical bar represents the amount of time a session's Shiny application had to wait before it is able to ask the server for information. A resonable amount of time to wait as been set to {http_latency_cutoff}s. Warmup and cooldown sessions are displayed outside the dotted maintenance period lines.

Maximum WebSocket latency (calculation time) is displayed for each session and run combination. The maximum time is shown to convey the longest amount of time a user would have to wait for a response from the Shiny server. Warmup and cooldown sessions are displayed outside the dotted maintenance period lines.

{ if (run_length > 1) '
' else "" }
{ glue_component("picker_duration", list(id="slowest-max-picker", len = length(boxplot$max_time), comment = "slowest maximum times", info = "Event plots are arranged by the slowest maximum time within each plot.")) }
{ glue_multi_component("boxplot_thumbnail", boxplot$max_time) }
{ glue_component("picker_duration", list(id="slowest-min-picker", len = length(boxplot$min_time), comment = "slowest minimum times", info = "Event plots are arranged by the slowest minimum time within each plot.")) }
{ glue_multi_component("boxplot_thumbnail", boxplot$min_time)}
{ if (run_length > 1) glue_component("largest_mean_diff", list(boxplot = boxplot)) else "" }

Label | Max time | Min time { if (run_length > 1) " | Mean Difference" else "" }
--- | --- | --- | ---
{ glue_multi_component("boxplot_table_row", boxplot$max_time) }

{ glue_component("picker_concurrency", list(id="concurrency-slope-picker", len = length(concurrency$slope), comment = "largest slope magnitudes", src_legend = src_legend, info = "Event plots are arranged by the largest slope magnitude found when fitting a line to each run.")) }
{ glue_multi_component("boxplot_thumbnail", concurrency$slope)}
{ glue_component("picker_concurrency", list(id="concurrency-intercept-picker", len = length(concurrency$intercept), comment = "largest intercept magnitudes", src_legend = src_legend, info = "Event plots are arranged by the largest intercept magnitude found when fitting a line to each run")) }
{ glue_multi_component("boxplot_thumbnail", concurrency$intercept)}
{ glue_component("picker_concurrency", list(id="concurrency-error-picker", len = length(concurrency$max_error), comment = "largest error magnitudes", src_legend = src_legend, info = "Event plots are arranged by the largest error magnitude found when fitting a line to each run.")) }
{ glue_multi_component("boxplot_thumbnail", concurrency$max_error)}

Label | Slope | Intercept | Error
--- | --- | --- | ---
{ glue_multi_component("concurrency_table_row", concurrency$slope) }