Add schedule fields to program
All checks were successful
continuous-integration/drone/push Build is passing
All checks were successful
continuous-integration/drone/push Build is passing
This commit is contained in:
parent
e2c06f03a5
commit
a56da9b9e0
@ -1,5 +1,6 @@
|
|||||||
use std::{time::Duration, sync::Arc};
|
use std::{time::Duration, sync::Arc};
|
||||||
use super::section::SectionId;
|
use super::section::SectionId;
|
||||||
|
use crate::schedule::Schedule;
|
||||||
|
|
||||||
#[derive(Debug, Clone)]
|
#[derive(Debug, Clone)]
|
||||||
pub struct ProgramItem {
|
pub struct ProgramItem {
|
||||||
@ -16,6 +17,8 @@ pub struct Program {
|
|||||||
pub id: ProgramId,
|
pub id: ProgramId,
|
||||||
pub name: String,
|
pub name: String,
|
||||||
pub sequence: ProgramSequence,
|
pub sequence: ProgramSequence,
|
||||||
|
pub enabled: bool,
|
||||||
|
pub schedule: Schedule,
|
||||||
}
|
}
|
||||||
|
|
||||||
pub type ProgramRef = Arc<Program>;
|
pub type ProgramRef = Arc<Program>;
|
||||||
|
@ -373,6 +373,7 @@ mod test {
|
|||||||
use crate::section_interface::{MockSectionInterface, SectionInterface};
|
use crate::section_interface::{MockSectionInterface, SectionInterface};
|
||||||
use crate::{
|
use crate::{
|
||||||
model::{Program, ProgramItem, Section},
|
model::{Program, ProgramItem, Section},
|
||||||
|
schedule::Schedule,
|
||||||
trace_listeners::{EventListener, Filters, SpanFilters, SpanListener},
|
trace_listeners::{EventListener, Filters, SpanFilters, SpanListener},
|
||||||
};
|
};
|
||||||
use im::ordmap;
|
use im::ordmap;
|
||||||
@ -428,6 +429,17 @@ mod test {
|
|||||||
(sections, sec_runner, interface)
|
(sections, sec_runner, interface)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fn make_program(num: ProgramId, sequence: Vec<ProgramItem>) -> ProgramRef {
|
||||||
|
Program {
|
||||||
|
id: num,
|
||||||
|
name: format!("Program {}", num),
|
||||||
|
sequence,
|
||||||
|
enabled: false,
|
||||||
|
schedule: Schedule::default(),
|
||||||
|
}
|
||||||
|
.into()
|
||||||
|
}
|
||||||
|
|
||||||
#[tokio::test]
|
#[tokio::test]
|
||||||
async fn test_run_program() {
|
async fn test_run_program() {
|
||||||
let (sections, mut sec_runner, interface) = make_sections_and_runner();
|
let (sections, mut sec_runner, interface) = make_sections_and_runner();
|
||||||
@ -435,10 +447,9 @@ mod test {
|
|||||||
let mut runner = ProgramRunner::new(sec_runner.clone());
|
let mut runner = ProgramRunner::new(sec_runner.clone());
|
||||||
let mut prog_events = runner.subscribe().await.unwrap();
|
let mut prog_events = runner.subscribe().await.unwrap();
|
||||||
|
|
||||||
let program: ProgramRef = Program {
|
let program = make_program(
|
||||||
id: 1,
|
1,
|
||||||
name: "Program 1".into(),
|
vec![
|
||||||
sequence: vec![
|
|
||||||
ProgramItem {
|
ProgramItem {
|
||||||
section_id: 1,
|
section_id: 1,
|
||||||
duration: Duration::from_secs(10),
|
duration: Duration::from_secs(10),
|
||||||
@ -448,8 +459,7 @@ mod test {
|
|||||||
duration: Duration::from_secs(10),
|
duration: Duration::from_secs(10),
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
}
|
);
|
||||||
.into();
|
|
||||||
|
|
||||||
runner.update_sections(sections.clone()).await.unwrap();
|
runner.update_sections(sections.clone()).await.unwrap();
|
||||||
|
|
||||||
@ -497,25 +507,20 @@ mod test {
|
|||||||
let mut runner = ProgramRunner::new(sec_runner.clone());
|
let mut runner = ProgramRunner::new(sec_runner.clone());
|
||||||
let mut prog_events = runner.subscribe().await.unwrap();
|
let mut prog_events = runner.subscribe().await.unwrap();
|
||||||
|
|
||||||
let program1: ProgramRef = Program {
|
let program1 = make_program(
|
||||||
id: 1,
|
1,
|
||||||
name: "Program 1".into(),
|
vec![ProgramItem {
|
||||||
sequence: vec![ProgramItem {
|
|
||||||
section_id: 3,
|
section_id: 3,
|
||||||
duration: Duration::from_secs(10),
|
duration: Duration::from_secs(10),
|
||||||
}],
|
}],
|
||||||
}
|
);
|
||||||
.into();
|
let program2 = make_program(
|
||||||
let program2: ProgramRef = Program {
|
2,
|
||||||
id: 2,
|
vec![ProgramItem {
|
||||||
name: "Program 2".into(),
|
|
||||||
sequence: vec![ProgramItem {
|
|
||||||
section_id: 1,
|
section_id: 1,
|
||||||
duration: Duration::from_secs(10),
|
duration: Duration::from_secs(10),
|
||||||
}],
|
}],
|
||||||
}
|
);
|
||||||
.into();
|
|
||||||
|
|
||||||
runner.update_sections(sections.clone()).await.unwrap();
|
runner.update_sections(sections.clone()).await.unwrap();
|
||||||
|
|
||||||
runner.run_program(program1).await.unwrap();
|
runner.run_program(program1).await.unwrap();
|
||||||
@ -559,12 +564,7 @@ mod test {
|
|||||||
let mut runner = ProgramRunner::new(sec_runner.clone());
|
let mut runner = ProgramRunner::new(sec_runner.clone());
|
||||||
let mut prog_events = runner.subscribe().await.unwrap();
|
let mut prog_events = runner.subscribe().await.unwrap();
|
||||||
|
|
||||||
let program: ProgramRef = Program {
|
let program = make_program(1, vec![]);
|
||||||
id: 1,
|
|
||||||
name: "Program 1".into(),
|
|
||||||
sequence: vec![],
|
|
||||||
}
|
|
||||||
.into();
|
|
||||||
|
|
||||||
runner.update_sections(sections.clone()).await.unwrap();
|
runner.update_sections(sections.clone()).await.unwrap();
|
||||||
|
|
||||||
@ -588,24 +588,20 @@ mod test {
|
|||||||
let mut runner = ProgramRunner::new(sec_runner.clone());
|
let mut runner = ProgramRunner::new(sec_runner.clone());
|
||||||
let mut prog_events = runner.subscribe().await.unwrap();
|
let mut prog_events = runner.subscribe().await.unwrap();
|
||||||
|
|
||||||
let program1: ProgramRef = Program {
|
let program1 = make_program(
|
||||||
id: 1,
|
1,
|
||||||
name: "Program 1".into(),
|
vec![ProgramItem {
|
||||||
sequence: vec![ProgramItem {
|
|
||||||
section_id: 2,
|
section_id: 2,
|
||||||
duration: Duration::from_secs(10),
|
duration: Duration::from_secs(10),
|
||||||
}],
|
}],
|
||||||
}
|
);
|
||||||
.into();
|
let program2 = make_program(
|
||||||
let program2: ProgramRef = Program {
|
2,
|
||||||
id: 2,
|
vec![ProgramItem {
|
||||||
name: "Program 2".into(),
|
|
||||||
sequence: vec![ProgramItem {
|
|
||||||
section_id: 2,
|
section_id: 2,
|
||||||
duration: Duration::from_secs(10),
|
duration: Duration::from_secs(10),
|
||||||
}],
|
}],
|
||||||
}
|
);
|
||||||
.into();
|
|
||||||
let programs = ordmap![ 1 => program1, 2 => program2 ];
|
let programs = ordmap![ 1 => program1, 2 => program2 ];
|
||||||
|
|
||||||
runner.update_sections(sections.clone()).await.unwrap();
|
runner.update_sections(sections.clone()).await.unwrap();
|
||||||
@ -659,10 +655,9 @@ mod test {
|
|||||||
let mut runner = ProgramRunner::new(sec_runner.clone());
|
let mut runner = ProgramRunner::new(sec_runner.clone());
|
||||||
let mut prog_events = runner.subscribe().await.unwrap();
|
let mut prog_events = runner.subscribe().await.unwrap();
|
||||||
|
|
||||||
let program: ProgramRef = Program {
|
let program = make_program(
|
||||||
id: 1,
|
1,
|
||||||
name: "Program 1".into(),
|
vec![
|
||||||
sequence: vec![
|
|
||||||
ProgramItem {
|
ProgramItem {
|
||||||
section_id: 1,
|
section_id: 1,
|
||||||
duration: Duration::from_secs(10),
|
duration: Duration::from_secs(10),
|
||||||
@ -672,8 +667,7 @@ mod test {
|
|||||||
duration: Duration::from_secs(10),
|
duration: Duration::from_secs(10),
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
}
|
);
|
||||||
.into();
|
|
||||||
|
|
||||||
runner.update_sections(sections.clone()).await.unwrap();
|
runner.update_sections(sections.clone()).await.unwrap();
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user