Ejemplo n.º 1
0
 def test_multiple_cpu_flags(self):
     with session.begin():
         system = data_setup.create_system()
         system.cpu = Cpu(flags=['flag1', 'flag2'])
         another_system = data_setup.create_system()
         another_system.cpu = Cpu(flags=['flag3'])
     b = self.browser
     perform_search(b, [('CPU/Flags', 'is', 'flag1'),
             ('CPU/Flags', 'is', 'flag2')])
     check_system_search_results(b, present=[system],
             absent=[another_system])
Ejemplo n.º 2
0
 def test_systems_by_cpu_core_count(self):
     for _ in range(3):
         data_setup.create_system(arch=u'i386').cpu = Cpu(cores=39)
     for _ in range(3):
         data_setup.create_system(arch=u'i386').cpu = Cpu(cores=41)
     data_setup.create_system(arch=u'i386', memory=None)  # un-inventoried
     session.flush()
     system_counts = dict(
         ((arch, cpu_cores), count)
         for arch, cpu_cores, count in self.execute_reporting_query(
             'system-count-by-arch-cpu-cores'))
     self.assert_(system_counts[('i386', None)] >= 1, system_counts)
     self.assert_(system_counts[('i386', 39)] >= 3, system_counts)
     self.assert_(system_counts[('i386', 41)] >= 3, system_counts)
Ejemplo n.º 3
0
    def test_system_details_includes_cpus(self):
        with session.begin():
            cpu = Cpu(cores=5,
                      family=6,
                      model=7,
                      model_name='Intel',
                      flags=['beer', 'frob'],
                      processors=6,
                      sockets=2,
                      speed=24,
                      stepping=2,
                      vendor='Transmeta')
            session.add(cpu)
            self.system.cpu = cpu

        response = requests.get(get_server_base() +
                                'systems/%s' % self.system.fqdn)
        json = response.json()
        self.assertEqual([u'beer', u'frob'], json['cpu_flags'])
        self.assertEqual(5, json['cpu_cores'])
        self.assertEqual(6, json['cpu_family'])
        self.assertEqual(7, json['cpu_model'])
        self.assertEqual(u'Intel', json['cpu_model_name'])
        self.assertEqual(True, json['cpu_hyper'])
        self.assertEqual(6, json['cpu_processors'])
        self.assertEqual(2, json['cpu_sockets'])
        self.assertEqual(24, json['cpu_speed'])
        self.assertEqual(2, json['cpu_stepping'])
        self.assertEqual('Transmeta', json['cpu_vendor'])
Ejemplo n.º 4
0
 def test_predefined_host_filter(self):
     with session.begin():
         matching = data_setup.create_system()
         matching.cpu = Cpu(family=6, model=47, model_name=u'Intel')
         nonmatching = data_setup.create_system()
     out = run_client(
         ['bkr', 'list-systems', '--host-filter', 'INTEL__WESTMERE'])
     returned_systems = out.splitlines()
     self.assertIn(matching.fqdn, returned_systems)
     self.assertNotIn(nonmatching.fqdn, returned_systems)
Ejemplo n.º 5
0
 def test_cpu_speed_is_decimal(self):
     system = data_setup.create_system(
         fqdn=u'cpu-speed-decimal.test-rdf.invalid')
     system.cpu = Cpu(speed=2666.67)
     session.flush()
     graph = self.describe(system)
     speed_literal = graph.value(
         subject=URIRef(get_server_base() +
                        'view/cpu-speed-decimal.test-rdf.invalid#system'),
         predicate=INV.cpuSpeed,
         any=False)
     self.assertEqual(speed_literal.datatype,
                      URIRef('http://www.w3.org/2001/XMLSchema#decimal'))
Ejemplo n.º 6
0
 def test_systems_by_cpu_type(self):
     vendor = u'AcmeCorp'
     common_cpu_family = 1
     common_cpu_stepping = 2
     rare_cpu_family = 3
     rare_cpu_stepping = 4
     for _ in range(2):
         data_setup.create_system().cpu = Cpu(vendor=vendor,
                                              model=1,
                                              family=rare_cpu_family,
                                              stepping=rare_cpu_stepping)
     for _ in range(20):
         data_setup.create_system().cpu = Cpu(vendor=vendor,
                                              model=1,
                                              family=common_cpu_family,
                                              stepping=common_cpu_stepping)
     data_setup.create_system(status=SystemStatus.removed).cpu = \
         Cpu(vendor=vendor)
     data_setup.create_system().cpu = None  # un-inventoried
     session.flush()
     rows = list(self.execute_reporting_query('system-count-by-cpu'))
     # un-inventoried systems should show up at the top
     self.assertEquals(rows[0].cpu_vendor, None)
     self.assertEquals(rows[0].cpu_model, None)
     self.assertEquals(rows[0].cpu_family, None)
     self.assertEquals(rows[0].cpu_stepping, None)
     self.assert_(rows[0].system_count >= 1, rows[0])
     # check for fake CPUs created above
     vendor_rows = [row for row in rows if row.cpu_vendor == vendor]
     self.assertEquals(len(vendor_rows), 2, vendor_rows)
     self.assertEquals(vendor_rows[0].cpu_model, 1)
     self.assertEquals(vendor_rows[0].cpu_family, common_cpu_family)
     self.assertEquals(vendor_rows[0].cpu_stepping, common_cpu_stepping)
     self.assertEquals(vendor_rows[0].system_count, 20)
     self.assertEquals(vendor_rows[1].cpu_model, 1)
     self.assertEquals(vendor_rows[1].cpu_family, rare_cpu_family)
     self.assertEquals(vendor_rows[1].cpu_stepping, rare_cpu_stepping)
     self.assertEquals(vendor_rows[1].system_count, 2)
