Use type for HID

This commit is contained in:
Xavier Bustamante Talavera 2019-01-02 17:52:43 +01:00
parent 710432ef12
commit 5fb1471d9b
9 changed files with 179 additions and 17 deletions

View File

@ -128,7 +128,7 @@ class Dummy:
i, _ = user.get(res=Device, query=[('search', 'intel')]) i, _ = user.get(res=Device, query=[('search', 'intel')])
assert len(i['items']) == 12 assert len(i['items']) == 12
i, _ = user.get(res=Device, query=[('search', 'pc')]) i, _ = user.get(res=Device, query=[('search', 'pc')])
assert len(i['items']) == 13 assert len(i['items']) == 14
# Let's create a set of events for the pc device # Let's create a set of events for the pc device
# Make device Ready # Make device Ready

View File

@ -0,0 +1,158 @@
{
"software": "Workbench",
"endTime": "2018-09-22T19:05:47.005552+00:00",
"device": {
"events": [
{
"rate": 15.9663,
"type": "BenchmarkRamSysbench",
"elapsed": 16
},
{
"type": "StressTest",
"elapsed": 120
}
],
"model": "E627",
"chassis": "Netbook",
"serialNumber": "LXN650207893942DE21601",
"type": "Laptop",
"manufacturer": "eMachines"
},
"elapsed": 451,
"expectedEvents": [
"Benchmark",
"TestDataStorage",
"StressTest"
],
"components": [
{
"events": [],
"model": "Video WebCam",
"serialNumber": "CN0314-SN30-OV035-VA-R05.00.00",
"type": "SoundCard",
"manufacturer": "SuYin"
},
{
"events": [],
"model": "SBx00 Azalia",
"serialNumber": null,
"type": "SoundCard",
"manufacturer": "Advanced Micro Devices, Inc. AMD/ATI"
},
{
"speed": 400.0,
"size": 2048,
"format": "DIMM",
"events": [],
"model": "HYMP125S64CP8-S6",
"interface": "DDR2",
"type": "RamModule",
"manufacturer": null,
"serialNumber": null
},
{
"speed": 400.0,
"size": 2048,
"format": "DIMM",
"events": [],
"model": "HYMP125S64CP8-S6",
"interface": "DDR2",
"type": "RamModule",
"manufacturer": null,
"serialNumber": null
},
{
"speed": 0.8,
"address": 64,
"serialNumber": null,
"events": [
{
"rate": 173.6996,
"type": "BenchmarkProcessorSysbench",
"elapsed": 174
},
{
"rate": 3191.96,
"type": "BenchmarkProcessor",
"elapsed": 0
}
],
"model": "AMD Athlon Processor TF-20",
"threads": 1,
"cores": 1,
"type": "Processor",
"manufacturer": "Advanced Micro Devices AMD"
},
{
"events": [],
"model": "AR9285 Wireless Network Adapter",
"serialNumber": "0c:60:76:5f:49:91",
"type": "NetworkAdapter",
"manufacturer": "Qualcomm Atheros",
"wireless": true
},
{
"speed": 100,
"events": [],
"model": "AR8132 Fast Ethernet",
"serialNumber": "00:26:22:59:a1:56",
"type": "NetworkAdapter",
"manufacturer": "Qualcomm Atheros",
"wireless": false
},
{
"size": 152627,
"serialNumber": "WD-WX80A8996018",
"events": [
{
"writeSpeed": 17.8,
"type": "BenchmarkDataStorage",
"elapsed": 20,
"readSpeed": 59.8
},
{
"currentPendingSectorCount": 0,
"length": "Short",
"elapsed": 117,
"reallocatedSectorCount": 0,
"powerCycleCount": 2872,
"offlineUncorrectable": 0,
"type": "TestDataStorage",
"lifetime": 2775,
"assessment": true,
"status": "Completed without error"
}
],
"model": "WDC WD1600BEVT-2",
"interface": "ATA",
"type": "HardDrive",
"manufacturer": "Western Digital"
},
{
"events": [],
"model": "RS780M Mobility Radeon HD 3200",
"serialNumber": null,
"type": "GraphicCard",
"manufacturer": "Advanced Micro Devices, Inc. AMD/ATI",
"memory": 256.0
},
{
"slots": 4,
"firewire": 0,
"events": [],
"model": "E627",
"usb": 3,
"serialNumber": "LXN650207893942DE21601",
"type": "Motherboard",
"manufacturer": "eMachines",
"serial": 1,
"pcmcia": 0
}
],
"uuid": "a01eacdb-db01-43ec-b6fb-a9b8cd21492d",
"type": "Snapshot",
"version": "11.0a4",
"closed": false
}

