Skip to content

Commit e1c4c8b

Browse files
test(wrapper+sys): add more tests + run tests when TEST_GPU is set, instead of when NO_GPU is not set
1 parent fd1c7ce commit e1c4c8b

2 files changed

Lines changed: 81 additions & 4 deletions

File tree

amd-smi-wrapper-sys/tests/init.rs

Lines changed: 77 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,77 @@
1+
use amd_smi_wrapper_sys::load::{MultiVersionLib, VersionedLib};
2+
use amd_smi_wrapper_sys::versions::stable::AMDSMI_STATUS_SUCCESS;
3+
use amd_smi_wrapper_sys::{load, versions};
4+
use std::mem::MaybeUninit;
5+
6+
fn run_gpu_tests() -> bool {
7+
if std::env::var_os("TEST_GPU").is_some() {
8+
true
9+
} else {
10+
println!("test skipped because TEST_GPU is not set");
11+
false
12+
}
13+
}
14+
15+
#[test]
16+
fn load_multiversion() {
17+
if !run_gpu_tests() {
18+
return;
19+
}
20+
21+
let lib = load("libamd_smi.so", true).expect("load failure");
22+
println!("AMD SMI version: {:?}", lib.version);
23+
24+
// Call the version-specific amdsmi_get_lib_version(*amdsmi_version_t) and check that we get coherent data.
25+
unsafe fn get_version<T>(lib: &MultiVersionLib) -> T {
26+
let mut version = MaybeUninit::<T>::zeroed();
27+
let res = unsafe {
28+
lib.lib_stable
29+
.amdsmi_get_lib_version(version.as_mut_ptr() as _)
30+
};
31+
assert_eq!(res, AMDSMI_STATUS_SUCCESS, "get_lib_version failed");
32+
unsafe { version.assume_init() }
33+
}
34+
35+
match lib.lib_versioned {
36+
VersionedLib::V6_3_0(_) => {
37+
use versions::v6_3_0::amdsmi_version_t;
38+
let version = unsafe { get_version::<amdsmi_version_t>(&lib) };
39+
assert_eq!(
40+
lib.version.smi_version,
41+
[version.year, version.major, version.minor, version.release]
42+
);
43+
}
44+
VersionedLib::V6_4_0(_) => {
45+
use versions::v6_4_0::amdsmi_version_t;
46+
let version = unsafe { get_version::<amdsmi_version_t>(&lib) };
47+
assert_eq!(
48+
lib.version.smi_version,
49+
[version.year, version.major, version.minor, version.release]
50+
);
51+
}
52+
VersionedLib::V6_4_2(_) => {
53+
use versions::v6_4_2::amdsmi_version_t;
54+
let version = unsafe { get_version::<amdsmi_version_t>(&lib) };
55+
assert_eq!(
56+
lib.version.smi_version,
57+
[version.year, version.major, version.minor, version.release]
58+
);
59+
}
60+
VersionedLib::V7_0_0(_) => {
61+
use versions::v7_0_0::amdsmi_version_t;
62+
let version = unsafe { get_version::<amdsmi_version_t>(&lib) };
63+
assert_eq!(
64+
lib.version.smi_version,
65+
[version.major, version.minor, version.release, 0]
66+
);
67+
}
68+
VersionedLib::V7_2_0(_) => {
69+
use versions::v7_2_0::amdsmi_version_t;
70+
let version = unsafe { get_version::<amdsmi_version_t>(&lib) };
71+
assert_eq!(
72+
lib.version.smi_version,
73+
[version.major, version.minor, version.release, 0]
74+
);
75+
}
76+
}
77+
}

amd-smi-wrapper/tests/tests.rs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,18 +3,18 @@ use amd_smi_wrapper::{
33
handles::{ProcessorHandle, SocketHandle},
44
};
55

6-
fn skip_gpu_tests() -> bool {
7-
if std::env::var_os("NO_GPU").is_some() {
8-
println!("test skipped because NO_GPU is set");
6+
fn run_gpu_tests() -> bool {
7+
if std::env::var_os("TEST_GPU").is_some() {
98
true
109
} else {
10+
println!("test skipped because TEST_GPU is not set");
1111
false
1212
}
1313
}
1414

1515
#[test]
1616
fn list_devices() {
17-
if skip_gpu_tests() {
17+
if !run_gpu_tests() {
1818
return;
1919
}
2020

0 commit comments

Comments
 (0)