Skip to content

Commit 0e9375c

Browse files
committed
Test on all cores
1 parent ca2577e commit 0e9375c

File tree

8 files changed

+170
-28
lines changed

8 files changed

+170
-28
lines changed

.github/workflows/build.yml

Lines changed: 128 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -173,13 +173,12 @@ jobs:
173173
cd examples-runner
174174
cargo xtask --target ${{ matrix.target }} --runner qemu
175175
176-
testexamplesembeddedci:
177-
name: testexamplesembeddedci
176+
testexamplesembeddedcim0:
177+
name: testexamplesembeddedcim0
178178
runs-on: ubuntu-20.04
179179
strategy:
180180
matrix:
181181
target:
182-
- thumbv7m-none-eabi
183182
- thumbv6m-none-eabi
184183
toolchain:
185184
- stable
@@ -211,7 +210,124 @@ jobs:
211210
EMBEDDED_CI_SERVER: ${{ secrets.EMBEDDED_CI_SERVER }}
212211
run: |
213212
cd examples-runner
214-
cargo xtask --target ${{ matrix.target }} --runner embedded-ci
213+
cargo xtask --target ${{ matrix.target }} --runner embedded-ci --core-runner cortex-m0
214+
215+
testexamplesembeddedcim3:
216+
name: testexamplesembeddedcim3
217+
runs-on: ubuntu-20.04
218+
strategy:
219+
matrix:
220+
target:
221+
- thumbv7m-none-eabi
222+
toolchain:
223+
- stable
224+
steps:
225+
- name: Checkout
226+
uses: actions/checkout@v2
227+
228+
- name: Install Rust ${{ matrix.toolchain }} with target (${{ matrix.target }})
229+
uses: actions-rs/toolchain@v1
230+
with:
231+
toolchain: ${{ matrix.toolchain }}
232+
target: ${{ matrix.target }}
233+
override: true
234+
components: llvm-tools-preview
235+
236+
- name: Cache Dependencies
237+
uses: Swatinem/rust-cache@v1
238+
239+
- name: Install embedded-ci-client
240+
run: |
241+
cargo install --git https://github.com/korken89/embedded-ci.git embedded-ci-client
242+
243+
- name: Fail on warnings
244+
run: sed -i 's,//deny_warnings_placeholder_for_ci,#![deny(warnings)],' src/lib.rs macros/src/lib.rs
245+
246+
- name: Run-pass tests
247+
env:
248+
EMBEDDED_CI_TOKEN: ${{ secrets.EMBEDDED_CI_TOKEN }}
249+
EMBEDDED_CI_SERVER: ${{ secrets.EMBEDDED_CI_SERVER }}
250+
run: |
251+
cd examples-runner
252+
cargo xtask --target ${{ matrix.target }} --runner embedded-ci --core-runner cortex-m3
253+
254+
testexamplesembeddedcim4:
255+
name: testexamplesembeddedcim4
256+
runs-on: ubuntu-20.04
257+
strategy:
258+
matrix:
259+
target:
260+
- thumbv7m-none-eabi
261+
toolchain:
262+
- stable
263+
steps:
264+
- name: Checkout
265+
uses: actions/checkout@v2
266+
267+
- name: Install Rust ${{ matrix.toolchain }} with target (${{ matrix.target }})
268+
uses: actions-rs/toolchain@v1
269+
with:
270+
toolchain: ${{ matrix.toolchain }}
271+
target: ${{ matrix.target }}
272+
override: true
273+
components: llvm-tools-preview
274+
275+
- name: Cache Dependencies
276+
uses: Swatinem/rust-cache@v1
277+
278+
- name: Install embedded-ci-client
279+
run: |
280+
cargo install --git https://github.com/korken89/embedded-ci.git embedded-ci-client
281+
282+
- name: Fail on warnings
283+
run: sed -i 's,//deny_warnings_placeholder_for_ci,#![deny(warnings)],' src/lib.rs macros/src/lib.rs
284+
285+
- name: Run-pass tests
286+
env:
287+
EMBEDDED_CI_TOKEN: ${{ secrets.EMBEDDED_CI_TOKEN }}
288+
EMBEDDED_CI_SERVER: ${{ secrets.EMBEDDED_CI_SERVER }}
289+
run: |
290+
cd examples-runner
291+
cargo xtask --target ${{ matrix.target }} --runner embedded-ci --core-runner cortex-m4
292+
293+
testexamplesembeddedcim7:
294+
name: testexamplesembeddedcim7
295+
runs-on: ubuntu-20.04
296+
strategy:
297+
matrix:
298+
target:
299+
- thumbv7m-none-eabi
300+
toolchain:
301+
- stable
302+
steps:
303+
- name: Checkout
304+
uses: actions/checkout@v2
305+
306+
- name: Install Rust ${{ matrix.toolchain }} with target (${{ matrix.target }})
307+
uses: actions-rs/toolchain@v1
308+
with:
309+
toolchain: ${{ matrix.toolchain }}
310+
target: ${{ matrix.target }}
311+
override: true
312+
components: llvm-tools-preview
313+
314+
- name: Cache Dependencies
315+
uses: Swatinem/rust-cache@v1
316+
317+
- name: Install embedded-ci-client
318+
run: |
319+
cargo install --git https://github.com/korken89/embedded-ci.git embedded-ci-client
320+
321+
- name: Fail on warnings
322+
run: sed -i 's,//deny_warnings_placeholder_for_ci,#![deny(warnings)],' src/lib.rs macros/src/lib.rs
323+
324+
- name: Run-pass tests
325+
env:
326+
EMBEDDED_CI_TOKEN: ${{ secrets.EMBEDDED_CI_TOKEN }}
327+
EMBEDDED_CI_SERVER: ${{ secrets.EMBEDDED_CI_SERVER }}
328+
run: |
329+
cd examples-runner
330+
cargo xtask --target ${{ matrix.target }} --runner embedded-ci --core-runner cortex-m7
215331
216332
# Check the correctness of macros/ crate
217333
checkmacros:
@@ -408,7 +524,10 @@ jobs:
408524
- clippy
409525
- checkexamples
410526
- testexamplesqemu
411-
- testexamplesembeddedci
527+
- testexamplesembeddedcim0
528+
- testexamplesembeddedcim3
529+
- testexamplesembeddedcim4
530+
- testexamplesembeddedcim7
412531
- checkmacros
413532
- testmacros
414533
- tests
@@ -591,7 +710,10 @@ jobs:
591710
- clippy
592711
- checkexamples
593712
- testexamplesqemu
594-
- testexamplesembeddedci
713+
- testexamplesembeddedcim0
714+
- testexamplesembeddedcim3
715+
- testexamplesembeddedcim4
716+
- testexamplesembeddedcim7
595717
- checkmacros
596718
- testmacros
597719
- tests

