aboutsummaryrefslogtreecommitdiffstats
path: root/tests/unit/metrics
diff options
context:
space:
mode:
authorddh <dianehosfelt@gmail.com>2017-10-02 14:52:39 +0100
committerddh <dianehosfelt@gmail.com>2017-10-24 21:02:56 +0100
commit2ffbe5398970e54ad55d3e53b495ee6651b64f4c (patch)
tree4bd439757539df5afa8e58a9030a3a46c4098e0d /tests/unit/metrics
parent347176df257978bdb1c413f632c9fc870de4ff76 (diff)
downloadservo-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.rs116
-rw-r--r--tests/unit/metrics/lib.rs1
-rw-r--r--tests/unit/metrics/paint_time.rs82
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"
+ );
}