def test_get_reserved_metadata_with_namespace(self):
        mgr = manager.AgentManager(0, self.CONF)
        pollster = pollsters_instance.InstancePollster(self.CONF)
        samples = list(pollster.get_samples(mgr, {}, [self.instance]))
        self.assertEqual({'stack': '2cadc4b4-8789-123c-b4eg-edd2f0a9c128'},
                         samples[0].resource_metadata['user_metadata'])

        self.CONF.set_override('reserved_metadata_namespace', [])
        mgr = manager.AgentManager(0, self.CONF)
        pollster = pollsters_instance.InstancePollster(self.CONF)
        samples = list(pollster.get_samples(mgr, {}, [self.instance]))
        self.assertNotIn('user_metadata', samples[0].resource_metadata)
    def test_get_samples(self):
        self._mock_inspect_instance(
            virt_inspector.InstanceStats(memory_swap_in=1.0,
                                         memory_swap_out=2.0),
            virt_inspector.InstanceStats(memory_swap_in=3.0,
                                         memory_swap_out=4.0),
        )

        mgr = manager.AgentManager(0, self.CONF)

        def _check_memory_swap_in(expected_swap_in):
            pollster = instance_stats.MemorySwapInPollster(self.CONF)

            samples = list(pollster.get_samples(mgr, {}, [self.instance]))
            self.assertEqual(1, len(samples))
            self.assertEqual(set(['memory.swap.in']),
                             set([s.name for s in samples]))
            self.assertEqual(expected_swap_in, samples[0].volume)

        def _check_memory_swap_out(expected_swap_out):
            pollster = instance_stats.MemorySwapOutPollster(self.CONF)

            samples = list(pollster.get_samples(mgr, {}, [self.instance]))
            self.assertEqual(1, len(samples))
            self.assertEqual(set(['memory.swap.out']),
                             set([s.name for s in samples]))
            self.assertEqual(expected_swap_out, samples[0].volume)

        _check_memory_swap_in(1.0)
        _check_memory_swap_out(4.0)
Example #3
0
    def test_get_samples(self):
        next_value = iter((
            virt_inspector.CPUUtilStats(util=40),
            virt_inspector.CPUUtilStats(util=60),
        ))

        def inspect_cpu_util(name, duration):
            return next(next_value)

        self.inspector.inspect_cpu_util = (mock.
                                           Mock(side_effect=inspect_cpu_util))

        mgr = manager.AgentManager(0, self.CONF)
        pollster = cpu.CPUUtilPollster(self.CONF)

        def _verify_cpu_util_metering(expected_util):
            cache = {}
            samples = list(pollster.get_samples(mgr, cache, [self.instance]))
            self.assertEqual(1, len(samples))
            self.assertEqual(set(['cpu_util']),
                             set([s.name for s in samples]))
            self.assertEqual(expected_util, samples[0].volume)

        _verify_cpu_util_metering(40)
        _verify_cpu_util_metering(60)
Example #4
0
    def test_get_samples(self):
        next_value = iter((
            virt_inspector.MemoryBandwidthStats(total=1892352, local=1802240),
            virt_inspector.MemoryBandwidthStats(total=1081344, local=90112),
        ))

        def inspect_memory_bandwidth(instance, duration):
            return next(next_value)

        self.inspector.inspect_memory_bandwidth = mock.Mock(
            side_effect=inspect_memory_bandwidth)
        mgr = manager.AgentManager(0, self.CONF)

        def _check_memory_bandwidth_total(expected_usage):
            pollster = memory.MemoryBandwidthTotalPollster(self.CONF)

            samples = list(pollster.get_samples(mgr, {}, [self.instance]))
            self.assertEqual(1, len(samples))
            self.assertEqual(set(['memory.bandwidth.total']),
                             set([s.name for s in samples]))
            self.assertEqual(expected_usage, samples[0].volume)

        def _check_memory_bandwidth_local(expected_usage):
            pollster = memory.MemoryBandwidthLocalPollster(self.CONF)

            samples = list(pollster.get_samples(mgr, {}, [self.instance]))
            self.assertEqual(1, len(samples))
            self.assertEqual(set(['memory.bandwidth.local']),
                             set([s.name for s in samples]))
            self.assertEqual(expected_usage, samples[0].volume)

        _check_memory_bandwidth_total(1892352)
        _check_memory_bandwidth_local(90112)
