Skip to content

Commit 668454d

Browse files
committed
move Point and Interpolate to database crate
1 parent c4da012 commit 668454d

File tree

8 files changed

+70
-71
lines changed

8 files changed

+70
-71
lines changed

site/src/interpolate.rs renamed to database/src/interpolate.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
//! Given a series with some missing data `[1, 2, ?, 4]`,
1111
//! this iterator yields `[1, 2, 2, 4]`.
1212
13-
use crate::db::Point;
13+
use crate::selector::Point;
1414

1515
/// Whether a point has been interpolated or not
1616
#[derive(Debug, Copy, Clone, PartialEq, Eq, Hash)]

database/src/lib.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ use std::ops::{Add, Sub};
99
use std::sync::Arc;
1010
use std::time::Duration;
1111

12+
pub mod interpolate;
1213
pub mod pool;
1314
pub mod selector;
1415

database/src/selector.rs

Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -109,3 +109,60 @@ impl Iterator for StatisticSeries {
109109
self.artifact_ids.size_hint()
110110
}
111111
}
112+
113+
pub trait Point {
114+
type Key: fmt::Debug + PartialEq + Clone;
115+
116+
fn key(&self) -> &Self::Key;
117+
fn set_key(&mut self, key: Self::Key);
118+
fn value(&self) -> Option<f64>;
119+
fn set_value(&mut self, value: f64);
120+
fn interpolated(&self) -> bool;
121+
fn set_interpolated(&mut self);
122+
}
123+
124+
impl<T: Clone + PartialEq + fmt::Debug> Point for (T, Option<f64>) {
125+
type Key = T;
126+
127+
fn key(&self) -> &T {
128+
&self.0
129+
}
130+
fn set_key(&mut self, key: T) {
131+
self.0 = key;
132+
}
133+
fn value(&self) -> Option<f64> {
134+
self.1
135+
}
136+
fn set_value(&mut self, value: f64) {
137+
self.1 = Some(value);
138+
}
139+
fn interpolated(&self) -> bool {
140+
false
141+
}
142+
fn set_interpolated(&mut self) {
143+
// no-op
144+
}
145+
}
146+
147+
impl<T: Clone + PartialEq + fmt::Debug> Point for (T, f64) {
148+
type Key = T;
149+
150+
fn key(&self) -> &T {
151+
&self.0
152+
}
153+
fn set_key(&mut self, key: T) {
154+
self.0 = key;
155+
}
156+
fn value(&self) -> Option<f64> {
157+
Some(self.1)
158+
}
159+
fn set_value(&mut self, value: f64) {
160+
self.1 = value;
161+
}
162+
fn interpolated(&self) -> bool {
163+
false
164+
}
165+
fn set_interpolated(&mut self) {
166+
// no-op
167+
}
168+
}

site/src/average.rs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
use crate::db::Point;
1+
use database::selector::Point;
22

33
/// This aggregates interpolated iterators.
44
///
@@ -80,12 +80,13 @@ where
8080

