Added scaffolding for a few game benchmarks - they currently just make sure the game is installed via Steam, nothing else
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
This commit is contained in:
parent
8a7d8c1860
commit
4aa3eddc91
31
src/benchmarks/games.rs
Normal file
31
src/benchmarks/games.rs
Normal file
@ -0,0 +1,31 @@
|
|||||||
|
use std::process::Command;
|
||||||
|
|
||||||
|
pub fn run_civ6_ai_benchmark() {
|
||||||
|
// make sure CS:GO is installed via Steam
|
||||||
|
download_game_steam(289070);
|
||||||
|
}
|
||||||
|
|
||||||
|
// run the CS:GO benchmark (using benchmark file from PTS)
|
||||||
|
pub fn run_csgo_benchmark() {
|
||||||
|
// make sure CS:GO is installed via Steam
|
||||||
|
download_game_steam(730);
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn run_demd_benchmark() {
|
||||||
|
// make sure CS:GO is installed via Steam
|
||||||
|
download_game_steam(337000);
|
||||||
|
}
|
||||||
|
|
||||||
|
fn download_game_steam(game_id: u32) {
|
||||||
|
// first we need to make sure CS:GO is installed via Steam
|
||||||
|
let install_output = Command::new("C:\\Program Files (x86)\\Steam\\steam.exe")
|
||||||
|
.arg(format!("steam://install/{}", game_id))
|
||||||
|
.output()
|
||||||
|
.expect("Failed to execute command");
|
||||||
|
|
||||||
|
// check that the command succeeded
|
||||||
|
assert!(install_output.status.success());
|
||||||
|
|
||||||
|
// print the test's output
|
||||||
|
println!("{}", String::from_utf8_lossy(&install_output.stdout));
|
||||||
|
}
|
@ -1,2 +1,3 @@
|
|||||||
pub mod disk;
|
pub mod disk;
|
||||||
|
pub mod games;
|
||||||
pub mod network;
|
pub mod network;
|
||||||
|
32
src/main.rs
32
src/main.rs
@ -23,6 +23,9 @@ enum Commands {
|
|||||||
// disk benchmarks subcommand
|
// disk benchmarks subcommand
|
||||||
#[clap(name = "disk", about = "Hard drive and SSD benchmarks.")]
|
#[clap(name = "disk", about = "Hard drive and SSD benchmarks.")]
|
||||||
Disk(Disk),
|
Disk(Disk),
|
||||||
|
// games benchmarks subcommand
|
||||||
|
#[clap(name = "games", about = "Benchmark your system with games.")]
|
||||||
|
Games(Games),
|
||||||
// network benchmarks subcommand
|
// network benchmarks subcommand
|
||||||
#[clap(name = "network", about = "Test various aspects of your network.")]
|
#[clap(name = "network", about = "Test various aspects of your network.")]
|
||||||
Net(Net),
|
Net(Net),
|
||||||
@ -91,6 +94,27 @@ enum DiskCommands {
|
|||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[derive(Parser)]
|
||||||
|
struct Games {
|
||||||
|
#[structopt(subcommand)]
|
||||||
|
games_commands: GamesCommands,
|
||||||
|
}
|
||||||
|
|
||||||
|
#[derive(Subcommand)]
|
||||||
|
enum GamesCommands {
|
||||||
|
// Civilization 6 AI benchmark subcommand
|
||||||
|
#[clap(name = "civ6_ai", about = "Run the Civilization 6 AI benchmark via Steam.")]
|
||||||
|
Civ6AI {},
|
||||||
|
|
||||||
|
// CS:GO benchmark subcommand
|
||||||
|
#[clap(name = "csgo", about = "Run the CS:GO game benchmark via Steam.")]
|
||||||
|
CSGO {},
|
||||||
|
|
||||||
|
// Deus Ex: Mankind Divided benchmark subcommand
|
||||||
|
#[clap(name = "demd", about = "Run the Deus Ex: Mankind Divided game benchmark via Steam.")]
|
||||||
|
DEMD {},
|
||||||
|
}
|
||||||
|
|
||||||
#[derive(Parser)]
|
#[derive(Parser)]
|
||||||
struct Net {
|
struct Net {
|
||||||
#[structopt(subcommand)]
|
#[structopt(subcommand)]
|
||||||
@ -161,7 +185,13 @@ fn main() {
|
|||||||
benchmarks::disk::disk_write_rand_test(tempfile, size);
|
benchmarks::disk::disk_write_rand_test(tempfile, size);
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
}
|
},
|
||||||
|
|
||||||
|
Commands::Games(args) => match &args.games_commands {
|
||||||
|
GamesCommands::Civ6AI {} => benchmarks::games::run_civ6_ai_benchmark(),
|
||||||
|
GamesCommands::CSGO {} => benchmarks::games::run_csgo_benchmark(),
|
||||||
|
GamesCommands::DEMD {} => benchmarks::games::run_demd_benchmark(),
|
||||||
|
},
|
||||||
|
|
||||||
Commands::Net(args) => match &args.net_commands {
|
Commands::Net(args) => match &args.net_commands {
|
||||||
NetCommands::Ping { address, count } => {
|
NetCommands::Ping { address, count } => {
|
||||||
|
Loading…
Reference in New Issue
Block a user