Example #5
0
    def test_get_samples(self):
        next_value = iter((
            virt_inspector.CPUStats(time=1 * (10 ** 6), number=2),
            virt_inspector.CPUStats(time=3 * (10 ** 6), number=2),
            # cpu_time resets on instance restart
            virt_inspector.CPUStats(time=2 * (10 ** 6), number=2),
        ))

        def inspect_cpus(name):
            return next(next_value)

        self.inspector.inspect_cpus = mock.Mock(side_effect=inspect_cpus)

        mgr = manager.AgentManager(0, self.CONF)
        pollster = cpu.CPUPollster(self.CONF)

        def _verify_cpu_metering(expected_time):
            cache = {}
            samples = list(pollster.get_samples(mgr, cache, [self.instance]))
            self.assertEqual(1, len(samples))
            self.assertEqual(set(['cpu']), set([s.name for s in samples]))
            self.assertEqual(expected_time, samples[0].volume)
            self.assertEqual(2, samples[0].resource_metadata.get('cpu_number'))
            # ensure elapsed time between polling cycles is non-zero
            time.sleep(0.001)

        _verify_cpu_metering(1 * (10 ** 6))
        _verify_cpu_metering(3 * (10 ** 6))
        _verify_cpu_metering(2 * (10 ** 6))
Example #6
0
    def test_get_samples(self):
        next_value = iter((
            virt_inspector.CPUL3CacheUsageStats(l3_cache_usage=90112),
            virt_inspector.CPUL3CacheUsageStats(l3_cache_usage=180224),
        ))

        def inspect_cpu_l3_cache(name):
            return next(next_value)

        self.inspector.inspect_cpu_l3_cache = (mock.Mock(
            side_effect=inspect_cpu_l3_cache))

        mgr = manager.AgentManager(0, self.CONF)
        pollster = cpu.CPUL3CachePollster(self.CONF)

        def _verify_cpu_l3_cache_metering(expected_usage):
            cache = {}
            samples = list(pollster.get_samples(mgr, cache, [self.instance]))
            self.assertEqual(1, len(samples))
            self.assertEqual(set(['cpu_l3_cache']),
                             set([s.name for s in samples]))
            self.assertEqual(expected_usage, samples[0].volume)

        _verify_cpu_l3_cache_metering(90112)
        _verify_cpu_l3_cache_metering(180224)
    def test_builder(self):
        @staticmethod
        def fake_get_ext_mgr(namespace):
            if 'builder' in namespace:
                return extension.ExtensionManager.make_test_instance(
                    [
                        extension.Extension('builder',
                                            None,
                                            TestPollsterBuilder,
                                            None),
                    ]
                )
            else:
                return extension.ExtensionManager.make_test_instance(
                    [
                        extension.Extension('test',
                                            None,
                                            None,
                                            agentbase.TestPollster()),
                    ]
                )

        with mock.patch.object(manager.AgentManager, '_get_ext_mgr',
                               new=fake_get_ext_mgr):
            mgr = manager.AgentManager(namespaces=['central'])
            self.assertEqual(3, len(mgr.extensions))
            for ext in mgr.extensions:
                self.assertIn(ext.name, ['builder1', 'builder2', 'test'])
                self.assertIsInstance(ext.obj, agentbase.TestPollster)
Example #8
0
    def test_get_samples(self):
        self._mock_inspect_instance(
            virt_inspector.InstanceStats(memory_bandwidth_total=1892352,
                                         memory_bandwidth_local=1802240),
            virt_inspector.InstanceStats(memory_bandwidth_total=1081344,
                                         memory_bandwidth_local=90112),
        )

        mgr = manager.AgentManager(0, self.CONF)

        def _check_memory_bandwidth_total(expected_usage):
            pollster = instance_stats.MemoryBandwidthTotalPollster(self.CONF)

            samples = list(pollster.get_samples(mgr, {}, [self.instance]))
            self.assertEqual(1, len(samples))
            self.assertEqual(set(['memory.bandwidth.total']),
                             set([s.name for s in samples]))
            self.assertEqual(expected_usage, samples[0].volume)

        def _check_memory_bandwidth_local(expected_usage):
            pollster = instance_stats.MemoryBandwidthLocalPollster(self.CONF)

            samples = list(pollster.get_samples(mgr, {}, [self.instance]))
            self.assertEqual(1, len(samples))
            self.assertEqual(set(['memory.bandwidth.local']),
                             set([s.name for s in samples]))
            self.assertEqual(expected_usage, samples[0].volume)

        _check_memory_bandwidth_total(1892352)
        _check_memory_bandwidth_local(90112)