Ejemplo n.º 7
0
 def test_cpu_flags(self):
     excluded = data_setup.create_system()
     excluded.cpu = Cpu(processors=1, flags=[u'ssse3', 'pae'])
     included = data_setup.create_system()
     included.cpu = Cpu(processors=1, flags=[u'ssse3', 'vmx'])
     self.check_filter("""
         <hostRequires>
             <cpu><flag value="vmx" /></cpu>
         </hostRequires>
         """,
         present=[included], absent=[excluded])
     self.check_filter("""
         <hostRequires>
             <cpu><flag op="!=" value="pae" /></cpu>
         </hostRequires>
         """,
         present=[included], absent=[excluded])
     self.check_filter("""
         <hostRequires>
             <cpu><flag op="like" value="%vmx%" /></cpu>
         </hostRequires>
         """,
         present=[included], absent=[excluded])
Ejemplo n.º 8
0
 def setUpClass(cls):
     with session.begin():
         # ensure we have lots of systems
         for cores in [1, 2, 3]:
             for vendor, model, status, type, user in zip(
                 [u'Acer', u'Dell', u'HP'],
                 [u'slow model', u'fast model', u'big model'],
                 [u'Automated', u'Manual', u'Removed'],
                 [u'Machine', u'Prototype'],
                 [data_setup.create_user() for _ in range(3)]):
                 system = data_setup.create_system(vendor=vendor,
                                                   model=model,
                                                   status=status,
                                                   type=type)
                 system.user = data_setup.create_user()
                 system.cpu = Cpu(cores=cores)
Ejemplo n.º 9
0
 def test_multiple_xml_filters(self):
     with session.begin():
         module_key = Key.by_name(u'MODULE')
         matching = data_setup.create_system()
         matching.cpu = Cpu(family=6, model=47, model_name=u'Intel')
         matching.key_values_string.append(
             Key_Value_String(module_key, u'cciss'))
         nonmatching = data_setup.create_system()
     out = run_client([
         'bkr', 'list-systems', '--xml-filter',
         '<not><lender value="shark"/></not>', '--xml-filter',
         '<key_value key="MODULE" value="cciss"/>', '--host-filter',
         'INTEL__WESTMERE'
     ])
     returned_systems = out.splitlines()
     self.assertIn(matching.fqdn, returned_systems)
     self.assertNotIn(nonmatching.fqdn, returned_systems)
Ejemplo n.º 10
0
 def setUpClass(cls):
     with session.begin():
         # ensure we have lots of systems
         for cores in [1, 2, 3]:
             for vendor, model, status, type, reserved_since, user in zip(
                 [u'Acer', u'Dell', u'HP'],
                 [u'slow model', u'fast model', u'big model'],
                 [u'Automated', u'Manual', u'Removed'],
                 [u'Machine', u'Prototype'], [
                     datetime.datetime(2012, 10, 31, 23, 0, 0),
                     datetime.datetime(2015, 1, 1, 6, 0, 0),
                     datetime.datetime(2020, 1, 6, 10, 0, 0),
                 ], [data_setup.create_user() for _ in range(3)]):
                 system = data_setup.create_system(vendor=vendor,
                                                   model=model,
                                                   status=status,
                                                   type=type)
                 system.cpu = Cpu(cores=cores)
                 system.user = user
                 system.lab_controller = data_setup.create_labcontroller()
                 data_setup.create_manual_reservation(system,
                                                      reserved_since,
                                                      user=user)
