Completed
Pull Request — master (#327)
by Tomaz
05:25 queued 35s
created

DockerSensorTestCase   A

Complexity

Total Complexity 1

Size/Duplication

Total Lines 28
Duplicated Lines 0 %
Metric Value
dl 0
loc 28
rs 10
wmc 1

1 Method

Rating   Name   Duplication   Size   Complexity  
B test_poll() 0 27 1
1
import unittest2
2
import mock
3
4
from st2tests.mocks.sensor import MockSensorService
5
6
from docker_container_sensor import DockerSensor
7
8
MOCK_CONTAINER_DATA = {
9
    "Id": "8dfafdbc3a40",
10
    "Names": ["/boring_feynman"],
11
    "Image": "ubuntu:latest",
12
    "Command": "echo 1",
13
    "Created": 1367854155,
14
    "Status": "Exit 0",
15
    "Ports": [{"PrivatePort": 2222, "PublicPort": 3333, "Type": "tcp"}],
16
    "SizeRw": 12288,
17
    "SizeRootFs": 0
18
}
19
20
21
class DockerSensorTestCase(unittest2.TestCase):
22
    def test_poll(self):
23
        # TODO: Move to base test class
24
        sensor_service = MockSensorService(sensor_wrapper=None)
25
        sensor = DockerSensor(sensor_service=sensor_service)
26
27
        # No existing and no running containers (e.g. after initial sensor poll)
28
        sensor._running_containers = {}
29
        sensor._get_active_containers = mock.Mock()
30
        sensor._get_active_containers.return_value = {}
31
32
        sensor.poll()
33
        self.assertEqual(sensor_service._dispatched_triggers, [])
34
35
        # One new container
36
        sensor._get_active_containers.return_value = {'1': MOCK_CONTAINER_DATA}
37
38
        sensor.poll()
39
        self.assertEqual(len(sensor_service._dispatched_triggers), 1)
40
        sensor_service.assertTriggerDispatched(trigger='docker.container_tracker.started',
41
                                               payload={'container_info': MOCK_CONTAINER_DATA})
42
43
        # One container stopped
44
        sensor._get_active_containers.return_value = {}
45
        sensor.poll()
46
        self.assertEqual(len(sensor_service._dispatched_triggers), 2)
47
        sensor_service.assertTriggerDispatched(trigger='docker.container_tracker.stopped',
48
                                               payload={'container_info': MOCK_CONTAINER_DATA})
49