Issue #12655: Instead of requiring a custom type, os.sched_getaffinit… · python/cpython@8486987

@@ -855,7 +855,7 @@ def test_mkfifo_dir_fd(self):

855855856856

requires_sched_h = unittest.skipUnless(hasattr(posix, 'sched_yield'),

857857

"don't have scheduling support")

858-

requires_sched_affinity = unittest.skipUnless(hasattr(posix, 'cpu_set'),

858+

requires_sched_affinity = unittest.skipUnless(hasattr(posix, 'sched_setaffinity'),

859859

"don't have sched affinity support")

860860861861

@requires_sched_h

@@ -936,83 +936,28 @@ def test_sched_rr_get_interval(self):

936936

self.assertLess(interval, 1.)

937937938938

@requires_sched_affinity

939-

def test_sched_affinity(self):

940-

mask = posix.sched_getaffinity(0, 1024)

941-

self.assertGreaterEqual(mask.count(), 1)

942-

self.assertIsInstance(mask, posix.cpu_set)

943-

self.assertRaises(OSError, posix.sched_getaffinity, -1, 1024)

944-

empty = posix.cpu_set(10)

945-

posix.sched_setaffinity(0, mask)

946-

self.assertRaises(OSError, posix.sched_setaffinity, 0, empty)

947-

self.assertRaises(OSError, posix.sched_setaffinity, -1, mask)

948-949-

@requires_sched_affinity

950-

def test_cpu_set_basic(self):

951-

s = posix.cpu_set(10)

952-

self.assertEqual(len(s), 10)

953-

self.assertEqual(s.count(), 0)

954-

s.set(0)

955-

s.set(9)

956-

self.assertTrue(s.isset(0))

957-

self.assertTrue(s.isset(9))

958-

self.assertFalse(s.isset(5))

959-

self.assertEqual(s.count(), 2)

960-

s.clear(0)

961-

self.assertFalse(s.isset(0))

962-

self.assertEqual(s.count(), 1)

963-

s.zero()

964-

self.assertFalse(s.isset(0))

965-

self.assertFalse(s.isset(9))

966-

self.assertEqual(s.count(), 0)

967-

self.assertRaises(ValueError, s.set, -1)

968-

self.assertRaises(ValueError, s.set, 10)

969-

self.assertRaises(ValueError, s.clear, -1)

970-

self.assertRaises(ValueError, s.clear, 10)

971-

self.assertRaises(ValueError, s.isset, -1)

972-

self.assertRaises(ValueError, s.isset, 10)

973-974-

@requires_sched_affinity

975-

def test_cpu_set_cmp(self):

976-

self.assertNotEqual(posix.cpu_set(11), posix.cpu_set(12))

977-

l = posix.cpu_set(10)

978-

r = posix.cpu_set(10)

979-

self.assertEqual(l, r)

980-

l.set(1)

981-

self.assertNotEqual(l, r)

982-

r.set(1)

983-

self.assertEqual(l, r)

984-985-

@requires_sched_affinity

986-

def test_cpu_set_bitwise(self):

987-

l = posix.cpu_set(5)

988-

l.set(0)

989-

l.set(1)

990-

r = posix.cpu_set(5)

991-

r.set(1)

992-

r.set(2)

993-

b = l & r

994-

self.assertEqual(b.count(), 1)

995-

self.assertTrue(b.isset(1))

996-

b = l | r

997-

self.assertEqual(b.count(), 3)

998-

self.assertTrue(b.isset(0))

999-

self.assertTrue(b.isset(1))

1000-

self.assertTrue(b.isset(2))

1001-

b = l ^ r

1002-

self.assertEqual(b.count(), 2)

1003-

self.assertTrue(b.isset(0))

1004-

self.assertFalse(b.isset(1))

1005-

self.assertTrue(b.isset(2))

1006-

b = l

1007-

b |= r

1008-

self.assertIs(b, l)

1009-

self.assertEqual(l.count(), 3)

939+

def test_sched_getaffinity(self):

940+

mask = posix.sched_getaffinity(0)

941+

self.assertIsInstance(mask, set)

942+

self.assertGreaterEqual(len(mask), 1)

943+

self.assertRaises(OSError, posix.sched_getaffinity, -1)

944+

for cpu in mask:

945+

self.assertIsInstance(cpu, int)

946+

self.assertGreaterEqual(cpu, 0)

947+

self.assertLess(cpu, 1 << 32)

10109481011949

@requires_sched_affinity

1012-

@support.cpython_only

1013-

def test_cpu_set_sizeof(self):

1014-

self.assertGreater(sys.getsizeof(posix.cpu_set(1000)),

1015-

sys.getsizeof(posix.cpu_set(1)))

950+

def test_sched_setaffinity(self):

951+

mask = posix.sched_getaffinity(0)

952+

if len(mask) > 1:

953+

# Empty masks are forbidden

954+

mask.pop()

955+

posix.sched_setaffinity(0, mask)

956+

self.assertEqual(posix.sched_getaffinity(0), mask)

957+

self.assertRaises(OSError, posix.sched_setaffinity, 0, [])

958+

self.assertRaises(ValueError, posix.sched_setaffinity, 0, [-10])

959+

self.assertRaises(OverflowError, posix.sched_setaffinity, 0, [1<<128])

960+

self.assertRaises(OSError, posix.sched_setaffinity, -1, mask)

10169611017962

def test_rtld_constants(self):

1018963

# check presence of major RTLD_* constants