Example #9
0
 def test_get_flavor_name_as_metadata_instance_type(self):
     mgr = manager.AgentManager()
     pollster = pollsters_instance.InstancePollster()
     samples = list(pollster.get_samples(mgr, {}, [self.instance]))
     self.assertEqual(1, len(samples))
     self.assertEqual('m1.small',
                      samples[0].resource_metadata['instance_type'])
    def setUp(self):
        self.manager = manager.AgentManager()
        super(TestLocationMetadata, self).setUp()

        # Mimics an instance returned from nova api call
        self.INSTANCE_PROPERTIES = {'name': 'display name',
                                    'OS-EXT-SRV-ATTR:instance_name':
                                    'instance-000001',
                                    'OS-EXT-AZ:availability_zone':
                                    'foo-zone',
                                    'reservation_id': 'reservation id',
                                    'architecture': 'x86_64',
                                    'kernel_id': 'kernel id',
                                    'os_type': 'linux',
                                    'ramdisk_id': 'ramdisk id',
                                    'status': 'active',
                                    'ephemeral_gb': 0,
                                    'root_gb': 20,
                                    'disk_gb': 20,
                                    'image': {'id': 1,
                                              'links': [{"rel": "bookmark",
                                                         'href': 2}]},
                                    'hostId': '1234-5678',
                                    'flavor': {'id': 1,
                                               'disk': 20,
                                               'ram': 512,
                                               'vcpus': 2,
                                               'ephemeral': 0},
                                    'metadata': {'metering.autoscale.group':
                                                 'X' * 512,
                                                 'metering.ephemeral_gb': 42}}

        self.instance = FauxInstance(**self.INSTANCE_PROPERTIES)
Example #11
0
    def test_get_samples(self):
        self._mock_inspect_instance(
            virt_inspector.InstanceStats(memory_resident=1.0),
            virt_inspector.InstanceStats(memory_resident=2.0),
            virt_inspector.InstanceStats(),
            virt_inspector.InstanceShutOffException(),
        )

        mgr = manager.AgentManager(0, self.CONF)
        pollster = instance_stats.MemoryResidentPollster(self.CONF)

        @mock.patch('ceilometer.compute.pollsters.LOG')
        def _verify_resident_memory_metering(expected_count,
                                             expected_resident_memory_mb,
                                             expected_warnings, mylog):
            samples = list(pollster.get_samples(mgr, {}, [self.instance]))
            self.assertEqual(expected_count, len(samples))
            if expected_count > 0:
                self.assertEqual(set(['memory.resident']),
                                 set([s.name for s in samples]))
                self.assertEqual(expected_resident_memory_mb,
                                 samples[0].volume)
            else:
                self.assertEqual(expected_warnings, mylog.warning.call_count)
            self.assertEqual(0, mylog.exception.call_count)

        _verify_resident_memory_metering(1, 1.0, 0)
        _verify_resident_memory_metering(1, 2.0, 0)
        _verify_resident_memory_metering(0, 0, 1)
        _verify_resident_memory_metering(0, 0, 0)