8181
#[cfg(test)]
8282
mod tests {
83+
use database::selector::Point;
84+
8385
use super::average;
8486

8587
#[test]
8688
fn test_no_interpolation_average() {
8789
// Test that averaging works without interpolation.
88-
use crate::db::Point;
8990

9091
let v = vec![
9192
vec![("a", 0.0), ("b", 200.0)],
@@ -109,8 +110,7 @@ mod tests {
109110
#[test]
110111
fn test_interpolation_average() {
111112
// Test that averaging works with interpolation.
112-
use crate::db::Point;
113-
use crate::interpolate::{Interpolate, IsInterpolated};
113+
use database::interpolate::{Interpolate, IsInterpolated};
114114

115115
let v = vec![
116116
vec![("a", Some(0.0)), ("b", Some(200.0))],

site/src/db.rs

Lines changed: 0 additions & 59 deletions
Original file line numberDiff line numberDiff line change
@@ -1,61 +1,2 @@
1-
use std::fmt;
2-
31
pub use crate::average::average;
42
pub use database::*;
5-
6-
pub trait Point {
7-
type Key: fmt::Debug + PartialEq + Clone;
8-
9-
fn key(&self) -> &Self::Key;
10-
fn set_key(&mut self, key: Self::Key);
11-
fn value(&self) -> Option<f64>;
12-
fn set_value(&mut self, value: f64);
13-
fn interpolated(&self) -> bool;
14-
fn set_interpolated(&mut self);
15-
}
16-
17-
impl<T: Clone + PartialEq + fmt::Debug> Point for (T, Option<f64>) {
18-
type Key = T;
19-
20-
fn key(&self) -> &T {
21-
&self.0
22-
}
23-
fn set_key(&mut self, key: T) {
24-
self.0 = key;
25-
}
26-
fn value(&self) -> Option<f64> {
27-
self.1
28-
}
29-
fn set_value(&mut self, value: f64) {
30-
self.1 = Some(value);
31-
}
32-
fn interpolated(&self) -> bool {
33-
false
34-
}
35-
fn set_interpolated(&mut self) {
36-
// no-op
37-
}
38-
}
39-
40-
impl<T: Clone + PartialEq + fmt::Debug> Point for (T, f64) {
41-
type Key = T;
42-
43-
fn key(&self) -> &T {
44-
&self.0
45-
}
46-
fn set_key(&mut self, key: T) {
47-
self.0 = key;
48-
}
49-
fn value(&self) -> Option<f64> {
50-
Some(self.1)
51-
}
52-
fn set_value(&mut self, value: f64) {
53-
self.1 = value;
54-
}
55-
fn interpolated(&self) -> bool {
56-
false
57-
}
58-
fn set_interpolated(&mut self) {
59-
// no-op
60-
}
61-
}

site/src/lib.rs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,6 @@ pub mod server;
1010
mod average;
1111
mod benchmark_metadata;
1212
mod comparison;
13-
mod interpolate;
1413
mod request_handlers;
1514
mod resources;
1615
mod selector;

site/src/request_handlers/graph.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,13 +5,13 @@ use crate::api::detail_sections::CompilationSections;
55
use crate::api::graphs::GraphKind;
66
use crate::api::{detail_graphs, detail_sections, graphs, runtime_detail_graphs, ServerResult};
77
use crate::db::{self, ArtifactId, Profile, Scenario};
8-
use crate::interpolate::IsInterpolated;
98
use crate::load::SiteCtxt;
109
use crate::selector::{
1110
CompileBenchmarkQuery, CompileTestCase, RuntimeBenchmarkQuery, Selector, SeriesResponse,
1211
};
1312
use crate::self_profile::get_or_download_self_profile;
1413

14+
use database::interpolate::IsInterpolated;
1515
use database::selector::Bound;
1616

1717
/// Returns data for before/after graphs when comparing a single test result comparison

site/src/selector.rs

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -22,12 +22,13 @@
2222
//! there are multiple `None`s.
2323
2424
use crate::db::{ArtifactId, Profile, Scenario};
25-
use crate::interpolate::Interpolate;
2625
use crate::load::SiteCtxt;
2726

28-
use database::selector::StatisticSeries;
29-
use database::ArtifactIdIter;
30-
use database::{selector::Bound, Benchmark, CodegenBackend, Commit, Connection, Index, Lookup};
27+
use database::interpolate::Interpolate;
28+
use database::{
29+
selector::{Bound, Point, StatisticSeries},
30+
ArtifactIdIter, Benchmark, CodegenBackend, Commit, Connection, Index, Lookup,
31+
};
3132

3233
use crate::comparison::Metric;
3334
use async_trait::async_trait;
@@ -148,7 +149,7 @@ impl<TestCase, T> SeriesResponse<TestCase, T> {
148149
pub fn interpolate(self) -> SeriesResponse<TestCase, Interpolate<T>>
149150
where
150151
T: Iterator,
151-
T::Item: crate::db::Point,
152+
T::Item: Point,
152153
{
153154
self.map(|s| Interpolate::new(s))
154155
}

0 commit comments

Comments
 (0)