Ejemplo n.º 1
0
 def test_2_delay(self):
     p = BufferedPipe()
     self.assert_(not p.read_ready())
     threading.Thread(target=delay_thread, args=(p, )).start()
     self.assertEquals('a', p.read(1, 0.1))
     try:
         p.read(1, 0.1)
         self.assert_(False)
     except PipeTimeout:
         pass
     self.assertEquals('b', p.read(1, 1.0))
     self.assertEquals('', p.read(1))
Ejemplo n.º 2
0
    def __init__(self, chanid):
        """
        Create a new channel.  The channel is not associated with any
        particular session or L{Transport} until the Transport attaches it.
        Normally you would only call this method from the constructor of a
        subclass of L{Channel}.

        @param chanid: the ID of this channel, as passed by an existing
            L{Transport}.
        @type chanid: int
        """
        self.chanid = chanid
        self.remote_chanid = 0
        self.transport = None
        self.active = False
        self.eof_received = 0
        self.eof_sent = 0
        self.in_buffer = BufferedPipe()
        self.in_stderr_buffer = BufferedPipe()
        self.timeout = None
        self.closed = False
        self.ultra_debug = False
        self.lock = threading.Lock()
        self.out_buffer_cv = threading.Condition(self.lock)
        self.in_window_size = 0
        self.out_window_size = 0
        self.in_max_packet_size = 0
        self.out_max_packet_size = 0
        self.in_window_threshold = 0
        self.in_window_sofar = 0
        self.status_event = threading.Event()
        self._name = str(chanid)
        self.logger = util.get_logger('ssh.transport')
        self._pipe = None
        self.event = threading.Event()
        self.event_ready = False
        self.combine_stderr = False
        self.exit_status = -1
        self.origin_addr = None
Ejemplo n.º 3
0
    def test_1_buffered_pipe(self):
        p = BufferedPipe()
        self.assert_(not p.read_ready())
        p.feed('hello.')
        self.assert_(p.read_ready())
        data = p.read(6)
        self.assertEquals('hello.', data)

        p.feed('plus/minus')
        self.assertEquals('plu', p.read(3))
        self.assertEquals('s/m', p.read(3))
        self.assertEquals('inus', p.read(4))

        p.close()
        self.assert_(not p.read_ready())
        self.assertEquals('', p.read(1))
Ejemplo n.º 4
0
 def test_3_close_while_reading(self):
     p = BufferedPipe()
     threading.Thread(target=close_thread, args=(p, )).start()
     data = p.read(1, 1.0)
     self.assertEquals('', data)