examples-runner/src/bin/cancel-reschedule.rs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,8 +25,7 @@ mod app {
2525
fn init(cx: init::Context) -> (Shared, Local, init::Monotonics) {
2626
let systick = cx.core.SYST;
2727

28-
// Initialize the monotonic (SysTick rate in QEMU is 12 MHz)
29-
let mono = Systick::new(systick, 12_000_000);
28+
let mono = Systick::new(systick, 1_000_000);
3029

3130
println!("init");
3231

examples-runner/src/bin/periodic-at.rs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,8 +25,7 @@ mod app {
2525
fn init(cx: init::Context) -> (Shared, Local, init::Monotonics) {
2626
let systick = cx.core.SYST;
2727

28-
// Initialize the monotonic (SysTick rate in QEMU is 12 MHz)
29-
let mut mono = Systick::new(systick, 12_000_000);
28+
let mut mono = Systick::new(systick, 1_000_000);
3029

3130
foo::spawn_after(1.secs(), mono.now()).unwrap();
3231

examples-runner/src/bin/periodic-at2.rs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,8 +25,7 @@ mod app {
2525
fn init(cx: init::Context) -> (Shared, Local, init::Monotonics) {
2626
let systick = cx.core.SYST;
2727

28-
// Initialize the monotonic (SysTick rate in QEMU is 12 MHz)
29-
let mut mono = Systick::new(systick, 12_000_000);
28+
let mut mono = Systick::new(systick, 1_000_000);
3029

3130
foo::spawn_after(1.secs(), mono.now()).unwrap();
3231

examples-runner/src/bin/periodic.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,8 +25,8 @@ mod app {
2525
fn init(cx: init::Context) -> (Shared, Local, init::Monotonics) {
2626
let systick = cx.core.SYST;
2727

28-
// Initialize the monotonic (SysTick rate in QEMU is 12 MHz)
29-
let mono = Systick::new(systick, 12_000_000);
28+
// Initialize the monotonic
29+
let mono = Systick::new(systick, 1_000_000);
3030

3131
foo::spawn_after(1.secs()).unwrap();
3232

examples-runner/src/bin/schedule.rs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,8 +25,7 @@ mod app {
2525
fn init(cx: init::Context) -> (Shared, Local, init::Monotonics) {
2626
let systick = cx.core.SYST;
2727

28-
// Initialize the monotonic (SysTick rate in QEMU is 12 MHz)
29-
let mono = Systick::new(systick, 12_000_000);
28+
let mono = Systick::new(systick, 1_000_000);
3029

3130
println!("init");
3231

examples-runner/xtask/src/command.rs

Lines changed: 27 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,14 @@ pub enum Runner {
1717
EmbeddedCi,
1818
}
1919

20+
#[derive(Debug, Copy, Clone, PartialEq, Eq, ArgEnum)]
21+
pub enum CoreRun {
22+
CortexM0,
23+
CortexM3,
24+
CortexM4,
25+
CortexM7,
26+
}
27+
2028
#[derive(Debug)]
2129
pub enum CargoCommand<'a> {
2230
Run {
@@ -25,6 +33,7 @@ pub enum CargoCommand<'a> {
2533
features: Option<&'a str>,
2634
mode: BuildMode,
2735
runner: Runner,
36+
core_runner: Option<CoreRun>,
2837
},
2938
BuildAll {
3039
target: &'a str,
@@ -54,6 +63,7 @@ impl<'a> CargoCommand<'a> {
5463
features,
5564
mode,
5665
runner,
66+
core_runner,
5767
} => match runner {
5868
Runner::Qemu => {
5969
let mut args = vec![self.name(), "--bin", example, "--target", target];
@@ -68,12 +78,22 @@ impl<'a> CargoCommand<'a> {
6878
}
6979
Runner::EmbeddedCi => {
7080
let mut args = vec![];
71-
if target.contains("thumbv6") {
72-
args.extend_from_slice(&["--cores", "cortexm0plus"])
73-
} else if target.contains("thumbv7") {
74-
args.extend_from_slice(&["--cores", "cortexm3,cortexm4,cortexm7"])
75-
} else {
76-
panic!("Unknown target: {}", target);
81+
match core_runner {
82+
Some(CoreRun::CortexM0) => {
83+
args.extend_from_slice(&["--cores", "cortexm0plus"])
84+
}
85+
Some(CoreRun::CortexM3) => args.extend_from_slice(&["--cores", "cortexm3"]),
86+
Some(CoreRun::CortexM4) => args.extend_from_slice(&["--cores", "cortexm4"]),
87+
Some(CoreRun::CortexM7) => args.extend_from_slice(&["--cores", "cortexm7"]),
88+
None => {
89+
if target.contains("thumbv6") {
90+
args.extend_from_slice(&["--cores", "cortexm0plus"])
91+
} else if target.contains("thumbv7") {
92+
args.extend_from_slice(&["--cores", "cortexm3,cortexm4,cortexm7"])
93+
} else {
94+
panic!("Unknown target: {}", target);
95+
}
96+
}
7797
}
7898
let s = Box::new(format!("target/{target}/{mode}/{example}"));
7999
let s = s.into_boxed_str();
@@ -112,6 +132,7 @@ impl<'a> CargoCommand<'a> {
112132
features: _,
113133
mode: _,
114134
runner,
135+
core_runner: _,
115136
} => match runner {
116137
Runner::Qemu => "cargo",
117138
Runner::EmbeddedCi => "embedded-ci-client",

examples-runner/xtask/src/main.rs

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ mod build;
22
mod command;
33

44
use anyhow::bail;
5-
use clap::Parser;
5+
use clap::{ArgEnum, Parser};
66
use core::fmt;
77
use std::{
88
error::Error,
@@ -15,7 +15,7 @@ use std::{
1515

1616
use crate::{
1717
build::init_build_dir,
18-
command::{run_command, run_successful, BuildMode, CargoCommand, Runner},
18+
command::{run_command, run_successful, BuildMode, CargoCommand, Runner, CoreRun},
1919
};
2020

2121
const ARMV6M: &str = "thumbv6m-none-eabi";
@@ -28,6 +28,8 @@ struct Options {
2828
target: String,
2929
#[clap(short, long, arg_enum)]
3030
runner: Runner,
31+
#[clap(short, long, arg_enum)]
32+
core_runner: Option<CoreRun>
3133
}
3234

3335
#[derive(Debug, Clone)]
@@ -99,14 +101,14 @@ fn main() -> anyhow::Result<()> {
99101
let opts = Options::parse();
100102
let target = &opts.target;
101103

102-
init_build_dir()?;
104+
// init_build_dir()?;
103105

104106
if target == "all" {
105107
for t in targets {
106-
run_tests(t, opts.runner, &examples)?;
108+
run_tests(t, opts.runner, opts.core_runner, &examples)?;
107109
}
108110
} else if targets.contains(&target.as_str()) {
109-
run_tests(&target, opts.runner, &examples)?;
111+
run_tests(&target, opts.runner, opts.core_runner, &examples)?;
110112
} else {
111113
eprintln!(
112114
"The target you specified is not available. Available targets are:\
@@ -120,7 +122,7 @@ fn main() -> anyhow::Result<()> {
120122
Ok(())
121123
}
122124

123-
fn run_tests(target: &str, runner: Runner, examples: &[String]) -> anyhow::Result<()> {
125+
fn run_tests(target: &str, runner: Runner, core_runner: Option<CoreRun>, examples: &[String]) -> anyhow::Result<()> {
124126
let features = Some(match runner {
125127
Runner::Qemu => "qemu",
126128
Runner::EmbeddedCi => "embedded-ci",
@@ -139,6 +141,7 @@ fn run_tests(target: &str, runner: Runner, examples: &[String]) -> anyhow::Resul
139141
features,
140142
mode: BuildMode::Release,
141143
runner,
144+
core_runner,
142145
};
143146

144147
arm_example(&cmd)?;

0 commit comments

Comments
 (0)