|
@@ -123,8 +123,7 @@ class TailFProducerTests(unittest.TestCase):
|
|
f = tempfile.NamedTemporaryFile()
|
|
f = tempfile.NamedTemporaryFile()
|
|
f.write(as_bytes('a' * 80))
|
|
f.write(as_bytes('a' * 80))
|
|
f.flush()
|
|
f.flush()
|
|
- t = f.name
|
|
|
|
- producer = self._makeOne(request, t, 80)
|
|
|
|
|
|
+ producer = self._makeOne(request, f.name, 80)
|
|
result = producer.more()
|
|
result = producer.more()
|
|
self.assertEqual(result, as_bytes('a' * 80))
|
|
self.assertEqual(result, as_bytes('a' * 80))
|
|
f.write(as_bytes('w' * 100))
|
|
f.write(as_bytes('w' * 100))
|
|
@@ -138,6 +137,25 @@ class TailFProducerTests(unittest.TestCase):
|
|
result = producer.more()
|
|
result = producer.more()
|
|
self.assertEqual(result, '==> File truncated <==\n')
|
|
self.assertEqual(result, '==> File truncated <==\n')
|
|
|
|
|
|
|
|
+ def test_handle_more_follow(self):
|
|
|
|
+ request = DummyRequest('/logtail/foo', None, None, None)
|
|
|
|
+ from supervisor import http
|
|
|
|
+ f = tempfile.NamedTemporaryFile()
|
|
|
|
+ f.write(as_bytes('a' * 80))
|
|
|
|
+ f.flush()
|
|
|
|
+ producer = self._makeOne(request, f.name, 80)
|
|
|
|
+ result = producer.more()
|
|
|
|
+ self.assertEqual(result, as_bytes('a' * 80))
|
|
|
|
+ f.close()
|
|
|
|
+ f2 = open(f.name, 'w')
|
|
|
|
+ try:
|
|
|
|
+ f2.write(as_bytes('b' * 80))
|
|
|
|
+ f2.close()
|
|
|
|
+ result = producer.more()
|
|
|
|
+ finally:
|
|
|
|
+ os.unlink(f2.name)
|
|
|
|
+ self.assertEqual(result, as_bytes('b' * 80))
|
|
|
|
+
|
|
class DeferringChunkedProducerTests(unittest.TestCase):
|
|
class DeferringChunkedProducerTests(unittest.TestCase):
|
|
def _getTargetClass(self):
|
|
def _getTargetClass(self):
|
|
from supervisor.http import deferring_chunked_producer
|
|
from supervisor.http import deferring_chunked_producer
|
|
@@ -174,7 +192,7 @@ class DeferringChunkedProducerTests(unittest.TestCase):
|
|
def test_more_noproducer(self):
|
|
def test_more_noproducer(self):
|
|
producer = self._makeOne(None)
|
|
producer = self._makeOne(None)
|
|
self.assertEqual(producer.more(), '')
|
|
self.assertEqual(producer.more(), '')
|
|
-
|
|
|
|
|
|
+
|
|
class DeferringCompositeProducerTests(unittest.TestCase):
|
|
class DeferringCompositeProducerTests(unittest.TestCase):
|
|
def _getTargetClass(self):
|
|
def _getTargetClass(self):
|
|
from supervisor.http import deferring_composite_producer
|
|
from supervisor.http import deferring_composite_producer
|
|
@@ -291,7 +309,7 @@ class Test_deferring_http_request(unittest.TestCase):
|
|
def push_with_producer(self, producer):
|
|
def push_with_producer(self, producer):
|
|
self.producer = producer
|
|
self.producer = producer
|
|
return Channel()
|
|
return Channel()
|
|
-
|
|
|
|
|
|
+
|
|
def test_done_http_10_nokeepalive(self):
|
|
def test_done_http_10_nokeepalive(self):
|
|
channel = self._makeChannel()
|
|
channel = self._makeChannel()
|
|
inst = self._makeOne(channel=channel, version='1.0')
|
|
inst = self._makeOne(channel=channel, version='1.0')
|
|
@@ -305,10 +323,10 @@ class Test_deferring_http_request(unittest.TestCase):
|
|
version='1.0',
|
|
version='1.0',
|
|
header=['Connection: Keep-Alive'],
|
|
header=['Connection: Keep-Alive'],
|
|
)
|
|
)
|
|
-
|
|
|
|
|
|
+
|
|
inst.done()
|
|
inst.done()
|
|
self.assertTrue(channel.closed)
|
|
self.assertTrue(channel.closed)
|
|
-
|
|
|
|
|
|
+
|
|
def test_done_http_10_keepalive_and_content_length(self):
|
|
def test_done_http_10_keepalive_and_content_length(self):
|
|
channel = self._makeChannel()
|
|
channel = self._makeChannel()
|
|
inst = self._makeOne(
|
|
inst = self._makeOne(
|
|
@@ -380,7 +398,7 @@ class Test_deferring_http_request(unittest.TestCase):
|
|
)
|
|
)
|
|
inst.done()
|
|
inst.done()
|
|
self.assertTrue(channel.closed)
|
|
self.assertTrue(channel.closed)
|
|
-
|
|
|
|
|
|
+
|
|
class EncryptedDictionaryAuthorizedTests(unittest.TestCase):
|
|
class EncryptedDictionaryAuthorizedTests(unittest.TestCase):
|
|
def _getTargetClass(self):
|
|
def _getTargetClass(self):
|
|
from supervisor.http import encrypted_dictionary_authorizer
|
|
from supervisor.http import encrypted_dictionary_authorizer
|