-
Notifications
You must be signed in to change notification settings - Fork 51
Expand file tree
/
Copy pathtest_extension.py
More file actions
73 lines (56 loc) · 2 KB
/
Copy pathtest_extension.py
File metadata and controls
73 lines (56 loc) · 2 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
import http.server
import os
import threading
import unittest
from unittest.mock import patch
from datadog_lambda.extension import (
is_extension_running,
flush_extension,
should_use_extension,
)
class MockServer(threading.Thread):
def __init__(self):
super().__init__()
self.daemon = True
self.raises = False
self.called = False
class handler(http.server.BaseHTTPRequestHandler):
def do_POST(sf):
self.called = True
sf.send_response(500 if self.raises else 200)
sf.end_headers()
do_GET = do_POST
self.server = http.server.HTTPServer(("127.0.0.1", 8124), handler)
def run(self):
self.server.serve_forever()
def stop(self):
self.server.shutdown()
self.server.server_close()
self.join(timeout=0)
class TestLambdaExtension(unittest.TestCase):
def setUp(self):
self.server = MockServer()
self.server.start()
def tearDown(self):
self.server.stop()
@patch("datadog_lambda.extension.EXTENSION_PATH", os.path.abspath(__file__))
def test_is_extension_running_true(self):
assert is_extension_running()
assert self.server.called
def test_is_extension_running_file_not_found(self):
assert not is_extension_running()
assert not self.server.called
@patch("datadog_lambda.extension.EXTENSION_PATH", os.path.abspath(__file__))
def test_is_extension_running_http_failure(self):
self.server.raises = True
assert not is_extension_running()
assert self.server.called
@patch("datadog_lambda.extension.EXTENSION_PATH", os.path.abspath(__file__))
def test_flush_ok(self):
assert flush_extension()
assert self.server.called
@patch("datadog_lambda.extension.EXTENSION_PATH", os.path.abspath(__file__))
def test_flush_not_ok(self):
self.server.raises = True
assert not flush_extension()
assert self.server.called