4 #include <boost/test/unit_test.hpp> 15 BOOST_TEST_MESSAGE(
"cpu_set capacity is " << a.
capacity());
19 BOOST_CHECK_EQUAL(a.
count(), 2);
20 BOOST_CHECK_EQUAL(a.
status(0),
false);
21 BOOST_CHECK_EQUAL(a.
status(1),
true);
22 BOOST_CHECK_EQUAL(a.
status(3),
true);
25 BOOST_CHECK_EQUAL(b.count(), 2);
26 BOOST_CHECK_EQUAL(b.status(0),
false);
27 BOOST_CHECK_EQUAL(b.status(1),
true);
28 BOOST_CHECK_EQUAL(b.status(3),
true);
31 BOOST_CHECK_EQUAL(b.status(3),
false);
32 BOOST_CHECK_EQUAL(a.
count(), 2);
33 BOOST_CHECK_EQUAL(b.count(), 1);
36 BOOST_CHECK_EQUAL(c.count(), 2);
37 BOOST_CHECK_EQUAL(c.status(0),
false);
38 BOOST_CHECK_EQUAL(c.status(1),
true);
39 BOOST_CHECK_EQUAL(c.status(3),
true);
42 BOOST_CHECK_EQUAL(a.count(), 1);
43 BOOST_CHECK_EQUAL(a.status(0),
false);
44 BOOST_CHECK_EQUAL(a.status(1),
true);
45 BOOST_CHECK_EQUAL(a.status(3),
false);
48 BOOST_CHECK_EQUAL(b.count(), 2);
49 BOOST_CHECK_EQUAL(b.status(0),
false);
50 BOOST_CHECK_EQUAL(b.status(1),
true);
51 BOOST_CHECK_EQUAL(b.status(3),
true);
54 BOOST_CHECK_EQUAL(a.count(), 5);
55 for (
int i = 1; i != 6; ++i) {
56 BOOST_CHECK_MESSAGE(a.status(i) ==
true,
"b.status(i) is false i=" << i);
59 BOOST_CHECK_THROW(b.set(b.capacity()), std::exception);
60 BOOST_CHECK_THROW(b.set(b.capacity() + 1), std::exception);
61 BOOST_CHECK_THROW(b.set(-1), std::exception);
62 BOOST_CHECK_THROW(b.set(0, b.capacity()), std::exception);
63 BOOST_CHECK_NO_THROW(b.set(0, b.capacity() - 1));
65 a.reset().set(1).set(2).set(3);
67 BOOST_CHECK_EQUAL(a, b);
72 BOOST_CHECK_EQUAL(a.count(), 0);
74 b.reset().set(2).set(3);
75 c.reset().set(0).set(3);
78 BOOST_CHECK_EQUAL(a.status(0),
true);
79 BOOST_CHECK_EQUAL(a.status(1),
false);
80 BOOST_CHECK_EQUAL(a.status(2),
true);
81 BOOST_CHECK_EQUAL(a.status(3),
true);
84 BOOST_CHECK_EQUAL(a.status(0),
false);
85 BOOST_CHECK_EQUAL(a.status(1),
false);
86 BOOST_CHECK_EQUAL(a.status(2),
false);
87 BOOST_CHECK_EQUAL(a.status(3),
true);
90 BOOST_CHECK_EQUAL(a.status(0),
true);
91 BOOST_CHECK_EQUAL(a.status(1),
false);
92 BOOST_CHECK_EQUAL(a.status(2),
true);
93 BOOST_CHECK_EQUAL(a.status(3),
false);
102 std::ostringstream os;
104 BOOST_CHECK_EQUAL(os.str(), std::string(
""));
110 std::ostringstream os;
112 BOOST_CHECK_EQUAL(os.str(), std::string(
"1"));
118 std::ostringstream os;
120 BOOST_CHECK_EQUAL(os.str(), std::string(
"1-5"));
127 std::ostringstream os;
129 BOOST_CHECK_EQUAL(os.str(), std::string(
"1-5,7"));
140 std::ostringstream os;
142 BOOST_CHECK_EQUAL(os.str(), std::string(
"1-5,7,10-200,300-301"));
151 std::istringstream is(
"");
154 BOOST_CHECK_EQUAL(a.count(), 0);
158 std::istringstream is(
"1");
161 BOOST_CHECK_EQUAL(a.count(), 1);
162 BOOST_CHECK_EQUAL(a.status(1),
true);
167 std::istringstream is(
"1-5");
169 BOOST_CHECK_EQUAL(a.count(), 5);
170 for (
int i = 1; i != 6; ++i) {
171 BOOST_CHECK_MESSAGE(a.status(i),
"a.status(i) not true for i=" << i);
177 std::istringstream is(
"1-5,7");
179 BOOST_CHECK_EQUAL(a.count(), 6);
180 for (
int i = 1; i != 6; ++i) {
181 BOOST_CHECK_MESSAGE(a.status(i),
"a.status(i) not true for i=" << i);
183 BOOST_CHECK_EQUAL(a.status(7),
true);
188 std::istringstream is(
"1-5,7,10-200,300-301");
190 BOOST_CHECK_EQUAL(a.count(), 199);
191 for (
int i = 1; i != 6; ++i) {
192 BOOST_CHECK_MESSAGE(a.status(i),
"a.status(i) not true for i=" << i);
194 for (
int i = 10; i != 200; ++i) {
195 BOOST_CHECK_MESSAGE(a.status(i),
"a.status(i) not true for i=" << i);
197 BOOST_CHECK_EQUAL(a.status(7),
true);
198 BOOST_CHECK_EQUAL(a.status(300),
true);
199 BOOST_CHECK_EQUAL(a.status(301),
true);
211 BOOST_CHECK_EQUAL(a.
count(), 3);
212 BOOST_CHECK_EQUAL(a.
status(3),
true);
214 BOOST_CHECK_EQUAL(a.
count(), 0);
215 BOOST_CHECK_EQUAL(a.
status(3),
false);
239 BOOST_CHECK_EQUAL(encoded.as<std::string>(), std::string(
""));
242 BOOST_CHECK_EQUAL(empty, decoded);
246 BOOST_CHECK_EQUAL(encoded.as<std::string>(), std::string(
"1,3-5"));
248 BOOST_CHECK_EQUAL(a, decoded);
std::size_t capacity() const
Return the number of CPUs that can be stored in the cpu set.
bool status(int cpu) const
Returns true if cpu is included in the cpu set.
cpu_set & clear(int cpu)
Remove cpu from the cpu set.
static cpu_set parse(std::string const &value)
Interpret value as a cpu set in list format.
static bool decode(YAML::Node node, jb::cpu_set &rhs)
cpu_set & set(int cpu)
Add cpu to the cpu set.
BOOST_AUTO_TEST_CASE(cpu_set_basic)
A wrapper for the Linux CPU_SET data structure.
int count() const
Return the number of cpus included in the cpu set.
static YAML::Node encode(jb::cpu_set const &x)