View File

@ -86,7 +86,7 @@ class Device(Thing):
def __init__(self, **kw) -> None: def __init__(self, **kw) -> None:
super().__init__(**kw) super().__init__(**kw)
with suppress(TypeError): with suppress(TypeError):
self.hid = Naming.hid(self.manufacturer, self.serial_number, self.model) self.hid = Naming.hid(self.type, self.manufacturer, self.model, self.serial_number)
@property @property
def events(self) -> list: def events(self) -> list:

View File

@ -105,6 +105,8 @@ class Sync:
try: try:
if component.hid: if component.hid:
db_component = Device.query.filter_by(hid=component.hid).one() db_component = Device.query.filter_by(hid=component.hid).one()
assert isinstance(db_component, Device), \
'{} must be a component'.format(db_component)
else: else:
# Is there a component similar to ours? # Is there a component similar to ours?
db_component = component.similar_one(parent, blacklist) db_component = component.similar_one(parent, blacklist)

View File

@ -5,7 +5,7 @@ click==6.7
click-spinner==0.1.8 click-spinner==0.1.8
colorama==0.3.9 colorama==0.3.9
colour==0.1.5 colour==0.1.5
ereuse-utils==0.4.0b11 ereuse-utils==0.4.0b13
Flask==1.0.2 Flask==1.0.2
Flask-Cors==3.0.6 Flask-Cors==3.0.6
Flask-SQLAlchemy==2.3.2 Flask-SQLAlchemy==2.3.2
@ -25,7 +25,7 @@ requests==2.19.1
requests-mock==1.5.2 requests-mock==1.5.2
SQLAlchemy==1.2.14 SQLAlchemy==1.2.14
SQLAlchemy-Utils==0.33.6 SQLAlchemy-Utils==0.33.6
teal==0.2.0a31 teal==0.2.0a32
webargs==4.0.0 webargs==4.0.0
Werkzeug==0.14.1 Werkzeug==0.14.1
sqlalchemy-citext==1.3.post0 sqlalchemy-citext==1.3.post0

View File