Example #12
0
    def _check_get_samples_cache(self, factory):
        vnic0 = virt_inspector.Interface(name='vnet0',
                                         fref='fa163e71ec6e',
                                         mac='fa:16:3e:71:ec:6d',
                                         parameters=dict(
                                             ip='10.0.0.2',
                                             projmask='255.255.255.0',
                                             projnet='proj1',
                                             dhcp_server='10.0.0.1'))
        stats0 = virt_inspector.InterfaceStats(rx_bytes=1,
                                               rx_packets=2,
                                               rx_drop=20,
                                               rx_errors=21,
                                               tx_bytes=3,
                                               tx_packets=4,
                                               tx_drop=22,
                                               tx_errors=23)
        vnics = [(vnic0, stats0)]

        mgr = manager.AgentManager(0, self.CONF)
        pollster = factory(self.CONF)
        cache = {
            pollster.CACHE_KEY_VNIC: {
                self.instance.id: vnics,
            },
        }
        samples = list(pollster.get_samples(mgr, cache, [self.instance]))
        self.assertEqual(1, len(samples))
    def test_get_samples(self):
        self._mock_inspect_instance(
            virt_inspector.InstanceStats(cpu_time=1 * (10**6),
                                         cpu_number=2,
                                         vcpu_number=2),
            virt_inspector.InstanceStats(cpu_time=3 * (10**6),
                                         cpu_number=2,
                                         vcpu_number=2),
            # cpu_time resets on instance restart
            virt_inspector.InstanceStats(cpu_time=2 * (10**6),
                                         cpu_number=2,
                                         vcpu_number=2),
        )

        mgr = manager.AgentManager(0, self.CONF)
        pollster = instance_stats.CPUPollster(self.CONF)

        def _verify_cpu_metering(expected_time):
            cache = {}
            samples = list(pollster.get_samples(mgr, cache, [self.instance]))
            self.assertEqual(1, len(samples))
            self.assertEqual(set(['cpu']), set([s.name for s in samples]))
            self.assertEqual(expected_time, samples[0].volume)
            self.assertEqual(2, samples[0].resource_metadata.get('cpu_number'))
            self.assertEqual(2,
                             samples[0].resource_metadata.get('vcpu_number'))
            # ensure elapsed time between polling cycles is non-zero
            time.sleep(0.001)

        _verify_cpu_metering(1 * (10**6))
        _verify_cpu_metering(3 * (10**6))
        _verify_cpu_metering(2 * (10**6))
Example #14
0
 def test_load_normal_plugins(self):
     mgr = manager.AgentManager(0,
                                self.conf,
                                namespaces=['ipmi'],
                                pollster_list=['hardware.ipmi.node.*'])
     # 8 pollsters for Node Manager
     self.assertEqual(8, len(mgr.extensions))
Example #15
0
    def test_get_samples(self):
        next_value = iter((
            virt_inspector.MemoryUsageStats(usage=1.0),
            virt_inspector.MemoryUsageStats(usage=2.0),
        ))

        def inspect_memory_usage(instance, duration):
            return next(next_value)

        (self.inspector.inspect_memory_usage) = mock.Mock(
            side_effect=inspect_memory_usage)

        mgr = manager.AgentManager()
        pollster = memory.MemoryUsagePollster()

        def _verify_memory_metering(expected_memory_mb):
            cache = {}
            samples = list(pollster.get_samples(mgr, cache, [self.instance]))
            self.assertEqual(1, len(samples))
            self.assertEqual(set(['memory.usage']),
                             set([s.name for s in samples]))
            self.assertEqual(expected_memory_mb, samples[0].volume)

        _verify_memory_metering(1.0)
        _verify_memory_metering(2.0)
Example #16
0
 def setUp(self):
     super(TestRunTasks, self).setUp()
     self.notifications = []
     self.stubs.Set(rpc, 'cast', self.faux_notify)
     self.mgr = manager.AgentManager()
     self.mgr.pollsters = [('test', self.Pollster())]
     self.ctx = context.RequestContext("user", "project")
     self.mgr.periodic_tasks(self.ctx)
Example #17
0
 def setUp(self):
     super(_BaseTestVPNPollster, self).setUp()
     self.addCleanup(mock.patch.stopall)
     self.context = context.get_admin_context()
     self.manager = manager.AgentManager()
     plugin_base._get_keystone = mock.Mock()
     plugin_base._get_keystone.service_catalog.get_endpoints = (
         mock.MagicMock(return_value={'network': mock.ANY}))
Example #18
0
 def setUp(self):
     super(_BaseTestVPNPollster, self).setUp()
     self.addCleanup(mock.patch.stopall)
     self.manager = manager.AgentManager()
     plugin_base._get_keystone = mock.Mock()
     catalog = (plugin_base._get_keystone.session.auth.get_access.
                return_value.service_catalog)
     catalog.get_endpoints = mock.MagicMock(
         return_value={'network': mock.ANY})
Example #19
0
    def test_get_samples_with_empty_stats(self):
        self._mock_inspect_instance(virt_inspector.NoDataException())
        mgr = manager.AgentManager(0, self.CONF)
        pollster = instance_stats.MemoryBandwidthTotalPollster(self.CONF)

        def all_samples():
            return list(pollster.get_samples(mgr, {}, [self.instance]))

        self.assertRaises(plugin_base.PollsterPermanentError, all_samples)
