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

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

`

855

855

``

856

856

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

`

857

857

`"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'),

`

859

859

`"don't have sched affinity support")

`

860

860

``

861

861

`@requires_sched_h

`

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

`

936

936

`self.assertLess(interval, 1.)

`

937

937

``

938

938

`@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)

`

1010

948

``

1011

949

`@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)

`

1016

961

``

1017

962

`def test_rtld_constants(self):

`

1018

963

`# check presence of major RTLD_* constants

`