@ -29,10 +29,10 @@ setup(
long_description=long_description, long_description=long_description,
long_description_content_type='text/markdown', long_description_content_type='text/markdown',
install_requires=[ install_requires=[
'teal>=0.2.0a31', # teal always first 'teal>=0.2.0a32', # teal always first
'click', 'click',
'click-spinner', 'click-spinner',
'ereuse-utils[Naming]>=0.4b11', 'ereuse-utils[Naming]>=0.4b13',
'hashids', 'hashids',
'marshmallow_enum', 'marshmallow_enum',
'psycopg2-binary', 'psycopg2-binary',

View File

@ -342,7 +342,7 @@ def test_sync_execute_register_tag_linked_other_device_mismatch_between_tags():
db.session.add(Tag(id='foo-1', device=pc1)) db.session.add(Tag(id='foo-1', device=pc1))
pc2 = d.Desktop(**conftest.file('pc-components.db')['device']) pc2 = d.Desktop(**conftest.file('pc-components.db')['device'])
pc2.serial_number = 'pc2-serial' pc2.serial_number = 'pc2-serial'
pc2.hid = Naming.hid(pc2.manufacturer, pc2.serial_number, pc2.model) pc2.hid = Naming.hid(pc2.type, pc2.manufacturer, pc2.model, pc2.serial_number)
db.session.add(Tag(id='foo-2', device=pc2)) db.session.add(Tag(id='foo-2', device=pc2))
db.session.commit() db.session.commit()
@ -366,7 +366,7 @@ def test_sync_execute_register_mismatch_between_tags_and_hid():
db.session.add(Tag(id='foo-1', device=pc1)) db.session.add(Tag(id='foo-1', device=pc1))
pc2 = d.Desktop(**conftest.file('pc-components.db')['device']) pc2 = d.Desktop(**conftest.file('pc-components.db')['device'])
pc2.serial_number = 'pc2-serial' pc2.serial_number = 'pc2-serial'
pc2.hid = Naming.hid(pc2.manufacturer, pc2.serial_number, pc2.model) pc2.hid = Naming.hid(pc2.type, pc2.manufacturer, pc2.model, pc2.serial_number)
db.session.add(Tag(id='foo-2', device=pc2)) db.session.add(Tag(id='foo-2', device=pc2))
db.session.commit() db.session.commit()
@ -406,7 +406,7 @@ def test_get_device(app: Devicehub, user: UserClient):
assert 'events_one' not in pc, 'they are internal use only' assert 'events_one' not in pc, 'they are internal use only'
assert 'author' not in pc assert 'author' not in pc
assert tuple(c['id'] for c in pc['components']) == (2, 3) assert tuple(c['id'] for c in pc['components']) == (2, 3)
assert pc['hid'] == 'p1ma-p1s-p1mo' assert pc['hid'] == 'desktop-p1ma-p1mo-p1s'
assert pc['model'] == 'p1mo' assert pc['model'] == 'p1mo'
assert pc['manufacturer'] == 'p1ma' assert pc['manufacturer'] == 'p1ma'
assert pc['serialNumber'] == 'p1s' assert pc['serialNumber'] == 'p1s'

View File

@ -326,7 +326,7 @@ def test_erase_privacy_standards(user: UserClient):
s['components'][0]['events'][0]['severity'] = 'Error' s['components'][0]['events'][0]['severity'] = 'Error'
snapshot, _ = user.post(s, res=Snapshot) snapshot, _ = user.post(s, res=Snapshot)
storage, _ = user.get(res=m.Device, item=storage['id']) storage, _ = user.get(res=m.Device, item=storage['id'])
assert storage['hid'] == 'c1mr-c1s-c1ml' assert storage['hid'] == 'solidstatedrive-c1mr-c1ml-c1s'
assert storage['privacy']['type'] == 'EraseSectors' assert storage['privacy']['type'] == 'EraseSectors'
pc, _ = user.get(res=m.Device, item=snapshot['device']['id']) pc, _ = user.get(res=m.Device, item=snapshot['device']['id'])
assert pc['privacy'] == [storage['privacy']] assert pc['privacy'] == [storage['privacy']]

View File

@ -54,7 +54,7 @@ def test_workbench_server_condensed(user: UserClient):
device, _ = user.get(res=Device, item=snapshot['device']['id']) device, _ = user.get(res=Device, item=snapshot['device']['id'])
assert device['dataStorageSize'] == 1100 assert device['dataStorageSize'] == 1100
assert device['chassis'] == 'Tower' assert device['chassis'] == 'Tower'
assert device['hid'] == 'd1mr-d1s-d1ml' assert device['hid'] == 'desktop-d1mr-d1ml-d1s'
assert device['graphicCardModel'] == device['components'][0]['model'] == 'gc1-1ml' assert device['graphicCardModel'] == device['components'][0]['model'] == 'gc1-1ml'
assert device['networkSpeeds'] == [1000, 58] assert device['networkSpeeds'] == [1000, 58]
assert device['processorModel'] == device['components'][3]['model'] == 'p1-1ml' assert device['processorModel'] == device['components'][3]['model'] == 'p1-1ml'
@ -140,7 +140,7 @@ def test_real_hp_11(user: UserClient):
s = file('real-hp.snapshot.11') s = file('real-hp.snapshot.11')
snapshot, _ = user.post(res=em.Snapshot, data=s) snapshot, _ = user.post(res=em.Snapshot, data=s)
pc = snapshot['device'] pc = snapshot['device']
assert pc['hid'] == 'hewlett-packard-czc0408yjg-hp_compaq_8100_elite_sff' assert pc['hid'] == 'desktop-hewlett-packard-hp_compaq_8100_elite_sff-czc0408yjg'
assert pc['chassis'] == 'Tower' assert pc['chassis'] == 'Tower'
assert set(e['type'] for e in snapshot['events']) == { assert set(e['type'] for e in snapshot['events']) == {
'EreusePrice', 'EreusePrice',
@ -179,7 +179,7 @@ def test_snapshot_real_eee_1001pxd(user: UserClient):
assert pc['model'] == '1001pxd' assert pc['model'] == '1001pxd'
assert pc['serialNumber'] == 'b8oaas048286' assert pc['serialNumber'] == 'b8oaas048286'
assert pc['manufacturer'] == 'asustek computer inc.' assert pc['manufacturer'] == 'asustek computer inc.'
assert pc['hid'] == 'asustek_computer_inc-b8oaas048286-1001pxd' assert pc['hid'] == 'laptop-asustek_computer_inc-1001pxd-b8oaas048286'
assert pc['tags'] == [] assert pc['tags'] == []
assert pc['networkSpeeds'] == [100, 0], 'Although it has WiFi we do not know the speed' assert pc['networkSpeeds'] == [100, 0], 'Although it has WiFi we do not know the speed'
assert pc['rate'] assert pc['rate']
@ -200,11 +200,13 @@ def test_snapshot_real_eee_1001pxd(user: UserClient):
# assert rate['rating'] > 0 and rate['rating'] != 1 # assert rate['rating'] > 0 and rate['rating'] != 1
components = snapshot['components'] components = snapshot['components']
wifi = components[0] wifi = components[0]
assert wifi['hid'] == 'qualcomm_atheros-74_2f_68_8b_fd_c8-ar9285_wireless_network_adapter' assert wifi['hid'] == 'networkadapter-qualcomm_atheros-' \
'ar9285_wireless_network_adapter-74_2f_68_8b_fd_c8'
assert wifi['serialNumber'] == '74:2f:68:8b:fd:c8' assert wifi['serialNumber'] == '74:2f:68:8b:fd:c8'
assert wifi['wireless'] assert wifi['wireless']
eth = components[1] eth = components[1]
assert eth['hid'] == 'qualcomm_atheros-14_da_e9_42_f6_7c-ar8152_v2_0_fast_ethernet' assert eth['hid'] == 'networkadapter-qualcomm_atheros-' \
'ar8152_v2_0_fast_ethernet-14_da_e9_42_f6_7c'
assert eth['speed'] == 100 assert eth['speed'] == 100
assert not eth['wireless'] assert not eth['wireless']
cpu = components[2] cpu = components[2]
@ -251,7 +253,7 @@ def test_snapshot_real_eee_1001pxd(user: UserClient):
assert pc['ramSize'] == ram['size'] == 1024 assert pc['ramSize'] == ram['size'] == 1024
hdd = components[7] hdd = components[7]
assert hdd['type'] == 'HardDrive' assert hdd['type'] == 'HardDrive'
assert hdd['hid'] == 'hitachi-e2024242cv86hj-hts54322' assert hdd['hid'] == 'harddrive-hitachi-hts54322-e2024242cv86hj'
assert hdd['interface'] == 'ATA' assert hdd['interface'] == 'ATA'
assert hdd['size'] == 238475 assert hdd['size'] == 238475
hdd, _ = user.get(res=Device, item=hdd['id']) hdd, _ = user.get(res=Device, item=hdd['id'])
@ -270,7 +272,7 @@ def test_snapshot_real_eee_1001pxd(user: UserClient):
assert erase['severity'] == 'Info' assert erase['severity'] == 'Info'
assert hdd['privacy']['type'] == 'EraseBasic' assert hdd['privacy']['type'] == 'EraseBasic'
mother = components[8] mother = components[8]
assert mother['hid'] == 'asustek_computer_inc-eee0123456789-1001pxd' assert mother['hid'] == 'motherboard-asustek_computer_inc-1001pxd-eee0123456789'
def test_real_custom(user: UserClient): def test_real_custom(user: UserClient):