Example #20
0
    def test_load_failed_plugins(self, LOG):
        mgr = manager.AgentManager(namespaces=['ipmi'],
                                   pollster_list=['hardware.ipmi.node.*'])
        # 0 pollsters
        self.assertEqual(0, len(mgr.extensions))

        err_msg = 'Skip loading extension for hardware.ipmi.node.%s'
        pollster_names = ['power', 'temperature']
        calls = [mock.call(err_msg % n) for n in pollster_names]
        LOG.error.assert_has_calls(calls=calls, any_order=True)
Example #21
0
    def test_get_reserved_metadata_with_keys(self):
        self.CONF = self.useFixture(fixture_config.Config()).conf
        self.CONF.set_override('reserved_metadata_keys', ['fqdn'])

        mgr = manager.AgentManager()
        pollster = pollsters_instance.InstancePollster()
        samples = list(pollster.get_samples(mgr, {}, [self.instance]))
        self.assertEqual({'fqdn': 'vm_fqdn',
                          'stack': '2cadc4b4-8789-123c-b4eg-edd2f0a9c128'},
                         samples[0].resource_metadata['user_metadata'])
Example #22
0
    def test_get_reserved_metadata_with_keys(self):
        self.CONF.set_override('reserved_metadata_keys', ['fqdn'])

        mgr = manager.AgentManager(0, self.CONF)
        pollster = cpu.CPUPollster(self.CONF)
        samples = list(pollster.get_samples(mgr, {}, [self.instance]))
        self.assertEqual(
            {
                'fqdn': 'vm_fqdn',
                'stack': '2cadc4b4-8789-123c-b4eg-edd2f0a9c128'
            }, samples[0].resource_metadata['user_metadata'])
Example #23
0
 def test_metadata(self):
     factory = net.OutgoingBytesPollster
     pollster = factory(self.CONF)
     mgr = manager.AgentManager(0, self.CONF)
     pollster = factory(self.CONF)
     s = list(pollster.get_samples(mgr, {}, [self.faux_instance]))[0]
     user_metadata = s.resource_metadata['user_metadata']
     expected = self.INSTANCE_PROPERTIES[
         'metadata']['metering.autoscale.group'][:256]
     self.assertEqual(expected, user_metadata['autoscale_group'])
     self.assertEqual(2, len(user_metadata))
Example #24
0
 def setUp(self):
     super(_BaseTestFWPollster, self).setUp()
     self.addCleanup(mock.patch.stopall)
     conf = service.prepare_service([], [])
     self.CONF = self.useFixture(fixture_config.Config(conf)).conf
     self.manager = manager.AgentManager(0, self.CONF)
     plugin_base._get_keystone = mock.Mock()
     catalog = (plugin_base._get_keystone.session.auth.get_access.
                return_value.service_catalog)
     catalog.get_endpoints = mock.MagicMock(
         return_value={'network': mock.ANY})
Example #25
0
 def test_get_samples_instance(self):
     mgr = manager.AgentManager()
     pollster = pollsters_instance.InstancePollster()
     samples = list(pollster.get_samples(mgr, {}, [self.instance]))
     self.assertEqual(1, len(samples))
     self.assertEqual('instance', samples[0].name)
     self.assertEqual(1, samples[0].resource_metadata['vcpus'])
     self.assertEqual(512, samples[0].resource_metadata['memory_mb'])
     self.assertEqual(20, samples[0].resource_metadata['disk_gb'])
     self.assertEqual(20, samples[0].resource_metadata['root_gb'])
     self.assertEqual(0, samples[0].resource_metadata['ephemeral_gb'])
     self.assertEqual('active', samples[0].resource_metadata['status'])
Example #26
0
 def setUp(self):
     super(_BaseTestLBPollster, self).setUp()
     self.addCleanup(mock.patch.stopall)
     self.manager = manager.AgentManager()
     cfg.CONF.set_override('neutron_lbaas_version',
                           'v1',
                           group='service_types')
     plugin_base._get_keystone = mock.Mock()
     catalog = (plugin_base._get_keystone.session.auth.get_access.
                return_value.service_catalog)
     catalog.get_endpoints = mock.MagicMock(
         return_value={'network': mock.ANY})
