def METHOD_NAME(self):
    command = r"""if 1:
        import sys
        s = sys.stdin.readline()
        sys.stdout.write(s.upper())
        sys.stderr.write('stderr')
        """
    msg = b"blah\n"
    p = windows_utils.Popen([sys.executable, '-c', command],
                            stdin=windows_utils.PIPE,
                            stdout=windows_utils.PIPE,
                            stderr=windows_utils.PIPE)
    for f in [p.stdin, p.stdout, p.stderr]:
        self.assertIsInstance(f, windows_utils.PipeHandle)
    ovin = _overlapped.Overlapped()
    ovout = _overlapped.Overlapped()
    overr = _overlapped.Overlapped()
    ovin.WriteFile(p.stdin.handle, msg)
    ovout.ReadFile(p.stdout.handle, 100)
    overr.ReadFile(p.stderr.handle, 100)
    events = [ovin.event, ovout.event, overr.event]
    # Super-long timeout for slow buildbots.
    res = _winapi.WaitForMultipleObjects(events, True,
                                         int(support.SHORT_TIMEOUT * 1000))
    self.assertEqual(res, _winapi.WAIT_OBJECT_0)
    self.assertFalse(ovout.pending)
    self.assertFalse(overr.pending)
    self.assertFalse(ovin.pending)
    self.assertEqual(ovin.getresult(), len(msg))
    out = ovout.getresult().rstrip()
    err = overr.getresult().rstrip()
    self.assertGreater(len(out), 0)
    self.assertGreater(len(err), 0)
    # allow for partial reads...
    self.assertTrue(msg.upper().rstrip().startswith(out))
    self.assertTrue(b"stderr".startswith(err))
    # The context manager calls wait() and closes resources
    with p:
        pass