Project_id for SDN controller meters
Enable project_id config from SDN controller drivers. Current code Project_id was set to None. With this commit, project_id will be set by the driver. Existing drivers will set project_id to None. OpenDayliht v2 driver will set project_id as the uuid of the tenant owning the port for port meters and admin tenant id for switch, switch.port and table meters. Change-Id: I0e65d25e71d2d258ff0db76f020924170f380ec2 Implements: blueprint network-statistics-from-opendaylight Closes-Bug: #1369428
This commit is contained in:
parent
5621e1cc32
commit
bd81d3536e
|
@ -86,7 +86,7 @@ class _Base(plugin_base.PollsterBase):
|
|||
if not isinstance(data, list):
|
||||
data = [data]
|
||||
for (volume, resource_id,
|
||||
resource_metadata) in data:
|
||||
resource_metadata, project_id) in data:
|
||||
|
||||
yield sample.Sample(
|
||||
name=self.meter_name,
|
||||
|
@ -94,7 +94,7 @@ class _Base(plugin_base.PollsterBase):
|
|||
unit=self.meter_unit,
|
||||
volume=volume,
|
||||
user_id=None,
|
||||
project_id=None,
|
||||
project_id=project_id,
|
||||
resource_id=resource_id,
|
||||
resource_metadata=resource_metadata
|
||||
)
|
||||
|
|
|
@ -110,7 +110,7 @@ class OpencontrailDriver(driver.Driver):
|
|||
for sample in iter(extractor, value, ports_map,
|
||||
resource, virtual_network):
|
||||
if sample is not None:
|
||||
yield sample
|
||||
yield sample + (None, )
|
||||
|
||||
def _get_iter(self, meter_name):
|
||||
if meter_name.startswith('switch.port'):
|
||||
|
|
|
@ -200,7 +200,7 @@ class OpenDayLightDriver(driver.Driver):
|
|||
sample[2]['controller'] = 'OpenDaylight'
|
||||
sample[2]['container'] = name
|
||||
|
||||
samples.append(sample)
|
||||
samples.append(sample + (None, ))
|
||||
|
||||
return samples
|
||||
|
||||
|
|
|
@ -137,7 +137,8 @@ class TestOpencontrailDriver(base.BaseTestCase):
|
|||
'network_id': '298a3088-a446-4d5a-bad8-f92ecacd786b',
|
||||
'project': 'demo',
|
||||
'project_id': '89271fa581ab4380bf172f868c3615f9',
|
||||
'resource': 'if_stats_list'},),
|
||||
'resource': 'if_stats_list'},
|
||||
None),
|
||||
(13,
|
||||
'96d49cc3-4e01-40ce-9cac-c0e32642a442',
|
||||
{'device_owner_id':
|
||||
|
@ -146,7 +147,8 @@ class TestOpencontrailDriver(base.BaseTestCase):
|
|||
'network_id': '298a3088-a446-4d5a-bad8-f92ecacd786b',
|
||||
'project': 'demo',
|
||||
'project_id': '89271fa581ab4380bf172f868c3615f9',
|
||||
'resource': 'if_stats_list'},)]
|
||||
'resource': 'if_stats_list'},
|
||||
None)]
|
||||
self._test_meter('switch.port.receive.packets', expected,
|
||||
self.fake_port_stats_with_node())
|
||||
|
||||
|
@ -159,7 +161,8 @@ class TestOpencontrailDriver(base.BaseTestCase):
|
|||
'network_id': '298a3088-a446-4d5a-bad8-f92ecacd786b',
|
||||
'project': 'demo',
|
||||
'project_id': '89271fa581ab4380bf172f868c3615f9',
|
||||
'resource': 'if_stats_list'},)]
|
||||
'resource': 'if_stats_list'},
|
||||
None)]
|
||||
self._test_meter('switch.port.receive.packets', expected)
|
||||
|
||||
def test_switch_port_transmit_packets(self):
|
||||
|
@ -171,7 +174,8 @@ class TestOpencontrailDriver(base.BaseTestCase):
|
|||
'network_id': '298a3088-a446-4d5a-bad8-f92ecacd786b',
|
||||
'project': 'demo',
|
||||
'project_id': '89271fa581ab4380bf172f868c3615f9',
|
||||
'resource': 'if_stats_list'},)]
|
||||
'resource': 'if_stats_list'},
|
||||
None)]
|
||||
self._test_meter('switch.port.transmit.packets', expected)
|
||||
|
||||
def test_switch_port_receive_bytes(self):
|
||||
|
@ -183,7 +187,8 @@ class TestOpencontrailDriver(base.BaseTestCase):
|
|||
'network_id': '298a3088-a446-4d5a-bad8-f92ecacd786b',
|
||||
'project': 'demo',
|
||||
'project_id': '89271fa581ab4380bf172f868c3615f9',
|
||||
'resource': 'if_stats_list'},)]
|
||||
'resource': 'if_stats_list'},
|
||||
None)]
|
||||
self._test_meter('switch.port.receive.bytes', expected)
|
||||
|
||||
def test_switch_port_transmit_bytes(self):
|
||||
|
@ -195,7 +200,8 @@ class TestOpencontrailDriver(base.BaseTestCase):
|
|||
'network_id': '298a3088-a446-4d5a-bad8-f92ecacd786b',
|
||||
'project': 'demo',
|
||||
'project_id': '89271fa581ab4380bf172f868c3615f9',
|
||||
'resource': 'if_stats_list'},)]
|
||||
'resource': 'if_stats_list'},
|
||||
None)]
|
||||
self._test_meter('switch.port.transmit.bytes', expected)
|
||||
|
||||
def test_switch_port_receive_packets_fip(self):
|
||||
|
@ -208,7 +214,8 @@ class TestOpencontrailDriver(base.BaseTestCase):
|
|||
'network_id': '298a3088-a446-4d5a-bad8-f92ecacd786b',
|
||||
'project': 'demo',
|
||||
'project_id': '89271fa581ab4380bf172f868c3615f9',
|
||||
'resource': 'fip_stats_list'},)]
|
||||
'resource': 'fip_stats_list'},
|
||||
None)]
|
||||
self._test_meter('switch.port.receive.packets', expected)
|
||||
|
||||
def test_switch_port_transmit_packets_fip(self):
|
||||
|
@ -221,7 +228,8 @@ class TestOpencontrailDriver(base.BaseTestCase):
|
|||
'network_id': '298a3088-a446-4d5a-bad8-f92ecacd786b',
|
||||
'project': 'demo',
|
||||
'project_id': '89271fa581ab4380bf172f868c3615f9',
|
||||
'resource': 'fip_stats_list'},)]
|
||||
'resource': 'fip_stats_list'},
|
||||
None)]
|
||||
self._test_meter('switch.port.transmit.packets', expected)
|
||||
|
||||
def test_switch_port_receive_bytes_fip(self):
|
||||
|
@ -234,7 +242,8 @@ class TestOpencontrailDriver(base.BaseTestCase):
|
|||
'network_id': '298a3088-a446-4d5a-bad8-f92ecacd786b',
|
||||
'project': 'demo',
|
||||
'project_id': '89271fa581ab4380bf172f868c3615f9',
|
||||
'resource': 'fip_stats_list'},)]
|
||||
'resource': 'fip_stats_list'},
|
||||
None)]
|
||||
self._test_meter('switch.port.receive.bytes', expected)
|
||||
|
||||
def test_switch_port_transmit_bytes_fip(self):
|
||||
|
@ -247,7 +256,8 @@ class TestOpencontrailDriver(base.BaseTestCase):
|
|||
'network_id': '298a3088-a446-4d5a-bad8-f92ecacd786b',
|
||||
'project': 'demo',
|
||||
'project_id': '89271fa581ab4380bf172f868c3615f9',
|
||||
'resource': 'fip_stats_list'},)]
|
||||
'resource': 'fip_stats_list'},
|
||||
None)]
|
||||
self._test_meter('switch.port.transmit.bytes', expected)
|
||||
|
||||
def test_switch_port_transmit_bytes_non_existing_network(self):
|
||||
|
|
|
@ -17,7 +17,6 @@ import abc
|
|||
import mock
|
||||
from oslotest import base
|
||||
import six
|
||||
from six import moves
|
||||
from six.moves.urllib import parse as url_parse
|
||||
|
||||
from ceilometer.network.statistics.opendaylight import driver
|
||||
|
@ -119,10 +118,7 @@ class _Base(base.BaseTestCase):
|
|||
self.fake_params,
|
||||
{})
|
||||
|
||||
for sample, expected in moves.zip(sample_data, expected_data):
|
||||
self.assertEqual(expected[0], sample[0]) # check volume
|
||||
self.assertEqual(expected[1], sample[1]) # check resource id
|
||||
self.assertEqual(expected[2], sample[2]) # check resource metadata
|
||||
self.assertEqual(expected_data, list(sample_data))
|
||||
|
||||
|
||||
class TestOpenDayLightDriverSpecial(_Base):
|
||||
|
@ -352,7 +348,7 @@ class TestOpenDayLightDriverSimple(_Base):
|
|||
'container': 'default',
|
||||
"properties_actions": "4095",
|
||||
"properties_timeStamp_connectedSince": "1377291227877"
|
||||
}),
|
||||
}, None),
|
||||
]
|
||||
|
||||
self._test_for_meter('switch', expected_data)
|
||||
|
@ -363,7 +359,7 @@ class TestOpenDayLightDriverSimple(_Base):
|
|||
'controller': 'OpenDaylight',
|
||||
'container': 'default',
|
||||
'port': '4',
|
||||
}),
|
||||
}, None),
|
||||
]
|
||||
self._test_for_meter('switch.port', expected_data)
|
||||
|
||||
|
@ -372,7 +368,7 @@ class TestOpenDayLightDriverSimple(_Base):
|
|||
(0, "00:00:00:00:00:00:00:02", {
|
||||
'controller': 'OpenDaylight',
|
||||
'container': 'default',
|
||||
'port': '4'}),
|
||||
'port': '4'}, None),
|
||||
]
|
||||
self._test_for_meter('switch.port.receive.packets', expected_data)
|
||||
|
||||
|
@ -381,7 +377,7 @@ class TestOpenDayLightDriverSimple(_Base):
|
|||
(0, "00:00:00:00:00:00:00:02", {
|
||||
'controller': 'OpenDaylight',
|
||||
'container': 'default',
|
||||
'port': '4'}),
|
||||
'port': '4'}, None),
|
||||
]
|
||||
self._test_for_meter('switch.port.transmit.packets', expected_data)
|
||||
|
||||
|
@ -390,7 +386,7 @@ class TestOpenDayLightDriverSimple(_Base):
|
|||
(0, "00:00:00:00:00:00:00:02", {
|
||||
'controller': 'OpenDaylight',
|
||||
'container': 'default',
|
||||
'port': '4'}),
|
||||
'port': '4'}, None),
|
||||
]
|
||||
self._test_for_meter('switch.port.receive.bytes', expected_data)
|
||||
|
||||
|
@ -399,7 +395,7 @@ class TestOpenDayLightDriverSimple(_Base):
|
|||
(0, "00:00:00:00:00:00:00:02", {
|
||||
'controller': 'OpenDaylight',
|
||||
'container': 'default',
|
||||
'port': '4'}),
|
||||
'port': '4'}, None),
|
||||
]
|
||||
self._test_for_meter('switch.port.transmit.bytes', expected_data)
|
||||
|
||||
|
@ -408,7 +404,7 @@ class TestOpenDayLightDriverSimple(_Base):
|
|||
(0, "00:00:00:00:00:00:00:02", {
|
||||
'controller': 'OpenDaylight',
|
||||
'container': 'default',
|
||||
'port': '4'}),
|
||||
'port': '4'}, None),
|
||||
]
|
||||
self._test_for_meter('switch.port.receive.drops', expected_data)
|
||||
|
||||
|
@ -417,7 +413,7 @@ class TestOpenDayLightDriverSimple(_Base):
|
|||
(0, "00:00:00:00:00:00:00:02", {
|
||||
'controller': 'OpenDaylight',
|
||||
'container': 'default',
|
||||
'port': '4'}),
|
||||
'port': '4'}, None),
|
||||
]
|
||||
self._test_for_meter('switch.port.transmit.drops', expected_data)
|
||||
|
||||
|
@ -426,7 +422,7 @@ class TestOpenDayLightDriverSimple(_Base):
|
|||
(0, "00:00:00:00:00:00:00:02", {
|
||||
'controller': 'OpenDaylight',
|
||||
'container': 'default',
|
||||
'port': '4'}),
|
||||
'port': '4'}, None),
|
||||
]
|
||||
self._test_for_meter('switch.port.receive.errors', expected_data)
|
||||
|
||||
|
@ -435,7 +431,7 @@ class TestOpenDayLightDriverSimple(_Base):
|
|||
(0, "00:00:00:00:00:00:00:02", {
|
||||
'controller': 'OpenDaylight',
|
||||
'container': 'default',
|
||||
'port': '4'}),
|
||||
'port': '4'}, None),
|
||||
]
|
||||
self._test_for_meter('switch.port.transmit.errors', expected_data)
|
||||
|
||||
|
@ -444,7 +440,7 @@ class TestOpenDayLightDriverSimple(_Base):
|
|||
(0, "00:00:00:00:00:00:00:02", {
|
||||
'controller': 'OpenDaylight',
|
||||
'container': 'default',
|
||||
'port': '4'}),
|
||||
'port': '4'}, None),
|
||||
]
|
||||
self._test_for_meter('switch.port.receive.frame_error', expected_data)
|
||||
|
||||
|
@ -453,7 +449,7 @@ class TestOpenDayLightDriverSimple(_Base):
|
|||
(0, "00:00:00:00:00:00:00:02", {
|
||||
'controller': 'OpenDaylight',
|
||||
'container': 'default',
|
||||
'port': '4'}),
|
||||
'port': '4'}, None),
|
||||
]
|
||||
self._test_for_meter('switch.port.receive.overrun_error',
|
||||
expected_data)
|
||||
|
@ -463,7 +459,7 @@ class TestOpenDayLightDriverSimple(_Base):
|
|||
(0, "00:00:00:00:00:00:00:02", {
|
||||
'controller': 'OpenDaylight',
|
||||
'container': 'default',
|
||||
'port': '4'}),
|
||||
'port': '4'}, None),
|
||||
]
|
||||
self._test_for_meter('switch.port.receive.crc_error', expected_data)
|
||||
|
||||
|
@ -472,7 +468,7 @@ class TestOpenDayLightDriverSimple(_Base):
|
|||
(0, "00:00:00:00:00:00:00:02", {
|
||||
'controller': 'OpenDaylight',
|
||||
'container': 'default',
|
||||
'port': '4'}),
|
||||
'port': '4'}, None),
|
||||
]
|
||||
self._test_for_meter('switch.port.collision.count', expected_data)
|
||||
|
||||
|
@ -481,7 +477,7 @@ class TestOpenDayLightDriverSimple(_Base):
|
|||
(1, "00:00:00:00:00:00:00:02", {
|
||||
'controller': 'OpenDaylight',
|
||||
'container': 'default',
|
||||
'table_id': '0'}),
|
||||
'table_id': '0'}, None),
|
||||
]
|
||||
self._test_for_meter('switch.table', expected_data)
|
||||
|
||||
|
@ -490,7 +486,7 @@ class TestOpenDayLightDriverSimple(_Base):
|
|||
(11, "00:00:00:00:00:00:00:02", {
|
||||
'controller': 'OpenDaylight',
|
||||
'container': 'default',
|
||||
'table_id': '0'}),
|
||||
'table_id': '0'}, None),
|
||||
]
|
||||
self._test_for_meter('switch.table.active.entries', expected_data)
|
||||
|
||||
|
@ -499,7 +495,7 @@ class TestOpenDayLightDriverSimple(_Base):
|
|||
(816, "00:00:00:00:00:00:00:02", {
|
||||
'controller': 'OpenDaylight',
|
||||
'container': 'default',
|
||||
'table_id': '0'}),
|
||||
'table_id': '0'}, None),
|
||||
]
|
||||
self._test_for_meter('switch.table.lookup.packets', expected_data)
|
||||
|
||||
|
@ -508,7 +504,7 @@ class TestOpenDayLightDriverSimple(_Base):
|
|||
(220, "00:00:00:00:00:00:00:02", {
|
||||
'controller': 'OpenDaylight',
|
||||
'container': 'default',
|
||||
'table_id': '0'}),
|
||||
'table_id': '0'}, None),
|
||||
]
|
||||
self._test_for_meter('switch.table.matched.packets', expected_data)
|
||||
|
||||
|
@ -532,7 +528,7 @@ class TestOpenDayLightDriverSimple(_Base):
|
|||
"flow_hardTimeout": "0",
|
||||
"flow_idleTimeout": "0",
|
||||
"flow_priority": "1"
|
||||
}),
|
||||
}, None),
|
||||
]
|
||||
self._test_for_meter('switch.flow', expected_data)
|
||||
|
||||
|
@ -555,7 +551,7 @@ class TestOpenDayLightDriverSimple(_Base):
|
|||
"flow_actions_port_type": "OF",
|
||||
"flow_hardTimeout": "0",
|
||||
"flow_idleTimeout": "0",
|
||||
"flow_priority": "1"}),
|
||||
"flow_priority": "1"}, None),
|
||||
]
|
||||
self._test_for_meter('switch.flow.duration_seconds', expected_data)
|
||||
|
||||
|
@ -578,7 +574,7 @@ class TestOpenDayLightDriverSimple(_Base):
|
|||
"flow_actions_port_type": "OF",
|
||||
"flow_hardTimeout": "0",
|
||||
"flow_idleTimeout": "0",
|
||||
"flow_priority": "1"}),
|
||||
"flow_priority": "1"}, None),
|
||||
]
|
||||
self._test_for_meter('switch.flow.duration_nanoseconds', expected_data)
|
||||
|
||||
|
@ -601,7 +597,7 @@ class TestOpenDayLightDriverSimple(_Base):
|
|||
"flow_actions_port_type": "OF",
|
||||
"flow_hardTimeout": "0",
|
||||
"flow_idleTimeout": "0",
|
||||
"flow_priority": "1"}),
|
||||
"flow_priority": "1"}, None),
|
||||
]
|
||||
self._test_for_meter('switch.flow.packets', expected_data)
|
||||
|
||||
|
@ -624,7 +620,7 @@ class TestOpenDayLightDriverSimple(_Base):
|
|||
"flow_actions_port_type": "OF",
|
||||
"flow_hardTimeout": "0",
|
||||
"flow_idleTimeout": "0",
|
||||
"flow_priority": "1"}),
|
||||
"flow_priority": "1"}, None),
|
||||
]
|
||||
self._test_for_meter('switch.flow.bytes', expected_data)
|
||||
|
||||
|
@ -1078,7 +1074,7 @@ class TestOpenDayLightDriverComplex(_Base):
|
|||
"properties_macAddress": "00:00:00:00:00:02",
|
||||
"properties_tables": "-1",
|
||||
"properties_timeStamp_connectedSince": "1377291227877"
|
||||
}),
|
||||
}, None),
|
||||
(1, "00:00:00:00:00:00:00:03", {
|
||||
'controller': 'OpenDaylight',
|
||||
'container': 'default',
|
||||
|
@ -1089,7 +1085,7 @@ class TestOpenDayLightDriverComplex(_Base):
|
|||
"properties_macAddress": "00:00:00:00:00:03",
|
||||
"properties_tables": "10",
|
||||
"properties_timeStamp_connectedSince": "1377291228000"
|
||||
}),
|
||||
}, None),
|
||||
]
|
||||
|
||||
self._test_for_meter('switch', expected_data)
|
||||
|
@ -1100,7 +1096,7 @@ class TestOpenDayLightDriverComplex(_Base):
|
|||
'controller': 'OpenDaylight',
|
||||
'container': 'default',
|
||||
'port': '4',
|
||||
}),
|
||||
}, None),
|
||||
(1, "00:00:00:00:00:00:00:02", {
|
||||
'controller': 'OpenDaylight',
|
||||
'container': 'default',
|
||||
|
@ -1109,7 +1105,7 @@ class TestOpenDayLightDriverComplex(_Base):
|
|||
'user_link_node_port': '5',
|
||||
'user_link_status': 'Success',
|
||||
'user_link_name': 'link1',
|
||||
}),
|
||||
}, None),
|
||||
(1, "00:00:00:00:00:00:00:02", {
|
||||
'controller': 'OpenDaylight',
|
||||
'container': 'default',
|
||||
|
@ -1121,7 +1117,7 @@ class TestOpenDayLightDriverComplex(_Base):
|
|||
"topology_name": "s2-eth3",
|
||||
"topology_state": 1,
|
||||
"topology_timeStamp_creation": 1379527162648
|
||||
}),
|
||||
}, None),
|
||||
(1, "00:00:00:00:00:00:00:02", {
|
||||
'controller': 'OpenDaylight',
|
||||
'container': 'default',
|
||||
|
@ -1131,7 +1127,7 @@ class TestOpenDayLightDriverComplex(_Base):
|
|||
'host_networkAddress': '2.2.2.2',
|
||||
'host_staticHost': 'true',
|
||||
'host_vlan': '0',
|
||||
}),
|
||||
}, None),
|
||||
(1, "00:00:00:00:00:00:00:02", {
|
||||
'controller': 'OpenDaylight',
|
||||
'container': 'default',
|
||||
|
@ -1141,7 +1137,7 @@ class TestOpenDayLightDriverComplex(_Base):
|
|||
'host_networkAddress': '2.2.2.4',
|
||||
'host_staticHost': 'false',
|
||||
'host_vlan': '1',
|
||||
}),
|
||||
}, None),
|
||||
]
|
||||
self._test_for_meter('switch.port', expected_data)
|
||||
|
||||
|
@ -1150,23 +1146,23 @@ class TestOpenDayLightDriverComplex(_Base):
|
|||
(0, "00:00:00:00:00:00:00:02", {
|
||||
'controller': 'OpenDaylight',
|
||||
'container': 'default',
|
||||
'port': '4'}),
|
||||
'port': '4'}, None),
|
||||
(182, "00:00:00:00:00:00:00:02", {
|
||||
'controller': 'OpenDaylight',
|
||||
'container': 'default',
|
||||
'port': '3'}),
|
||||
'port': '3'}, None),
|
||||
(174, "00:00:00:00:00:00:00:02", {
|
||||
'controller': 'OpenDaylight',
|
||||
'container': 'default',
|
||||
'port': '2'}),
|
||||
'port': '2'}, None),
|
||||
(0, "00:00:00:00:00:00:00:02", {
|
||||
'controller': 'OpenDaylight',
|
||||
'container': 'default',
|
||||
'port': '1'}),
|
||||
'port': '1'}, None),
|
||||
(0, "00:00:00:00:00:00:00:02", {
|
||||
'controller': 'OpenDaylight',
|
||||
'container': 'default',
|
||||
'port': '0'}),
|
||||
'port': '0'}, None),
|
||||
]
|
||||
self._test_for_meter('switch.port.receive.packets', expected_data)
|
||||
|
||||
|
@ -1175,23 +1171,23 @@ class TestOpenDayLightDriverComplex(_Base):
|
|||
(0, "00:00:00:00:00:00:00:02", {
|
||||
'controller': 'OpenDaylight',
|
||||
'container': 'default',
|
||||
'port': '4'}),
|
||||
'port': '4'}, None),
|
||||
(173, "00:00:00:00:00:00:00:02", {
|
||||
'controller': 'OpenDaylight',
|
||||
'container': 'default',
|
||||
'port': '3'}),
|
||||
'port': '3'}, None),
|
||||
(181, "00:00:00:00:00:00:00:02", {
|
||||
'controller': 'OpenDaylight',
|
||||
'container': 'default',
|
||||
'port': '2'}),
|
||||
'port': '2'}, None),
|
||||
(0, "00:00:00:00:00:00:00:02", {
|
||||
'controller': 'OpenDaylight',
|
||||
'container': 'default',
|
||||
'port': '1'}),
|
||||
'port': '1'}, None),
|
||||
(0, "00:00:00:00:00:00:00:02", {
|
||||
'controller': 'OpenDaylight',
|
||||
'container': 'default',
|
||||
'port': '0'}),
|
||||
'port': '0'}, None),
|
||||
]
|
||||
self._test_for_meter('switch.port.transmit.packets', expected_data)
|
||||
|
||||
|
@ -1200,23 +1196,23 @@ class TestOpenDayLightDriverComplex(_Base):
|
|||
(0, "00:00:00:00:00:00:00:02", {
|
||||
'controller': 'OpenDaylight',
|
||||
'container': 'default',
|
||||
'port': '4'}),
|
||||
'port': '4'}, None),
|
||||
(12740, "00:00:00:00:00:00:00:02", {
|
||||
'controller': 'OpenDaylight',
|
||||
'container': 'default',
|
||||
'port': '3'}),
|
||||
'port': '3'}, None),
|
||||
(12180, "00:00:00:00:00:00:00:02", {
|
||||
'controller': 'OpenDaylight',
|
||||
'container': 'default',
|
||||
'port': '2'}),
|
||||
'port': '2'}, None),
|
||||
(0, "00:00:00:00:00:00:00:02", {
|
||||
'controller': 'OpenDaylight',
|
||||
'container': 'default',
|
||||
'port': '1'}),
|
||||
'port': '1'}, None),
|
||||
(0, "00:00:00:00:00:00:00:02", {
|
||||
'controller': 'OpenDaylight',
|
||||
'container': 'default',
|
||||
'port': '0'}),
|
||||
'port': '0'}, None),
|
||||
]
|
||||
self._test_for_meter('switch.port.receive.bytes', expected_data)
|
||||
|
||||
|
@ -1225,23 +1221,23 @@ class TestOpenDayLightDriverComplex(_Base):
|
|||
(0, "00:00:00:00:00:00:00:02", {
|
||||
'controller': 'OpenDaylight',
|
||||
'container': 'default',
|
||||
'port': '4'}),
|
||||
'port': '4'}, None),
|
||||
(12110, "00:00:00:00:00:00:00:02", {
|
||||
'controller': 'OpenDaylight',
|
||||
'container': 'default',
|
||||
'port': '3'}),
|
||||
'port': '3'}, None),
|
||||
(12670, "00:00:00:00:00:00:00:02", {
|
||||
'controller': 'OpenDaylight',
|
||||
'container': 'default',
|
||||
'port': '2'}),
|
||||
'port': '2'}, None),
|
||||
(0, "00:00:00:00:00:00:00:02", {
|
||||
'controller': 'OpenDaylight',
|
||||
'container': 'default',
|
||||
'port': '1'}),
|
||||
'port': '1'}, None),
|
||||
(0, "00:00:00:00:00:00:00:02", {
|
||||
'controller': 'OpenDaylight',
|
||||
'container': 'default',
|
||||
'port': '0'}),
|
||||
'port': '0'}, None),
|
||||
]
|
||||
self._test_for_meter('switch.port.transmit.bytes', expected_data)
|
||||
|
||||
|
@ -1250,23 +1246,23 @@ class TestOpenDayLightDriverComplex(_Base):
|
|||
(0, "00:00:00:00:00:00:00:02", {
|
||||
'controller': 'OpenDaylight',
|
||||
'container': 'default',
|
||||
'port': '4'}),
|
||||
'port': '4'}, None),
|
||||
(0, "00:00:00:00:00:00:00:02", {
|
||||
'controller': 'OpenDaylight',
|
||||
'container': 'default',
|
||||
'port': '3'}),
|
||||
'port': '3'}, None),
|
||||
(0, "00:00:00:00:00:00:00:02", {
|
||||
'controller': 'OpenDaylight',
|
||||
'container': 'default',
|
||||
'port': '2'}),
|
||||
'port': '2'}, None),
|
||||
(0, "00:00:00:00:00:00:00:02", {
|
||||
'controller': 'OpenDaylight',
|
||||
'container': 'default',
|
||||
'port': '1'}),
|
||||
'port': '1'}, None),
|
||||
(0, "00:00:00:00:00:00:00:02", {
|
||||
'controller': 'OpenDaylight',
|
||||
'container': 'default',
|
||||
'port': '0'}),
|
||||
'port': '0'}, None),
|
||||
]
|
||||
self._test_for_meter('switch.port.receive.drops', expected_data)
|
||||
|
||||
|
@ -1275,23 +1271,23 @@ class TestOpenDayLightDriverComplex(_Base):
|
|||
(0, "00:00:00:00:00:00:00:02", {
|
||||
'controller': 'OpenDaylight',
|
||||
'container': 'default',
|
||||
'port': '4'}),
|
||||
'port': '4'}, None),
|
||||
(0, "00:00:00:00:00:00:00:02", {
|
||||
'controller': 'OpenDaylight',
|
||||
'container': 'default',
|
||||
'port': '3'}),
|
||||
'port': '3'}, None),
|
||||
(0, "00:00:00:00:00:00:00:02", {
|
||||
'controller': 'OpenDaylight',
|
||||
'container': 'default',
|
||||
'port': '2'}),
|
||||
'port': '2'}, None),
|
||||
(0, "00:00:00:00:00:00:00:02", {
|
||||
'controller': 'OpenDaylight',
|
||||
'container': 'default',
|
||||
'port': '1'}),
|
||||
'port': '1'}, None),
|
||||
(0, "00:00:00:00:00:00:00:02", {
|
||||
'controller': 'OpenDaylight',
|
||||
'container': 'default',
|
||||
'port': '0'}),
|
||||
'port': '0'}, None),
|
||||
]
|
||||
self._test_for_meter('switch.port.transmit.drops', expected_data)
|
||||
|
||||
|
@ -1300,23 +1296,23 @@ class TestOpenDayLightDriverComplex(_Base):
|
|||
(0, "00:00:00:00:00:00:00:02", {
|
||||
'controller': 'OpenDaylight',
|
||||
'container': 'default',
|
||||
'port': '4'}),
|
||||
'port': '4'}, None),
|
||||
(0, "00:00:00:00:00:00:00:02", {
|
||||
'controller': 'OpenDaylight',
|
||||
'container': 'default',
|
||||
'port': '3'}),
|
||||
'port': '3'}, None),
|
||||
(0, "00:00:00:00:00:00:00:02", {
|
||||
'controller': 'OpenDaylight',
|
||||
'container': 'default',
|
||||
'port': '2'}),
|
||||
'port': '2'}, None),
|
||||
(0, "00:00:00:00:00:00:00:02", {
|
||||
'controller': 'OpenDaylight',
|
||||
'container': 'default',
|
||||
'port': '1'}),
|
||||
'port': '1'}, None),
|
||||
(0, "00:00:00:00:00:00:00:02", {
|
||||
'controller': 'OpenDaylight',
|
||||
'container': 'default',
|
||||
'port': '0'}),
|
||||
'port': '0'}, None),
|
||||
]
|
||||
self._test_for_meter('switch.port.receive.errors', expected_data)
|
||||
|
||||
|
@ -1325,23 +1321,23 @@ class TestOpenDayLightDriverComplex(_Base):
|
|||
(0, "00:00:00:00:00:00:00:02", {
|
||||
'controller': 'OpenDaylight',
|
||||
'container': 'default',
|
||||
'port': '4'}),
|
||||
'port': '4'}, None),
|
||||
(0, "00:00:00:00:00:00:00:02", {
|
||||
'controller': 'OpenDaylight',
|
||||
'container': 'default',
|
||||
'port': '3'}),
|
||||
'port': '3'}, None),
|
||||
(0, "00:00:00:00:00:00:00:02", {
|
||||
'controller': 'OpenDaylight',
|
||||
'container': 'default',
|
||||
'port': '2'}),
|
||||
'port': '2'}, None),
|
||||
(0, "00:00:00:00:00:00:00:02", {
|
||||
'controller': 'OpenDaylight',
|
||||
'container': 'default',
|
||||
'port': '1'}),
|
||||
'port': '1'}, None),
|
||||
(0, "00:00:00:00:00:00:00:02", {
|
||||
'controller': 'OpenDaylight',
|
||||
'container': 'default',
|
||||
'port': '0'}),
|
||||
'port': '0'}, None),
|
||||
]
|
||||
self._test_for_meter('switch.port.transmit.errors', expected_data)
|
||||
|
||||
|
@ -1350,23 +1346,23 @@ class TestOpenDayLightDriverComplex(_Base):
|
|||
(0, "00:00:00:00:00:00:00:02", {
|
||||
'controller': 'OpenDaylight',
|
||||
'container': 'default',
|
||||
'port': '4'}),
|
||||
'port': '4'}, None),
|
||||
(0, "00:00:00:00:00:00:00:02", {
|
||||
'controller': 'OpenDaylight',
|
||||
'container': 'default',
|
||||
'port': '3'}),
|
||||
'port': '3'}, None),
|
||||
(0, "00:00:00:00:00:00:00:02", {
|
||||
'controller': 'OpenDaylight',
|
||||
'container': 'default',
|
||||
'port': '2'}),
|
||||
'port': '2'}, None),
|
||||
(0, "00:00:00:00:00:00:00:02", {
|
||||
'controller': 'OpenDaylight',
|
||||
'container': 'default',
|
||||
'port': '1'}),
|
||||
'port': '1'}, None),
|
||||
(0, "00:00:00:00:00:00:00:02", {
|
||||
'controller': 'OpenDaylight',
|
||||
'container': 'default',
|
||||
'port': '0'}),
|
||||
'port': '0'}, None),
|
||||
]
|
||||
self._test_for_meter('switch.port.receive.frame_error', expected_data)
|
||||
|
||||
|
@ -1375,23 +1371,23 @@ class TestOpenDayLightDriverComplex(_Base):
|
|||
(0, "00:00:00:00:00:00:00:02", {
|
||||
'controller': 'OpenDaylight',
|
||||
'container': 'default',
|
||||
'port': '4'}),
|
||||
'port': '4'}, None),
|
||||
(0, "00:00:00:00:00:00:00:02", {
|
||||
'controller': 'OpenDaylight',
|
||||
'container': 'default',
|
||||
'port': '3'}),
|
||||
'port': '3'}, None),
|
||||
(0, "00:00:00:00:00:00:00:02", {
|
||||
'controller': 'OpenDaylight',
|
||||
'container': 'default',
|
||||
'port': '2'}),
|
||||
'port': '2'}, None),
|
||||
(0, "00:00:00:00:00:00:00:02", {
|
||||
'controller': 'OpenDaylight',
|
||||
'container': 'default',
|
||||
'port': '1'}),
|
||||
'port': '1'}, None),
|
||||
(0, "00:00:00:00:00:00:00:02", {
|
||||
'controller': 'OpenDaylight',
|
||||
'container': 'default',
|
||||
'port': '0'}),
|
||||
'port': '0'}, None),
|
||||
]
|
||||
self._test_for_meter('switch.port.receive.overrun_error',
|
||||
expected_data)
|
||||
|
@ -1401,23 +1397,23 @@ class TestOpenDayLightDriverComplex(_Base):
|
|||
(0, "00:00:00:00:00:00:00:02", {
|
||||
'controller': 'OpenDaylight',
|
||||
'container': 'default',
|
||||
'port': '4'}),
|
||||
'port': '4'}, None),
|
||||
(0, "00:00:00:00:00:00:00:02", {
|
||||
'controller': 'OpenDaylight',
|
||||
'container': 'default',
|
||||
'port': '3'}),
|
||||
'port': '3'}, None),
|
||||
(0, "00:00:00:00:00:00:00:02", {
|
||||
'controller': 'OpenDaylight',
|
||||
'container': 'default',
|
||||
'port': '2'}),
|
||||
'port': '2'}, None),
|
||||
(0, "00:00:00:00:00:00:00:02", {
|
||||
'controller': 'OpenDaylight',
|
||||
'container': 'default',
|
||||
'port': '1'}),
|
||||
'port': '1'}, None),
|
||||
(0, "00:00:00:00:00:00:00:02", {
|
||||
'controller': 'OpenDaylight',
|
||||
'container': 'default',
|
||||
'port': '0'}),
|
||||
'port': '0'}, None),
|
||||
]
|
||||
self._test_for_meter('switch.port.receive.crc_error', expected_data)
|
||||
|
||||
|
@ -1426,23 +1422,23 @@ class TestOpenDayLightDriverComplex(_Base):
|
|||
(0, "00:00:00:00:00:00:00:02", {
|
||||
'controller': 'OpenDaylight',
|
||||
'container': 'default',
|
||||
'port': '4'}),
|
||||
'port': '4'}, None),
|
||||
(0, "00:00:00:00:00:00:00:02", {
|
||||
'controller': 'OpenDaylight',
|
||||
'container': 'default',
|
||||
'port': '3'}),
|
||||
'port': '3'}, None),
|
||||
(0, "00:00:00:00:00:00:00:02", {
|
||||
'controller': 'OpenDaylight',
|
||||
'container': 'default',
|
||||
'port': '2'}),
|
||||
'port': '2'}, None),
|
||||
(0, "00:00:00:00:00:00:00:02", {
|
||||
'controller': 'OpenDaylight',
|
||||
'container': 'default',
|
||||
'port': '1'}),
|
||||
'port': '1'}, None),
|
||||
(0, "00:00:00:00:00:00:00:02", {
|
||||
'controller': 'OpenDaylight',
|
||||
'container': 'default',
|
||||
'port': '0'}),
|
||||
'port': '0'}, None),
|
||||
]
|
||||
self._test_for_meter('switch.port.collision.count', expected_data)
|
||||
|
||||
|
@ -1451,11 +1447,11 @@ class TestOpenDayLightDriverComplex(_Base):
|
|||
(1, "00:00:00:00:00:00:00:02", {
|
||||
'controller': 'OpenDaylight',
|
||||
'container': 'default',
|
||||
'table_id': '0'}),
|
||||
'table_id': '0'}, None),
|
||||
(1, "00:00:00:00:00:00:00:02", {
|
||||
'controller': 'OpenDaylight',
|
||||
'container': 'default',
|
||||
'table_id': '1'}),
|
||||
'table_id': '1'}, None),
|
||||
]
|
||||
self._test_for_meter('switch.table', expected_data)
|
||||
|
||||
|
@ -1464,11 +1460,11 @@ class TestOpenDayLightDriverComplex(_Base):
|
|||
(11, "00:00:00:00:00:00:00:02", {
|
||||
'controller': 'OpenDaylight',
|
||||
'container': 'default',
|
||||
'table_id': '0'}),
|
||||
'table_id': '0'}, None),
|
||||
(20, "00:00:00:00:00:00:00:02", {
|
||||
'controller': 'OpenDaylight',
|
||||
'container': 'default',
|
||||
'table_id': '1'}),
|
||||
'table_id': '1'}, None),
|
||||
]
|
||||
self._test_for_meter('switch.table.active.entries', expected_data)
|
||||
|
||||
|
@ -1477,11 +1473,11 @@ class TestOpenDayLightDriverComplex(_Base):
|
|||
(816, "00:00:00:00:00:00:00:02", {
|
||||
'controller': 'OpenDaylight',
|
||||
'container': 'default',
|
||||
'table_id': '0'}),
|
||||
'table_id': '0'}, None),
|
||||
(10, "00:00:00:00:00:00:00:02", {
|
||||
'controller': 'OpenDaylight',
|
||||
'container': 'default',
|
||||
'table_id': '1'}),
|
||||
'table_id': '1'}, None),
|
||||
]
|
||||
self._test_for_meter('switch.table.lookup.packets', expected_data)
|
||||
|
||||
|
@ -1490,11 +1486,11 @@ class TestOpenDayLightDriverComplex(_Base):
|
|||
(220, "00:00:00:00:00:00:00:02", {
|
||||
'controller': 'OpenDaylight',
|
||||
'container': 'default',
|
||||
'table_id': '0'}),
|
||||
'table_id': '0'}, None),
|
||||
(5, "00:00:00:00:00:00:00:02", {
|
||||
'controller': 'OpenDaylight',
|
||||
'container': 'default',
|
||||
'table_id': '1'}),
|
||||
'table_id': '1'}, None),
|
||||
]
|
||||
self._test_for_meter('switch.table.matched.packets', expected_data)
|
||||
|
||||
|
@ -1518,7 +1514,7 @@ class TestOpenDayLightDriverComplex(_Base):
|
|||
"flow_hardTimeout": "0",
|
||||
"flow_idleTimeout": "0",
|
||||
"flow_priority": "1"
|
||||
}),
|
||||
}, None),
|
||||
(1, "00:00:00:00:00:00:00:02", {
|
||||
'controller': 'OpenDaylight',
|
||||
'container': 'default',
|
||||
|
@ -1537,7 +1533,7 @@ class TestOpenDayLightDriverComplex(_Base):
|
|||
"flow_hardTimeout": "0",
|
||||
"flow_idleTimeout": "0",
|
||||
"flow_priority": "1"
|
||||
}),
|
||||
}, None),
|
||||
]
|
||||
self._test_for_meter('switch.flow', expected_data)
|
||||
|
||||
|
@ -1560,7 +1556,7 @@ class TestOpenDayLightDriverComplex(_Base):
|
|||
"flow_actions_port_type": "OF",
|
||||
"flow_hardTimeout": "0",
|
||||
"flow_idleTimeout": "0",
|
||||
"flow_priority": "1"}),
|
||||
"flow_priority": "1"}, None),
|
||||
(5648, "00:00:00:00:00:00:00:02", {
|
||||
'controller': 'OpenDaylight',
|
||||
'container': 'default',
|
||||
|
@ -1578,7 +1574,7 @@ class TestOpenDayLightDriverComplex(_Base):
|
|||
"flow_actions_port_type": "OF",
|
||||
"flow_hardTimeout": "0",
|
||||
"flow_idleTimeout": "0",
|
||||
"flow_priority": "1"}),
|
||||
"flow_priority": "1"}, None),
|
||||
]
|
||||
self._test_for_meter('switch.flow.duration_seconds', expected_data)
|
||||
|
||||
|
@ -1601,7 +1597,7 @@ class TestOpenDayLightDriverComplex(_Base):
|
|||
"flow_actions_port_type": "OF",
|
||||
"flow_hardTimeout": "0",
|
||||
"flow_idleTimeout": "0",
|
||||
"flow_priority": "1"}),
|
||||
"flow_priority": "1"}, None),
|
||||
(200000, "00:00:00:00:00:00:00:02", {
|
||||
'controller': 'OpenDaylight',
|
||||
'container': 'default',
|
||||
|
@ -1619,7 +1615,7 @@ class TestOpenDayLightDriverComplex(_Base):
|
|||
"flow_actions_port_type": "OF",
|
||||
"flow_hardTimeout": "0",
|
||||
"flow_idleTimeout": "0",
|
||||
"flow_priority": "1"}),
|
||||
"flow_priority": "1"}, None),
|
||||
]
|
||||
self._test_for_meter('switch.flow.duration_nanoseconds', expected_data)
|
||||
|
||||
|
@ -1642,7 +1638,7 @@ class TestOpenDayLightDriverComplex(_Base):
|
|||
"flow_actions_port_type": "OF",
|
||||
"flow_hardTimeout": "0",
|
||||
"flow_idleTimeout": "0",
|
||||
"flow_priority": "1"}),
|
||||
"flow_priority": "1"}, None),
|
||||
(30, "00:00:00:00:00:00:00:02", {
|
||||
'controller': 'OpenDaylight',
|
||||
'container': 'default',
|
||||
|
@ -1660,7 +1656,7 @@ class TestOpenDayLightDriverComplex(_Base):
|
|||
"flow_actions_port_type": "OF",
|
||||
"flow_hardTimeout": "0",
|
||||
"flow_idleTimeout": "0",
|
||||
"flow_priority": "1"}),
|
||||
"flow_priority": "1"}, None),
|
||||
]
|
||||
self._test_for_meter('switch.flow.packets', expected_data)
|
||||
|
||||
|
@ -1683,7 +1679,7 @@ class TestOpenDayLightDriverComplex(_Base):
|
|||
"flow_actions_port_type": "OF",
|
||||
"flow_hardTimeout": "0",
|
||||
"flow_idleTimeout": "0",
|
||||
"flow_priority": "1"}),
|
||||
"flow_priority": "1"}, None),
|
||||
(89, "00:00:00:00:00:00:00:02", {
|
||||
'controller': 'OpenDaylight',
|
||||
'container': 'default',
|
||||
|
@ -1701,6 +1697,6 @@ class TestOpenDayLightDriverComplex(_Base):
|
|||
"flow_actions_port_type": "OF",
|
||||
"flow_hardTimeout": "0",
|
||||
"flow_idleTimeout": "0",
|
||||
"flow_priority": "1"}),
|
||||
"flow_priority": "1"}, None),
|
||||
]
|
||||
self._test_for_meter('switch.flow.bytes', expected_data)
|
||||
|
|
|
@ -16,6 +16,7 @@
|
|||
import datetime
|
||||
|
||||
from oslo_utils import timeutils
|
||||
from oslo_utils import uuidutils
|
||||
from oslotest import base
|
||||
|
||||
from ceilometer.network import statistics
|
||||
|
@ -23,6 +24,8 @@ from ceilometer.network.statistics import driver
|
|||
from ceilometer import sample
|
||||
from ceilometer import service
|
||||
|
||||
PROJECT_ID = uuidutils.generate_uuid()
|
||||
|
||||
|
||||
class TestBase(base.BaseTestCase):
|
||||
|
||||
|
@ -111,46 +114,50 @@ class TestBaseGetSamples(base.BaseTestCase):
|
|||
|
||||
return [v for v in self.pollster.get_samples(self, {}, resources)]
|
||||
|
||||
def _assert_sample(self, s, volume, resource_id, resource_metadata):
|
||||
def _assert_sample(self, s, volume, resource_id, resource_metadata,
|
||||
project_id):
|
||||
self.assertEqual('foo', s.name)
|
||||
self.assertEqual(sample.TYPE_CUMULATIVE, s.type)
|
||||
self.assertEqual('bar', s.unit)
|
||||
self.assertEqual(volume, s.volume)
|
||||
self.assertIsNone(s.user_id)
|
||||
self.assertIsNone(s.project_id)
|
||||
self.assertEqual(project_id, s.project_id)
|
||||
self.assertEqual(resource_id, s.resource_id)
|
||||
self.assertEqual(resource_metadata, s.resource_metadata)
|
||||
|
||||
def test_get_samples_one_driver_one_resource(self):
|
||||
fake_driver = self._make_fake_driver((1, 'a', {'spam': 'egg'},),
|
||||
(2, 'b', None))
|
||||
fake_driver = self._make_fake_driver((1, 'a', {'spam': 'egg'},
|
||||
PROJECT_ID),
|
||||
(2, 'b', None, None))
|
||||
|
||||
self._setup_ext_mgr(http=fake_driver(self.CONF))
|
||||
|
||||
samples = self._get_samples('http://foo')
|
||||
|
||||
self.assertEqual(1, len(samples))
|
||||
self._assert_sample(samples[0], 1, 'a', {'spam': 'egg'})
|
||||
self._assert_sample(samples[0], 1, 'a', {'spam': 'egg'}, PROJECT_ID)
|
||||
|
||||
def test_get_samples_one_driver_two_resource(self):
|
||||
fake_driver = self._make_fake_driver((1, 'a', {'spam': 'egg'},),
|
||||
(2, 'b', None),
|
||||
(3, 'c', None))
|
||||
fake_driver = self._make_fake_driver((1, 'a', {'spam': 'egg'},
|
||||
None),
|
||||
(2, 'b', None, None),
|
||||
(3, 'c', None, None))
|
||||
|
||||
self._setup_ext_mgr(http=fake_driver(self.CONF))
|
||||
|
||||
samples = self._get_samples('http://foo', 'http://bar')
|
||||
|
||||
self.assertEqual(2, len(samples))
|
||||
self._assert_sample(samples[0], 1, 'a', {'spam': 'egg'})
|
||||
self._assert_sample(samples[1], 2, 'b', {})
|
||||
self._assert_sample(samples[0], 1, 'a', {'spam': 'egg'}, None)
|
||||
self._assert_sample(samples[1], 2, 'b', {}, None)
|
||||
|
||||
def test_get_samples_two_driver_one_resource(self):
|
||||
fake_driver1 = self._make_fake_driver((1, 'a', {'spam': 'egg'},),
|
||||
(2, 'b', None))
|
||||
fake_driver1 = self._make_fake_driver((1, 'a', {'spam': 'egg'},
|
||||
None),
|
||||
(2, 'b', None, None))
|
||||
|
||||
fake_driver2 = self._make_fake_driver((11, 'A', None),
|
||||
(12, 'B', None))
|
||||
fake_driver2 = self._make_fake_driver((11, 'A', None, None),
|
||||
(12, 'B', None, None))
|
||||
|
||||
self._setup_ext_mgr(http=fake_driver1(self.CONF),
|
||||
https=fake_driver2(self.CONF))
|
||||
|
@ -158,19 +165,20 @@ class TestBaseGetSamples(base.BaseTestCase):
|
|||
samples = self._get_samples('http://foo')
|
||||
|
||||
self.assertEqual(1, len(samples))
|
||||
self._assert_sample(samples[0], 1, 'a', {'spam': 'egg'})
|
||||
self._assert_sample(samples[0], 1, 'a', {'spam': 'egg'}, None)
|
||||
|
||||
def test_get_samples_multi_samples(self):
|
||||
fake_driver = self._make_fake_driver([(1, 'a', {'spam': 'egg'},),
|
||||
(2, 'b', None)])
|
||||
fake_driver = self._make_fake_driver([(1, 'a', {'spam': 'egg'},
|
||||
None),
|
||||
(2, 'b', None, None)])
|
||||
|
||||
self._setup_ext_mgr(http=fake_driver(self.CONF))
|
||||
|
||||
samples = self._get_samples('http://foo')
|
||||
|
||||
self.assertEqual(2, len(samples))
|
||||
self._assert_sample(samples[0], 1, 'a', {'spam': 'egg'})
|
||||
self._assert_sample(samples[1], 2, 'b', {})
|
||||
self._assert_sample(samples[0], 1, 'a', {'spam': 'egg'}, None)
|
||||
self._assert_sample(samples[1], 2, 'b', {}, None)
|
||||
|
||||
def test_get_samples_return_none(self):
|
||||
fake_driver = self._make_fake_driver(None)
|
||||
|
|
Loading…
Reference in New Issue