Example #27
0
    def test_get_samples(self):
        fake_value = virt_inspector.PerfEventsStats(cpu_cycles=7259361,
                                                    instructions=8815623,
                                                    cache_references=74184,
                                                    cache_misses=16737)

        def inspect_perf_events(instance, duration):
            return fake_value

        self.inspector.inspect_perf_events = mock.Mock(
            side_effect=inspect_perf_events)
        mgr = manager.AgentManager(0, self.CONF)

        def _check_perf_events_cpu_cycles(expected_usage):
            pollster = perf.PerfEventsCPUCyclesPollster(self.CONF)

            samples = list(pollster.get_samples(mgr, {}, [self.instance]))
            self.assertEqual(1, len(samples))
            self.assertEqual(set(['perf.cpu.cycles']),
                             set([s.name for s in samples]))
            self.assertEqual(expected_usage, samples[0].volume)

        def _check_perf_events_instructions(expected_usage):
            pollster = perf.PerfEventsInstructionsPollster(self.CONF)

            samples = list(pollster.get_samples(mgr, {}, [self.instance]))
            self.assertEqual(1, len(samples))
            self.assertEqual(set(['perf.instructions']),
                             set([s.name for s in samples]))
            self.assertEqual(expected_usage, samples[0].volume)

        def _check_perf_events_cache_references(expected_usage):
            pollster = perf.PerfEventsCacheReferencesPollster(self.CONF)

            samples = list(pollster.get_samples(mgr, {}, [self.instance]))
            self.assertEqual(1, len(samples))
            self.assertEqual(set(['perf.cache.references']),
                             set([s.name for s in samples]))
            self.assertEqual(expected_usage, samples[0].volume)

        def _check_perf_events_cache_misses(expected_usage):
            pollster = perf.PerfEventsCacheMissesPollster(self.CONF)

            samples = list(pollster.get_samples(mgr, {}, [self.instance]))
            self.assertEqual(1, len(samples))
            self.assertEqual(set(['perf.cache.misses']),
                             set([s.name for s in samples]))
            self.assertEqual(expected_usage, samples[0].volume)

        _check_perf_events_cpu_cycles(7259361)
        _check_perf_events_instructions(8815623)
        _check_perf_events_cache_references(74184)
        _check_perf_events_cache_misses(16737)
Example #28
0
    def test_get_samples_no_caching(self):
        cpu_stats = virt_inspector.CPUStats(time=1 * (10 ** 6), number=2)
        self.inspector.inspect_cpus = mock.Mock(return_value=cpu_stats)

        mgr = manager.AgentManager(0, self.CONF)
        pollster = cpu.CPUPollster(self.CONF)

        cache = {}
        samples = list(pollster.get_samples(mgr, cache, [self.instance]))
        self.assertEqual(1, len(samples))
        self.assertEqual(10 ** 6, samples[0].volume)
        self.assertEqual(0, len(cache))
Example #29
0
 def test_load_failed_plugins(self, LOG):
     # Here we additionally check that namespaces will be converted to the
     # list if param was not set as a list.
     try:
         manager.AgentManager(namespaces='ipmi',
                              pollster_list=['hardware.ipmi.node.*'])
     except manager.EmptyPollstersList:
         err_msg = 'Skip loading extension for hardware.ipmi.node.%s'
         pollster_names = [
             'power', 'temperature', 'outlet_temperature',
             'airflow', 'cups', 'cpu_util', 'mem_util', 'io_util']
         calls = [mock.call(err_msg % n) for n in pollster_names]
         LOG.exception.assert_has_calls(calls=calls, any_order=True)
Example #30
0
 def test_get_metadata(self):
     mgr = manager.AgentManager(0, self.CONF)
     pollster = cpu.CPUPollster(self.CONF)
     samples = list(pollster.get_samples(mgr, {}, [self.instance]))
     self.assertEqual(1, len(samples))
     self.assertEqual(1, samples[0].resource_metadata['vcpus'])
     self.assertEqual(512, samples[0].resource_metadata['memory_mb'])
     self.assertEqual(20, samples[0].resource_metadata['disk_gb'])
     self.assertEqual(20, samples[0].resource_metadata['root_gb'])
     self.assertEqual(0, samples[0].resource_metadata['ephemeral_gb'])
     self.assertEqual('active', samples[0].resource_metadata['status'])
     self.assertEqual('active', samples[0].resource_metadata['state'])
     self.assertIsNone(samples[0].resource_metadata['task_state'])