diff options
author | ddh <dianehosfelt@gmail.com> | 2017-10-02 14:52:39 +0100 |
---|---|---|
committer | ddh <dianehosfelt@gmail.com> | 2017-10-24 21:02:56 +0100 |
commit | 2ffbe5398970e54ad55d3e53b495ee6651b64f4c (patch) | |
tree | 4bd439757539df5afa8e58a9030a3a46c4098e0d /tests/unit/metrics | |
parent | 347176df257978bdb1c413f632c9fc870de4ff76 (diff) | |
download | servo-2ffbe5398970e54ad55d3e53b495ee6651b64f4c.tar.gz servo-2ffbe5398970e54ad55d3e53b495ee6651b64f4c.zip |
added time to interactive metrics, refactored metrics to use traits
changed task macro to take pipeline info
Diffstat (limited to 'tests/unit/metrics')
-rw-r--r-- | tests/unit/metrics/interactive_time.rs | 116 | ||||
-rw-r--r-- | tests/unit/metrics/lib.rs | 1 | ||||
-rw-r--r-- | tests/unit/metrics/paint_time.rs | 82 |
3 files changed, 182 insertions, 17 deletions
diff --git a/tests/unit/metrics/interactive_time.rs b/tests/unit/metrics/interactive_time.rs new file mode 100644 index 00000000000..5652ffbe06d --- /dev/null +++ b/tests/unit/metrics/interactive_time.rs @@ -0,0 +1,116 @@ +/* This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ + +use ipc_channel::ipc; +use metrics::{InteractiveMetrics, InteractiveFlag, InteractiveWindow}; +use metrics::{ProfilerMetadataFactory, ProgressiveWebMetric}; +use profile_traits::time::{ProfilerChan, TimerMetadata}; +use time; + +struct DummyProfilerMetadataFactory {} +impl ProfilerMetadataFactory for DummyProfilerMetadataFactory { + fn new_metadata(&self) -> Option<TimerMetadata> { + None + } +} + + +fn test_interactive() -> InteractiveMetrics { + let (sender, _) = ipc::channel().unwrap(); + let profiler_chan = ProfilerChan(sender); + let mut interactive = InteractiveMetrics::new(profiler_chan); + + assert_eq!((&interactive).get_navigation_start(), None); + assert_eq!(interactive.get_tti(), None); + + interactive.set_navigation_start(time::precise_time_ns() as f64); + + interactive +} + +#[test] +fn test_set_dcl() { + let profiler_metadata_factory = DummyProfilerMetadataFactory {}; + + let interactive = test_interactive(); + interactive.maybe_set_tti(&profiler_metadata_factory, None, InteractiveFlag::DCL); + let dcl = interactive.get_dom_content_loaded(); + assert!(dcl.is_some()); + + //try to overwrite + interactive.maybe_set_tti(&profiler_metadata_factory, None, InteractiveFlag::DCL); + assert_eq!(interactive.get_dom_content_loaded(), dcl); + assert_eq!(interactive.get_tti(), None); +} + +#[test] +fn test_set_mta() { + let profiler_metadata_factory = DummyProfilerMetadataFactory {}; + + let interactive = test_interactive(); + let t = time::precise_time_ns(); + interactive.maybe_set_tti( + &profiler_metadata_factory, + Some(t as f64), + InteractiveFlag::TTI, + ); + let mta = interactive.get_main_thread_available(); + assert!(mta.is_some()); + assert_eq!(mta, Some(t as f64)); + + //try to overwrite + interactive.maybe_set_tti( + &profiler_metadata_factory, + Some(time::precise_time_ns() as f64), + InteractiveFlag::TTI, + ); + assert_eq!(interactive.get_main_thread_available(), mta); + assert_eq!(interactive.get_tti(), None); +} + +#[test] +fn test_set_tti_dcl() { + let profiler_metadata_factory = DummyProfilerMetadataFactory {}; + + let interactive = test_interactive(); + let t = time::precise_time_ns(); + interactive.maybe_set_tti( + &profiler_metadata_factory, + Some(t as f64), + InteractiveFlag::TTI, + ); + let mta = interactive.get_main_thread_available(); + assert!(mta.is_some()); + + interactive.maybe_set_tti(&profiler_metadata_factory, None, InteractiveFlag::DCL); + let dcl = interactive.get_dom_content_loaded(); + assert!(dcl.is_some()); + + let interactive_time = dcl.unwrap() - (&interactive).get_navigation_start().unwrap(); + assert_eq!(interactive.get_tti(), Some(interactive_time)); +} + +#[test] +fn test_set_tti_mta() { + let profiler_metadata_factory = DummyProfilerMetadataFactory {}; + + let interactive = test_interactive(); + interactive.maybe_set_tti(&profiler_metadata_factory, None, InteractiveFlag::DCL); + let dcl = interactive.get_dom_content_loaded(); + assert!(dcl.is_some()); + + let t = time::precise_time_ns(); + interactive.maybe_set_tti( + &profiler_metadata_factory, + Some(t as f64), + InteractiveFlag::TTI, + ); + let mta = interactive.get_main_thread_available(); + assert!(mta.is_some()); + + let interactive_time = mta.unwrap() - (&interactive).get_navigation_start().unwrap(); + assert_eq!(interactive.get_tti(), Some(interactive_time)); +} + +// TODO InteractiveWindow tests diff --git a/tests/unit/metrics/lib.rs b/tests/unit/metrics/lib.rs index bde61912493..fc5456a271c 100644 --- a/tests/unit/metrics/lib.rs +++ b/tests/unit/metrics/lib.rs @@ -14,4 +14,5 @@ extern crate style; extern crate time; #[cfg(test)] +mod interactive_time; mod paint_time; diff --git a/tests/unit/metrics/paint_time.rs b/tests/unit/metrics/paint_time.rs index 2148c71f3ee..8af87a33c51 100644 --- a/tests/unit/metrics/paint_time.rs +++ b/tests/unit/metrics/paint_time.rs @@ -7,7 +7,7 @@ use gfx::display_list::{BaseDisplayItem, WebRenderImageInfo}; use gfx::display_list::{DisplayItem, DisplayList, ImageDisplayItem}; use gfx_traits::Epoch; use ipc_channel::ipc; -use metrics::{PaintTimeMetrics, ProfilerMetadataFactory}; +use metrics::{PaintTimeMetrics, ProfilerMetadataFactory, ProgressiveWebMetric}; use msg::constellation_msg::TEST_PIPELINE_ID; use net_traits::image::base::PixelFormat; use profile_traits::time::{ProfilerChan, TimerMetadata}; @@ -27,10 +27,27 @@ fn test_paint_metrics_construction() { let profiler_chan = ProfilerChan(sender); let (layout_sender, _) = ipc::channel().unwrap(); let (script_sender, _) = ipc::channel().unwrap(); - let paint_time_metrics = PaintTimeMetrics::new(TEST_PIPELINE_ID, profiler_chan, layout_sender, script_sender); - assert_eq!(paint_time_metrics.get_navigation_start(), None, "navigation start is None"); - assert_eq!(paint_time_metrics.get_first_paint(), None, "first paint is None"); - assert_eq!(paint_time_metrics.get_first_contentful_paint(), None, "first contentful paint is None"); + let paint_time_metrics = PaintTimeMetrics::new( + TEST_PIPELINE_ID, + profiler_chan, + layout_sender, + script_sender, + ); + assert_eq!( + (&paint_time_metrics).get_navigation_start(), + None, + "navigation start is None" + ); + assert_eq!( + paint_time_metrics.get_first_paint(), + None, + "first paint is None" + ); + assert_eq!( + paint_time_metrics.get_first_contentful_paint(), + None, + "first contentful paint is None" + ); } fn test_common(display_list: &DisplayList, epoch: Epoch) -> PaintTimeMetrics { @@ -38,22 +55,40 @@ fn test_common(display_list: &DisplayList, epoch: Epoch) -> PaintTimeMetrics { let profiler_chan = ProfilerChan(sender); let (layout_sender, _) = ipc::channel().unwrap(); let (script_sender, _) = ipc::channel().unwrap(); - let mut paint_time_metrics = PaintTimeMetrics::new(TEST_PIPELINE_ID, profiler_chan, layout_sender, script_sender); + let mut paint_time_metrics = PaintTimeMetrics::new( + TEST_PIPELINE_ID, + profiler_chan, + layout_sender, + script_sender, + ); let dummy_profiler_metadata_factory = DummyProfilerMetadataFactory {}; - paint_time_metrics.maybe_observe_paint_time(&dummy_profiler_metadata_factory, - epoch, - &display_list); + paint_time_metrics.maybe_observe_paint_time( + &dummy_profiler_metadata_factory, + epoch, + &display_list, + ); // Should not set any metric until navigation start is set. paint_time_metrics.maybe_set_metric(epoch, 0.); - assert_eq!(paint_time_metrics.get_first_paint(), None, "first paint is None"); - assert_eq!(paint_time_metrics.get_first_contentful_paint(), None, "first contentful paint is None"); + assert_eq!( + paint_time_metrics.get_first_paint(), + None, + "first paint is None" + ); + assert_eq!( + paint_time_metrics.get_first_contentful_paint(), + None, + "first contentful paint is None" + ); let navigation_start = time::precise_time_ns() as f64; paint_time_metrics.set_navigation_start(navigation_start); - assert_eq!(paint_time_metrics.get_navigation_start().unwrap(), - navigation_start, "navigation start is set"); + assert_eq!( + (&paint_time_metrics).get_navigation_start().unwrap(), + navigation_start, + "navigation start is set" + ); paint_time_metrics } @@ -68,8 +103,15 @@ fn test_first_paint_setter() { let mut paint_time_metrics = test_common(&empty_display_list, epoch); let now = time::precise_time_ns() as f64; paint_time_metrics.maybe_set_metric(epoch, now); - assert!(paint_time_metrics.get_first_paint().is_some(), "first paint is set"); - assert_eq!(paint_time_metrics.get_first_contentful_paint(), None, "first contentful paint is None"); + assert!( + paint_time_metrics.get_first_paint().is_some(), + "first paint is set" + ); + assert_eq!( + paint_time_metrics.get_first_contentful_paint(), + None, + "first contentful paint is None" + ); } #[test] @@ -95,6 +137,12 @@ fn test_first_contentful_paint_setter() { let mut paint_time_metrics = test_common(&display_list, epoch); let now = time::precise_time_ns() as f64; paint_time_metrics.maybe_set_metric(epoch, now); - assert!(paint_time_metrics.get_first_contentful_paint().is_some(), "first contentful paint is set"); - assert!(paint_time_metrics.get_first_paint().is_some(), "first paint is set"); + assert!( + paint_time_metrics.get_first_contentful_paint().is_some(), + "first contentful paint is set" + ); + assert!( + paint_time_metrics.get_first_paint().is_some(), + "first paint is set" + ); } |