Пример #1
0
    def test_always_query(self):
        host_a = scheduler_models.Host(id=2)
        self.assertEqual(host_a.hostname, 'host2')
        self._do_query('UPDATE afe_hosts SET hostname="host2-updated" '
                       'WHERE id=2')
        host_b = scheduler_models.Host(id=2, always_query=True)
        self.assertTrue(host_a is host_b, 'Cached instance not returned.')
        self.assertEqual(host_a.hostname, 'host2-updated',
                         'Database was not re-queried')

        # If either of these are called, a query was made when it shouldn't be.
        host_a._compare_fields_in_row = lambda _: self.fail('eek! a query!')
        host_a._update_fields_from_row = host_a._compare_fields_in_row
        host_c = scheduler_models.Host(id=2, always_query=False)
        self.assertTrue(host_a is host_c, 'Cached instance not returned')
Пример #2
0
    def test_cmp_for_sort(self):
        expected_order = [
            'alice', 'Host1', 'host2', 'host3', 'host09', 'HOST010',
            'host10', 'host11', 'yolkfolk']
        hostname_idx = list(scheduler_models.Host._fields).index('hostname')
        row = [None] * len(scheduler_models.Host._fields)
        hosts = []
        for hostname in expected_order:
            row[hostname_idx] = hostname
            hosts.append(scheduler_models.Host(row=row, new_record=True))

        host1 = hosts[expected_order.index('Host1')]
        host010 = hosts[expected_order.index('HOST010')]
        host10 = hosts[expected_order.index('host10')]
        host3 = hosts[expected_order.index('host3')]
        alice = hosts[expected_order.index('alice')]
        self.assertEqual(0, scheduler_models.Host.cmp_for_sort(host10, host10))
        self.assertEqual(1, scheduler_models.Host.cmp_for_sort(host10, host010))
        self.assertEqual(-1, scheduler_models.Host.cmp_for_sort(host010, host10))
        self.assertEqual(-1, scheduler_models.Host.cmp_for_sort(host1, host10))
        self.assertEqual(-1, scheduler_models.Host.cmp_for_sort(host1, host010))
        self.assertEqual(-1, scheduler_models.Host.cmp_for_sort(host3, host10))
        self.assertEqual(-1, scheduler_models.Host.cmp_for_sort(host3, host010))
        self.assertEqual(1, scheduler_models.Host.cmp_for_sort(host3, host1))
        self.assertEqual(-1, scheduler_models.Host.cmp_for_sort(host1, host3))
        self.assertEqual(-1, scheduler_models.Host.cmp_for_sort(alice, host3))
        self.assertEqual(1, scheduler_models.Host.cmp_for_sort(host3, alice))
        self.assertEqual(0, scheduler_models.Host.cmp_for_sort(alice, alice))

        hosts.sort(cmp=scheduler_models.Host.cmp_for_sort)
        self.assertEqual(expected_order, [h.hostname for h in hosts])

        hosts.reverse()
        hosts.sort(cmp=scheduler_models.Host.cmp_for_sort)
        self.assertEqual(expected_order, [h.hostname for h in hosts])
Пример #3
0
 def test_delete(self):
     host = scheduler_models.Host(id=3)
     host.delete()
     host = self.assertRaises(scheduler_models.DBError, scheduler_models.Host, id=3,
                              always_query=False)
     host = self.assertRaises(scheduler_models.DBError, scheduler_models.Host, id=3,
                              always_query=True)
Пример #4
0
 def test_compare_fields_in_row(self):
     host = scheduler_models.Host(id=1)
     fields = list(host._fields)
     row_data = [getattr(host, fieldname) for fieldname in fields]
     self.assertEqual({}, host._compare_fields_in_row(row_data))
     row_data[fields.index('hostname')] = 'spam'
     self.assertEqual({'hostname': ('host1', 'spam')},
                      host._compare_fields_in_row(row_data))
     row_data[fields.index('id')] = 23
     self.assertEqual({'hostname': ('host1', 'spam'), 'id': (1, 23)},
                      host._compare_fields_in_row(row_data))