Ejemplo n.º 11
0
    def setUpClass(cls):
        cls.system_one_details = {
            'fqdn': u'a1',
            'type': u'Machine',
            'arch': u'i386',
            'status': u'Automated',
            'owner': data_setup.create_user(),
        }
        cls.system_one = data_setup.create_system(**cls.system_one_details)
        cls.system_one.loaned = data_setup.create_user()
        cls.system_one.numa = Numa(nodes=2)
        cls.system_one.key_values_string.append(
            Key_Value_String(Key.by_name(u'CPUMODEL'), 'foocodename'))
        cls.system_one.key_values_string.append(
            Key_Value_String(Key.by_name(u'HVM'), '1'))
        cls.system_one.cpu = Cpu(flags=['flag1', 'flag2'])

        cls.system_one.key_values_int.append(
            Key_Value_Int(Key.by_name(u'DISKSPACE'), '1024'))
        cls.system_one.key_values_int.append(
            Key_Value_Int(Key.by_name(u'MEMORY'), '4096'))

        cls.system_two_details = {
            'fqdn': u'a2',
            'type': u'Prototype',
            'arch': u'x86_64',
            'status': u'Manual',
            'owner': data_setup.create_user(),
        }
        cls.system_two = data_setup.create_system(**cls.system_two_details)
        cls.system_two.key_values_int.append(
            Key_Value_Int(Key.by_name(u'DISKSPACE'), '900'))
        cls.system_two.key_values_string.append(
            Key_Value_String(Key.by_name(u'HVM'), '1'))

        device_class = DeviceClass.lazy_create(device_class='class_type')
        device1 = Device.lazy_create(vendor_id='0000',
                                     device_id='0000',
                                     subsys_vendor_id='2223',
                                     subsys_device_id='2224',
                                     bus='0000',
                                     driver='0000',
                                     device_class_id=device_class.id,
                                     description='blah')
        cls.system_two.devices.append(device1)
        cls.system_three_details = {
            'fqdn': u'a3',
            'type': u'Laptop',
            'arch': u'ia64',
            'status': u'Automated',
            'owner': data_setup.create_user(),
        }
        cls.system_three = data_setup.create_system(**cls.system_three_details)
        cls.system_three.numa = Numa(nodes=1)
        device2 = Device.lazy_create(vendor_id='0000',
                                     device_id='0000',
                                     subsys_vendor_id='1111',
                                     subsys_device_id='1112',
                                     bus='0000',
                                     driver='0000',
                                     device_class_id=device_class.id,
                                     description='blah')
        cls.system_three.devices.append(device2)

        cls.system_four_details = {
            'status': u'Removed',
        }
        cls.system_four = data_setup.create_system(**cls.system_four_details)
        cls.system_four.key_values_string.append(
            Key_Value_String(Key.by_name(u'CPUMODEL'), 'foocodename'))
Ejemplo n.º 12
0
 def test_cpu(self):
     excluded = data_setup.create_system()
     excluded.cpu = Cpu(processors=1, cores=1, family=21,
                        model=2, sockets=1, speed=1400.0, stepping=0,
                        vendor=u'AuthenticAMD',
                        model_name=u'AMD Opteron(tm) Processor 6386 SE ')
     included = data_setup.create_system()
     included.cpu = Cpu(processors=4, cores=2, family=10,
                        model=4, sockets=2, speed=2000.0, stepping=1,
                        vendor=u'GenuineIntel',
                        model_name=u'Intel(R) Xeon(R) CPU E5-4650 0 @ 2.70GHz')
     self.check_filter("""
         <hostRequires>
             <and>
                 <cpu_count op="=" value="4" />
             </and>
         </hostRequires>
         """,
         present=[included], absent=[excluded])
     self.check_filter("""
         <hostRequires>
                 <cpu><processors op="=" value="4" /></cpu>
         </hostRequires>
         """,
         present=[included], absent=[excluded])
     self.check_filter("""
         <hostRequires>
             <and>
                 <cpu><processors op="&gt;" value="2" /></cpu>
                 <cpu><processors op="&lt;" value="5" /></cpu>
             </and>
         </hostRequires>
         """,
         present=[included], absent=[excluded])
     self.check_filter("""
         <hostRequires>
             <and>
                 <cpu_count op="&gt;" value="2" />
                 <cpu_count op="&lt;" value="5" />
             </and>
         </hostRequires>
         """,
         present=[included], absent=[excluded])
     self.check_filter("""
         <hostRequires>
             <cpu><cores op="&gt;" value="1" /></cpu>
         </hostRequires>
         """,
         present=[included], absent=[excluded])
     self.check_filter("""
         <hostRequires>
             <cpu><family op="=" value="10" /></cpu>
         </hostRequires>
         """,
         present=[included], absent=[excluded])
     self.check_filter("""
         <hostRequires>
             <cpu><model op="=" value="4" /></cpu>
         </hostRequires>
         """,
         present=[included], absent=[excluded])
     self.check_filter("""
         <hostRequires>
             <cpu><sockets op="&gt;=" value="2" /></cpu>
         </hostRequires>
         """,
         present=[included], absent=[excluded])
     self.check_filter("""
         <hostRequires>
             <cpu><speed op="&gt;=" value="1500.0" /></cpu>
         </hostRequires>
         """,
         present=[included], absent=[excluded])
     self.check_filter("""
         <hostRequires>
             <cpu><stepping op="&gt;=" value="1" /></cpu>
         </hostRequires>
         """,
         present=[included], absent=[excluded])
     self.check_filter("""
         <hostRequires>
             <cpu><vendor op="like" value="%Intel" /></cpu>
         </hostRequires>
         """,
         present=[included], absent=[excluded])
     self.check_filter("""
         <hostRequires>
             <cpu><model_name op="like" value="%Xeon%" /></cpu>
         </hostRequires>
         """,
         present=[included], absent=[excluded])
     self.check_filter("""
         <hostRequires>
             <cpu><hyper value="true" /></cpu>
         </hostRequires>
         """,
         present=[included], absent=[excluded])