diff --git a/ereuse_devicehub/config.py b/ereuse_devicehub/config.py index edc54da7..b471d135 100644 --- a/ereuse_devicehub/config.py +++ b/ereuse_devicehub/config.py @@ -7,7 +7,7 @@ from teal.config import Config from teal.enums import Currency from teal.utils import import_resource -from ereuse_devicehub.resources import agent, event, inventory, lot, tag, user +from ereuse_devicehub.resources import action, agent, inventory, lot, tag, user from ereuse_devicehub.resources.device import definitions from ereuse_devicehub.resources.documents import documents from ereuse_devicehub.resources.enums import PriceSoftware @@ -15,7 +15,7 @@ from ereuse_devicehub.resources.enums import PriceSoftware class DevicehubConfig(Config): RESOURCE_DEFINITIONS = set(chain(import_resource(definitions), - import_resource(event), + import_resource(action), import_resource(user), import_resource(tag), import_resource(agent), diff --git a/ereuse_devicehub/db.py b/ereuse_devicehub/db.py index b82e714f..46f459c7 100644 --- a/ereuse_devicehub/db.py +++ b/ereuse_devicehub/db.py @@ -14,7 +14,7 @@ class DhSession(SchemaSession): to be used once in each request, at the very end before a commit. """ - # This was done before with an ``before_commit`` sqlalchemy event + # This was done before with an ``before_commit`` sqlalchemy action # however it is too fragile –it does not detect previously-flushed # things # This solution makes this more aware to the user, although diff --git a/ereuse_devicehub/dummy/dummy.py b/ereuse_devicehub/dummy/dummy.py index 97977cda..2d6f3e80 100644 --- a/ereuse_devicehub/dummy/dummy.py +++ b/ereuse_devicehub/dummy/dummy.py @@ -11,9 +11,9 @@ from ereuse_utils.test import ANY from ereuse_devicehub.client import UserClient from ereuse_devicehub.db import db +from ereuse_devicehub.resources.action import models as m from ereuse_devicehub.resources.agent.models import Person from ereuse_devicehub.resources.device.models import Device -from ereuse_devicehub.resources.event import models as m from ereuse_devicehub.resources.lot.models import Lot from ereuse_devicehub.resources.tag.model import Tag from ereuse_devicehub.resources.user import User @@ -95,18 +95,18 @@ class Dummy: # Make one hdd ErasePhysical hdd = next(hdd for hdd in s['components'] if hdd['type'] == 'HardDrive') user.post({'type': 'ErasePhysical', 'method': 'Shred', 'device': hdd['id']}, - res=m.Event) + res=m.Action) assert sample_pc print('PC sample is', sample_pc) # Link tags and eTags for tag, pc in zip((self.TAGS[1], self.TAGS[2], self.ET[0][0], self.ET[1][1]), pcs): user.put({}, res=Tag, item='{}/device/{}'.format(tag, pc), status=204) - # Perform generic events + # Perform generic actions for pc, model in zip(pcs, {m.ToRepair, m.Repair, m.ToPrepare, m.ReadyToUse, m.ToPrepare, m.Prepare}): - user.post({'type': model.t, 'devices': [pc]}, res=m.Event) + user.post({'type': model.t, 'devices': [pc]}, res=m.Action) # Perform a Sell to several devices user.post( @@ -115,7 +115,7 @@ class Dummy: 'to': user.user['individuals'][0]['id'], 'devices': list(itertools.islice(pcs, len(pcs) // 2)) }, - res=m.Event) + res=m.Action) parent, _ = user.post(({'name': 'Parent'}), res=Lot) child, _ = user.post(({'name': 'Child'}), res=Lot) @@ -139,14 +139,14 @@ class Dummy: i, _ = user.get(res=Device, query=[('search', 'pc')]) assert 14 == len(i['items']) - # Let's create a set of events for the pc device + # Let's create a set of actions for the pc device # Make device Ready - user.post({'type': m.ToPrepare.t, 'devices': [sample_pc]}, res=m.Event) - user.post({'type': m.Prepare.t, 'devices': [sample_pc]}, res=m.Event) - user.post({'type': m.ReadyToUse.t, 'devices': [sample_pc]}, res=m.Event) + user.post({'type': m.ToPrepare.t, 'devices': [sample_pc]}, res=m.Action) + user.post({'type': m.Prepare.t, 'devices': [sample_pc]}, res=m.Action) + user.post({'type': m.ReadyToUse.t, 'devices': [sample_pc]}, res=m.Action) user.post({'type': m.Price.t, 'device': sample_pc, 'currency': 'EUR', 'price': 85}, - res=m.Event) + res=m.Action) # todo test reserve user.post( # Sell device { @@ -154,7 +154,7 @@ class Dummy: 'to': user.user['individuals'][0]['id'], 'devices': [sample_pc] }, - res=m.Event) + res=m.Action) # todo Receive user.get(res=Device, item=sample_pc) # Test diff --git a/ereuse_devicehub/dummy/files/asus-1001pxd.snapshot.11.yaml b/ereuse_devicehub/dummy/files/asus-1001pxd.snapshot.11.yaml index a5af2694..f3f907fa 100644 --- a/ereuse_devicehub/dummy/files/asus-1001pxd.snapshot.11.yaml +++ b/ereuse_devicehub/dummy/files/asus-1001pxd.snapshot.11.yaml @@ -6,7 +6,7 @@ { "address": 64, "cores": 1, - "events": [ + "actions": [ { "elapsed": 0, "rate": 6666.22, @@ -26,7 +26,7 @@ "type": "Processor" }, { - "events": [], + "actions": [], "manufacturer": "Qualcomm Atheros", "model": "AR9285 Wireless Network Adapter", "serialNumber": "74:2f:68:8b:fd:c8", @@ -34,7 +34,7 @@ "wireless": true }, { - "events": [], + "actions": [], "manufacturer": "Qualcomm Atheros", "model": "AR8152 v2.0 Fast Ethernet", "serialNumber": "14:da:e9:42:f6:7c", @@ -43,7 +43,7 @@ "wireless": false }, { - "events": [], + "actions": [], "format": "DIMM", "interface": "DDR2", "manufacturer": null, @@ -54,21 +54,21 @@ "type": "RamModule" }, { - "events": [], + "actions": [], "manufacturer": "Intel Corporation", "model": "NM10/ICH7 Family High Definition Audio Controller", "serialNumber": null, "type": "SoundCard" }, { - "events": [], + "actions": [], "manufacturer": "Azurewave", "model": "USB 2.0 UVC VGA WebCam", "serialNumber": "0x0001", "type": "SoundCard" }, { - "events": [ + "actions": [ { "endTime": "2018-11-24T22:00:39.643726+00:00", "severity": "Info", @@ -123,7 +123,7 @@ "type": "HardDrive" }, { - "events": [], + "actions": [], "manufacturer": "Intel Corporation", "memory": 256.0, "model": "Atom Processor D4xx/D5xx/N4xx/N5xx Integrated Graphics Controller", @@ -131,7 +131,7 @@ "type": "GraphicCard" }, { - "events": [ + "actions": [ { "type": "TestBios", "accessRange": "A" @@ -150,7 +150,7 @@ ], "device": { "chassis": "Netbook", - "events": [ + "actions": [ { "elapsed": 16, "rate": 15.9165, @@ -180,13 +180,6 @@ }, "elapsed": 14725, "endTime": "2018-11-24T18:06:37.611704+00:00", - "expectedEvents": [ - "Benchmark", - "TestDataStorage", - "StressTest", - "EraseBasic", - "Install" - ], "software": "Workbench", "type": "Snapshot", "uuid": "f6cba71f-0ac1-4aba-8b6a-c1fd56ab483d", diff --git a/ereuse_devicehub/dummy/files/asus-eee-1000h.snapshot.11.yaml b/ereuse_devicehub/dummy/files/asus-eee-1000h.snapshot.11.yaml index 11df7e5f..f3c848e1 100644 --- a/ereuse_devicehub/dummy/files/asus-eee-1000h.snapshot.11.yaml +++ b/ereuse_devicehub/dummy/files/asus-eee-1000h.snapshot.11.yaml @@ -7,7 +7,7 @@ "serialNumber": "94OAAQ021116", "type": "Laptop", "model": "1000H", - "events": [ + "actions": [ { "elapsed": 19, "rate": 19.3106, @@ -29,21 +29,21 @@ "type": "NetworkAdapter", "wireless": false, "model": "AR8121/AR8113/AR8114 Gigabit or Fast Ethernet", - "events": [], + "actions": [], "manufacturer": "Qualcomm Atheros" }, { "serialNumber": null, "type": "SoundCard", "model": "NM10/ICH7 Family High Definition Audio Controller", - "events": [], + "actions": [], "manufacturer": "Intel Corporation" }, { "serialNumber": "SN0001", "type": "SoundCard", "model": "CNF7129", - "events": [], + "actions": [], "manufacturer": "Chicony Electronics Co., Ltd." }, { @@ -53,7 +53,7 @@ "type": "RamModule", "interface": "SDRAM", "model": null, - "events": [], + "actions": [], "manufacturer": null }, { @@ -63,7 +63,7 @@ "type": "Processor", "address": 32, "model": "Intel Atom CPU N270 @ 1.60GHz", - "events": [ + "actions": [ { "elapsed": 172, "rate": 171.6818, @@ -83,7 +83,7 @@ "type": "HardDrive", "interface": "ATA", "model": "ST9160310AS", - "events": [ + "actions": [ { "readSpeed": 63.3, "type": "BenchmarkDataStorage", @@ -98,7 +98,7 @@ "type": "GraphicCard", "memory": 256.0, "model": "Mobile 945GSE Express Integrated Graphics Controller", - "events": [], + "actions": [], "manufacturer": "Intel Corporation" }, { @@ -110,7 +110,7 @@ "serial": 0, "slots": 1, "model": "1000H", - "events": [ + "actions": [ { "accessRange": "A", "type": "TestBios" diff --git a/ereuse_devicehub/dummy/files/computer-monitor.snapshot.yaml b/ereuse_devicehub/dummy/files/computer-monitor.snapshot.yaml index 3b02e128..3c92f7c4 100644 --- a/ereuse_devicehub/dummy/files/computer-monitor.snapshot.yaml +++ b/ereuse_devicehub/dummy/files/computer-monitor.snapshot.yaml @@ -10,7 +10,7 @@ device: resolutionWidth: 1920 resolutionHeight: 1080 size: 21.5 - events: + actions: - type: VisualTest appearanceRange: A functionalityRange: C diff --git a/ereuse_devicehub/dummy/files/dell-optiplexgx520.snapshot.11.yaml b/ereuse_devicehub/dummy/files/dell-optiplexgx520.snapshot.11.yaml index 432d84fa..98b23bb8 100644 --- a/ereuse_devicehub/dummy/files/dell-optiplexgx520.snapshot.11.yaml +++ b/ereuse_devicehub/dummy/files/dell-optiplexgx520.snapshot.11.yaml @@ -2,7 +2,7 @@ "device": { "chassis": "Tower", "serialNumber": "6G0772J", - "events": [ + "actions": [ { "rate": 2.1341, "type": "BenchmarkRamSysbench", @@ -29,7 +29,7 @@ { "serialNumber": null, "address": 64, - "events": [ + "actions": [ { "rate": 11970.92, "type": "BenchmarkProcessor", @@ -48,7 +48,7 @@ }, { "serialNumber": null, - "events": [], + "actions": [], "type": "SoundCard", "manufacturer": "Intel Corporation", "model": "82801G AC'97 Audio Controller" @@ -56,7 +56,7 @@ { "size": 512, "serialNumber": "4A7012A1", - "events": [], + "actions": [], "speed": 533.0, "type": "RamModule", "format": "DIMM", @@ -67,7 +67,7 @@ { "size": 512, "serialNumber": null, - "events": [], + "actions": [], "speed": 533.0, "type": "RamModule", "format": "DIMM", @@ -77,7 +77,7 @@ }, { "serialNumber": "00:13:72:78:53:12", - "events": [], + "actions": [], "type": "NetworkAdapter", "manufacturer": "Broadcom Limited", "speed": 1000, @@ -86,7 +86,7 @@ }, { "serialNumber": "5LR30DTZ", - "events": [ + "actions": [ { "steps": [ { @@ -124,7 +124,7 @@ }, { "serialNumber": null, - "events": [], + "actions": [], "type": "GraphicCard", "manufacturer": "Intel Corporation", "memory": 256.0, @@ -134,7 +134,7 @@ "slots": 0, "usb": 5, "serial": 1, - "events": [ + "actions": [ { "type": "TestBios", "accessRange": "A" @@ -153,10 +153,5 @@ "elapsed": 1512, "endTime": "2018-07-11T11:17:00.888231+00:00", "type": "Snapshot", - "expectedEvents": [ - "Benchmark", - "SmartTest", - "StressTest", - "EraseBasic" - ] + } diff --git a/ereuse_devicehub/dummy/files/hp1.snapshot.11.yaml b/ereuse_devicehub/dummy/files/hp1.snapshot.11.yaml index c66151ea..86489428 100644 --- a/ereuse_devicehub/dummy/files/hp1.snapshot.11.yaml +++ b/ereuse_devicehub/dummy/files/hp1.snapshot.11.yaml @@ -1,11 +1,5 @@ { "software": "Workbench", - "expectedEvents": [ - "Benchmark", - "SmartTest", - "StressTest", - "EraseBasic" - ], "closed": false, "elapsed": -3058, "uuid": "106930cd-e948-4cca-a8c8-1e39d6192ad6", @@ -14,7 +8,7 @@ { "type": "Processor", "speed": 1.199, - "events": [ + "actions": [ { "type": "BenchmarkProcessor", "rate": 23409.32, @@ -35,7 +29,7 @@ { "memory": 256.0, "type": "GraphicCard", - "events": [], + "actions": [], "serialNumber": null, "model": "Core Processor Integrated Graphics Controller", "manufacturer": "Intel Corporation" @@ -43,7 +37,7 @@ { "type": "NetworkAdapter", "speed": 1000, - "events": [], + "actions": [], "serialNumber": "6c:62:6d:81:22:65", "model": "82578DM Gigabit Network Connection", "manufacturer": "Intel Corporation", @@ -51,7 +45,7 @@ }, { "type": "SoundCard", - "events": [], + "actions": [], "serialNumber": null, "model": "5 Series/3400 Series Chipset High Definition Audio", "manufacturer": "Intel Corporation" @@ -60,7 +54,7 @@ "speed": 1333.0, "type": "RamModule", "format": "DIMM", - "events": [], + "actions": [], "size": 2048, "serialNumber": "E6002F30", "interface": "DDR3", @@ -69,7 +63,7 @@ }, { "type": "HardDrive", - "events": [ + "actions": [ { "type": "EraseBasic", @@ -110,7 +104,7 @@ "serial": 0, "type": "Motherboard", "slots": 0, - "events": [], + "actions": [], "serialNumber": "CZC0408YNC", "usb": 2, "firewire": 0, @@ -122,7 +116,7 @@ "device": { "type": "Desktop", "chassis": "Tower", - "events": [ + "actions": [ { "type": "BenchmarkRamSysbench", "rate": 0.9767, diff --git a/ereuse_devicehub/dummy/files/hp2.snapshot.11.yaml b/ereuse_devicehub/dummy/files/hp2.snapshot.11.yaml index aeb248f8..80591b42 100644 --- a/ereuse_devicehub/dummy/files/hp2.snapshot.11.yaml +++ b/ereuse_devicehub/dummy/files/hp2.snapshot.11.yaml @@ -10,7 +10,7 @@ "type": "Processor", "serialNumber": null, "address": 64, - "events": [ + "actions": [ { "elapsed": 0, "rate": 23408.76, @@ -29,7 +29,7 @@ "type": "GraphicCard", "serialNumber": null, "memory": 256.0, - "events": [] + "actions": [] }, { "speed": 1000, @@ -38,14 +38,14 @@ "type": "NetworkAdapter", "wireless": false, "serialNumber": "6c:62:6d:81:21:7f", - "events": [] + "actions": [] }, { "model": "5 Series/3400 Series Chipset High Definition Audio", "manufacturer": "Intel Corporation", "type": "SoundCard", "serialNumber": null, - "events": [] + "actions": [] }, { "interface": "DDR3", @@ -56,7 +56,7 @@ "manufacturer": "JEDEC ID:80 2C", "type": "RamModule", "speed": 1333.0, - "events": [] + "actions": [] }, { "interface": "ATA", @@ -65,7 +65,7 @@ "manufacturer": "Hitachi", "type": "HardDrive", "serialNumber": "PVB200Z30JWXRF", - "events": [ + "actions": [ { "elapsed": 1, "type": "TestDataStorage", @@ -103,7 +103,7 @@ "manufacturer": "Seagate", "type": "HardDrive", "serialNumber": "9QZCVLJX", - "events": [ + "actions": [ { "elapsed": 0, "type": "TestDataStorage", @@ -144,7 +144,7 @@ "serialNumber": "CZC0408YP6", "slots": 0, "usb": 2, - "events": [] + "actions": [] } ], "closed": false, @@ -155,7 +155,7 @@ "type": "Desktop", "serialNumber": "CZC0408YP6", "chassis": "Tower", - "events": [ + "actions": [ { "severity": "Info", "elapsed": 60, @@ -168,12 +168,6 @@ } ] }, - "expectedEvents": [ - "Benchmark", - "SmartTest", - "StressTest", - "EraseBasic" - ], "software": "Workbench", "endTime": "2018-07-11T10:30:22.395958+00:00", "elapsed": 2766 diff --git a/ereuse_devicehub/dummy/files/keyboard.snapshot.yaml b/ereuse_devicehub/dummy/files/keyboard.snapshot.yaml index e5e44ea6..158bdecd 100644 --- a/ereuse_devicehub/dummy/files/keyboard.snapshot.yaml +++ b/ereuse_devicehub/dummy/files/keyboard.snapshot.yaml @@ -7,7 +7,7 @@ device: serialNumber: BAR manufacturer: BAZ layout: ES - events: + actions: - type: VisualTest appearanceRange: A functionalityRange: A diff --git a/ereuse_devicehub/dummy/files/laptop-with-2-hid.snapshot.11.yaml b/ereuse_devicehub/dummy/files/laptop-with-2-hid.snapshot.11.yaml index 3a6d19d2..8cf37d51 100644 --- a/ereuse_devicehub/dummy/files/laptop-with-2-hid.snapshot.11.yaml +++ b/ereuse_devicehub/dummy/files/laptop-with-2-hid.snapshot.11.yaml @@ -2,7 +2,7 @@ "software": "Workbench", "endTime": "2018-09-22T19:05:47.005552+00:00", "device": { - "events": [ + "actions": [ { "rate": 15.9663, "type": "BenchmarkRamSysbench", @@ -20,21 +20,17 @@ "manufacturer": "eMachines" }, "elapsed": 451, - "expectedEvents": [ - "Benchmark", - "TestDataStorage", - "StressTest" - ], + "components": [ { - "events": [], + "actions": [], "model": "Video WebCam", "serialNumber": "CN0314-SN30-OV035-VA-R05.00.00", "type": "SoundCard", "manufacturer": "SuYin" }, { - "events": [], + "actions": [], "model": "SBx00 Azalia", "serialNumber": null, "type": "SoundCard", @@ -44,7 +40,7 @@ "speed": 400.0, "size": 2048, "format": "DIMM", - "events": [], + "actions": [], "model": "HYMP125S64CP8-S6", "interface": "DDR2", "type": "RamModule", @@ -55,7 +51,7 @@ "speed": 400.0, "size": 2048, "format": "DIMM", - "events": [], + "actions": [], "model": "HYMP125S64CP8-S6", "interface": "DDR2", "type": "RamModule", @@ -66,7 +62,7 @@ "speed": 0.8, "address": 64, "serialNumber": null, - "events": [ + "actions": [ { "rate": 173.6996, "type": "BenchmarkProcessorSysbench", @@ -85,7 +81,7 @@ "manufacturer": "Advanced Micro Devices AMD" }, { - "events": [], + "actions": [], "model": "AR9285 Wireless Network Adapter", "serialNumber": "0c:60:76:5f:49:91", "type": "NetworkAdapter", @@ -94,7 +90,7 @@ }, { "speed": 100, - "events": [], + "actions": [], "model": "AR8132 Fast Ethernet", "serialNumber": "00:26:22:59:a1:56", "type": "NetworkAdapter", @@ -104,7 +100,7 @@ { "size": 152627, "serialNumber": "WD-WX80A8996018", - "events": [ + "actions": [ { "writeSpeed": 17.8, "type": "BenchmarkDataStorage", @@ -130,7 +126,7 @@ "manufacturer": "Western Digital" }, { - "events": [], + "actions": [], "model": "RS780M Mobility Radeon HD 3200", "serialNumber": null, "type": "GraphicCard", @@ -140,7 +136,7 @@ { "slots": 4, "firewire": 0, - "events": [], + "actions": [], "model": "E627", "usb": 3, "serialNumber": "LXN650207893942DE21601", diff --git a/ereuse_devicehub/dummy/files/lenovo-3493BAG.snapshot.11.yaml b/ereuse_devicehub/dummy/files/lenovo-3493BAG.snapshot.11.yaml index ad69243b..c73871ad 100644 --- a/ereuse_devicehub/dummy/files/lenovo-3493BAG.snapshot.11.yaml +++ b/ereuse_devicehub/dummy/files/lenovo-3493BAG.snapshot.11.yaml @@ -6,7 +6,7 @@ "type": "Snapshot", "device": { "serialNumber": "PB357N0", - "events": [ + "actions": [ { "elapsed": 60, "type": "StressTest", @@ -27,7 +27,7 @@ "software": "Workbench", "components": [ { - "events": [], + "actions": [], "speed": 1000, "serialNumber": "d4:3d:7e:41:c4:c4", "model": "RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller", @@ -37,7 +37,7 @@ }, { "cores": 2, - "events": [ + "actions": [ { "elapsed": 0, "type": "BenchmarkProcessor", @@ -57,7 +57,7 @@ "type": "Processor" }, { - "events": [], + "actions": [], "memory": 256.0, "serialNumber": null, "model": "2nd Generation Core Processor Family Integrated Graphics Controller", @@ -65,7 +65,7 @@ "type": "GraphicCard" }, { - "events": [], + "actions": [], "serialNumber": null, "model": "6 Series/C200 Series Chipset Family High Definition Audio Controller", "manufacturer": "Intel Corporation", @@ -73,7 +73,7 @@ }, { "serialNumber": "292E48DA", - "events": [], + "actions": [], "speed": 1333.0, "size": 2048, "format": "DIMM", @@ -84,7 +84,7 @@ }, { "serialNumber": "Z2AYPLNP", - "events": [ + "actions": [ { "writeSpeed": 20.4, "type": "BenchmarkDataStorage", @@ -123,7 +123,7 @@ "serial": 1, "usb": 2, "pcmcia": 0, - "events": [], + "actions": [], "slots": 2, "serialNumber": null, "firewire": 0, @@ -132,10 +132,5 @@ "type": "Motherboard" } ], - "expectedEvents": [ - "Benchmark", - "SmartTest", - "StressTest", - "EraseBasic" - ] + } diff --git a/ereuse_devicehub/dummy/files/nec.snapshot.11.yaml b/ereuse_devicehub/dummy/files/nec.snapshot.11.yaml index 7e5e5096..d846eb7a 100644 --- a/ereuse_devicehub/dummy/files/nec.snapshot.11.yaml +++ b/ereuse_devicehub/dummy/files/nec.snapshot.11.yaml @@ -4,7 +4,7 @@ "device": { "serialNumber": "SN 123456789ABC", "manufacturer": "NEC Computers SAS", - "events": [ + "actions": [ { "severity": "Info", "elapsed": 60, @@ -30,7 +30,7 @@ "serialNumber": "00:24:21:7a:90:02", "manufacturer": "Intel Corporation", "speed": 1000, - "events": [], + "actions": [], "type": "NetworkAdapter", "wireless": false, "model": "82566DM-2 Gigabit Network Connection" @@ -40,7 +40,7 @@ "manufacturer": "Intel Corp.", "speed": 3.0, "cores": 2, - "events": [ + "actions": [ { "rate": 20.1309, "elapsed": 20, @@ -60,14 +60,14 @@ "serialNumber": null, "manufacturer": "Intel Corporation", "memory": 256.0, - "events": [], + "actions": [], "type": "GraphicCard", "model": "82Q35 Express Integrated Graphics Controller" }, { "serialNumber": null, "manufacturer": "Intel Corporation", - "events": [], + "actions": [], "type": "SoundCard", "model": "82801I HD Audio Controller" }, @@ -78,7 +78,7 @@ "interface": "DDR2", "format": "DIMM", "size": 1024, - "events": [], + "actions": [], "type": "RamModule", "model": "M3 78T2863QZS-CE6" }, @@ -89,7 +89,7 @@ "interface": "DDR2", "format": "DIMM", "size": 1024, - "events": [], + "actions": [], "type": "RamModule", "model": "M3 78T2863QZS-CE6" }, @@ -98,7 +98,7 @@ "manufacturer": "Hitachi", "interface": "ATA", "size": 305245, - "events": [ + "actions": [ { "severity": "Info", "endTime": "2018-07-11T11:33:41.531918+00:00", @@ -136,7 +136,7 @@ "serial": 1, "pcmcia": 0, "usb": 8, - "events": [ + "actions": [ { "type": "TestBios", "accessRange": "A" @@ -149,12 +149,6 @@ } ], "version": "11.0a3", - "expectedEvents": [ - "Benchmark", - "SmartTest", - "StressTest", - "EraseBasic" - ], "endTime": "2018-07-11T10:28:55.879745+00:00", "type": "Snapshot", "elapsed": 3886, diff --git a/ereuse_devicehub/dummy/files/oreo.snapshot.yaml b/ereuse_devicehub/dummy/files/oreo.snapshot.yaml index c728a881..348c9420 100644 --- a/ereuse_devicehub/dummy/files/oreo.snapshot.yaml +++ b/ereuse_devicehub/dummy/files/oreo.snapshot.yaml @@ -9,7 +9,7 @@ "model": "RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller", "serialNumber": "00:26:18:96:dc:af", "type": "NetworkAdapter", - "events": [] + "actions": [] }, { "speed": 1333.0, @@ -20,7 +20,7 @@ "type": "RamModule", "format": "DIMM", "size": 2048, - "events": [] + "actions": [] }, { "speed": 1333.0, @@ -31,7 +31,7 @@ "type": "RamModule", "format": "DIMM", "size": 2048, - "events": [] + "actions": [] }, { "speed": 1333.0, @@ -42,7 +42,7 @@ "type": "RamModule", "format": "DIMM", "size": 2048, - "events": [] + "actions": [] }, { "speed": 1333.0, @@ -53,14 +53,14 @@ "type": "RamModule", "format": "DIMM", "size": 2048, - "events": [] + "actions": [] }, { "manufacturer": "Intel Corporation", "model": "5 Series/3400 Series Chipset High Definition Audio", "serialNumber": null, "type": "SoundCard", - "events": [] + "actions": [] }, { "speed": 2.5330000000000004, @@ -71,7 +71,7 @@ "serialNumber": null, "type": "Processor", "threads": 8, - "events": [ + "actions": [ { "elapsed": 9, "type": "BenchmarkProcessorSysbench", @@ -91,7 +91,7 @@ "serialNumber": "S246J90Z406422", "type": "HardDrive", "size": 953869, - "events": [ + "actions": [ { "elapsed": 120, "lifetime": 14298, @@ -119,7 +119,7 @@ "serialNumber": null, "type": "GraphicCard", "memory": 256.0, - "events": [] + "actions": [] }, { "firewire": 1, @@ -131,7 +131,7 @@ "pcmcia": 0, "slots": 4, "serial": 1, - "events": [] + "actions": [] } ], "elapsed": 203, @@ -141,7 +141,7 @@ "chassis": "Tower", "type": "Desktop", "serialNumber": null, - "events": [ + "actions": [ { "elapsed": 60, "type": "StressTest", @@ -158,11 +158,7 @@ ] }, "version": "11.0a6", - "expectedEvents": [ - "Benchmark", - "TestDataStorage", - "StressTest" - ], + "type": "Snapshot", "closed": true, "software": "Workbench" diff --git a/ereuse_devicehub/dummy/files/pc-laudem.snapshot.11.yaml b/ereuse_devicehub/dummy/files/pc-laudem.snapshot.11.yaml index e6ce4df9..a4f76e6f 100644 --- a/ereuse_devicehub/dummy/files/pc-laudem.snapshot.11.yaml +++ b/ereuse_devicehub/dummy/files/pc-laudem.snapshot.11.yaml @@ -2,7 +2,7 @@ "closed": true, "components": [ { - "events": [], + "actions": [], "manufacturer": "Intel Corporation", "model": "82567LM-3 Gigabit Network Connection", "serialNumber": "00:23:7d:49:5e:31", @@ -11,14 +11,14 @@ "wireless": false }, { - "events": [], + "actions": [], "manufacturer": "Intel Corporation", "model": "82801JD/DO HD Audio Controller", "serialNumber": null, "type": "SoundCard" }, { - "events": [], + "actions": [], "format": "DIMM", "interface": "DDR2", "manufacturer": null, @@ -31,7 +31,7 @@ { "address": 64, "cores": 2, - "events": [ + "actions": [ { "elapsed": 0, "rate": 11970.54, @@ -51,7 +51,7 @@ "type": "Processor" }, { - "events": [ + "actions": [ { "elapsed": 16, "readSpeed": 76.8, @@ -81,7 +81,7 @@ "type": "HardDrive" }, { - "events": [], + "actions": [], "manufacturer": "Intel Corporation", "memory": 256.0, "model": "4 Series Chipset Integrated Graphics Controller", @@ -89,7 +89,7 @@ "type": "GraphicCard" }, { - "events": [ + "actions": [ { "type": "TestBios", "accessRange": "A" @@ -108,7 +108,7 @@ ], "device": { "chassis": "Tower", - "events": [ + "actions": [ { "elapsed": 60, "severity": "Info", @@ -142,11 +142,7 @@ }, "elapsed": 238, "endTime": "2018-10-15T13:59:37.431309+00:00", - "expectedEvents": [ - "Benchmark", - "TestDataStorage", - "StressTest" - ], + "software": "Workbench", "type": "Snapshot", "uuid": "ec23c11b-80b6-42cd-ac5c-73ba7acddbc4", diff --git a/ereuse_devicehub/dummy/files/real-eee-1001pxd.snapshot.11.yaml b/ereuse_devicehub/dummy/files/real-eee-1001pxd.snapshot.11.yaml index 001780e3..a807c7f0 100644 --- a/ereuse_devicehub/dummy/files/real-eee-1001pxd.snapshot.11.yaml +++ b/ereuse_devicehub/dummy/files/real-eee-1001pxd.snapshot.11.yaml @@ -6,7 +6,7 @@ "serialNumber": "74:2f:68:8b:fd:c8", "manufacturer": "Qualcomm Atheros", "wireless": true, - "events": [] + "actions": [] }, { "type": "NetworkAdapter", @@ -15,7 +15,7 @@ "manufacturer": "Qualcomm Atheros", "speed": 100, "wireless": false, - "events": [] + "actions": [] }, { "type": "Processor", @@ -26,7 +26,7 @@ "serialNumber": null, "manufacturer": "Intel Corp.", "speed": 1.667, - "events": [ + "actions": [ { "type": "BenchmarkProcessorSysbench", "rate": 164.0803, @@ -45,21 +45,21 @@ "serialNumber": null, "memory": 256.0, "manufacturer": "Intel Corporation", - "events": [] + "actions": [] }, { "type": "SoundCard", "model": "NM10/ICH7 Family High Definition Audio Controller", "serialNumber": null, "manufacturer": "Intel Corporation", - "events": [] + "actions": [] }, { "type": "SoundCard", "model": "USB 2.0 UVC VGA WebCam", "serialNumber": "0x0001", "manufacturer": "Azurewave", - "events": [] + "actions": [] }, { "type": "RamModule", @@ -70,7 +70,7 @@ "serialNumber": null, "manufacturer": null, "speed": 667.0, - "events": [] + "actions": [] }, { "type": "HardDrive", @@ -79,7 +79,7 @@ "interface": "ATA", "serialNumber": "E2024242CV86HJ", "manufacturer": "Hitachi", - "events": [ + "actions": [ { "type": "BenchmarkDataStorage", "elapsed": 16, @@ -120,7 +120,7 @@ "serialNumber": "Eee0123456789", "usb": 5, "manufacturer": "ASUSTeK Computer INC.", - "events": [ + "actions": [ { "type": "TestBios", "accessRange": "C" @@ -140,7 +140,7 @@ "serialNumber": "B8OAAS048286", "manufacturer": "ASUSTeK Computer INC.", "chassis": "Netbook", - "events": [ + "actions": [ { "type": "BenchmarkRamSysbench", "rate": 15.7188, @@ -158,11 +158,5 @@ } ] }, - "expectedEvents": [ - "Benchmark", - "SmartTest", - "StressTest", - "EraseBasic" - ], "closed": false } diff --git a/ereuse_devicehub/dummy/files/real-hp-quad-core.snapshot.11.yaml b/ereuse_devicehub/dummy/files/real-hp-quad-core.snapshot.11.yaml index b8506632..91aa12d6 100644 --- a/ereuse_devicehub/dummy/files/real-hp-quad-core.snapshot.11.yaml +++ b/ereuse_devicehub/dummy/files/real-hp-quad-core.snapshot.11.yaml @@ -13,7 +13,7 @@ "serialNumber": "00:23:24:0d:86:28", "manufacturer": "Intel Corporation", "wireless": false, - "events": [] + "actions": [] }, { "type": "NetworkAdapter", @@ -22,7 +22,7 @@ "serialNumber": "00:0e:0c:b6:f2:91", "manufacturer": "Intel Corporation", "wireless": false, - "events": [] + "actions": [] }, { "cores": 4, @@ -31,7 +31,7 @@ "speed": 1.9980000000000002, "serialNumber": null, "manufacturer": "Intel Corp.", - "events": [ + "actions": [ { "elapsed": 0, "rate": 6665.7, @@ -45,7 +45,7 @@ "model": "4 Series Chipset Integrated Graphics Controller", "serialNumber": null, "manufacturer": "Intel Corporation", - "events": [], + "actions": [], "memory": 256.0 }, { @@ -53,7 +53,7 @@ "model": "82801JD/DO HD Audio Controller", "serialNumber": null, "manufacturer": "Intel Corporation", - "events": [] + "actions": [] }, { "size": 2048, @@ -64,7 +64,7 @@ "serialNumber": "F8482E29", "format": "DIMM", "manufacturer": "JEDEC ID:80 2C", - "events": [] + "actions": [] }, { "size": 2048, @@ -75,7 +75,7 @@ "serialNumber": "62072F30", "format": "DIMM", "manufacturer": "JEDEC ID:80 2C", - "events": [] + "actions": [] }, { "size": 238475, @@ -84,7 +84,7 @@ "model": "ST3250318AS", "serialNumber": "9VY6HBKE", "manufacturer": "Seagate", - "events": [ + "actions": [ { "elapsed": 0, "type": "TestDataStorage", @@ -108,7 +108,7 @@ "serialNumber": "CZC03217S7", "firewire": 0, "manufacturer": "Hewlett-Packard", - "events": [], + "actions": [], "serial": 0, "usb": 8 } @@ -120,9 +120,6 @@ "chassis": "Tower", "serialNumber": "CZC03217S7", "manufacturer": "Hewlett-Packard", - "events": [] - }, - "expectedEvents": [ - "SmartTest" - ] + "actions": [] + } } diff --git a/ereuse_devicehub/dummy/files/real-hp.snapshot.11.yaml b/ereuse_devicehub/dummy/files/real-hp.snapshot.11.yaml index 659a1644..7158225e 100644 --- a/ereuse_devicehub/dummy/files/real-hp.snapshot.11.yaml +++ b/ereuse_devicehub/dummy/files/real-hp.snapshot.11.yaml @@ -3,7 +3,7 @@ "uuid": "f9e5e587-baee-44e1-9a94-255d216bbda9", "components": [ { - "events": [], + "actions": [], "serialNumber": "6c:62:6d:81:22:9f", "type": "NetworkAdapter", "manufacturer": "Intel Corporation", @@ -13,7 +13,7 @@ }, { "format": "DIMM", - "events": [ + "actions": [ ], "interface": "DDR3", "serialNumber": "B4012F30", @@ -25,7 +25,7 @@ }, { "format": "DIMM", - "events": [], + "actions": [], "interface": "DDR3", "serialNumber": "8E9F2E29", "size": 2048, @@ -36,7 +36,7 @@ }, { "format": "DIMM", - "events": [], + "actions": [], "interface": "DDR3", "serialNumber": "9A012F30", "size": 2048, @@ -47,7 +47,7 @@ }, { "format": "DIMM", - "events": [ + "actions": [ ], "interface": "DDR3", "serialNumber": "8F9F2E29", @@ -59,7 +59,7 @@ }, { "cores": 2, - "events": [ + "actions": [ { "rate": 23410.76, "type": "BenchmarkProcessor", @@ -79,7 +79,7 @@ "model": "Intel Core i3 CPU 530 @ 2.93GHz" }, { - "events": [ + "actions": [ { "writeSpeed": 24.5, "readSpeed": 111.0, @@ -102,7 +102,7 @@ "model": "WDC WD3200AAJS-6" }, { - "events": [], + "actions": [], "serialNumber": null, "type": "SoundCard", "manufacturer": "Intel Corporation", @@ -110,14 +110,14 @@ }, { "memory": 256.0, - "events": [], + "actions": [], "serialNumber": null, "type": "GraphicCard", "manufacturer": "Intel Corporation", "model": "Core Processor Integrated Graphics Controller" }, { - "events": [ + "actions": [ { "type": "TestBios", "accessRange": "A" @@ -137,13 +137,8 @@ "software": "Workbench", "elapsed": 96, "version": "11.0a1", - "expectedEvents": [ - "StressTest", - "Benchmark", - "SmartTest" - ], "device": { - "events": [ + "actions": [ { "type": "StressTest", "elapsed": 60, diff --git a/ereuse_devicehub/dummy/files/real-toshiba.snapshot.11.yaml b/ereuse_devicehub/dummy/files/real-toshiba.snapshot.11.yaml index d554a951..1a274d30 100644 --- a/ereuse_devicehub/dummy/files/real-toshiba.snapshot.11.yaml +++ b/ereuse_devicehub/dummy/files/real-toshiba.snapshot.11.yaml @@ -1,9 +1,4 @@ { - "expectedEvents": [ - "SmartTest", - "Benchmark", - "StressTest" - ], "endTime": "2018-06-29T15:29:29.322424+00:00", "elapsed": 391, "software": "Workbench", @@ -14,7 +9,7 @@ "size": 1024, "manufacturer": null, "format": "SODIMM", - "events": [ + "actions": [ ], "speed": 533.0, "type": "RamModule", @@ -23,21 +18,21 @@ { "serialNumber": null, "manufacturer": "Intel Corporation", - "events": [], + "actions": [], "type": "SoundCard", "model": "NM10/ICH7 Family High Definition Audio Controller" }, { "serialNumber": null, "manufacturer": "Chicony Electronics Co., Ltd.", - "events": [], + "actions": [], "type": "SoundCard", "model": "USB2.0 UVC WebCam" }, { "serialNumber": "00:23:08:a5:07:6d", "manufacturer": "Qualcomm Atheros", - "events": [], + "actions": [], "type": "NetworkAdapter", "wireless": true, "model": "AR9285 Wireless Network Adapter" @@ -45,7 +40,7 @@ { "serialNumber": "00:23:5a:fe:d7:14", "manufacturer": "Realtek Semiconductor Co., Ltd.", - "events": [], + "actions": [], "speed": 100, "type": "NetworkAdapter", "wireless": false, @@ -55,7 +50,7 @@ "serialNumber": null, "address": 32, "manufacturer": "Intel Corp.", - "events": [ + "actions": [ { "rate": 171.3049, "type": "BenchmarkProcessorSysbench", @@ -75,7 +70,7 @@ "memory": 256.0, "serialNumber": null, "manufacturer": "Intel Corporation", - "events": [], + "actions": [], "type": "GraphicCard", "model": "Mobile 945GSE Express Integrated Graphics Controller" }, @@ -84,7 +79,7 @@ "interface": "ATA", "size": 152627, "manufacturer": "Hitachi", - "events": [ + "actions": [ { "elapsed": 71, "readSpeed": 19.1, @@ -107,7 +102,7 @@ "serialNumber": "0123456789AB", "manufacturer": "TOSHIBA", "firewire": 0, - "events": [], + "actions": [], "pcmcia": 0, "usb": 5, "serial": 1, @@ -119,7 +114,7 @@ "device": { "serialNumber": "79545417K", "manufacturer": "TOSHIBA", - "events": [ + "actions": [ { "type": "StressTest", "severity": "Info", diff --git a/ereuse_devicehub/dummy/files/smart.snapshot.11.yaml b/ereuse_devicehub/dummy/files/smart.snapshot.11.yaml index 7ae7acd0..546b9016 100644 --- a/ereuse_devicehub/dummy/files/smart.snapshot.11.yaml +++ b/ereuse_devicehub/dummy/files/smart.snapshot.11.yaml @@ -1,12 +1,8 @@ { - "expectedEvents": [ - "Benchmark", - "TestDataStorage", - "StressTest" - ], + "device": { "model": "HP Compaq 8100 Elite SFF", - "events": [ + "actions": [ { "type": "BenchmarkRamSysbench", "elapsed": 1, @@ -27,7 +23,7 @@ { "model": "Intel Core i3 CPU 530 @ 2.93GHz", "address": 64, - "events": [ + "actions": [ { "type": "BenchmarkProcessor", "elapsed": 0, @@ -48,7 +44,7 @@ }, { "model": "Core Processor Integrated Graphics Controller", - "events": [], + "actions": [], "serialNumber": null, "type": "GraphicCard", "manufacturer": "Intel Corporation", @@ -56,7 +52,7 @@ }, { "model": "5 Series/3400 Series Chipset High Definition Audio", - "events": [], + "actions": [], "serialNumber": null, "type": "SoundCard", "manufacturer": "Intel Corporation" @@ -64,7 +60,7 @@ { "model": "16JTF25664AZ-1G4F", "interface": "DDR3", - "events": [], + "actions": [], "serialNumber": "B4012F30", "type": "RamModule", "manufacturer": "JEDEC ID:80 2C", @@ -75,7 +71,7 @@ { "model": "16JTF25664AZ-1G4F", "interface": "DDR3", - "events": [], + "actions": [], "serialNumber": "8E9F2E29", "type": "RamModule", "manufacturer": "JEDEC ID:80 2C", @@ -86,7 +82,7 @@ { "model": "16JTF25664AZ-1G4F", "interface": "DDR3", - "events": [], + "actions": [], "serialNumber": "9A012F30", "type": "RamModule", "manufacturer": "JEDEC ID:80 2C", @@ -97,7 +93,7 @@ { "model": "16JTF25664AZ-1G4F", "interface": "DDR3", - "events": [], + "actions": [], "serialNumber": "8F9F2E29", "type": "RamModule", "manufacturer": "JEDEC ID:80 2C", @@ -107,7 +103,7 @@ }, { "model": "82578DM Gigabit Network Connection", - "events": [], + "actions": [], "serialNumber": "6c:62:6d:81:22:9f", "type": "NetworkAdapter", "wireless": false, @@ -117,7 +113,7 @@ { "model": "WDC WD3200AAJS-6", "interface": "ATA", - "events": [ + "actions": [ { "currentPendingSectorCount": 0, "commandTimeout": 0, @@ -148,7 +144,7 @@ { "model": "304Ah", "pcmcia": 0, - "events": [], + "actions": [], "usb": 2, "firewire": 0, "type": "Motherboard", diff --git a/ereuse_devicehub/dummy/files/smartphone.snapshot.yaml b/ereuse_devicehub/dummy/files/smartphone.snapshot.yaml index 63be0f3d..26404ae2 100644 --- a/ereuse_devicehub/dummy/files/smartphone.snapshot.yaml +++ b/ereuse_devicehub/dummy/files/smartphone.snapshot.yaml @@ -7,7 +7,7 @@ device: model: A1586 serialNumber: ABCDEF imei: 35686800-004141-20 - events: + actions: - type: VisualTest appearanceRange: A functionalityRange: B diff --git a/ereuse_devicehub/dummy/files/workbench-server-1.snapshot.yaml b/ereuse_devicehub/dummy/files/workbench-server-1.snapshot.yaml index c5a99cb3..f2fe4856 100644 --- a/ereuse_devicehub/dummy/files/workbench-server-1.snapshot.yaml +++ b/ereuse_devicehub/dummy/files/workbench-server-1.snapshot.yaml @@ -9,7 +9,6 @@ type: Snapshot uuid: cb8ce6b5-6a1b-4084-b5b9-d8fadad2a015 version: '11.0' software: Workbench -expectedEvents: [TestDataStorage, StressTest, EraseSectors, Install] elapsed: 500 device: type: Desktop @@ -20,7 +19,7 @@ device: tags: - type: Tag id: tag1 - events: + actions: - type: VisualTest appearanceRange: A functionalityRange: B @@ -45,7 +44,7 @@ components: - type: Processor model: p1-1ml manufacturer: p1-1mr - events: + actions: - type: BenchmarkProcessor rate: 2410 elapsed: 44 @@ -57,7 +56,7 @@ components: model: ssd1-1ml manufacturer: ssd1-1mr size: 1100 - events: + actions: - type: BenchmarkDataStorage readSpeed: 20 writeSpeed: 15 @@ -80,7 +79,7 @@ components: serialNumber: hdd1-1s model: hdd1-1ml manufacturer: hdd1-1mr - events: + actions: - type: BenchmarkDataStorage readSpeed: 10 writeSpeed: 5 diff --git a/ereuse_devicehub/resources/event/__init__.py b/ereuse_devicehub/resources/action/__init__.py similarity index 78% rename from ereuse_devicehub/resources/event/__init__.py rename to ereuse_devicehub/resources/action/__init__.py index 4155464a..dd59aaff 100644 --- a/ereuse_devicehub/resources/event/__init__.py +++ b/ereuse_devicehub/resources/action/__init__.py @@ -2,29 +2,29 @@ from typing import Callable, Iterable, Tuple from teal.resource import Converters, Resource +from ereuse_devicehub.resources.action import schemas +from ereuse_devicehub.resources.action.views import ActionView from ereuse_devicehub.resources.device.sync import Sync -from ereuse_devicehub.resources.event import schemas -from ereuse_devicehub.resources.event.views import EventView -class EventDef(Resource): - SCHEMA = schemas.Event - VIEW = EventView +class ActionDef(Resource): + SCHEMA = schemas.Action + VIEW = ActionView AUTH = True ID_CONVERTER = Converters.uuid -class AddDef(EventDef): +class AddDef(ActionDef): VIEW = None SCHEMA = schemas.Add -class RemoveDef(EventDef): +class RemoveDef(ActionDef): VIEW = None SCHEMA = schemas.Remove -class EraseBasicDef(EventDef): +class EraseBasicDef(ActionDef): VIEW = None SCHEMA = schemas.EraseBasic @@ -54,7 +54,7 @@ class StepRandomDef(StepDef): SCHEMA = schemas.StepRandom -class BenchmarkDef(EventDef): +class BenchmarkDef(ActionDef): VIEW = None SCHEMA = schemas.Benchmark @@ -84,7 +84,7 @@ class BenchmarkRamSysbenchDef(BenchmarkWithRateDef): SCHEMA = schemas.BenchmarkRamSysbench -class TestDef(EventDef): +class TestDef(ActionDef): VIEW = None SCHEMA = schemas.Test @@ -134,7 +134,7 @@ class VisualTestDef(TestDef): SCHEMA = schemas.VisualTest -class RateDef(EventDef): +class RateDef(ActionDef): VIEW = None SCHEMA = schemas.Rate @@ -144,22 +144,22 @@ class RateComputerDef(RateDef): SCHEMA = schemas.RateComputer -class PriceDef(EventDef): +class PriceDef(ActionDef): VIEW = None SCHEMA = schemas.Price -class EreusePriceDef(EventDef): +class EreusePriceDef(ActionDef): VIEW = None SCHEMA = schemas.EreusePrice -class InstallDef(EventDef): +class InstallDef(ActionDef): VIEW = None SCHEMA = schemas.Install -class SnapshotDef(EventDef): +class SnapshotDef(ActionDef): VIEW = None SCHEMA = schemas.Snapshot @@ -167,92 +167,92 @@ class SnapshotDef(EventDef): static_url_path=None, template_folder=None, url_prefix=None, subdomain=None, url_defaults=None, root_path=None, cli_commands: Iterable[Tuple[Callable, str or None]] = tuple()): - url_prefix = '/{}'.format(EventDef.resource) + url_prefix = '/{}'.format(ActionDef.resource) super().__init__(app, import_name, static_folder, static_url_path, template_folder, url_prefix, subdomain, url_defaults, root_path, cli_commands) self.sync = Sync() -class ToRepairDef(EventDef): +class ToRepairDef(ActionDef): VIEW = None SCHEMA = schemas.ToRepair -class RepairDef(EventDef): +class RepairDef(ActionDef): VIEW = None SCHEMA = schemas.Repair -class ReadyToUse(EventDef): +class ReadyToUse(ActionDef): VIEW = None SCHEMA = schemas.ReadyToUse -class ToPrepareDef(EventDef): +class ToPrepareDef(ActionDef): VIEW = None SCHEMA = schemas.ToPrepare -class PrepareDef(EventDef): +class PrepareDef(ActionDef): VIEW = None SCHEMA = schemas.Prepare -class LiveDef(EventDef): +class LiveDef(ActionDef): VIEW = None SCHEMA = schemas.Live -class ReserveDef(EventDef): +class ReserveDef(ActionDef): VIEW = None SCHEMA = schemas.Reserve -class CancelReservationDef(EventDef): +class CancelReservationDef(ActionDef): VIEW = None SCHEMA = schemas.CancelReservation -class SellDef(EventDef): +class SellDef(ActionDef): VIEW = None SCHEMA = schemas.Sell -class DonateDef(EventDef): +class DonateDef(ActionDef): VIEW = None SCHEMA = schemas.Donate -class RentDef(EventDef): +class RentDef(ActionDef): VIEW = None SCHEMA = schemas.Rent -class CancelTradeDef(EventDef): +class CancelTradeDef(ActionDef): VIEW = None SCHEMA = schemas.CancelTrade -class ToDisposeProductDef(EventDef): +class ToDisposeProductDef(ActionDef): VIEW = None SCHEMA = schemas.ToDisposeProduct -class DisposeProductDef(EventDef): +class DisposeProductDef(ActionDef): VIEW = None SCHEMA = schemas.DisposeProduct -class ReceiveDef(EventDef): +class ReceiveDef(ActionDef): VIEW = None SCHEMA = schemas.Receive -class MigrateToDef(EventDef): +class MigrateToDef(ActionDef): VIEW = None SCHEMA = schemas.MigrateTo -class MigrateFromDef(EventDef): +class MigrateFromDef(ActionDef): VIEW = None SCHEMA = schemas.MigrateFrom diff --git a/ereuse_devicehub/resources/event/models.py b/ereuse_devicehub/resources/action/models.py similarity index 86% rename from ereuse_devicehub/resources/event/models.py rename to ereuse_devicehub/resources/action/models.py index 80cdd386..83098af8 100644 --- a/ereuse_devicehub/resources/event/models.py +++ b/ereuse_devicehub/resources/action/models.py @@ -1,7 +1,7 @@ """ -This file contains all events can apply to a device and is sorted according to a structure based on: +This file contains all actions can apply to a device and is sorted according to a structure based on: -* Generic Events +* Generic Actions * Benchmarks * Tests * Rates @@ -31,7 +31,7 @@ from sqlalchemy.ext.orderinglist import ordering_list from sqlalchemy.orm import backref, relationship, validates from sqlalchemy.orm.events import AttributeEvents as Events from sqlalchemy.util import OrderedSet -from teal.db import ArrayOfEnum, CASCADE_OWN, INHERIT_COND, IP, POLYMORPHIC_ID, \ +from teal.db import CASCADE_OWN, INHERIT_COND, IP, POLYMORPHIC_ID, \ POLYMORPHIC_ON, StrictVersionType, URL, check_lower, check_range from teal.enums import Country, Currency, Subdivision from teal.marshmallow import ValidationError @@ -43,8 +43,8 @@ from ereuse_devicehub.resources.device.models import Component, Computer, DataSt Device, Laptop, Server from ereuse_devicehub.resources.enums import AppearanceRange, BatteryHealth, BiosAccessRange, \ ErasureStandards, FunctionalityRange, PhysicalErasureMethod, PriceSoftware, \ - R_NEGATIVE, R_POSITIVE, RatingRange, ReceiverRole, Severity, SnapshotExpectedEvents, \ - SnapshotSoftware, TestDataStorageLength + R_NEGATIVE, R_POSITIVE, RatingRange, ReceiverRole, Severity, SnapshotSoftware, \ + TestDataStorageLength from ereuse_devicehub.resources.models import STR_SM_SIZE, Thing from ereuse_devicehub.resources.user.models import User @@ -53,18 +53,18 @@ class JoinedTableMixin: # noinspection PyMethodParameters @declared_attr def id(cls): - return Column(UUID(as_uuid=True), ForeignKey(Event.id), primary_key=True) + return Column(UUID(as_uuid=True), ForeignKey(Action.id), primary_key=True) -_sorted_events = { - 'order_by': lambda: Event.end_time, +_sorted_actions = { + 'order_by': lambda: Action.end_time, 'collection_class': SortedSet } -"""For db.backref, return the events sorted by end_time.""" +"""For db.backref, return the actions sorted by end_time.""" -class Event(Thing): - """Event performed on a device. +class Action(Thing): + """Action performed on a device. This class extends `Schema's Action `_. """ @@ -72,19 +72,19 @@ class Event(Thing): type = Column(Unicode, nullable=False) name = Column(CIText(), default='', nullable=False) name.comment = """ - A name or title for the event. Used when searching for events. + A name or title for the action. Used when searching for actions. """ severity = Column(teal.db.IntEnum(Severity), default=Severity.Info, nullable=False) severity.comment = Severity.__doc__ closed = Column(Boolean, default=True, nullable=False) closed.comment = """ - Whether the author has finished the event. + Whether the author has finished the action. After this is set to True, no modifications are allowed. - By default events are closed when performed. + By default actions are closed when performed. """ description = Column(Unicode, default='', nullable=False) description.comment = """ - A comment about the event. + A comment about the action. """ start_time = Column(db.TIMESTAMP(timezone=True)) start_time.comment = """ @@ -103,13 +103,13 @@ class Event(Thing): snapshot_id = Column(UUID(as_uuid=True), ForeignKey('snapshot.id', use_alter=True, - name='snapshot_events')) + name='snapshot_actions')) snapshot = relationship('Snapshot', - backref=backref('events', + backref=backref('actions', lazy=True, cascade=CASCADE_OWN, - **_sorted_events), - primaryjoin='Event.snapshot_id == Snapshot.id') + **_sorted_actions), + primaryjoin='Action.snapshot_id == Snapshot.id') author_id = Column(UUID(as_uuid=True), ForeignKey(User.id), @@ -117,7 +117,7 @@ class Event(Thing): default=lambda: g.user.id) # todo compute the org author = relationship(User, - backref=backref('authored_events', lazy=True, collection_class=set), + backref=backref('authored_actions', lazy=True, collection_class=set), primaryjoin=author_id == User.id) author_id.comment = """ The user that recorded this action in the system. @@ -133,7 +133,7 @@ class Event(Thing): default=lambda: g.user.individual.id) # todo compute the org agent = relationship(Agent, - backref=backref('events_agent', lazy=True, **_sorted_events), + backref=backref('actions_agent', lazy=True, **_sorted_actions), primaryjoin=agent_id == Agent.id) agent_id.comment = """ The direct performer or driver of the action. e.g. John wrote a book. @@ -143,29 +143,29 @@ class Event(Thing): """ components = relationship(Component, - backref=backref('events_components', lazy=True, **_sorted_events), - secondary=lambda: EventComponent.__table__, + backref=backref('actions_components', lazy=True, **_sorted_actions), + secondary=lambda: ActionComponent.__table__, order_by=lambda: Component.id, collection_class=OrderedSet) components.comment = """ - The components that are affected by the event. + The components that are affected by the action. - When performing events to parent devices their components are + When performing actions to parent devices their components are affected too. For example: an ``Allocate`` is performed to a Computer and this relationship is filled with the components the computer had - at the time of the event. + at the time of the action. For Add and Remove though, this has another meaning: the components that are added or removed. """ parent_id = Column(BigInteger, ForeignKey(Computer.id)) parent = relationship(Computer, - backref=backref('events_parent', lazy=True, **_sorted_events), + backref=backref('actions_parent', lazy=True, **_sorted_actions), primaryjoin=parent_id == Computer.id) parent_id.comment = """ - For events that are performed to components, the device parent + For actions that are performed to components, the device parent at that time. For example: for a ``EraseBasic`` performed on a data storage, this @@ -186,8 +186,8 @@ class Event(Thing): @property def url(self) -> urlutils.URL: - """The URL where to GET this event.""" - return urlutils.URL(url_for_resource(Event, item_id=self.id)) + """The URL where to GET this action.""" + return urlutils.URL(url_for_resource(Action, item_id=self.id)) @property def certificate(self) -> Optional[urlutils.URL]: @@ -204,23 +204,23 @@ class Event(Thing): #sqlalchemy.ext.declarative.declared_attr>`_ """ args = {POLYMORPHIC_ID: cls.t} - if cls.t == 'Event': + if cls.t == 'Action': args[POLYMORPHIC_ON] = cls.type # noinspection PyUnresolvedReferences if JoinedTableMixin in cls.mro(): - args[INHERIT_COND] = cls.id == Event.id + args[INHERIT_COND] = cls.id == Action.id return args @validates('end_time') def validate_end_time(self, _, end_time: datetime): if self.start_time and end_time <= self.start_time: - raise ValidationError('The event cannot finish before it starts.') + raise ValidationError('The action cannot finish before it starts.') return end_time @validates('start_time') def validate_start_time(self, _, start_time: datetime): if self.end_time and start_time >= self.end_time: - raise ValidationError('The event cannot start after it finished.') + raise ValidationError('The action cannot start after it finished.') return start_time @property @@ -245,29 +245,29 @@ class Event(Thing): return '<{0.t} {0.id} {0.severity}>'.format(self) -class EventComponent(db.Model): +class ActionComponent(db.Model): device_id = Column(BigInteger, ForeignKey(Component.id), primary_key=True) - event_id = Column(UUID(as_uuid=True), ForeignKey(Event.id), primary_key=True) + action_id = Column(UUID(as_uuid=True), ForeignKey(Action.id), primary_key=True) class JoinedWithOneDeviceMixin: # noinspection PyMethodParameters @declared_attr def id(cls): - return Column(UUID(as_uuid=True), ForeignKey(EventWithOneDevice.id), primary_key=True) + return Column(UUID(as_uuid=True), ForeignKey(ActionWithOneDevice.id), primary_key=True) -class EventWithOneDevice(JoinedTableMixin, Event): +class ActionWithOneDevice(JoinedTableMixin, Action): device_id = Column(BigInteger, ForeignKey(Device.id), nullable=False) device = relationship(Device, - backref=backref('events_one', + backref=backref('actions_one', lazy=True, cascade=CASCADE_OWN, - **_sorted_events), + **_sorted_actions), primaryjoin=Device.id == device_id) __table_args__ = ( - db.Index('event_one_device_id_index', device_id, postgresql_using='hash'), + db.Index('action_one_device_id_index', device_id, postgresql_using='hash'), ) def __repr__(self) -> str: @@ -283,15 +283,15 @@ class EventWithOneDevice(JoinedTableMixin, Event): #sqlalchemy.ext.declarative.declared_attr>`_ """ args = {POLYMORPHIC_ID: cls.t} - if cls.t == 'EventWithOneDevice': + if cls.t == 'ActionWithOneDevice': args[POLYMORPHIC_ON] = cls.type return args -class EventWithMultipleDevices(Event): +class ActionWithMultipleDevices(Action): devices = relationship(Device, - backref=backref('events_multiple', lazy=True, **_sorted_events), - secondary=lambda: EventDevice.__table__, + backref=backref('actions_multiple', lazy=True, **_sorted_actions), + secondary=lambda: ActionDevice.__table__, order_by=lambda: Device.id, collection_class=OrderedSet) @@ -299,13 +299,13 @@ class EventWithMultipleDevices(Event): return '<{0.t} {0.id} {0.severity} devices={0.devices!r}>'.format(self) -class EventDevice(db.Model): +class ActionDevice(db.Model): device_id = Column(BigInteger, ForeignKey(Device.id), primary_key=True) - event_id = Column(UUID(as_uuid=True), ForeignKey(EventWithMultipleDevices.id), - primary_key=True) + action_id = Column(UUID(as_uuid=True), ForeignKey(ActionWithMultipleDevices.id), + primary_key=True) -class Add(EventWithOneDevice): +class Add(ActionWithOneDevice): """The act of adding components to a device. It is usually used internally from a :class:`.Snapshot`, for @@ -313,7 +313,7 @@ class Add(EventWithOneDevice): """ -class Remove(EventWithOneDevice): +class Remove(ActionWithOneDevice): """The act of removing components from a device. It is usually used internally from a :class:`.Snapshot`, for @@ -321,20 +321,20 @@ class Remove(EventWithOneDevice): """ -class Allocate(JoinedTableMixin, EventWithMultipleDevices): +class Allocate(JoinedTableMixin, ActionWithMultipleDevices): to_id = Column(UUID, ForeignKey(User.id)) to = relationship(User, primaryjoin=User.id == to_id) organization = Column(CIText()) -class Deallocate(JoinedTableMixin, EventWithMultipleDevices): +class Deallocate(JoinedTableMixin, ActionWithMultipleDevices): from_id = Column(UUID, ForeignKey(User.id)) from_rel = relationship(User, primaryjoin=User.id == from_id) organization = Column(CIText()) -class EraseBasic(JoinedWithOneDeviceMixin, EventWithOneDevice): - """An erasure attempt to a ``DataStorage``. The event contains +class EraseBasic(JoinedWithOneDeviceMixin, ActionWithOneDevice): + """An erasure attempt to a ``DataStorage``. The action contains information about success and nature of the erasure. EraseBasic is a software-based fast non-100%-secured way of @@ -409,10 +409,10 @@ class Step(db.Model): num = Column(SmallInteger, primary_key=True) severity = Column(teal.db.IntEnum(Severity), default=Severity.Info, nullable=False) start_time = Column(db.TIMESTAMP(timezone=True), nullable=False) - start_time.comment = Event.start_time.comment + start_time.comment = Action.start_time.comment end_time = Column(db.TIMESTAMP(timezone=True), CheckConstraint('end_time > start_time'), nullable=False) - end_time.comment = Event.end_time.comment + end_time.comment = Action.end_time.comment erasure = relationship(EraseBasic, backref=backref('steps', @@ -453,7 +453,7 @@ class StepRandom(Step): pass -class Snapshot(JoinedWithOneDeviceMixin, EventWithOneDevice): +class Snapshot(JoinedWithOneDeviceMixin, ActionWithOneDevice): """The Snapshot sets the physical information of the device (S/N, model...) and updates it with erasures, benchmarks, ratings, and tests; updates the composition of its components (adding / removing them), and links tags @@ -488,11 +488,11 @@ class Snapshot(JoinedWithOneDeviceMixin, EventWithOneDevice): **Snapshots from Workbench** When processing a device from the Workbench, this one performs a Snapshot - and then performs more events (like testings, benchmarking...). + and then performs more actions (like testings, benchmarking...). There are two ways of sending this information. In an async way, - this is, submitting events as soon as Workbench performs then, or - submitting only one Snapshot event with all the other events embedded. + this is, submitting actions as soon as Workbench performs then, or + submitting only one Snapshot action with all the other actions embedded. **Asynced** @@ -502,42 +502,42 @@ class Snapshot(JoinedWithOneDeviceMixin, EventWithOneDevice): 1. In **T1**, WorkbenchServer (as the middleware from Workbench and Devicehub) submits: - - A ``Snapshot`` event with the required information to **synchronize** + - A ``Snapshot`` action with the required information to **synchronize** and **rate** the device. This is: - Identification information about the device and components (S/N, model, physical characteristics...) - ``Tags`` in a ``tags`` property in the ``device``. - - ``Rate`` in an ``events`` property in the ``device``. - - ``Benchmarks`` in an ``events`` property in each ``component`` + - ``Rate`` in an ``actions`` property in the ``device``. + - ``Benchmarks`` in an ``actions`` property in each ``component`` or ``device``. - ``TestDataStorage`` as in ``Benchmarks``. - - An ordered set of **expected events**, defining which are the next - events that Workbench will perform to the device in ideal + - An ordered set of **expected actions**, defining which are the next + actions that Workbench will perform to the device in ideal conditions (device doesn't fail, no Internet drop...). Devicehub **syncs** the device with the database and perform the ``Benchmark``, the ``TestDataStorage``, and finally the ``Rate``. - This leaves the Snapshot **open** to wait for the next events + This leaves the Snapshot **open** to wait for the next actions to come. - 2. Assuming that we expect all events, in **T2**, WorkbenchServer + 2. Assuming that we expect all actions, in **T2**, WorkbenchServer submits a ``StressTest`` with a ``snapshot`` field containing the - ID of the Snapshot in 1, and Devicehub links the event with such + ID of the Snapshot in 1, and Devicehub links the action with such ``Snapshot``. 3. In **T3**, WorkbenchServer submits the ``Erase`` with the ``Snapshot`` and ``component`` IDs from 1, linking it to them. It repeats this for all the erased data storage devices; **T3+Tn** being *n* the erased data storage devices. - 4. WorkbenchServer does like in 3. but for the event ``Install``, + 4. WorkbenchServer does like in 3. but for the action ``Install``, finishing in **T3+Tn+Tx**, being *x* the number of data storage devices with an OS installed into. - 5. In **T3+Tn+Tx**, when all *expected events* have been performed, + 5. In **T3+Tn+Tx**, when all *expected actions* have been performed, Devicehub **closes** the ``Snapshot`` from 1. **Synced** Optionally, Devicehub understands receiving a ``Snapshot`` with all - the events in an ``events`` property inside each affected ``component`` + the actions in an ``actions`` property inside each affected ``component`` or ``device``. """ uuid = Column(UUID(as_uuid=True), unique=True) @@ -548,13 +548,12 @@ class Snapshot(JoinedWithOneDeviceMixin, EventWithOneDevice): For Snapshots made with Workbench, the total amount of time it took to complete. """ - expected_events = Column(ArrayOfEnum(DBEnum(SnapshotExpectedEvents))) def __str__(self) -> str: return '{}. {} version {}.'.format(self.severity, self.software, self.version) -class Install(JoinedWithOneDeviceMixin, EventWithOneDevice): +class Install(JoinedWithOneDeviceMixin, ActionWithOneDevice): """The action of installing an Operative System to a data storage unit. """ @@ -572,7 +571,7 @@ class SnapshotRequest(db.Model): cascade=CASCADE_OWN)) -class Benchmark(JoinedWithOneDeviceMixin, EventWithOneDevice): +class Benchmark(JoinedWithOneDeviceMixin, ActionWithOneDevice): """The act of gauging the performance of a device.""" elapsed = Column(Interval) @@ -644,7 +643,7 @@ class BenchmarkGraphicCard(BenchmarkWithRate): pass -class Test(JoinedWithOneDeviceMixin, EventWithOneDevice): +class Test(JoinedWithOneDeviceMixin, ActionWithOneDevice): """The act of testing the physical condition of a device and its components. @@ -860,7 +859,7 @@ class VisualTest(TestMixin, Test): ) -class Rate(JoinedWithOneDeviceMixin, EventWithOneDevice): +class Rate(JoinedWithOneDeviceMixin, ActionWithOneDevice): """The act of computing a rate based on different categories""" # todo jn: explain in each comment what the rate considers. N = 2 @@ -1008,7 +1007,7 @@ class RateComputer(RateMixin, Rate): """ The act of compute general computer rate """ - from ereuse_devicehub.resources.event.rate.workbench.v1_0 import rate_algorithm + from ereuse_devicehub.resources.action.rate.workbench.v1_0 import rate_algorithm rate = rate_algorithm.compute(device) price = None with suppress(InvalidRangeForPrice): # We will have exception if range == VERY_LOW @@ -1016,14 +1015,14 @@ class RateComputer(RateMixin, Rate): return rate, price -class Price(JoinedWithOneDeviceMixin, EventWithOneDevice): +class Price(JoinedWithOneDeviceMixin, ActionWithOneDevice): """The act of setting a trading price for the device. This does not imply that the device is ultimately traded for that price. Use the :class:`.Sell` for that. Devicehub automatically computes a price from ``AggregateRating`` - events. As in a **Rate**, price can have **software** and **version**, + actions. As in a **Rate**, price can have **software** and **version**, and there is an **official** price that is used to automatically compute the price from an ``AggregateRating``. Only the official price is computed from an ``AggregateRating``. @@ -1174,11 +1173,11 @@ class EreusePrice(Price): return self.Service(self.device, self.rating.rating_range, role, self.price) -class ToRepair(EventWithMultipleDevices): +class ToRepair(ActionWithMultipleDevices): """Select a device to be repaired.""" -class Repair(EventWithMultipleDevices): +class Repair(ActionWithMultipleDevices): """Repair is the act of performing reparations. If a repair without an error is performed, @@ -1186,41 +1185,41 @@ class Repair(EventWithMultipleDevices): """ -class ReadyToUse(EventWithMultipleDevices): +class ReadyToUse(ActionWithMultipleDevices): """The device is ready to be used. - This involves greater preparation from the ``Prepare`` event, - and users should only use a device after this event is performed. + This involves greater preparation from the ``Prepare`` action, + and users should only use a device after this action is performed. - Users usually require devices with this event before shipping them + Users usually require devices with this action before shipping them to costumers. """ -class ToPrepare(EventWithMultipleDevices): +class ToPrepare(ActionWithMultipleDevices): """The device has been selected for preparation. See Prepare for more info. - Usually **ToPrepare** is the next event done after registering the + Usually **ToPrepare** is the next action done after registering the device. """ pass -class Prepare(EventWithMultipleDevices): +class Prepare(ActionWithMultipleDevices): """Work has been performed to the device to a defined point of acceptance. - Users using this event have to agree what is this point + Users using this action have to agree what is this point of acceptance; for some is when the device just works, for others when some testing has been performed. """ -class Live(JoinedWithOneDeviceMixin, EventWithOneDevice): +class Live(JoinedWithOneDeviceMixin, ActionWithOneDevice): """A keep-alive from a device connected to the Internet with - information about its state (in the form of a ``Snapshot`` event) + information about its state (in the form of a ``Snapshot`` action) and usage statistics. """ ip = Column(IP, nullable=False, @@ -1244,7 +1243,7 @@ class Live(JoinedWithOneDeviceMixin, EventWithOneDevice): # todo testing -class Organize(JoinedTableMixin, EventWithMultipleDevices): +class Organize(JoinedTableMixin, ActionWithMultipleDevices): """The act of manipulating/administering/supervising/controlling one or more devices. """ @@ -1253,7 +1252,7 @@ class Organize(JoinedTableMixin, EventWithMultipleDevices): class Reserve(Organize): """The act of reserving devices. - After this event is performed, the user is the **reservee** of the + After this action is performed, the user is the **reservee** of the devices. There can only be one non-cancelled reservation for a device, and a reservation can only have one reservee. """ @@ -1263,14 +1262,14 @@ class CancelReservation(Organize): """The act of cancelling a reservation.""" -class Trade(JoinedTableMixin, EventWithMultipleDevices): +class Trade(JoinedTableMixin, ActionWithMultipleDevices): """Trade actions log the political exchange of devices between users. - Every time a trade event is performed, the old user looses its + Every time a trade action is performed, the old user looses its political possession, for example ownership, in favor of another user. - Performing trade events changes the *Trading* state of the + Performing trade actions changes the *Trading* state of the device —:class:`ereuse_devicehub.resources.device.states.Trading`. This class and its inheritors @@ -1297,7 +1296,7 @@ class Trade(JoinedTableMixin, EventWithMultipleDevices): to_id = Column(UUID(as_uuid=True), ForeignKey(Agent.id), nullable=False) # todo compute the org to = relationship(Agent, - backref=backref('events_to', lazy=True, **_sorted_events), + backref=backref('actions_to', lazy=True, **_sorted_actions), primaryjoin=to_id == Agent.id) to_comment = """ The agent that gets the device due this deal. @@ -1357,7 +1356,7 @@ class DisposeProduct(Trade): # ``RecyclingCenter``. -class Receive(JoinedTableMixin, EventWithMultipleDevices): +class Receive(JoinedTableMixin, ActionWithMultipleDevices): """The act of physically taking delivery of a device. The receiver confirms that the devices have arrived, and thus, @@ -1377,7 +1376,7 @@ class Receive(JoinedTableMixin, EventWithMultipleDevices): default=ReceiverRole.Intermediary) -class Migrate(JoinedTableMixin, EventWithMultipleDevices): +class Migrate(JoinedTableMixin, ActionWithMultipleDevices): """Moves the devices to a new database/inventory. Devices cannot be modified anymore at the previous database. """ @@ -1398,52 +1397,52 @@ class MigrateFrom(Migrate): # Listeners # Listeners validate values and keep relationships synced -# The following listeners avoids setting values to events that +# The following listeners avoids setting values to actions that # do not make sense. For example, EraseBasic to a graphic card. @event.listens_for(TestDataStorage.device, Events.set.__name__, propagate=True) @event.listens_for(Install.device, Events.set.__name__, propagate=True) @event.listens_for(EraseBasic.device, Events.set.__name__, propagate=True) -def validate_device_is_data_storage(target: Event, value: DataStorage, old_value, initiator): - """Validates that the device for data-storage events is effectively a data storage.""" +def validate_device_is_data_storage(target: Action, value: DataStorage, old_value, initiator): + """Validates that the device for data-storage actions is effectively a data storage.""" if value and not isinstance(value, DataStorage): raise TypeError('{} must be a DataStorage but you passed {}'.format(initiator.impl, value)) @event.listens_for(BenchmarkRamSysbench.device, Events.set.__name__, propagate=True) -def events_not_for_components(target: Event, value: Device, old_value, initiator): - """Validates events that cannot be performed to components.""" +def actions_not_for_components(target: Action, value: Device, old_value, initiator): + """Validates actions that cannot be performed to components.""" if isinstance(value, Component): raise TypeError('{!r} cannot be performed to a component ({!r}).'.format(target, value)) -# The following listeners keep relationships with device <-> components synced with the event -# So, if you add or remove devices from events these listeners will -# automatically add/remove the ``components`` and ``parent`` of such events +# The following listeners keep relationships with device <-> components synced with the action +# So, if you add or remove devices from actions these listeners will +# automatically add/remove the ``components`` and ``parent`` of such actions # See the tests for examples -@event.listens_for(EventWithOneDevice.device, Events.set.__name__, propagate=True) -def update_components_event_one(target: EventWithOneDevice, device: Device, __, ___): +@event.listens_for(ActionWithOneDevice.device, Events.set.__name__, propagate=True) +def update_components_action_one(target: ActionWithOneDevice, device: Device, __, ___): """ - Syncs the :attr:`.Event.components` with the components in + Syncs the :attr:`.Action.components` with the components in :attr:`ereuse_devicehub.resources.device.models.Computer.components`. """ # For Add and Remove, ``components`` have different meanings - # see Event.components for more info + # see Action.components for more info if not isinstance(target, (Add, Remove)): target.components.clear() if isinstance(device, Computer): target.components |= device.components -@event.listens_for(EventWithMultipleDevices.devices, Events.init_collection.__name__, +@event.listens_for(ActionWithMultipleDevices.devices, Events.init_collection.__name__, propagate=True) -@event.listens_for(EventWithMultipleDevices.devices, Events.bulk_replace.__name__, propagate=True) -@event.listens_for(EventWithMultipleDevices.devices, Events.append.__name__, propagate=True) -def update_components_event_multiple(target: EventWithMultipleDevices, - value: Union[Set[Device], Device], _): +@event.listens_for(ActionWithMultipleDevices.devices, Events.bulk_replace.__name__, propagate=True) +@event.listens_for(ActionWithMultipleDevices.devices, Events.append.__name__, propagate=True) +def update_components_action_multiple(target: ActionWithMultipleDevices, + value: Union[Set[Device], Device], _): """ - Syncs the :attr:`.Event.components` with the components in + Syncs the :attr:`.Action.components` with the components in :attr:`ereuse_devicehub.resources.device.models.Computer.components`. """ target.components.clear() @@ -1453,10 +1452,10 @@ def update_components_event_multiple(target: EventWithMultipleDevices, target.components |= device.components -@event.listens_for(EventWithMultipleDevices.devices, Events.remove.__name__, propagate=True) -def remove_components_event_multiple(target: EventWithMultipleDevices, device: Device, __): +@event.listens_for(ActionWithMultipleDevices.devices, Events.remove.__name__, propagate=True) +def remove_components_action_multiple(target: ActionWithMultipleDevices, device: Device, __): """ - Syncs the :attr:`.Event.components` with the components in + Syncs the :attr:`.Action.components` with the components in :attr:`ereuse_devicehub.resources.device.models.Computer.components`. """ target.components.clear() @@ -1471,7 +1470,7 @@ def remove_components_event_multiple(target: EventWithMultipleDevices, device: D @event.listens_for(Benchmark.device, Events.set.__name__, propagate=True) def update_parent(target: Union[EraseBasic, Test, Install], device: Device, _, __): """ - Syncs the :attr:`Event.parent` with the parent of the device. + Syncs the :attr:`Action.parent` with the parent of the device. """ target.parent = None if isinstance(device, Component): diff --git a/ereuse_devicehub/resources/event/models.pyi b/ereuse_devicehub/resources/action/models.pyi similarity index 88% rename from ereuse_devicehub/resources/event/models.pyi rename to ereuse_devicehub/resources/action/models.pyi index f3af7551..e18c9eb9 100644 --- a/ereuse_devicehub/resources/event/models.pyi +++ b/ereuse_devicehub/resources/action/models.pyi @@ -16,14 +16,14 @@ from teal.enums import Country from ereuse_devicehub.resources.agent.models import Agent from ereuse_devicehub.resources.device.models import Component, Computer, Device -from ereuse_devicehub.resources.enums import AppearanceRange, ErasureStandards, \ - FunctionalityRange, PhysicalErasureMethod, PriceSoftware, RatingRange, \ - ReceiverRole, Severity, SnapshotExpectedEvents, SnapshotSoftware, TestDataStorageLength +from ereuse_devicehub.resources.enums import AppearanceRange, BatteryHealth, ErasureStandards, \ + FunctionalityRange, PhysicalErasureMethod, PriceSoftware, RatingRange, ReceiverRole, Severity, \ + SnapshotSoftware, TestDataStorageLength from ereuse_devicehub.resources.models import Thing from ereuse_devicehub.resources.user.models import User -class Event(Thing): +class Action(Thing): id = ... # type: Column name = ... # type: Column type = ... # type: Column @@ -74,13 +74,13 @@ class Event(Thing): return '{:%c}'.format(self.end_time or self.created) -class EventWithOneDevice(Event): +class ActionWithOneDevice(Action): def __init__(self, **kwargs) -> None: super().__init__(**kwargs) self.device = ... # type: Device -class EventWithMultipleDevices(Event): +class ActionWithMultipleDevices(Action): devices = ... # type: relationship def __init__(self, **kwargs) -> None: @@ -88,11 +88,11 @@ class EventWithMultipleDevices(Event): self.devices = ... # type: Set[Device] -class Add(EventWithOneDevice): +class Add(ActionWithOneDevice): pass -class Remove(EventWithOneDevice): +class Remove(ActionWithOneDevice): pass @@ -122,7 +122,7 @@ class StepRandom(Step): pass -class EraseBasic(EventWithOneDevice): +class EraseBasic(ActionWithOneDevice): def __init__(self, **kwargs) -> None: super().__init__(**kwargs) self.start_time = ... # type: datetime @@ -153,7 +153,7 @@ class ErasePhysical(EraseBasic): self.method = ... # type: PhysicalErasureMethod -class Snapshot(EventWithOneDevice): +class Snapshot(ActionWithOneDevice): def __init__(self, **kwargs) -> None: super().__init__(**kwargs) self.uuid = ... # type: UUID @@ -161,11 +161,10 @@ class Snapshot(EventWithOneDevice): self.software = ... # type: SnapshotSoftware self.elapsed = ... # type: timedelta self.device = ... # type: Computer - self.events = ... # type: Set[Event] - self.expected_events = ... # type: List[SnapshotExpectedEvents] + self.actions = ... # type: Set[Action] -class Install(EventWithOneDevice): +class Install(ActionWithOneDevice): name = ... # type: Column elapsed = ... # type: Column address = ... # type: Column @@ -184,7 +183,7 @@ class SnapshotRequest(Model): self.snapshot = ... # type: Snapshot -class Benchmark(EventWithOneDevice): +class Benchmark(ActionWithOneDevice): pass @@ -222,7 +221,7 @@ class BenchmarkGraphicCard(BenchmarkWithRate): pass -class Test(EventWithOneDevice): +class Test(ActionWithOneDevice): elapsed = ... # type: Column def __init__(self, **kwargs) -> None: @@ -231,6 +230,20 @@ class Test(EventWithOneDevice): self.success = ... # type: bool +class MeasureBattery(Test): + size = ... # type: Column + voltage = ... # type: Column + cycle_count = ... # type: Column + health = ... # type: Column + + def __init__(self, **kwargs) -> None: + super().__init__(**kwargs) + self.size = ... # type: int + self.voltage = ... # type: int + self.cycle_count = ... # type: Optional[int] + self.health = ... # type: Optional[BatteryHealth] + + class TestDataStorage(Test): length = ... # type: Column status = ... # type: Column @@ -309,12 +322,12 @@ class VisualTest(Test): def __init__(self, **kwargs) -> None: super().__init__(**kwargs) - self.appearance_range = ... # type: AppearanceRange - self.functionality_range = ... # type: FunctionalityRange - self.labelling = ... # type: Optional[bool] + self.appearance_range = ... # type: AppearanceRange + self.functionality_range = ... # type: FunctionalityRange + self.labelling = ... # type: Optional[bool] -class Rate(EventWithOneDevice): +class Rate(ActionWithOneDevice): N = 2 _rating = ... # type: Column _appearance = ... # type: Column @@ -367,7 +380,7 @@ class RateComputer(Rate): pass -class Price(EventWithOneDevice): +class Price(ActionWithOneDevice): SCALE = ... ROUND = ... currency = ... # type: Column @@ -413,27 +426,27 @@ class EreusePrice(Price): self.warranty2 = ... # type: float -class ToRepair(EventWithMultipleDevices): +class ToRepair(ActionWithMultipleDevices): pass -class Repair(EventWithMultipleDevices): +class Repair(ActionWithMultipleDevices): pass -class ReadyToUse(EventWithMultipleDevices): +class ReadyToUse(ActionWithMultipleDevices): pass -class ToPrepare(EventWithMultipleDevices): +class ToPrepare(ActionWithMultipleDevices): pass -class Prepare(EventWithMultipleDevices): +class Prepare(ActionWithMultipleDevices): pass -class Live(EventWithOneDevice): +class Live(ActionWithOneDevice): ip = ... # type: Column subdivision_confidence = ... # type: Column subdivision = ... # type: Column @@ -456,7 +469,7 @@ class Live(EventWithOneDevice): self.country = ... # type: Country -class Organize(EventWithMultipleDevices): +class Organize(ActionWithMultipleDevices): pass @@ -464,7 +477,7 @@ class Reserve(Organize): pass -class Trade(EventWithMultipleDevices): +class Trade(ActionWithMultipleDevices): shipping_date = ... # type: Column invoice_number = ... # type: Column price = ... # type: relationship @@ -504,7 +517,7 @@ class DisposeProduct(Trade): pass -class Receive(EventWithMultipleDevices): +class Receive(ActionWithMultipleDevices): role = ... # type:Column def __init__(self, **kwargs) -> None: @@ -512,7 +525,7 @@ class Receive(EventWithMultipleDevices): self.role = ... # type: ReceiverRole -class Migrate(EventWithMultipleDevices): +class Migrate(ActionWithMultipleDevices): other = ... # type: Column def __init__(self, **kwargs) -> None: diff --git a/ereuse_devicehub/resources/event/rate/__init__.py b/ereuse_devicehub/resources/action/rate/__init__.py similarity index 100% rename from ereuse_devicehub/resources/event/rate/__init__.py rename to ereuse_devicehub/resources/action/rate/__init__.py diff --git a/ereuse_devicehub/resources/event/rate/rate.py b/ereuse_devicehub/resources/action/rate/rate.py similarity index 100% rename from ereuse_devicehub/resources/event/rate/rate.py rename to ereuse_devicehub/resources/action/rate/rate.py diff --git a/ereuse_devicehub/resources/event/rate/workbench/__init__.py b/ereuse_devicehub/resources/action/rate/workbench/__init__.py similarity index 100% rename from ereuse_devicehub/resources/event/rate/workbench/__init__.py rename to ereuse_devicehub/resources/action/rate/workbench/__init__.py diff --git a/ereuse_devicehub/resources/event/rate/workbench/v1_0.py b/ereuse_devicehub/resources/action/rate/workbench/v1_0.py similarity index 94% rename from ereuse_devicehub/resources/event/rate/workbench/v1_0.py rename to ereuse_devicehub/resources/action/rate/workbench/v1_0.py index 5b47a91c..c3f8b2a2 100644 --- a/ereuse_devicehub/resources/event/rate/workbench/v1_0.py +++ b/ereuse_devicehub/resources/action/rate/workbench/v1_0.py @@ -2,18 +2,18 @@ from enum import Enum, unique from itertools import groupby from typing import Dict, Iterable, Tuple +from ereuse_devicehub.resources.action.models import BenchmarkDataStorage, BenchmarkProcessor, \ + BenchmarkProcessorSysbench, RateComputer, VisualTest +from ereuse_devicehub.resources.action.rate.rate import BaseRate from ereuse_devicehub.resources.device.models import Computer, DataStorage, Processor, \ RamModule -from ereuse_devicehub.resources.event.models import BenchmarkDataStorage, BenchmarkProcessor, \ - BenchmarkProcessorSysbench, RateComputer, VisualTest -from ereuse_devicehub.resources.event.rate.rate import BaseRate class RateAlgorithm(BaseRate): """The algorithm that generates the Rate v1.0. Do not call directly this class, but use - :meth:`ereuse_devicehub.resources.event.models.RateComputer.compute`, + :meth:`ereuse_devicehub.resources.action.models.RateComputer.compute`, which then calls this. """ @@ -44,13 +44,13 @@ class RateAlgorithm(BaseRate): def compute(self, device: Computer) -> RateComputer: """Generates a new - :class:`ereuse_devicehub.resources.event.models.RateComputer` + :class:`ereuse_devicehub.resources.action.models.RateComputer` for the passed-in device. """ assert isinstance(device, Computer), 'Can only rate computers' try: - visual_test = device.last_event_of(VisualTest) + visual_test = device.last_action_of(VisualTest) except LookupError: raise CannotRate('You need a visual test.') @@ -73,7 +73,7 @@ class RateAlgorithm(BaseRate): rate.appearance = self.Appearance[visual_test.appearance_range.name].value rate.functionality = self.Functionality[visual_test.functionality_range.name].value rate.rating = rate_components + rate.functionality + rate.appearance - device.events_one.add(rate) + device.actions_one.add(rate) assert 0 <= rate.rating <= 4.7, 'Rate ranges from 0 to 4.7' return rate @@ -100,7 +100,7 @@ class ProcessorRate(BaseRate): cores = processor.cores or self.DEFAULT_CORES speed = processor.speed or self.DEFAULT_SPEED benchmark_cpu = next( - e for e in reversed(processor.events) + e for e in reversed(processor.actions) if isinstance(e, BenchmarkProcessor) and not isinstance(e, BenchmarkProcessorSysbench) ) benchmark_cpu = benchmark_cpu.rate or self.DEFAULT_SCORE @@ -203,7 +203,7 @@ class DataStorageRate(BaseRate): # STEP: Filtering, data cleaning and merging of component parts for storage in data_storage_devices: # We assume all hdd snapshots have BenchmarkDataStorage - benchmark = storage.last_event_of(BenchmarkDataStorage) + benchmark = storage.last_action_of(BenchmarkDataStorage) # prevent NULL values _size = storage.size or 0 size += _size diff --git a/ereuse_devicehub/resources/event/schemas.py b/ereuse_devicehub/resources/action/schemas.py similarity index 85% rename from ereuse_devicehub/resources/event/schemas.py rename to ereuse_devicehub/resources/action/schemas.py index 0aaee983..13f528c8 100644 --- a/ereuse_devicehub/resources/event/schemas.py +++ b/ereuse_devicehub/resources/action/schemas.py @@ -1,6 +1,6 @@ from flask import current_app as app from marshmallow import Schema as MarshmallowSchema, ValidationError, fields as f, validates_schema -from marshmallow.fields import Boolean, DateTime, Decimal, Float, Integer, List, Nested, String, \ +from marshmallow.fields import Boolean, DateTime, Decimal, Float, Integer, Nested, String, \ TimeDelta, UUID from marshmallow.validate import Length, OneOf, Range from sqlalchemy.util import OrderedSet @@ -10,55 +10,55 @@ from teal.resource import Schema from ereuse_devicehub.marshmallow import NestedOn from ereuse_devicehub.resources import enums +from ereuse_devicehub.resources.action import models as m from ereuse_devicehub.resources.agent import schemas as s_agent from ereuse_devicehub.resources.device import schemas as s_device from ereuse_devicehub.resources.enums import AppearanceRange, BiosAccessRange, FunctionalityRange, \ PhysicalErasureMethod, R_POSITIVE, RatingRange, ReceiverRole, \ - Severity, SnapshotExpectedEvents, SnapshotSoftware, TestDataStorageLength -from ereuse_devicehub.resources.event import models as m + Severity, SnapshotSoftware, TestDataStorageLength from ereuse_devicehub.resources.models import STR_BIG_SIZE, STR_SIZE from ereuse_devicehub.resources.schemas import Thing from ereuse_devicehub.resources.user import schemas as s_user -class Event(Thing): - __doc__ = m.Event.__doc__ +class Action(Thing): + __doc__ = m.Action.__doc__ id = UUID(dump_only=True) name = SanitizedStr(default='', validate=Length(max=STR_BIG_SIZE), - description=m.Event.name.comment) - closed = Boolean(missing=True, description=m.Event.closed.comment) - severity = EnumField(Severity, description=m.Event.severity.comment) - description = SanitizedStr(default='', description=m.Event.description.comment) - start_time = DateTime(data_key='startTime', description=m.Event.start_time.comment) - end_time = DateTime(data_key='endTime', description=m.Event.end_time.comment) + description=m.Action.name.comment) + closed = Boolean(missing=True, description=m.Action.closed.comment) + severity = EnumField(Severity, description=m.Action.severity.comment) + description = SanitizedStr(default='', description=m.Action.description.comment) + start_time = DateTime(data_key='startTime', description=m.Action.start_time.comment) + end_time = DateTime(data_key='endTime', description=m.Action.end_time.comment) snapshot = NestedOn('Snapshot', dump_only=True) - agent = NestedOn(s_agent.Agent, description=m.Event.agent_id.comment) + agent = NestedOn(s_agent.Agent, description=m.Action.agent_id.comment) author = NestedOn(s_user.User, dump_only=True, exclude=('token',)) components = NestedOn(s_device.Component, dump_only=True, many=True) - parent = NestedOn(s_device.Computer, dump_only=True, description=m.Event.parent_id.comment) - url = URL(dump_only=True, description=m.Event.url.__doc__) + parent = NestedOn(s_device.Computer, dump_only=True, description=m.Action.parent_id.comment) + url = URL(dump_only=True, description=m.Action.url.__doc__) -class EventWithOneDevice(Event): - __doc__ = m.EventWithOneDevice.__doc__ +class ActionWithOneDevice(Action): + __doc__ = m.ActionWithOneDevice.__doc__ device = NestedOn(s_device.Device, only_query='id') -class EventWithMultipleDevices(Event): - __doc__ = m.EventWithMultipleDevices.__doc__ +class ActionWithMultipleDevices(Action): + __doc__ = m.ActionWithMultipleDevices.__doc__ devices = NestedOn(s_device.Device, many=True, only_query='id', collection_class=OrderedSet) -class Add(EventWithOneDevice): +class Add(ActionWithOneDevice): __doc__ = m.Add.__doc__ -class Remove(EventWithOneDevice): +class Remove(ActionWithOneDevice): __doc__ = m.Remove.__doc__ -class Allocate(EventWithMultipleDevices): +class Allocate(ActionWithMultipleDevices): __doc__ = m.Allocate.__doc__ to = NestedOn(s_user.User, description='The user the devices are allocated to.') @@ -67,7 +67,7 @@ class Allocate(EventWithMultipleDevices): 'user was when this happened.') -class Deallocate(EventWithMultipleDevices): +class Deallocate(ActionWithMultipleDevices): __doc__ = m.Deallocate.__doc__ from_rel = Nested(s_user.User, data_key='from', @@ -77,7 +77,7 @@ class Deallocate(EventWithMultipleDevices): 'user was when this happened.') -class EraseBasic(EventWithOneDevice): +class EraseBasic(ActionWithOneDevice): __doc__ = m.EraseBasic.__doc__ steps = NestedOn('Step', many=True) standards = f.List(EnumField(enums.ErasureStandards), dump_only=True) @@ -98,7 +98,7 @@ class Step(Schema): type = String(description='Only required when it is nested.') start_time = DateTime(required=True, data_key='startTime') end_time = DateTime(required=True, data_key='endTime') - severity = EnumField(Severity, description=m.Event.severity.comment) + severity = EnumField(Severity, description=m.Action.severity.comment) class StepZero(Step): @@ -109,7 +109,7 @@ class StepRandom(Step): __doc__ = m.StepRandom.__doc__ -class Benchmark(EventWithOneDevice): +class Benchmark(ActionWithOneDevice): __doc__ = m.Benchmark.__doc__ elapsed = TimeDelta(precision=TimeDelta.SECONDS, required=True) @@ -141,7 +141,7 @@ class BenchmarkGraphicCard(BenchmarkWithRate): __doc__ = m.BenchmarkGraphicCard.__doc__ -class Test(EventWithOneDevice): +class Test(ActionWithOneDevice): __doc__ = m.Test.__doc__ @@ -211,7 +211,7 @@ class VisualTest(Test): labelling = Boolean() -class Rate(EventWithOneDevice): +class Rate(ActionWithOneDevice): __doc__ = m.Rate.__doc__ rating = Integer(validate=Range(*R_POSITIVE), dump_only=True, @@ -243,7 +243,7 @@ class RateComputer(Rate): graphic_card_range = EnumField(RatingRange, dump_only=True, data_key='graphicCardRange') -class Price(EventWithOneDevice): +class Price(ActionWithOneDevice): __doc__ = m.Price.__doc__ currency = EnumField(Currency, required=True, description=m.Price.currency.comment) price = Decimal(places=m.Price.SCALE, @@ -271,7 +271,7 @@ class EreusePrice(Price): platform = Nested(Service) -class Install(EventWithOneDevice): +class Install(ActionWithOneDevice): __doc__ = m.Install.__doc__ name = SanitizedStr(validate=Length(min=4, max=STR_BIG_SIZE), required=True, @@ -280,11 +280,11 @@ class Install(EventWithOneDevice): address = Integer(validate=OneOf({8, 16, 32, 64, 128, 256})) -class Snapshot(EventWithOneDevice): +class Snapshot(ActionWithOneDevice): __doc__ = m.Snapshot.__doc__ """ The Snapshot updates the state of the device with information about - its components and events performed at them. + its components and actions performed at them. See docs for more info. """ @@ -293,13 +293,7 @@ class Snapshot(EventWithOneDevice): required=True, description='The software that generated this Snapshot.') version = Version(required=True, description='The version of the software.') - events = NestedOn(Event, many=True, dump_only=True) - expected_events = List(EnumField(SnapshotExpectedEvents), - data_key='expectedEvents', - description='Keep open this Snapshot until the following events' - 'are performed. Setting this value will activate' - 'the async Snapshot.') - + actions = NestedOn(Action, many=True, dump_only=True) elapsed = TimeDelta(precision=TimeDelta.SECONDS) components = NestedOn(s_device.Component, many=True, @@ -345,27 +339,27 @@ class Snapshot(EventWithOneDevice): field_names=['elapsed']) -class ToRepair(EventWithMultipleDevices): +class ToRepair(ActionWithMultipleDevices): __doc__ = m.ToRepair.__doc__ -class Repair(EventWithMultipleDevices): +class Repair(ActionWithMultipleDevices): __doc__ = m.Repair.__doc__ -class ReadyToUse(EventWithMultipleDevices): +class ReadyToUse(ActionWithMultipleDevices): __doc__ = m.ReadyToUse.__doc__ -class ToPrepare(EventWithMultipleDevices): +class ToPrepare(ActionWithMultipleDevices): __doc__ = m.ToPrepare.__doc__ -class Prepare(EventWithMultipleDevices): +class Prepare(ActionWithMultipleDevices): __doc__ = m.Prepare.__doc__ -class Live(EventWithOneDevice): +class Live(ActionWithOneDevice): __doc__ = m.Live.__doc__ ip = IP(dump_only=True) subdivision_confidence = Integer(dump_only=True, data_key='subdivisionConfidence') @@ -378,7 +372,7 @@ class Live(EventWithOneDevice): organization_type = SanitizedStr(lower=True, dump_only=True, data_key='organizationType') -class Organize(EventWithMultipleDevices): +class Organize(ActionWithMultipleDevices): __doc__ = m.Organize.__doc__ @@ -390,7 +384,7 @@ class CancelReservation(Organize): __doc__ = m.CancelReservation.__doc__ -class Trade(EventWithMultipleDevices): +class Trade(ActionWithMultipleDevices): __doc__ = m.Trade.__doc__ shipping_date = DateTime(data_key='shippingDate') invoice_number = SanitizedStr(validate=Length(max=STR_SIZE), data_key='invoiceNumber') @@ -423,12 +417,12 @@ class DisposeProduct(Trade): __doc__ = m.DisposeProduct.__doc__ -class Receive(EventWithMultipleDevices): +class Receive(ActionWithMultipleDevices): __doc__ = m.Receive.__doc__ role = EnumField(ReceiverRole) -class Migrate(EventWithMultipleDevices): +class Migrate(ActionWithMultipleDevices): __doc__ = m.Migrate.__doc__ other = URL() diff --git a/ereuse_devicehub/resources/event/views.py b/ereuse_devicehub/resources/action/views.py similarity index 62% rename from ereuse_devicehub/resources/event/views.py rename to ereuse_devicehub/resources/action/views.py index 2f642cb6..3d2a6876 100644 --- a/ereuse_devicehub/resources/event/views.py +++ b/ereuse_devicehub/resources/action/views.py @@ -8,39 +8,39 @@ from teal.marshmallow import ValidationError from teal.resource import View from ereuse_devicehub.db import db +from ereuse_devicehub.resources.action.models import Action, RateComputer, Snapshot +from ereuse_devicehub.resources.action.rate.workbench.v1_0 import CannotRate from ereuse_devicehub.resources.device.models import Component, Computer from ereuse_devicehub.resources.enums import SnapshotSoftware -from ereuse_devicehub.resources.event.models import Event, RateComputer, Snapshot -from ereuse_devicehub.resources.event.rate.workbench.v1_0 import CannotRate SUPPORTED_WORKBENCH = StrictVersion('11.0') -class EventView(View): +class ActionView(View): def post(self): - """Posts an event.""" + """Posts an action.""" json = request.get_json(validate=False) if not json or 'type' not in json: raise ValidationError('Resource needs a type.') # todo there should be a way to better get subclassess resource # defs resource_def = app.resources[json['type']] - e = resource_def.schema.load(json) + a = resource_def.schema.load(json) if json['type'] == Snapshot.t: - return self.snapshot(e, resource_def) + return self.snapshot(a, resource_def) Model = db.Model._decl_class_registry.data[json['type']]() - event = Model(**e) - db.session.add(event) + action = Model(**a) + db.session.add(action) db.session().final_flush() - ret = self.schema.jsonify(event) + ret = self.schema.jsonify(action) ret.status_code = 201 db.session.commit() return ret def one(self, id: UUID): - """Gets one event.""" - event = Event.query.filter_by(id=id).one() - return self.schema.jsonify(event) + """Gets one action.""" + action = Action.query.filter_by(id=id).one() + return self.schema.jsonify(action) def snapshot(self, snapshot_json: dict, resource_def): """ @@ -57,30 +57,30 @@ class EventView(View): components = snapshot_json.pop('components') # type: List[Component] snapshot = Snapshot(**snapshot_json) - # Remove new events from devices so they don't interfere with sync - events_device = set(e for e in device.events_one) - device.events_one.clear() + # Remove new actions from devices so they don't interfere with sync + actions_device = set(e for e in device.actions_one) + device.actions_one.clear() if components: - events_components = tuple(set(e for e in c.events_one) for c in components) + actions_components = tuple(set(e for e in c.actions_one) for c in components) for component in components: - component.events_one.clear() + component.actions_one.clear() - assert not device.events_one - assert all(not c.events_one for c in components) if components else True - db_device, remove_events = resource_def.sync.run(device, components) + assert not device.actions_one + assert all(not c.actions_one for c in components) if components else True + db_device, remove_actions = resource_def.sync.run(device, components) del device # Do not use device anymore snapshot.device = db_device - snapshot.events |= remove_events | events_device # Set events to snapshot + snapshot.actions |= remove_actions | actions_device # Set actions to snapshot # commit will change the order of the components by what # the DB wants. Let's get a copy of the list so we preserve order ordered_components = OrderedSet(x for x in snapshot.components) - # Add the new events to the db-existing devices and components - db_device.events_one |= events_device + # Add the new actions to the db-existing devices and components + db_device.actions_one |= actions_device if components: - for component, events in zip(ordered_components, events_components): - component.events_one |= events - snapshot.events |= events + for component, actions in zip(ordered_components, actions_components): + component.actions_one |= actions + snapshot.actions |= actions # Compute ratings if snapshot.software == SnapshotSoftware.Workbench: @@ -89,9 +89,9 @@ class EventView(View): except CannotRate: pass else: - snapshot.events.add(rate_computer) + snapshot.actions.add(rate_computer) if price: - snapshot.events.add(price) + snapshot.actions.add(price) db.session.add(snapshot) db.session().final_flush() diff --git a/ereuse_devicehub/resources/agent/models.py b/ereuse_devicehub/resources/agent/models.py index 78f4ac09..6763ccca 100644 --- a/ereuse_devicehub/resources/agent/models.py +++ b/ereuse_devicehub/resources/agent/models.py @@ -67,9 +67,9 @@ class Agent(Thing): return args @property - def events(self) -> list: + def actions(self) -> list: # todo test - return sorted(chain(self.events_agent, self.events_to), key=attrgetter('created')) + return sorted(chain(self.actions_agent, self.actions_to), key=attrgetter('created')) @validates('name') def does_not_contain_slash(self, _, value: str): diff --git a/ereuse_devicehub/resources/agent/models.pyi b/ereuse_devicehub/resources/agent/models.pyi index 379c2fad..ed949756 100644 --- a/ereuse_devicehub/resources/agent/models.pyi +++ b/ereuse_devicehub/resources/agent/models.pyi @@ -6,7 +6,7 @@ from sqlalchemy.orm import relationship from sqlalchemy_utils import PhoneNumber from teal import enums -from ereuse_devicehub.resources.event.models import Event, Trade +from ereuse_devicehub.resources.action.models import Action, Trade from ereuse_devicehub.resources.models import Thing from ereuse_devicehub.resources.tag.model import Tag from ereuse_devicehub.resources.user import User @@ -28,11 +28,11 @@ class Agent(Thing): self.country = ... # type: enums.Country self.telephone = ... # type: PhoneNumber self.email = ... # type: str - self.events_agent = ... # type: Set[Event] # Ordered - self.events_to = ... # type: Set[Trade] # Ordered + self.actions_agent = ... # type: Set[Action] # Ordered + self.actions_to = ... # type: Set[Trade] # Ordered @property - def events(self) -> List[Event]: + def actions(self) -> List[Action]: pass diff --git a/ereuse_devicehub/resources/device/models.py b/ereuse_devicehub/resources/device/models.py index cb76e700..cfab7dd2 100644 --- a/ereuse_devicehub/resources/device/models.py +++ b/ereuse_devicehub/resources/device/models.py @@ -138,35 +138,35 @@ class Device(Thing): self.hid = Naming.hid(self.type, self.manufacturer, self.model, self.serial_number) @property - def events(self) -> list: + def actions(self) -> list: """ - All the events where the device participated, including: + All the actions where the device participated, including: - 1. Events performed directly to the device. - 2. Events performed to a component. - 3. Events performed to a parent device. + 1. Actions performed directly to the device. + 2. Actions performed to a component. + 3. Actions performed to a parent device. - Events are returned by descending ``created`` time. + Actions are returned by descending ``created`` time. """ - return sorted(chain(self.events_multiple, self.events_one)) + return sorted(chain(self.actions_multiple, self.actions_one)) @property def problems(self): - """Current events with severity.Warning or higher. + """Current actions with severity.Warning or higher. - There can be up to 3 events: current Snapshot, - current Physical event, current Trading event. + There can be up to 3 actions: current Snapshot, + current Physical action, current Trading action. """ from ereuse_devicehub.resources.device import states - from ereuse_devicehub.resources.event.models import Snapshot - events = set() + from ereuse_devicehub.resources.action.models import Snapshot + actions = set() with suppress(LookupError, ValueError): - events.add(self.last_event_of(Snapshot)) + actions.add(self.last_action_of(Snapshot)) with suppress(LookupError, ValueError): - events.add(self.last_event_of(*states.Physical.events())) + actions.add(self.last_action_of(*states.Physical.actions())) with suppress(LookupError, ValueError): - events.add(self.last_event_of(*states.Trading.events())) - return self._warning_events(events) + actions.add(self.last_action_of(*states.Trading.actions())) + return self._warning_actions(actions) @property def physical_properties(self) -> Dict[str, object or None]: @@ -194,33 +194,33 @@ class Device(Thing): def rate(self): """The last Rate of the device.""" with suppress(LookupError, ValueError): - from ereuse_devicehub.resources.event.models import Rate - return self.last_event_of(Rate) + from ereuse_devicehub.resources.action.models import Rate + return self.last_action_of(Rate) @property def price(self): """The actual Price of the device, or None if no price has ever been set.""" with suppress(LookupError, ValueError): - from ereuse_devicehub.resources.event.models import Price - return self.last_event_of(Price) + from ereuse_devicehub.resources.action.models import Price + return self.last_action_of(Price) @property def trading(self): - """The actual trading state, or None if no Trade event has + """The actual trading state, or None if no Trade action has ever been performed to this device.""" from ereuse_devicehub.resources.device import states with suppress(LookupError, ValueError): - event = self.last_event_of(*states.Trading.events()) - return states.Trading(event.__class__) + action = self.last_action_of(*states.Trading.actions()) + return states.Trading(action.__class__) @property def physical(self): """The actual physical state, None otherwise.""" from ereuse_devicehub.resources.device import states with suppress(LookupError, ValueError): - event = self.last_event_of(*states.Physical.events()) - return states.Physical(event.__class__) + action = self.last_action_of(*states.Physical.actions()) + return states.Physical(action.__class__) @property def physical_possessor(self): @@ -235,13 +235,13 @@ class Device(Thing): own it legally. Note that there can only be one physical possessor per device, - and :class:`ereuse_devicehub.resources.event.models.Receive` + and :class:`ereuse_devicehub.resources.action.models.Receive` changes it. """ - from ereuse_devicehub.resources.event.models import Receive + from ereuse_devicehub.resources.action.models import Receive with suppress(LookupError): - event = self.last_event_of(Receive) - return event.agent + action = self.last_action_of(Receive) + return action.agent @property def working(self): @@ -252,10 +252,10 @@ class Device(Thing): the one with the worst ``severity`` of them, or ``None`` if no test has been executed. """ - from ereuse_devicehub.resources.event.models import Test - current_tests = unique_everseen((e for e in reversed(self.events) if isinstance(e, Test)), + from ereuse_devicehub.resources.action.models import Test + current_tests = unique_everseen((e for e in reversed(self.actions) if isinstance(e, Test)), key=attrgetter('type')) # last test of each type - return self._warning_events(current_tests) + return self._warning_actions(current_tests) @declared_attr def __mapper_args__(cls): @@ -271,19 +271,19 @@ class Device(Thing): args[POLYMORPHIC_ON] = cls.type return args - def last_event_of(self, *types): - """Gets the last event of the given types. + def last_action_of(self, *types): + """Gets the last action of the given types. - :raise LookupError: Device has not an event of the given type. + :raise LookupError: Device has not an action of the given type. """ try: # noinspection PyTypeHints - return next(e for e in reversed(self.events) if isinstance(e, types)) + return next(e for e in reversed(self.actions) if isinstance(e, types)) except StopIteration: - raise LookupError('{!r} does not contain events of types {}.'.format(self, types)) + raise LookupError('{!r} does not contain actions of types {}.'.format(self, types)) - def _warning_events(self, events): - return sorted(ev for ev in events if ev.severity >= Severity.Warning) + def _warning_actions(self, actions): + return sorted(ev for ev in actions if ev.severity >= Severity.Warning) def __lt__(self, other): return self.id < other.id @@ -389,8 +389,8 @@ class Computer(Device): super().__init__(chassis=chassis, **kwargs) @property - def events(self) -> list: - return sorted(chain(super().events, self.events_parent)) + def actions(self) -> list: + return sorted(chain(super().actions, self.actions_parent)) @property def ram_size(self) -> int: @@ -561,8 +561,8 @@ class Component(Device): return component @property - def events(self) -> list: - return sorted(chain(super().events, self.events_components)) + def actions(self) -> list: + return sorted(chain(super().actions, self.actions_components)) class JoinedComponentTableMixin: @@ -592,9 +592,9 @@ class DataStorage(JoinedComponentTableMixin, Component): This is, the last erasure performed to the data storage. """ - from ereuse_devicehub.resources.event.models import EraseBasic + from ereuse_devicehub.resources.action.models import EraseBasic try: - ev = self.last_event_of(EraseBasic) + ev = self.last_action_of(EraseBasic) except LookupError: ev = None return ev @@ -698,8 +698,8 @@ class Battery(JoinedComponentTableMixin, Component): @property def capacity(self) -> float: """The quantity of """ - from ereuse_devicehub.resources.event.models import MeasureBattery - real_size = self.last_event_of(MeasureBattery).size + from ereuse_devicehub.resources.action.models import MeasureBattery + real_size = self.last_action_of(MeasureBattery).size return real_size / self.size if real_size and self.size else None diff --git a/ereuse_devicehub/resources/device/models.pyi b/ereuse_devicehub/resources/device/models.pyi index d1956a3a..20fdb3e2 100644 --- a/ereuse_devicehub/resources/device/models.pyi +++ b/ereuse_devicehub/resources/device/models.pyi @@ -11,21 +11,21 @@ from sqlalchemy.orm import relationship from teal.db import Model from teal.enums import Layouts +from ereuse_devicehub.resources.action import models as e from ereuse_devicehub.resources.agent.models import Agent from ereuse_devicehub.resources.device import states from ereuse_devicehub.resources.enums import BatteryTechnology, ComputerChassis, \ DataStorageInterface, DisplayTech, PrinterTechnology, RamFormat, RamInterface -from ereuse_devicehub.resources.event import models as e from ereuse_devicehub.resources.lot.models import Lot from ereuse_devicehub.resources.models import Thing from ereuse_devicehub.resources.tag import Tag from ereuse_devicehub.resources.tag.model import Tags -E = TypeVar('E', bound=e.Event) +E = TypeVar('E', bound=e.Action) class Device(Thing): - EVENT_SORT_KEY = attrgetter('created') + ACTION_SORT_KEY = attrgetter('created') id = ... # type: Column type = ... # type: Column @@ -58,8 +58,8 @@ class Device(Thing): self.depth = ... # type: Optional[float] self.color = ... # type: Optional[Color] self.physical_properties = ... # type: Dict[str, object or None] - self.events_multiple = ... # type: Set[e.EventWithMultipleDevices] - self.events_one = ... # type: Set[e.EventWithOneDevice] + self.actions_multiple = ... # type: Set[e.ActionWithMultipleDevices] + self.actions_one = ... # type: Set[e.ActionWithOneDevice] self.tags = ... # type: Tags[Tag] self.lots = ... # type: Set[Lot] self.production_date = ... # type: Optional[datetime] @@ -68,11 +68,11 @@ class Device(Thing): self.variant = ... # type: Optional[str] @property - def events(self) -> List[e.Event]: + def actions(self) -> List[e.Action]: pass @property - def problems(self) -> List[e.Event]: + def problems(self) -> List[e.Action]: pass @property @@ -103,10 +103,10 @@ class Device(Thing): def working(self) -> List[e.Test]: pass - def last_event_of(self, *types: Type[E]) -> E: + def last_action_of(self, *types: Type[E]) -> E: pass - def _warning_events(self, events: Iterable[e.Event]) -> Generator[e.Event]: + def _warning_actions(self, actions: Iterable[e.Action]) -> Generator[e.Action]: pass @@ -139,11 +139,11 @@ class Computer(DisplayMixin, Device): def __init__(self, **kwargs) -> None: super().__init__(**kwargs) self.components = ... # type: Set[Component] - self.events_parent = ... # type: Set[e.Event] + self.actions_parent = ... # type: Set[e.Action] self.chassis = ... # type: ComputerChassis @property - def events(self) -> List: + def actions(self) -> List: pass @property @@ -230,7 +230,7 @@ class Component(Device): super().__init__(**kwargs) self.parent_id = ... # type: int self.parent = ... # type: Computer - self.events_components = ... # type: Set[e.Event] + self.actions_components = ... # type: Set[e.Action] def similar_one(self, parent: Computer, blacklist: Set[int]) -> 'Component': pass diff --git a/ereuse_devicehub/resources/device/schemas.py b/ereuse_devicehub/resources/device/schemas.py index 17b010f3..a46c6105 100644 --- a/ereuse_devicehub/resources/device/schemas.py +++ b/ereuse_devicehub/resources/device/schemas.py @@ -37,9 +37,9 @@ class Device(Thing): width = Float(validate=Range(0.1, 5), unit=UnitCodes.m, description=m.Device.width.comment) height = Float(validate=Range(0.1, 5), unit=UnitCodes.m, description=m.Device.height.comment) depth = Float(validate=Range(0.1, 5), unit=UnitCodes.m, description=m.Device.depth.comment) - events = NestedOn('Event', many=True, dump_only=True, description=m.Device.events.__doc__) - events_one = NestedOn('Event', many=True, load_only=True, collection_class=OrderedSet) - problems = NestedOn('Event', many=True, dump_only=True, description=m.Device.problems.__doc__) + actions = NestedOn('Action', many=True, dump_only=True, description=m.Device.actions.__doc__) + actions_one = NestedOn('Action', many=True, load_only=True, collection_class=OrderedSet) + problems = NestedOn('Action', many=True, dump_only=True, description=m.Device.problems.__doc__) url = URL(dump_only=True, description=m.Device.url.__doc__) lots = NestedOn('Lot', many=True, @@ -53,34 +53,35 @@ class Device(Thing): production_date = DateTime('iso', description=m.Device.updated.comment, data_key='productionDate') - working = NestedOn('Event', + working = NestedOn('Action', many=True, dump_only=True, description=m.Device.working.__doc__) @pre_load - def from_events_to_events_one(self, data: dict): + def from_actions_to_actions_one(self, data: dict): """ - Not an elegant way of allowing submitting events to a device - (in the context of Snapshots) without creating an ``events`` + Not an elegant way of allowing submitting actions to a device + (in the context of Snapshots) without creating an ``actions`` field at the model (which is not possible). :param data: :return: """ - # Note that it is secure to allow uploading events_one + # Note that it is secure to allow uploading actions_one # as the only time an user can send a device object is # in snapshots. - data['events_one'] = data.pop('events', []) + data['actions_one'] = data.pop('actions', []) return data @post_load - def validate_snapshot_events(self, data): - """Validates that only snapshot-related events can be uploaded.""" - from ereuse_devicehub.resources.event.models import EraseBasic, Test, Rate, Install, \ + def validate_snapshot_actions(self, data): + """Validates that only snapshot-related actions can be uploaded.""" + from ereuse_devicehub.resources.action.models import EraseBasic, Test, Rate, Install, \ Benchmark - for event in data['events_one']: - if not isinstance(event, (Install, EraseBasic, Rate, Test, Benchmark)): - raise ValidationError('You cannot upload {}'.format(event), field_names=['events']) + for action in data['actions_one']: + if not isinstance(action, (Install, EraseBasic, Rate, Test, Benchmark)): + raise ValidationError('You cannot upload {}'.format(action), + field_names=['actions']) class Computer(Device): @@ -109,7 +110,7 @@ class Computer(Device): dump_only=True, data_key='networkSpeeds', description=m.Computer.network_speeds.__doc__) - privacy = NestedOn('Event', + privacy = NestedOn('Action', many=True, dump_only=True, collection_class=set, @@ -229,7 +230,7 @@ class DataStorage(Component): unit=UnitCodes.mbyte, description=m.DataStorage.size.comment) interface = EnumField(enums.DataStorageInterface) - privacy = NestedOn('Event', dump_only=True) + privacy = NestedOn('Action', dump_only=True) class HardDrive(DataStorage): diff --git a/ereuse_devicehub/resources/device/search.py b/ereuse_devicehub/resources/device/search.py index 65c55fc4..381b5406 100644 --- a/ereuse_devicehub/resources/device/search.py +++ b/ereuse_devicehub/resources/device/search.py @@ -7,10 +7,10 @@ from sqlalchemy.orm import aliased from ereuse_devicehub.db import db from ereuse_devicehub.resources import search +from ereuse_devicehub.resources.action.models import Action, ActionWithMultipleDevices, \ + ActionWithOneDevice from ereuse_devicehub.resources.agent.models import Organization from ereuse_devicehub.resources.device.models import Component, Computer, Device -from ereuse_devicehub.resources.event.models import Event, EventWithMultipleDevices, \ - EventWithOneDevice from ereuse_devicehub.resources.tag.model import Tag @@ -42,17 +42,17 @@ class DeviceSearch(db.Model): @classmethod def update_modified_devices(cls, session: db.Session): """Updates the documents of the devices that are part of a - modified event, or tag in the passed-in session. + modified action, or tag in the passed-in session. This method is registered as a SQLAlchemy listener in the Devicehub class. """ devices_to_update = set() for model in chain(session.new, session.dirty): - if isinstance(model, Event): - if isinstance(model, EventWithMultipleDevices): + if isinstance(model, Action): + if isinstance(model, ActionWithMultipleDevices): devices_to_update |= model.devices - elif isinstance(model, EventWithOneDevice): + elif isinstance(model, ActionWithOneDevice): devices_to_update.add(model.device) if model.parent: devices_to_update.add(model.parent) diff --git a/ereuse_devicehub/resources/device/states.py b/ereuse_devicehub/resources/device/states.py index 93c5a2af..de72bf0f 100644 --- a/ereuse_devicehub/resources/device/states.py +++ b/ereuse_devicehub/resources/device/states.py @@ -2,7 +2,7 @@ from enum import Enum import inflection -from ereuse_devicehub.resources.event import models as e +from ereuse_devicehub.resources.action import models as e class State(Enum): @@ -11,8 +11,8 @@ class State(Enum): """ @classmethod - def events(cls): - """Events participating in this state.""" + def actions(cls): + """Actions participating in this state.""" return (s.value for s in cls) def __str__(self): diff --git a/ereuse_devicehub/resources/device/sync.py b/ereuse_devicehub/resources/device/sync.py index e0b9085f..39468854 100644 --- a/ereuse_devicehub/resources/device/sync.py +++ b/ereuse_devicehub/resources/device/sync.py @@ -11,9 +11,9 @@ from teal.db import ResourceNotFound from teal.marshmallow import ValidationError from ereuse_devicehub.db import db +from ereuse_devicehub.resources.action.models import Remove from ereuse_devicehub.resources.device.exceptions import NeedsId from ereuse_devicehub.resources.device.models import Component, Computer, Device -from ereuse_devicehub.resources.event.models import Remove from ereuse_devicehub.resources.tag.model import Tag @@ -39,7 +39,7 @@ class Sync: :param device: The device to add / update to the database. :param components: Components that are inside of the device. - This method performs Add and Remove events + This method performs Add and Remove actions so the device ends up with these components. Components are added / updated accordingly. If this is empty, all components are removed. @@ -55,7 +55,7 @@ class Sync: 2. A list of Add / Remove (not yet added to session). """ db_device = self.execute_register(device) - db_components, events = OrderedSet(), OrderedSet() + db_components, actions = OrderedSet(), OrderedSet() if components is not None: # We have component info (see above) if not isinstance(db_device, Computer): # Until a good reason is given, we synthetically forbid @@ -71,9 +71,9 @@ class Sync: if not is_new: not_new_components.add(db_component) # We only want to perform Add/Remove to not new components - events = self.add_remove(db_device, not_new_components) + actions = self.add_remove(db_device, not_new_components) db_device.components = db_components - return db_device, events + return db_device, actions def execute_register_component(self, component: Component, @@ -218,7 +218,7 @@ class Sync: def add_remove(device: Computer, components: Set[Component]) -> OrderedSet: """ - Generates the Add and Remove events (but doesn't add them to + Generates the Add and Remove actions (but doesn't add them to session). :param device: A device which ``components`` attribute contains @@ -228,10 +228,10 @@ class Sync: be Added. Some of them can already exist on the device, in which case they won't be re-added. - :return: A list of Add / Remove events. + :return: A list of Add / Remove actions. """ - # Note that we create the Remove events before the Add ones - events = OrderedSet() + # Note that we create the Remove actions before the Add ones + actions = OrderedSet() old_components = set(device.components) adding = components - old_components @@ -242,8 +242,8 @@ class Sync: for parent, _components in groupby(sorted(adding, key=g_parent), key=g_parent): if parent.id != 0: # Is not Computer Identity - events.add(Remove(device=parent, components=OrderedSet(_components))) - return events + actions.add(Remove(device=parent, components=OrderedSet(_components))) + return actions class MismatchBetweenTags(ValidationError): diff --git a/ereuse_devicehub/resources/device/templates/devices/layout.html b/ereuse_devicehub/resources/device/templates/devices/layout.html index ad127bc8..99846a8b 100644 --- a/ereuse_devicehub/resources/device/templates/devices/layout.html +++ b/ereuse_devicehub/resources/device/templates/devices/layout.html @@ -194,21 +194,21 @@ Latest one.
    - {% for event in device.events|reverse %} + {% for action in device.actions|reverse %}
  1. - {{ event.type }} + {{ action.type }} — - {{ event }} + {{ action }}
    - {{ event._date_str }} + {{ action._date_str }}
    - {% if event.certificate %} - See the certificate + {% if action.certificate %} + See the certificate {% endif %}
  2. {% endfor %} diff --git a/ereuse_devicehub/resources/device/views.py b/ereuse_devicehub/resources/device/views.py index 337628b9..58907ff1 100644 --- a/ereuse_devicehub/resources/device/views.py +++ b/ereuse_devicehub/resources/device/views.py @@ -13,9 +13,9 @@ from ereuse_devicehub import auth from ereuse_devicehub.db import db from ereuse_devicehub.query import SearchQueryParser, things_response from ereuse_devicehub.resources import search +from ereuse_devicehub.resources.action import models as actions from ereuse_devicehub.resources.device.models import Device, Manufacturer from ereuse_devicehub.resources.device.search import DeviceSearch -from ereuse_devicehub.resources.event import models as events from ereuse_devicehub.resources.lot.models import LotDeviceDescendants from ereuse_devicehub.resources.tag.model import Tag @@ -31,9 +31,9 @@ class OfType(f.Str): class RateQ(query.Query): - rating = query.Between(events.Rate._rating, f.Float()) - appearance = query.Between(events.Rate._appearance, f.Float()) - functionality = query.Between(events.Rate._functionality, f.Float()) + rating = query.Between(actions.Rate._rating, f.Float()) + appearance = query.Between(actions.Rate._appearance, f.Float()) + functionality = query.Between(actions.Rate._functionality, f.Float()) class TagQ(query.Query): @@ -52,8 +52,8 @@ class Filters(query.Query): manufacturer = query.ILike(Device.manufacturer) serialNumber = query.ILike(Device.serial_number) # todo test query for rating (and possibly other filters) - rating = query.Join((Device.id == events.EventWithOneDevice.device_id) - & (events.EventWithOneDevice.id == events.Rate.id), + rating = query.Join((Device.id == actions.ActionWithOneDevice.device_id) + & (actions.ActionWithOneDevice.id == actions.Rate.id), RateQ) tag = query.Join(Device.id == Tag.device_id, TagQ) # todo This part of the query is really slow diff --git a/ereuse_devicehub/resources/documents/device_row.py b/ereuse_devicehub/resources/documents/device_row.py index 8a1e3a4c..4ced847e 100644 --- a/ereuse_devicehub/resources/documents/device_row.py +++ b/ereuse_devicehub/resources/documents/device_row.py @@ -2,9 +2,9 @@ from collections import OrderedDict from flask import current_app -from ereuse_devicehub.resources.device import models as d -from ereuse_devicehub.resources.event.models import BenchmarkDataStorage, RateComputer, \ +from ereuse_devicehub.resources.action.models import BenchmarkDataStorage, RateComputer, \ TestDataStorage +from ereuse_devicehub.resources.device import models as d class DeviceRow(OrderedDict): @@ -33,7 +33,7 @@ class DeviceRow(OrderedDict): self['Serial Number'] = device.serial_number self['Model'] = device.model self['Manufacturer'] = device.manufacturer - # self['State'] = device.last_event_of() + # self['State'] = device.last_action_of() self['Registered in'] = format(device.created, '%c') self['Price'] = device.price if isinstance(device, d.Computer): @@ -94,17 +94,17 @@ class DeviceRow(OrderedDict): self['{} {} Size (MB)'.format(type, i)] = component.size self['{} {} Privacy'.format(type, i)] = component.privacy try: - self['{} {} Lifetime'.format(type, i)] = component.last_event_of( + self['{} {} Lifetime'.format(type, i)] = component.last_action_of( TestDataStorage).lifetime except: self['{} {} Lifetime'.format(type, i)] = '' try: - self['{} {} Reading speed'.format(type, i)] = component.last_event_of( + self['{} {} Reading speed'.format(type, i)] = component.last_action_of( BenchmarkDataStorage).read_speed except: self['{} {} Reading speed'.format(type, i)] = '' try: - self['{} {} Writing speed'.format(type, i)] = component.last_event_of( + self['{} {} Writing speed'.format(type, i)] = component.last_action_of( BenchmarkDataStorage).write_speed except: self['{} {} Writing speed'.format(type, i)] = '' diff --git a/ereuse_devicehub/resources/documents/documents.py b/ereuse_devicehub/resources/documents/documents.py index c30506f4..dd5ee1c8 100644 --- a/ereuse_devicehub/resources/documents/documents.py +++ b/ereuse_devicehub/resources/documents/documents.py @@ -15,10 +15,10 @@ from teal.cache import cache from teal.resource import Resource from ereuse_devicehub.db import db +from ereuse_devicehub.resources.action import models as evs from ereuse_devicehub.resources.device import models as devs from ereuse_devicehub.resources.device.views import DeviceView from ereuse_devicehub.resources.documents.device_row import DeviceRow -from ereuse_devicehub.resources.event import models as evs class Format(enum.Enum): @@ -47,7 +47,7 @@ class DocumentView(DeviceView): flask.request, locations=('querystring',)) if id: - # todo we assume we can pass both device id and event id + # todo we assume we can pass both device id and action id # for certificates... how is it going to end up being? try: id = uuid.UUID(id) @@ -59,7 +59,7 @@ class DocumentView(DeviceView): else: query = devs.Device.query.filter_by(id=id) else: - query = evs.Event.query.filter_by(id=id) + query = evs.Action.query.filter_by(id=id) else: flask.current_app.auth.requires_auth(lambda: None)() # todo not nice query = self.query(args) diff --git a/ereuse_devicehub/resources/enums.py b/ereuse_devicehub/resources/enums.py index 47278c27..17d2d139 100644 --- a/ereuse_devicehub/resources/enums.py +++ b/ereuse_devicehub/resources/enums.py @@ -141,18 +141,6 @@ class ImageMimeTypes(Enum): png = 'image/png' -@unique -class SnapshotExpectedEvents(Enum): - """Events that Workbench can perform when processing a device.""" - Benchmark = 'Benchmark' - TestDataStorage = 'TestDataStorage' - StressTest = 'StressTest' - EraseBasic = 'EraseBasic' - EraseSectors = 'EraseSectors' - SmartTest = 'SmartTest' - Install = 'Install' - - BOX_RATE_5 = 1, 5 BOX_RATE_3 = 1, 3 @@ -282,18 +270,18 @@ class BatteryTechnology(Enum): class Severity(IntEnum): - """A flag evaluating the event execution. Ex. failed events + """A flag evaluating the action execution. Ex. failed actions have the value `Severity.Error`. Devicehub uses 4 severity levels: - * Info: default neutral severity. The event succeeded. - * Notice: The event succeeded but it is raising awareness. + * Info: default neutral severity. The action succeeded. + * Notice: The action succeeded but it is raising awareness. Notices are not usually that important but something (good or bad) worth checking. - * Warning: The event succeeded but there is something important - to check negatively affecting the event. - * Error: the event failed. + * Warning: The action succeeded but there is something important + to check negatively affecting the action. + * Error: the action failed. - Devicehub specially raises user awareness when an event + Devicehub specially raises user awareness when an action has a Severity of ``Warning`` or greater. """ @@ -350,7 +338,7 @@ class ErasureStandards(Enum): 2. A second step erasing with random data, verifying the erasure success in each hard-drive sector. - And be an :class:`ereuse_devicehub.resources.event.models.EraseSectors`. + And be an :class:`ereuse_devicehub.resources.action.models.EraseSectors`. """ def __str__(self): @@ -359,12 +347,12 @@ class ErasureStandards(Enum): @classmethod def from_data_storage(cls, erasure) -> Set['ErasureStandards']: """Returns a set of erasure standards.""" - from ereuse_devicehub.resources.event import models as events + from ereuse_devicehub.resources.action import models as actions standards = set() - if isinstance(erasure, events.EraseSectors): + if isinstance(erasure, actions.EraseSectors): with suppress(ValueError): first_step, *other_steps = erasure.steps - if isinstance(first_step, events.StepZero) \ - and all(isinstance(step, events.StepRandom) for step in other_steps): + if isinstance(first_step, actions.StepZero) \ + and all(isinstance(step, actions.StepRandom) for step in other_steps): standards.add(cls.HMG_IS5) return standards diff --git a/ereuse_devicehub/resources/inventory/__init__.py b/ereuse_devicehub/resources/inventory/__init__.py index d9b7c374..8f57cada 100644 --- a/ereuse_devicehub/resources/inventory/__init__.py +++ b/ereuse_devicehub/resources/inventory/__init__.py @@ -58,7 +58,7 @@ class InventoryDef(Resource): db.session.delete(inv) db.session.flush() # Remove users that end-up without any inventory - # todo this should be done in a trigger / event + # todo this should be done in a trigger / action users = User.query \ .filter(User.id.notin_(db.session.query(UserInventory.user_id).distinct())) for user in users: diff --git a/ereuse_devicehub/resources/lot/models.py b/ereuse_devicehub/resources/lot/models.py index 4cc08882..f7ec096f 100644 --- a/ereuse_devicehub/resources/lot/models.py +++ b/ereuse_devicehub/resources/lot/models.py @@ -81,7 +81,7 @@ class Lot(Thing): @property def url(self) -> urlutils.URL: - """The URL where to GET this event.""" + """The URL where to GET this action.""" return urlutils.URL(url_for_resource(Lot, item_id=self.id)) @property diff --git a/ereuse_devicehub/resources/lot/views.py b/ereuse_devicehub/resources/lot/views.py index a5d45c22..4904d09c 100644 --- a/ereuse_devicehub/resources/lot/views.py +++ b/ereuse_devicehub/resources/lot/views.py @@ -50,7 +50,7 @@ class LotView(View): return Response(status=204) def one(self, id: uuid.UUID): - """Gets one event.""" + """Gets one action.""" lot = Lot.query.filter_by(id=id).one() # type: Lot return self.schema.jsonify(lot) diff --git a/tests/files/1-device-with-components.snapshot.yaml b/tests/files/1-device-with-components.snapshot.yaml index 7d19cf71..051c5537 100644 --- a/tests/files/1-device-with-components.snapshot.yaml +++ b/tests/files/1-device-with-components.snapshot.yaml @@ -14,7 +14,7 @@ components: speed: 1.23 cores: 2 type: Processor - events: + actions: - type: BenchmarkProcessor rate: 1 elapsed: 166 diff --git a/tests/files/asus-1001pxd.snapshot.yaml b/tests/files/asus-1001pxd.snapshot.yaml index 723db9e2..916422ef 100644 --- a/tests/files/asus-1001pxd.snapshot.yaml +++ b/tests/files/asus-1001pxd.snapshot.yaml @@ -2,21 +2,21 @@ "closed": true, "components": [ { - "events": [], + "actions": [], "manufacturer": "Intel Corporation", "model": "NM10/ICH7 Family High Definition Audio Controller", "serialNumber": null, "type": "SoundCard" }, { - "events": [], + "actions": [], "manufacturer": "Azurewave", "model": "USB 2.0 UVC VGA WebCam", "serialNumber": "0x0001", "type": "SoundCard" }, { - "events": [], + "actions": [], "format": "DIMM", "interface": "DDR2", "manufacturer": null, @@ -29,7 +29,7 @@ { "address": 64, "cores": 1, - "events": [ + "actions": [ { "elapsed": 165, "rate": 164.8342, @@ -49,7 +49,7 @@ "type": "Processor" }, { - "events": [ + "actions": [ { "elapsed": 16, "readSpeed": 66.2, @@ -65,7 +65,7 @@ "type": "HardDrive" }, { - "events": [], + "actions": [], "manufacturer": "Qualcomm Atheros", "model": "AR9285 Wireless Network Adapter", "serialNumber": "74:2f:68:8b:fd:c8", @@ -73,7 +73,7 @@ "wireless": true }, { - "events": [], + "actions": [], "manufacturer": "Qualcomm Atheros", "model": "AR8152 v2.0 Fast Ethernet", "serialNumber": "14:da:e9:42:f6:7c", @@ -82,7 +82,7 @@ "wireless": false }, { - "events": [], + "actions": [], "manufacturer": "Intel Corporation", "memory": 256.0, "model": "Atom Processor D4xx/D5xx/N4xx/N5xx Integrated Graphics Controller", @@ -90,7 +90,7 @@ "type": "GraphicCard" }, { - "events": [ + "actions": [ { "type": "TestBios", "accessRange": "A", @@ -109,7 +109,7 @@ ], "device": { "chassis": "Netbook", - "events": [ + "actions": [ { "elapsed": 16, "rate": 15.8978, @@ -128,9 +128,6 @@ }, "elapsed": 6, "endTime": "2018-10-14T21:22:14.777235+00:00", - "expectedEvents": [ - "Benchmark" - ], "software": "Workbench", "type": "Snapshot", "uuid": "7dc4d19c-914e-4652-a381-d641325fb9c2", diff --git a/tests/files/basic.snapshot.yaml b/tests/files/basic.snapshot.yaml index fd976e83..793faebb 100644 --- a/tests/files/basic.snapshot.yaml +++ b/tests/files/basic.snapshot.yaml @@ -9,26 +9,26 @@ device: serialNumber: d1s model: d1ml manufacturer: d1mr - events: + actions: - type: VisualTest appearanceRange: A functionalityRange: B components: -- type: GraphicCard - serialNumber: gc1s - model: gc1ml - manufacturer: gc1mr -- type: RamModule - serialNumber: rm1s - model: rm1ml - manufacturer: rm1mr - speed: 1333 -- type: Processor - serialNumber: p1s - model: p1ml - manufacturer: p1mr - speed: 1.6 - events: - - type: BenchmarkProcessor - rate: 2410 - elapsed: 11 + - type: GraphicCard + serialNumber: gc1s + model: gc1ml + manufacturer: gc1mr + - type: RamModule + serialNumber: rm1s + model: rm1ml + manufacturer: rm1mr + speed: 1333 + - type: Processor + serialNumber: p1s + model: p1ml + manufacturer: p1mr + speed: 1.6 + actions: + - type: BenchmarkProcessor + rate: 2410 + elapsed: 11 diff --git a/tests/files/david.lshw.snapshot.yaml b/tests/files/david.lshw.snapshot.yaml index 0050edc2..4f0eca27 100644 --- a/tests/files/david.lshw.snapshot.yaml +++ b/tests/files/david.lshw.snapshot.yaml @@ -3,14 +3,14 @@ "uuid": "00000000-0000-0000-0000-000000000000", "software": "Workbench", "version": "11.0a1", - "expectedEvents": [], + "closed": true, "endTime": "2018-07-19T15:48:40.635776+00:00", "device": { "manufacturer": "Dell Inc.", "model": "Latitude E6440", "serialNumber": "FJBQVZ1", - "events": [], + "actions": [], "type": "Laptop", "chassis": "Laptop" }, @@ -19,7 +19,7 @@ "manufacturer": "Intel Corp.", "model": "Intel Core i7-4600M CPU @ 2.90GHz", "serialNumber": null, - "events": [ + "actions": [ { "elapsed": 165, "rate": 164.8342, @@ -41,7 +41,7 @@ "manufacturer": "Samsung", "model": "M471B5173DB0-YK0", "serialNumber": "732CD498", - "events": [], + "actions": [], "type": "RamModule", "format": "SODIMM", "size": 4096, @@ -52,7 +52,7 @@ "manufacturer": "Samsung", "model": "M471B5173DB0-YK0", "serialNumber": "152DD498", - "events": [], + "actions": [], "type": "RamModule", "format": "SODIMM", "size": 4096, @@ -63,7 +63,7 @@ "manufacturer": null, "model": "Crucial_CT525MX3", "serialNumber": "164014297BCC", - "events": [ + "actions": [ { "readSpeed": 63.3, "type": "BenchmarkDataStorage", @@ -79,7 +79,7 @@ "manufacturer": "Intel Corporation", "model": "4th Gen Core Processor Integrated Graphics Controller", "serialNumber": null, - "events": [], + "actions": [], "type": "GraphicCard", "memory": null }, @@ -87,7 +87,7 @@ "manufacturer": "Intel Corporation", "model": "Ethernet Connection I217-LM", "serialNumber": "ec:f4:bb:0b:18:90", - "events": [], + "actions": [], "type": "NetworkAdapter", "speed": 1000, "wireless": false @@ -96,7 +96,7 @@ "manufacturer": "Intel Corporation", "model": "Centrino Advanced-N 6235", "serialNumber": "c4:d9:87:47:90:e1", - "events": [], + "actions": [], "type": "NetworkAdapter", "wireless": true }, @@ -104,7 +104,7 @@ "manufacturer": null, "model": null, "serialNumber": "da:b4:3a:25:88:6c", - "events": [], + "actions": [], "type": "NetworkAdapter", "wireless": false }, @@ -112,28 +112,28 @@ "manufacturer": "Intel Corporation", "model": "Xeon E3-1200 v3/4th Gen Core Processor HD Audio Controller", "serialNumber": null, - "events": [], + "actions": [], "type": "SoundCard" }, { "manufacturer": "CNFCH52J48303+YF2", "model": "Laptop_Integrated_Webcam_HD", "serialNumber": null, - "events": [], + "actions": [], "type": "SoundCard" }, { "manufacturer": "Intel Corporation", "model": "8 Series/C220 Series Chipset High Definition Audio Controller", "serialNumber": null, - "events": [], + "actions": [], "type": "SoundCard" }, { "manufacturer": "Dell Inc.", "model": "0159N7", "serialNumber": "/FJBQVZ1/CN1296342I009B/", - "events": [], + "actions": [], "type": "Motherboard", "usb": 3, "firewire": 0, diff --git a/tests/files/desktop-9644w8n-lenovo-0169622.snapshot.yaml b/tests/files/desktop-9644w8n-lenovo-0169622.snapshot.yaml index 815757b5..60a15451 100644 --- a/tests/files/desktop-9644w8n-lenovo-0169622.snapshot.yaml +++ b/tests/files/desktop-9644w8n-lenovo-0169622.snapshot.yaml @@ -2,14 +2,14 @@ "closed": true, "components": [ { - "events": [], + "actions": [], "manufacturer": "Intel Corporation", "model": "NM10/ICH7 Family High Definition Audio Controller", "serialNumber": null, "type": "SoundCard" }, { - "events": [], + "actions": [], "manufacturer": "Broadcom Inc. and subsidiaries", "model": "NetLink BCM5786 Gigabit Ethernet PCI Express", "serialNumber": "00:1a:6b:5e:7f:10", @@ -18,7 +18,7 @@ "wireless": false }, { - "events": [], + "actions": [], "format": "DIMM", "interface": "DDR", "manufacturer": null, @@ -29,7 +29,7 @@ "type": "RamModule" }, { - "events": [], + "actions": [], "format": "DIMM", "interface": "DDR", "manufacturer": null, @@ -41,7 +41,7 @@ }, { "address": 64, - "events": [ + "actions": [ { "elapsed": 33, "rate": 32.9274, @@ -61,7 +61,7 @@ "type": "Processor" }, { - "events": [], + "actions": [], "manufacturer": "Intel Corporation", "memory": 256.0, "model": "82946GZ/GL Integrated Graphics Controller", @@ -69,7 +69,7 @@ "type": "GraphicCard" }, { - "events": [ + "actions": [ { "type": "TestBios", "accessRange": "E" @@ -88,7 +88,7 @@ ], "device": { "chassis": "Microtower", - "events": [ + "actions": [ { "appearanceRange": "D", "functionalityRange": "D", @@ -112,12 +112,6 @@ }, "elapsed": 338, "endTime": "2019-02-13T11:57:31.378330+00:00", - "expectedEvents": [ - "Benchmark", - "TestDataStorage", - "StressTest", - "Install" - ], "software": "Workbench", "type": "Snapshot", "uuid": "d7904bd3-7d0f-4918-86b1-e21bfab738f9", diff --git a/tests/files/erase-sectors-2-hdd.snapshot.yaml b/tests/files/erase-sectors-2-hdd.snapshot.yaml index af3bfd86..67cea324 100644 --- a/tests/files/erase-sectors-2-hdd.snapshot.yaml +++ b/tests/files/erase-sectors-2-hdd.snapshot.yaml @@ -5,7 +5,7 @@ "manufacturer": 'bar', "model": 'baz', "type": "Desktop", - "events": [], + "actions": [], "chassis": "Tower" }, "elapsed": 7631, @@ -13,10 +13,6 @@ "type": "Snapshot", "closed": false, "uuid": "5387668a-8d21-4053-a1ac-36efb97fc3ea", - "expectedEvents": [ - "TestDataStorage", - "EraseBasic" - ], "components": [ { "serialNumber": null, @@ -25,7 +21,7 @@ "address": 64, "model": "Intel Core i3-2100 CPU @ 3.10GHz", "type": "Processor", - "events": [ + "actions": [ { "elapsed": 0, "rate": 6665.7, @@ -39,7 +35,7 @@ "manufacturer": "Intel Corporation", "model": "6 Series/C200 Series Chipset Family High Definition Audio Controller", "type": "SoundCard", - "events": [], + "actions": [], "serialNumber": null }, { @@ -49,7 +45,7 @@ "format": "DIMM", "model": "9905403-038.A00LF", "type": "RamModule", - "events": [], + "actions": [], "interface": "DDR3", "speed": 1333.0 }, @@ -57,7 +53,7 @@ "manufacturer": "Realtek Semiconductor Co., Ltd.", "model": "RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller", "type": "NetworkAdapter", - "events": [], + "actions": [], "serialNumber": "f4:6d:04:12:9b:85", "speed": 1000, "wireless": false @@ -68,7 +64,7 @@ "manufacturer": "Western Digital", "model": "WDC WD3200AAJS-2", "type": "HardDrive", - "events": [ + "actions": [ { "endTime": "2018-07-13T11:54:55.100581+00:00", "steps": [ @@ -112,7 +108,7 @@ "manufacturer": "Western Digital", "model": "WDC WD3200AAJS-0", "type": "HardDrive", - "events": [ + "actions": [ { "endTime": "2018-07-13T12:55:47.331586+00:00", "steps": [ @@ -154,7 +150,7 @@ "manufacturer": "Intel Corporation", "model": "2nd Generation Core Processor Family Integrated Graphics Controller", "type": "GraphicCard", - "events": [], + "actions": [], "memory": 256.0 }, { @@ -163,7 +159,7 @@ "manufacturer": "ASUSTeK Computer INC.", "model": "P8H61-M LE", "type": "Motherboard", - "events": [], + "actions": [], "slots": 2, "usb": 2, "firewire": 0, diff --git a/tests/files/erase-sectors.snapshot.yaml b/tests/files/erase-sectors.snapshot.yaml index fc715e50..bead3b34 100644 --- a/tests/files/erase-sectors.snapshot.yaml +++ b/tests/files/erase-sectors.snapshot.yaml @@ -14,7 +14,7 @@ components: serialNumber: c1s model: c1ml manufacturer: c1mr - events: + actions: - type: EraseSectors startTime: '2018-06-01T08:12:06+02:00' endTime: '2018-06-01T09:12:06+02:00' @@ -35,7 +35,7 @@ components: serialNumber: p1s model: p1ml manufacturer: p1mr - events: + actions: - type: BenchmarkProcessor elapsed: 0 rate: 6665.7 diff --git a/tests/files/laptop-hp_255_g3_notebook-hewlett-packard-cnd52270fw.snapshot.yaml b/tests/files/laptop-hp_255_g3_notebook-hewlett-packard-cnd52270fw.snapshot.yaml index bacf45dd..a8cf55ac 100644 --- a/tests/files/laptop-hp_255_g3_notebook-hewlett-packard-cnd52270fw.snapshot.yaml +++ b/tests/files/laptop-hp_255_g3_notebook-hewlett-packard-cnd52270fw.snapshot.yaml @@ -1,154 +1,154 @@ { "closed": true, "components": [ + { + "actions": [], + "manufacturer": "Qualcomm Atheros", + "model": "QCA9565 / AR9565 Wireless Network Adapter", + "serialNumber": "ac:e0:10:c2:e3:ac", + "type": "NetworkAdapter", + "wireless": true + }, + { + "actions": [], + "manufacturer": "Realtek Semiconductor Co., Ltd.", + "model": "RTL810xE PCI Express Fast Ethernet controller", + "serialNumber": "30:8d:99:25:6c:d9", + "speed": 100, + "type": "NetworkAdapter", + "wireless": false + }, + { + "actions": [], + "manufacturer": "Advanced Micro Devices, Inc. AMD/ATI", + "model": "Kabini HDMI/DP Audio", + "serialNumber": null, + "type": "SoundCard" + }, + { + "actions": [], + "manufacturer": "Chicony Electronics Co.,Ltd.", + "model": "HP Webcam", + "serialNumber": "0x0001", + "type": "SoundCard" + }, + { + "actions": [], + "manufacturer": "Advanced Micro Devices, Inc. AMD", + "model": "FCH Azalia Controller", + "serialNumber": null, + "type": "SoundCard" + }, + { + "actions": [], + "format": "SODIMM", + "interface": "DDR3", + "manufacturer": "Hynix", + "model": "HMT451S6AFR8A-PB", + "serialNumber": "11743764", + "size": 4096, + "speed": 667.0, + "type": "RamModule" + }, + { + "address": 64, + "cores": 2, + "actions": [ { - "events": [], - "manufacturer": "Qualcomm Atheros", - "model": "QCA9565 / AR9565 Wireless Network Adapter", - "serialNumber": "ac:e0:10:c2:e3:ac", - "type": "NetworkAdapter", - "wireless": true + "elapsed": 0, + "rate": 3992.32, + "type": "BenchmarkProcessor" }, { - "events": [], - "manufacturer": "Realtek Semiconductor Co., Ltd.", - "model": "RTL810xE PCI Express Fast Ethernet controller", - "serialNumber": "30:8d:99:25:6c:d9", - "speed": 100, - "type": "NetworkAdapter", - "wireless": false - }, - { - "events": [], - "manufacturer": "Advanced Micro Devices, Inc. AMD/ATI", - "model": "Kabini HDMI/DP Audio", - "serialNumber": null, - "type": "SoundCard" - }, - { - "events": [], - "manufacturer": "Chicony Electronics Co.,Ltd.", - "model": "HP Webcam", - "serialNumber": "0x0001", - "type": "SoundCard" - }, - { - "events": [], - "manufacturer": "Advanced Micro Devices, Inc. AMD", - "model": "FCH Azalia Controller", - "serialNumber": null, - "type": "SoundCard" - }, - { - "events": [], - "format": "SODIMM", - "interface": "DDR3", - "manufacturer": "Hynix", - "model": "HMT451S6AFR8A-PB", - "serialNumber": "11743764", - "size": 4096, - "speed": 667.0, - "type": "RamModule" - }, - { - "address": 64, - "cores": 2, - "events": [ - { - "elapsed": 0, - "rate": 3992.32, - "type": "BenchmarkProcessor" - }, - { - "elapsed": 65, - "rate": 65.3007, - "type": "BenchmarkProcessorSysbench" - } - ], - "manufacturer": "Advanced Micro Devices AMD", - "model": "AMD E1-2100 APU with Radeon HD Graphics", - "serialNumber": null, - "speed": 0.9, - "threads": 2, - "type": "Processor" - }, - { - "events": [ - { - "elapsed": 12, - "readSpeed": 90.0, - "type": "BenchmarkDataStorage", - "writeSpeed": 30.7 - }, - { - "assessment": true, - "commandTimeout": 1341, - "currentPendingSectorCount": 0, - "elapsed": 113, - "length": "Short", - "lifetime": 1782, - "offlineUncorrectable": 0, - "powerCycleCount": 806, - "reallocatedSectorCount": 224, - "reportedUncorrectableErrors": 9961472, - "severity": "Info", - "status": "Completed without error", - "type": "TestDataStorage" - }, - { - "address": 32, - "elapsed": 690, - "name": "LinuxMint-19-x86-es-2018-12.fsa", - "severity": "Info", - "type": "Install" - } - ], - "interface": "ATA", - "manufacturer": null, - "model": "HGST HTS545050A7", - "serialNumber": "TE85134N34LNSN", - "size": 476940, - "type": "HardDrive" - }, - { - "events": [], - "manufacturer": "Advanced Micro Devices, Inc. AMD/ATI", - "memory": 256.0, - "model": "Kabini Radeon HD 8210", - "serialNumber": null, - "type": "GraphicCard" - }, - { - "events": [], - "firewire": 0, - "manufacturer": "Hewlett-Packard", - "model": "21F7", - "pcmcia": 0, - "serial": 1, - "serialNumber": "PEHERF41U8P9TV", - "slots": 0, - "type": "Motherboard", - "usb": 5 + "elapsed": 65, + "rate": 65.3007, + "type": "BenchmarkProcessorSysbench" } + ], + "manufacturer": "Advanced Micro Devices AMD", + "model": "AMD E1-2100 APU with Radeon HD Graphics", + "serialNumber": null, + "speed": 0.9, + "threads": 2, + "type": "Processor" + }, + { + "actions": [ + { + "elapsed": 12, + "readSpeed": 90.0, + "type": "BenchmarkDataStorage", + "writeSpeed": 30.7 + }, + { + "assessment": true, + "commandTimeout": 1341, + "currentPendingSectorCount": 0, + "elapsed": 113, + "length": "Short", + "lifetime": 1782, + "offlineUncorrectable": 0, + "powerCycleCount": 806, + "reallocatedSectorCount": 224, + "reportedUncorrectableErrors": 9961472, + "severity": "Info", + "status": "Completed without error", + "type": "TestDataStorage" + }, + { + "address": 32, + "elapsed": 690, + "name": "LinuxMint-19-x86-es-2018-12.fsa", + "severity": "Info", + "type": "Install" + } + ], + "interface": "ATA", + "manufacturer": null, + "model": "HGST HTS545050A7", + "serialNumber": "TE85134N34LNSN", + "size": 476940, + "type": "HardDrive" + }, + { + "actions": [], + "manufacturer": "Advanced Micro Devices, Inc. AMD/ATI", + "memory": 256.0, + "model": "Kabini Radeon HD 8210", + "serialNumber": null, + "type": "GraphicCard" + }, + { + "actions": [], + "firewire": 0, + "manufacturer": "Hewlett-Packard", + "model": "21F7", + "pcmcia": 0, + "serial": 1, + "serialNumber": "PEHERF41U8P9TV", + "slots": 0, + "type": "Motherboard", + "usb": 5 + } ], "device": { "chassis": "Netbook", - "events": [ - { - "appearanceRange": "A", - "functionalityRange": "A", - "type": "VisualTest" - }, - { - "elapsed": 300, - "severity": "Info", - "type": "StressTest" - }, - { - "elapsed": 6, - "rate": 5.8783, - "type": "BenchmarkRamSysbench" - } + "actions": [ + { + "appearanceRange": "A", + "functionalityRange": "A", + "type": "VisualTest" + }, + { + "elapsed": 300, + "severity": "Info", + "type": "StressTest" + }, + { + "elapsed": 6, + "rate": 5.8783, + "type": "BenchmarkRamSysbench" + } ], "manufacturer": "Hewlett-Packard", "model": "HP 255 G3 Notebook", @@ -157,12 +157,6 @@ }, "elapsed": 1194, "endTime": "2019-02-13T10:13:50.535387+00:00", - "expectedEvents": [ - "Benchmark", - "TestDataStorage", - "StressTest", - "Install" - ], "software": "Workbench", "type": "Snapshot", "uuid": "ca564895-567e-4ac2-9a0d-2d1402528687", diff --git a/tests/files/real-custom.snapshot.11.yaml b/tests/files/real-custom.snapshot.11.yaml index 0c207914..d9e9d84f 100644 --- a/tests/files/real-custom.snapshot.11.yaml +++ b/tests/files/real-custom.snapshot.11.yaml @@ -1,14 +1,10 @@ { "version": "11.0a3", - "expectedEvents": [ - "Benchmark", - "TestDataStorage", - "StressTest" - ], + "uuid": "16467238-64bb-48e0-9058-0cba687d7db0", "components": [ { - "events": [], + "actions": [], "type": "NetworkAdapter", "speed": 1000, "wireless": false, @@ -17,7 +13,7 @@ "model": "88E8056 PCI-E Gigabit Ethernet Controller" }, { - "events": [ + "actions": [ { "rate": 4.8652, "elapsed": 5, @@ -39,21 +35,21 @@ "address": 64 }, { - "events": [], + "actions": [], "type": "SoundCard", "manufacturer": "Advanced Micro Devices, Inc. AMD/ATI", "serialNumber": null, "model": "Barts HDMI Audio Radeon HD 6790/6850/6870 / 7720" }, { - "events": [], + "actions": [], "type": "SoundCard", "manufacturer": "Intel Corporation", "serialNumber": null, "model": "82801JI HD Audio Controller" }, { - "events": [], + "actions": [], "type": "GraphicCard", "memory": 256.0, "manufacturer": "Advanced Micro Devices, Inc. AMD/ATI", @@ -61,7 +57,7 @@ "model": "Barts XT Radeon HD 6870" }, { - "events": [ + "actions": [ { "elapsed": 2, "type": "BenchmarkDataStorage", @@ -89,7 +85,7 @@ "size": 228936 }, { - "events": [], + "actions": [], "type": "Motherboard", "slots": 6, "pcmcia": 0, @@ -103,7 +99,7 @@ ], "elapsed": 7339, "device": { - "events": [ + "actions": [ { "rate": 16.5946, "elapsed": 17, diff --git a/tests/files/workbench-10.snapshot.yaml b/tests/files/workbench-10.snapshot.yaml index 57852d0c..ed17aedc 100644 --- a/tests/files/workbench-10.snapshot.yaml +++ b/tests/files/workbench-10.snapshot.yaml @@ -2,714 +2,714 @@ _uuid: d0bbf629-c081-4f25-8b34-6619bca6fb46 automatic: true benchmarks: -- {'@type': BenchmarkRamSysbench, score: 8.7637} + - {'@type': BenchmarkRamSysbench, score: 8.7637} components: -- '@type': Processor - address: 64 - benchmarks: - - {'@type': BenchmarkProcessor, score: 11969.48} - - {'@type': BenchmarkProcessorSysbench, score: 20.3175} - manufacturer: Intel Corp. - model: Intel Core2 Duo CPU E8400 @ 3.00GHz - numberOfCores: 2 - serialNumber: null - speed: 2.0 -- {'@type': RamModule, manufacturer: null, model: null, serialNumber: null, size: 2048, - speed: 1067.0} -- {'@type': RamModule, manufacturer: null, model: null, serialNumber: null, size: 2048, - speed: 1067.0} -- '@type': HardDrive - benchmark: {'@type': BenchmarkHardDrive, readingSpeed: 129.0, writingSpeed: 32.6} - interface: 'ata + - '@type': Processor + address: 64 + benchmarks: + - {'@type': BenchmarkProcessor, score: 11969.48} + - {'@type': BenchmarkProcessorSysbench, score: 20.3175} + manufacturer: Intel Corp. + model: Intel Core2 Duo CPU E8400 @ 3.00GHz + numberOfCores: 2 + serialNumber: null + speed: 2.0 + - {'@type': RamModule, manufacturer: null, model: null, serialNumber: null, size: 2048, + speed: 1067.0} + - {'@type': RamModule, manufacturer: null, model: null, serialNumber: null, size: 2048, + speed: 1067.0} + - '@type': HardDrive + benchmark: {'@type': BenchmarkHardDrive, readingSpeed: 129.0, writingSpeed: 32.6} + interface: 'ata ' - manufacturer: Seagate - model: ST3250318AS - serialNumber: 6VMB1A52 - size: 238475 - test: {'@type': TestHardDrive, CommandTimeout: 1786733725708, CurrentPendingSectorCount: 0, - OfflineUncorrectable: 0, assessment: true, severity: Info, firstError: null, lifetime: 16947, - passedLifetime: 16947, powerCycleCount: 1694, reallocatedSectorCount: 0, reportedUncorrectableErrors: 0, - status: Completed without error, type: Short offline} - type: HDD -- { '@type': GraphicCard, manufacturer: Intel Corporation, memory: 256.0, model: 4 - Series Chipset Integrated Graphics Controller, serialNumber: null} -- '@type': Motherboard - connectors: {firewire: 0, pcmcia: 0, serial: 1, usb: 8} - manufacturer: LENOVO - model: LENOVO - serialNumber: null - totalSlots: 0 - usedSlots: 2 -- { '@type': NetworkAdapter, manufacturer: Intel Corporation, model: 82567LM-3 Gigabit - Network Connection, serialNumber: '00:21:86:2c:5e:d6', speed: 1000} -- { '@type': SoundCard, manufacturer: Intel Corporation, model: 82801JD/DO HD Audio - Controller, serialNumber: null} + manufacturer: Seagate + model: ST3250318AS + serialNumber: 6VMB1A52 + size: 238475 + test: {'@type': TestHardDrive, CommandTimeout: 1786733725708, CurrentPendingSectorCount: 0, + OfflineUncorrectable: 0, assessment: true, severity: Info, firstError: null, lifetime: 16947, + passedLifetime: 16947, powerCycleCount: 1694, reallocatedSectorCount: 0, reportedUncorrectableErrors: 0, + status: Completed without error, type: Short offline} + type: HDD + - { '@type': GraphicCard, manufacturer: Intel Corporation, memory: 256.0, model: 4 + Series Chipset Integrated Graphics Controller, serialNumber: null} + - '@type': Motherboard + connectors: {firewire: 0, pcmcia: 0, serial: 1, usb: 8} + manufacturer: LENOVO + model: LENOVO + serialNumber: null + totalSlots: 0 + usedSlots: 2 + - { '@type': NetworkAdapter, manufacturer: Intel Corporation, model: 82567LM-3 Gigabit + Network Connection, serialNumber: '00:21:86:2c:5e:d6', speed: 1000} + - { '@type': SoundCard, manufacturer: Intel Corporation, model: 82801JD/DO HD Audio + Controller, serialNumber: null} condition: appearance: {general: B} functionality: {general: A} date: '2018-05-09T10:32:15' debug: - capabilities: { dmi-2.5: DMI version 2.5, smbios-2.5: SMBIOS version 2.5, smp: Symmetric - Multi-Processing, smp-1.4: SMP specification v1.4} + capabilities: { dmi-2.5: DMI version 2.5, smbios-2.5: SMBIOS version 2.5, smp: Symmetric + Multi-Processing, smp-1.4: SMP specification v1.4} children: - - children: - - capabilities: { acpi: ACPI, biosbootspecification: BIOS boot specification, cdboot: Booting - from CD-ROM/DVD, edd: Enhanced Disk Drive extensions, escd: ESCD, ls120boot: Booting - from LS-120, pci: PCI bus, pnp: Plug-and-Play, shadowing: BIOS shadowing, - smartbattery: Smart battery, upgrade: BIOS EEPROM can be upgraded, usb: USB - legacy emulation} - capacity: 4128768 - claimed: true - class: memory - date: 04/24/2009 - description: BIOS - id: firmware - physid: '0' - size: 128736 - units: bytes - vendor: LENOVO - version: 5CKT48AUS - - businfo: cpu@0 - capabilities: { acpi: thermal control (ACPI), aperfmperf: true, apic: on-chip - advanced programmable interrupt controller (APIC), arch_perfmon: true, boot: boot - processor, bts: true, clflush: true, cmov: conditional move instruction, - constant_tsc: true, cpufreq: CPU Frequency scaling, cx16: true, cx8: compare - and exchange 8-byte, de: debugging extensions, ds_cpl: true, dtes64: true, - dtherm: true, dts: debug trace and EMON store MSRs, eagerfpu: true, est: true, - flexpriority: true, fpu: mathematical co-processor, fpu_exception: FPU exceptions - reporting, fxsr: fast floating point save/restore, ht: HyperThreading, lahf_lm: true, - mca: machine check architecture, mce: machine check exceptions, mmx: multimedia - extensions (MMX), monitor: true, msr: model-specific registers, mtrr: memory - type range registers, nx: no-execute bit (NX), pae: 4GB+ memory addressing - (Physical Address Extension), pat: page attribute table, pbe: pending break - event, pdcm: true, pebs: true, pge: page global enable, pni: true, pse: page - size extensions, pse36: 36-bit page size extensions, sep: fast system calls, - smx: true, ss: self-snoop, sse: streaming SIMD extensions (SSE), sse2: streaming - SIMD extensions (SSE2), sse4_1: true, ssse3: true, tm: thermal interrupt - and status, tm2: true, tpr_shadow: true, tsc: time stamp counter, vme: virtual - mode extensions, vmx: CPU virtualization (Vanderpool), vnmi: true, wp: true, - x86-64: 64bits extensions (x86-64), xsave: true, xtpr: true} - capacity: 3600000000 - children: - - capabilities: {asynchronous: Asynchronous, internal: Internal, write-back: Write-back} - capacity: 262144 - claimed: true - class: memory - configuration: {level: '1'} - description: L1 cache - handle: DMI:0005 - id: cache:0 - physid: '5' - size: 16384 - slot: L1 Cache - units: bytes - - capabilities: {burst: Burst, internal: Internal, write-back: Write-back} - capacity: 12582912 - claimed: true - class: memory - configuration: {level: '2'} - description: L2 cache - handle: DMI:0006 - id: cache:1 - physid: '6' - size: 6291456 - slot: L2 Cache - units: bytes - - capabilities: {logical: Logical CPU} - claimed: true - class: processor - description: Logical CPU - handle: CPU:1.0 - id: logicalcpu:0 - physid: '1.1' - width: 64 - - capabilities: {logical: Logical CPU} - claimed: true - class: processor - description: Logical CPU - handle: CPU:1.1 - id: logicalcpu:1 - physid: '1.2' - width: 64 - claimed: true - class: processor - clock: 333000000 - configuration: {cores: '2', enabledcores: '2', id: '1', threads: '2'} - description: CPU - handle: DMI:0004 - id: cpu:0 - physid: '4' - product: Intel(R) Core(TM)2 Duo CPU E8400 @ 3.00GHz - serial: 0001-067A-0000-0000-0000-0000 - size: 2000000000 - slot: LGA 775 - units: Hz - vendor: Intel Corp. - version: 6.7.10 - width: 64 - children: - - { claimed: true, class: memory, clock: 1067000000, description: DIMM DDR2 Synchronous - 1067 MHz (0.9 ns), handle: 'DMI:001F', id: 'bank:0', physid: '0', product: '000000000000000000000000000000000000', - serial: '00000000', size: 2147483648, slot: J6G1, units: bytes, vendor: Unknown, - width: 40960} - - {claimed: true, class: memory, clock: 1067000000, description: 'DIMM DDR2 + - capabilities: { acpi: ACPI, biosbootspecification: BIOS boot specification, cdboot: Booting + from CD-ROM/DVD, edd: Enhanced Disk Drive extensions, escd: ESCD, ls120boot: Booting + from LS-120, pci: PCI bus, pnp: Plug-and-Play, shadowing: BIOS shadowing, + smartbattery: Smart battery, upgrade: BIOS EEPROM can be upgraded, usb: USB + legacy emulation} + capacity: 4128768 + claimed: true + class: memory + date: 04/24/2009 + description: BIOS + id: firmware + physid: '0' + size: 128736 + units: bytes + vendor: LENOVO + version: 5CKT48AUS + - businfo: cpu@0 + capabilities: { acpi: thermal control (ACPI), aperfmperf: true, apic: on-chip + advanced programmable interrupt controller (APIC), arch_perfmon: true, boot: boot + processor, bts: true, clflush: true, cmov: conditional move instruction, + constant_tsc: true, cpufreq: CPU Frequency scaling, cx16: true, cx8: compare + and exchange 8-byte, de: debugging extensions, ds_cpl: true, dtes64: true, + dtherm: true, dts: debug trace and EMON store MSRs, eagerfpu: true, est: true, + flexpriority: true, fpu: mathematical co-processor, fpu_exception: FPU exceptions + reporting, fxsr: fast floating point save/restore, ht: HyperThreading, lahf_lm: true, + mca: machine check architecture, mce: machine check exceptions, mmx: multimedia + extensions (MMX), monitor: true, msr: model-specific registers, mtrr: memory + type range registers, nx: no-execute bit (NX), pae: 4GB+ memory addressing + (Physical Address Extension), pat: page attribute table, pbe: pending break + action, pdcm: true, pebs: true, pge: page global enable, pni: true, pse: page + size extensions, pse36: 36-bit page size extensions, sep: fast system calls, + smx: true, ss: self-snoop, sse: streaming SIMD extensions (SSE), sse2: streaming + SIMD extensions (SSE2), sse4_1: true, ssse3: true, tm: thermal interrupt + and status, tm2: true, tpr_shadow: true, tsc: time stamp counter, vme: virtual + mode extensions, vmx: CPU virtualization (Vanderpool), vnmi: true, wp: true, + x86-64: 64bits extensions (x86-64), xsave: true, xtpr: true} + capacity: 3600000000 + children: + - capabilities: {asynchronous: Asynchronous, internal: Internal, write-back: Write-back} + capacity: 262144 + claimed: true + class: memory + configuration: {level: '1'} + description: L1 cache + handle: DMI:0005 + id: cache:0 + physid: '5' + size: 16384 + slot: L1 Cache + units: bytes + - capabilities: {burst: Burst, internal: Internal, write-back: Write-back} + capacity: 12582912 + claimed: true + class: memory + configuration: {level: '2'} + description: L2 cache + handle: DMI:0006 + id: cache:1 + physid: '6' + size: 6291456 + slot: L2 Cache + units: bytes + - capabilities: {logical: Logical CPU} + claimed: true + class: processor + description: Logical CPU + handle: CPU:1.0 + id: logicalcpu:0 + physid: '1.1' + width: 64 + - capabilities: {logical: Logical CPU} + claimed: true + class: processor + description: Logical CPU + handle: CPU:1.1 + id: logicalcpu:1 + physid: '1.2' + width: 64 + claimed: true + class: processor + clock: 333000000 + configuration: {cores: '2', enabledcores: '2', id: '1', threads: '2'} + description: CPU + handle: DMI:0004 + id: cpu:0 + physid: '4' + product: Intel(R) Core(TM)2 Duo CPU E8400 @ 3.00GHz + serial: 0001-067A-0000-0000-0000-0000 + size: 2000000000 + slot: LGA 775 + units: Hz + vendor: Intel Corp. + version: 6.7.10 + width: 64 + - children: + - { claimed: true, class: memory, clock: 1067000000, description: DIMM DDR2 Synchronous + 1067 MHz (0.9 ns), handle: 'DMI:001F', id: 'bank:0', physid: '0', product: '000000000000000000000000000000000000', + serial: '00000000', size: 2147483648, slot: J6G1, units: bytes, vendor: Unknown, + width: 40960} + - {claimed: true, class: memory, clock: 1067000000, description: 'DIMM DDR2 Synchronous 1067 MHz (0.9 ns) [empty]', handle: 'DMI:0020', id: 'bank:1', - physid: '1', product: 012345678901234567890123456789012345, serial: '01234567', - slot: J6G2, vendor: 48spaces} - - { claimed: true, class: memory, clock: 1067000000, description: DIMM DDR2 Synchronous - 1067 MHz (0.9 ns), handle: 'DMI:0021', id: 'bank:2', physid: '2', product: '000000000000000000000000000000000000', - serial: '00000000', size: 2147483648, slot: J6H1, units: bytes, vendor: Unknown, - width: 41984} - - {claimed: true, class: memory, clock: 1067000000, description: 'DIMM DDR2 + physid: '1', product: 012345678901234567890123456789012345, serial: '01234567', + slot: J6G2, vendor: 48spaces} + - { claimed: true, class: memory, clock: 1067000000, description: DIMM DDR2 Synchronous + 1067 MHz (0.9 ns), handle: 'DMI:0021', id: 'bank:2', physid: '2', product: '000000000000000000000000000000000000', + serial: '00000000', size: 2147483648, slot: J6H1, units: bytes, vendor: Unknown, + width: 41984} + - {claimed: true, class: memory, clock: 1067000000, description: 'DIMM DDR2 Synchronous 1067 MHz (0.9 ns) [empty]', handle: 'DMI:0022', id: 'bank:3', - physid: '3', product: 012345678901234567890123456789012345, serial: '01234567', - slot: J6H2, vendor: 48spaces} - claimed: true - class: memory - description: System Memory - handle: DMI:001E - id: memory - physid: 1e - size: 4294967296 - slot: System board or motherboard - units: bytes - - businfo: cpu@1 - capabilities: {cpufreq: CPU Frequency scaling, ht: HyperThreading, vmx: CPU - virtualization (Vanderpool)} - capacity: 3000000000 - children: - - capabilities: {logical: Logical CPU} - claimed: true - class: processor - description: Logical CPU - handle: CPU:1.0 - id: logicalcpu:0 - physid: '1.1' - - capabilities: {logical: Logical CPU} - claimed: true - class: processor - description: Logical CPU - handle: CPU:1.1 - id: logicalcpu:1 - physid: '1.2' - claimed: true - class: processor - configuration: {id: '1'} - id: cpu:1 - physid: '1' - serial: 0001-067A-0000-0000-0000-0000 - size: 3000000000 - units: Hz - version: 6.7.10 - - businfo: pci@0000:00:00.0 - children: - - businfo: pci@0000:00:02.0 - capabilities: { bus_master: bus mastering, cap_list: PCI capabilities listing, - msi: Message Signalled Interrupts, pm: Power Management, rom: extension - ROM, vga_controller: true} - claimed: true - class: display - clock: 33000000 - configuration: {driver: i915, latency: '0'} - description: VGA compatible controller - handle: PCI:0000:00:02.0 - id: display:0 - physid: '2' - product: 4 Series Chipset Integrated Graphics Controller - vendor: Intel Corporation - version: '03' - width: 64 - - businfo: pci@0000:00:02.1 - capabilities: {bus_master: bus mastering, cap_list: PCI capabilities listing, - pm: Power Management} - class: display - clock: 33000000 - configuration: {latency: '0'} - description: Display controller - handle: PCI:0000:00:02.1 - id: display:1 - physid: '2.1' - product: 4 Series Chipset Integrated Graphics Controller - vendor: Intel Corporation - version: '03' - width: 64 - - businfo: pci@0000:00:03.0 - capabilities: {bus_master: bus mastering, cap_list: PCI capabilities listing, - msi: Message Signalled Interrupts, pm: Power Management} - claimed: true - class: communication - clock: 33000000 - configuration: {driver: mei_me, latency: '0'} - description: Communication controller - handle: PCI:0000:00:03.0 - id: communication:0 - physid: '3' - product: 4 Series Chipset HECI Controller - vendor: Intel Corporation - version: '03' - width: 64 - - businfo: pci@0000:00:03.2 - capabilities: {bus_master: bus mastering, cap_list: PCI capabilities listing, - ide: true, msi: Message Signalled Interrupts, pci_native_mode-only_controller__supports_bus_mastering: true, - pm: Power Management} - class: storage - clock: 66000000 - configuration: {latency: '0'} - description: IDE interface - handle: PCI:0000:00:03.2 - id: ide - physid: '3.2' - product: 4 Series Chipset PT IDER Controller - vendor: Intel Corporation - version: '03' - width: 32 - - businfo: pci@0000:00:03.3 - capabilities: { '16550': true, bus_master: bus mastering, cap_list: PCI capabilities - listing, msi: Message Signalled Interrupts, pm: Power Management} - claimed: true - class: communication - clock: 66000000 - configuration: {driver: serial, latency: '0'} - description: Serial controller - handle: PCI:0000:00:03.3 - id: communication:1 - physid: '3.3' - product: 4 Series Chipset Serial KT Controller - vendor: Intel Corporation - version: '03' - width: 32 - - businfo: pci@0000:00:19.0 - capabilities: { 1000bt-fd: 1Gbit/s (full duplex), 100bt: 100Mbit/s, 100bt-fd: 100Mbit/s - (full duplex), 10bt: 10Mbit/s, 10bt-fd: 10Mbit/s (full duplex), autonegotiation: Auto-negotiation, - bus_master: bus mastering, cap_list: PCI capabilities listing, ethernet: true, - msi: Message Signalled Interrupts, physical: Physical interface, pm: Power - Management, tp: twisted pair} - capacity: 1000000000 - claimed: true - class: network - clock: 33000000 - configuration: {autonegotiation: 'on', broadcast: 'yes', driver: e1000e, driverversion: 3.2.6-k, - duplex: full, firmware: 0.4-3, ip: 192.168.2.24, latency: '0', link: 'yes', - multicast: 'yes', port: twisted pair, speed: 100Mbit/s} - description: Ethernet interface - handle: PCI:0000:00:19.0 - id: network - logicalname: enp0s25 - physid: '19' - product: 82567LM-3 Gigabit Network Connection - serial: 00:21:86:2c:5e:d6 - size: 100000000 - units: bit/s - vendor: Intel Corporation - version: '02' - width: 32 - - businfo: pci@0000:00:1a.0 - capabilities: {bus_master: bus mastering, cap_list: PCI capabilities listing, - uhci: Universal Host Controller Interface (USB1)} - children: - - businfo: usb@3 - capabilities: {usb-1.10: USB 1.1} + physid: '3', product: 012345678901234567890123456789012345, serial: '01234567', + slot: J6H2, vendor: 48spaces} claimed: true - class: bus - configuration: {driver: hub, slots: '2', speed: 12Mbit/s} - handle: USB:3:1 - id: usbhost - logicalname: usb3 + class: memory + description: System Memory + handle: DMI:001E + id: memory + physid: 1e + size: 4294967296 + slot: System board or motherboard + units: bytes + - businfo: cpu@1 + capabilities: {cpufreq: CPU Frequency scaling, ht: HyperThreading, vmx: CPU + virtualization (Vanderpool)} + capacity: 3000000000 + children: + - capabilities: {logical: Logical CPU} + claimed: true + class: processor + description: Logical CPU + handle: CPU:1.0 + id: logicalcpu:0 + physid: '1.1' + - capabilities: {logical: Logical CPU} + claimed: true + class: processor + description: Logical CPU + handle: CPU:1.1 + id: logicalcpu:1 + physid: '1.2' + claimed: true + class: processor + configuration: {id: '1'} + id: cpu:1 physid: '1' - product: UHCI Host Controller - vendor: Linux 4.9.0-6-686 uhci_hcd - version: '4.09' - claimed: true - class: bus - clock: 33000000 - configuration: {driver: uhci_hcd, latency: '0'} - description: USB controller - handle: PCI:0000:00:1a.0 - id: usb:0 - physid: 1a - product: '82801JD/DO (ICH10 Family) USB UHCI Controller #4' - vendor: Intel Corporation - version: '02' - width: 32 - - businfo: pci@0000:00:1a.1 - capabilities: {bus_master: bus mastering, cap_list: PCI capabilities listing, - uhci: Universal Host Controller Interface (USB1)} - children: - - businfo: usb@4 - capabilities: {usb-1.10: USB 1.1} + serial: 0001-067A-0000-0000-0000-0000 + size: 3000000000 + units: Hz + version: 6.7.10 + - businfo: pci@0000:00:00.0 + children: + - businfo: pci@0000:00:02.0 + capabilities: { bus_master: bus mastering, cap_list: PCI capabilities listing, + msi: Message Signalled Interrupts, pm: Power Management, rom: extension + ROM, vga_controller: true} + claimed: true + class: display + clock: 33000000 + configuration: {driver: i915, latency: '0'} + description: VGA compatible controller + handle: PCI:0000:00:02.0 + id: display:0 + physid: '2' + product: 4 Series Chipset Integrated Graphics Controller + vendor: Intel Corporation + version: '03' + width: 64 + - businfo: pci@0000:00:02.1 + capabilities: {bus_master: bus mastering, cap_list: PCI capabilities listing, + pm: Power Management} + class: display + clock: 33000000 + configuration: {latency: '0'} + description: Display controller + handle: PCI:0000:00:02.1 + id: display:1 + physid: '2.1' + product: 4 Series Chipset Integrated Graphics Controller + vendor: Intel Corporation + version: '03' + width: 64 + - businfo: pci@0000:00:03.0 + capabilities: {bus_master: bus mastering, cap_list: PCI capabilities listing, + msi: Message Signalled Interrupts, pm: Power Management} + claimed: true + class: communication + clock: 33000000 + configuration: {driver: mei_me, latency: '0'} + description: Communication controller + handle: PCI:0000:00:03.0 + id: communication:0 + physid: '3' + product: 4 Series Chipset HECI Controller + vendor: Intel Corporation + version: '03' + width: 64 + - businfo: pci@0000:00:03.2 + capabilities: {bus_master: bus mastering, cap_list: PCI capabilities listing, + ide: true, msi: Message Signalled Interrupts, pci_native_mode-only_controller__supports_bus_mastering: true, + pm: Power Management} + class: storage + clock: 66000000 + configuration: {latency: '0'} + description: IDE interface + handle: PCI:0000:00:03.2 + id: ide + physid: '3.2' + product: 4 Series Chipset PT IDER Controller + vendor: Intel Corporation + version: '03' + width: 32 + - businfo: pci@0000:00:03.3 + capabilities: { '16550': true, bus_master: bus mastering, cap_list: PCI capabilities + listing, msi: Message Signalled Interrupts, pm: Power Management} + claimed: true + class: communication + clock: 66000000 + configuration: {driver: serial, latency: '0'} + description: Serial controller + handle: PCI:0000:00:03.3 + id: communication:1 + physid: '3.3' + product: 4 Series Chipset Serial KT Controller + vendor: Intel Corporation + version: '03' + width: 32 + - businfo: pci@0000:00:19.0 + capabilities: { 1000bt-fd: 1Gbit/s (full duplex), 100bt: 100Mbit/s, 100bt-fd: 100Mbit/s + (full duplex), 10bt: 10Mbit/s, 10bt-fd: 10Mbit/s (full duplex), autonegotiation: Auto-negotiation, + bus_master: bus mastering, cap_list: PCI capabilities listing, ethernet: true, + msi: Message Signalled Interrupts, physical: Physical interface, pm: Power + Management, tp: twisted pair} + capacity: 1000000000 + claimed: true + class: network + clock: 33000000 + configuration: {autonegotiation: 'on', broadcast: 'yes', driver: e1000e, driverversion: 3.2.6-k, + duplex: full, firmware: 0.4-3, ip: 192.168.2.24, latency: '0', link: 'yes', + multicast: 'yes', port: twisted pair, speed: 100Mbit/s} + description: Ethernet interface + handle: PCI:0000:00:19.0 + id: network + logicalname: enp0s25 + physid: '19' + product: 82567LM-3 Gigabit Network Connection + serial: 00:21:86:2c:5e:d6 + size: 100000000 + units: bit/s + vendor: Intel Corporation + version: '02' + width: 32 + - businfo: pci@0000:00:1a.0 + capabilities: {bus_master: bus mastering, cap_list: PCI capabilities listing, + uhci: Universal Host Controller Interface (USB1)} + children: + - businfo: usb@3 + capabilities: {usb-1.10: USB 1.1} + claimed: true + class: bus + configuration: {driver: hub, slots: '2', speed: 12Mbit/s} + handle: USB:3:1 + id: usbhost + logicalname: usb3 + physid: '1' + product: UHCI Host Controller + vendor: Linux 4.9.0-6-686 uhci_hcd + version: '4.09' + claimed: true + class: bus + clock: 33000000 + configuration: {driver: uhci_hcd, latency: '0'} + description: USB controller + handle: PCI:0000:00:1a.0 + id: usb:0 + physid: 1a + product: '82801JD/DO (ICH10 Family) USB UHCI Controller #4' + vendor: Intel Corporation + version: '02' + width: 32 + - businfo: pci@0000:00:1a.1 + capabilities: {bus_master: bus mastering, cap_list: PCI capabilities listing, + uhci: Universal Host Controller Interface (USB1)} + children: + - businfo: usb@4 + capabilities: {usb-1.10: USB 1.1} + claimed: true + class: bus + configuration: {driver: hub, slots: '2', speed: 12Mbit/s} + handle: USB:4:1 + id: usbhost + logicalname: usb4 + physid: '1' + product: UHCI Host Controller + vendor: Linux 4.9.0-6-686 uhci_hcd + version: '4.09' + claimed: true + class: bus + clock: 33000000 + configuration: {driver: uhci_hcd, latency: '0'} + description: USB controller + handle: PCI:0000:00:1a.1 + id: usb:1 + physid: 1a.1 + product: '82801JD/DO (ICH10 Family) USB UHCI Controller #5' + vendor: Intel Corporation + version: '02' + width: 32 + - businfo: pci@0000:00:1a.2 + capabilities: {bus_master: bus mastering, cap_list: PCI capabilities listing, + uhci: Universal Host Controller Interface (USB1)} + children: + - businfo: usb@5 + capabilities: {usb-1.10: USB 1.1} + claimed: true + class: bus + configuration: {driver: hub, slots: '2', speed: 12Mbit/s} + handle: USB:5:1 + id: usbhost + logicalname: usb5 + physid: '1' + product: UHCI Host Controller + vendor: Linux 4.9.0-6-686 uhci_hcd + version: '4.09' + claimed: true + class: bus + clock: 33000000 + configuration: {driver: uhci_hcd, latency: '0'} + description: USB controller + handle: PCI:0000:00:1a.2 + id: usb:2 + physid: 1a.2 + product: '82801JD/DO (ICH10 Family) USB UHCI Controller #6' + vendor: Intel Corporation + version: '02' + width: 32 + - businfo: pci@0000:00:1a.7 + capabilities: {bus_master: bus mastering, cap_list: PCI capabilities listing, + debug: Debug port, ehci: Enhanced Host Controller Interface (USB2), pm: Power + Management} + children: + - businfo: usb@1 + capabilities: {usb-2.00: USB 2.0} + claimed: true + class: bus + configuration: {driver: hub, slots: '6', speed: 480Mbit/s} + handle: USB:1:1 + id: usbhost + logicalname: usb1 + physid: '1' + product: EHCI Host Controller + vendor: Linux 4.9.0-6-686 ehci_hcd + version: '4.09' + claimed: true + class: bus + clock: 33000000 + configuration: {driver: ehci-pci, latency: '0'} + description: USB controller + handle: PCI:0000:00:1a.7 + id: usb:3 + physid: 1a.7 + product: '82801JD/DO (ICH10 Family) USB2 EHCI Controller #2' + vendor: Intel Corporation + version: '02' + width: 32 + - businfo: pci@0000:00:1b.0 + capabilities: {bus_master: bus mastering, cap_list: PCI capabilities listing, + msi: Message Signalled Interrupts, pciexpress: PCI Express, pm: Power Management} + claimed: true + class: multimedia + clock: 33000000 + configuration: {driver: snd_hda_intel, latency: '0'} + description: Audio device + handle: PCI:0000:00:1b.0 + id: multimedia + physid: 1b + product: 82801JD/DO (ICH10 Family) HD Audio Controller + vendor: Intel Corporation + version: '02' + width: 64 + - businfo: pci@0000:00:1d.0 + capabilities: {bus_master: bus mastering, cap_list: PCI capabilities listing, + uhci: Universal Host Controller Interface (USB1)} + children: + - businfo: usb@6 + capabilities: {usb-1.10: USB 1.1} + claimed: true + class: bus + configuration: {driver: hub, slots: '2', speed: 12Mbit/s} + handle: USB:6:1 + id: usbhost + logicalname: usb6 + physid: '1' + product: UHCI Host Controller + vendor: Linux 4.9.0-6-686 uhci_hcd + version: '4.09' + claimed: true + class: bus + clock: 33000000 + configuration: {driver: uhci_hcd, latency: '0'} + description: USB controller + handle: PCI:0000:00:1d.0 + id: usb:4 + physid: 1d + product: '82801JD/DO (ICH10 Family) USB UHCI Controller #1' + vendor: Intel Corporation + version: '02' + width: 32 + - businfo: pci@0000:00:1d.1 + capabilities: {bus_master: bus mastering, cap_list: PCI capabilities listing, + uhci: Universal Host Controller Interface (USB1)} + children: + - businfo: usb@7 + capabilities: {usb-1.10: USB 1.1} + claimed: true + class: bus + configuration: {driver: hub, slots: '2', speed: 12Mbit/s} + handle: USB:7:1 + id: usbhost + logicalname: usb7 + physid: '1' + product: UHCI Host Controller + vendor: Linux 4.9.0-6-686 uhci_hcd + version: '4.09' + claimed: true + class: bus + clock: 33000000 + configuration: {driver: uhci_hcd, latency: '0'} + description: USB controller + handle: PCI:0000:00:1d.1 + id: usb:5 + physid: 1d.1 + product: '82801JD/DO (ICH10 Family) USB UHCI Controller #2' + vendor: Intel Corporation + version: '02' + width: 32 + - businfo: pci@0000:00:1d.2 + capabilities: {bus_master: bus mastering, cap_list: PCI capabilities listing, + uhci: Universal Host Controller Interface (USB1)} + children: + - businfo: usb@8 + capabilities: {usb-1.10: USB 1.1} + claimed: true + class: bus + configuration: {driver: hub, slots: '2', speed: 12Mbit/s} + handle: USB:8:1 + id: usbhost + logicalname: usb8 + physid: '1' + product: UHCI Host Controller + vendor: Linux 4.9.0-6-686 uhci_hcd + version: '4.09' + claimed: true + class: bus + clock: 33000000 + configuration: {driver: uhci_hcd, latency: '0'} + description: USB controller + handle: PCI:0000:00:1d.2 + id: usb:6 + physid: 1d.2 + product: '82801JD/DO (ICH10 Family) USB UHCI Controller #3' + vendor: Intel Corporation + version: '02' + width: 32 + - businfo: pci@0000:00:1d.7 + capabilities: {bus_master: bus mastering, cap_list: PCI capabilities listing, + debug: Debug port, ehci: Enhanced Host Controller Interface (USB2), pm: Power + Management} + children: + - businfo: usb@2 + capabilities: {usb-2.00: USB 2.0} + claimed: true + class: bus + configuration: {driver: hub, slots: '6', speed: 480Mbit/s} + handle: USB:2:1 + id: usbhost + logicalname: usb2 + physid: '1' + product: EHCI Host Controller + vendor: Linux 4.9.0-6-686 ehci_hcd + version: '4.09' + claimed: true + class: bus + clock: 33000000 + configuration: {driver: ehci-pci, latency: '0'} + description: USB controller + handle: PCI:0000:00:1d.7 + id: usb:7 + physid: 1d.7 + product: '82801JD/DO (ICH10 Family) USB2 EHCI Controller #1' + vendor: Intel Corporation + version: '02' + width: 32 + - businfo: pci@0000:00:1e.0 + capabilities: {bus_master: bus mastering, cap_list: PCI capabilities listing, + pci: true, subtractive_decode: true} + claimed: true + class: bridge + clock: 33000000 + description: PCI bridge + handle: PCIBUS:0000:11 + id: pci + physid: 1e + product: 82801 PCI Bridge + vendor: Intel Corporation + version: a2 + width: 32 + - businfo: pci@0000:00:1f.0 + capabilities: {bus_master: bus mastering, cap_list: PCI capabilities listing, + isa: true} + claimed: true + class: bridge + clock: 33000000 + configuration: {driver: lpc_ich, latency: '0'} + description: ISA bridge + handle: PCI:0000:00:1f.0 + id: isa + physid: 1f + product: 82801JDO (ICH10DO) LPC Interface Controller + vendor: Intel Corporation + version: '02' + width: 32 + - businfo: pci@0000:00:1f.2 + capabilities: { ahci_1.0: true, bus_master: bus mastering, cap_list: PCI capabilities + listing, msi: Message Signalled Interrupts, pm: Power Management, storage: true} + claimed: true + class: storage + clock: 66000000 + configuration: {driver: ahci, latency: '0'} + description: SATA controller + handle: PCI:0000:00:1f.2 + id: storage + physid: 1f.2 + product: 82801JD/DO (ICH10 Family) SATA AHCI Controller + vendor: Intel Corporation + version: '02' + width: 32 + - businfo: pci@0000:00:1f.3 + claimed: true + class: bus + clock: 33000000 + configuration: {driver: i801_smbus, latency: '0'} + description: SMBus + handle: PCI:0000:00:1f.3 + id: serial + physid: 1f.3 + product: 82801JD/DO (ICH10 Family) SMBus Controller + vendor: Intel Corporation + version: '02' + width: 64 claimed: true - class: bus - configuration: {driver: hub, slots: '2', speed: 12Mbit/s} - handle: USB:4:1 - id: usbhost - logicalname: usb4 - physid: '1' - product: UHCI Host Controller - vendor: Linux 4.9.0-6-686 uhci_hcd - version: '4.09' - claimed: true - class: bus - clock: 33000000 - configuration: {driver: uhci_hcd, latency: '0'} - description: USB controller - handle: PCI:0000:00:1a.1 - id: usb:1 - physid: 1a.1 - product: '82801JD/DO (ICH10 Family) USB UHCI Controller #5' - vendor: Intel Corporation - version: '02' - width: 32 - - businfo: pci@0000:00:1a.2 - capabilities: {bus_master: bus mastering, cap_list: PCI capabilities listing, - uhci: Universal Host Controller Interface (USB1)} - children: - - businfo: usb@5 - capabilities: {usb-1.10: USB 1.1} + class: bridge + clock: 33000000 + description: Host bridge + handle: PCIBUS:0000:00 + id: pci + physid: '100' + product: 4 Series Chipset DRAM Controller + vendor: Intel Corporation + version: '03' + width: 32 + - capabilities: {emulated: Emulated device} + children: + - businfo: scsi@0:0.0.0 + capabilities: {partitioned: Partitioned disk, 'partitioned:dos': MS-DOS partition + table} + children: + - businfo: scsi@0:0.0.0,1 + capabilities: { dir_nlink: directories with 65000+ subdirs, ext2: EXT2/EXT3, + ext4: true, extended_attributes: Extended Attributes, extents: extent-based + allocation, huge_files: 16TB+ files, initialized: initialized volume, + journaled: true, large_files: 4GB+ files, primary: Primary partition} + capacity: 248984559616 + claimed: true + class: volume + configuration: {created: '2016-11-03 17:23:45', filesystem: ext4, lastmountpoint: /tmp/mnt, + modified: '2016-11-03 17:27:46', mounted: '2016-11-03 17:27:30', state: clean} + description: EXT4 volume + dev: '8:1' + id: volume:0 + logicalname: /dev/sda1 + physid: '1' + serial: a3e8943a-9a3f-4142-8d83-fecded5f0465 + size: 248984559616 + vendor: Linux + version: '1.0' + - businfo: scsi@0:0.0.0,2 + capabilities: {nofs: No filesystem, primary: Primary partition} + capacity: 1073741824 + claimed: true + class: volume + description: Linux swap / Solaris partition + dev: '8:2' + id: volume:1 + logicalname: /dev/sda2 + physid: '2' + claimed: true + class: disk + configuration: {ansiversion: '5', logicalsectorsize: '512', sectorsize: '512', + signature: e4bb7bc9} + description: ATA Disk + dev: '8:0' + handle: SCSI:00:00:00:00 + id: disk + logicalname: /dev/sda + physid: 0.0.0 + product: ST3250318AS + serial: 6VMB1A52 + size: 250059350016 + units: bytes + vendor: Seagate + version: CC66 claimed: true - class: bus - configuration: {driver: hub, slots: '2', speed: 12Mbit/s} - handle: USB:5:1 - id: usbhost - logicalname: usb5 - physid: '1' - product: UHCI Host Controller - vendor: Linux 4.9.0-6-686 uhci_hcd - version: '4.09' - claimed: true - class: bus - clock: 33000000 - configuration: {driver: uhci_hcd, latency: '0'} - description: USB controller - handle: PCI:0000:00:1a.2 - id: usb:2 - physid: 1a.2 - product: '82801JD/DO (ICH10 Family) USB UHCI Controller #6' - vendor: Intel Corporation - version: '02' - width: 32 - - businfo: pci@0000:00:1a.7 - capabilities: {bus_master: bus mastering, cap_list: PCI capabilities listing, - debug: Debug port, ehci: Enhanced Host Controller Interface (USB2), pm: Power - Management} - children: - - businfo: usb@1 - capabilities: {usb-2.00: USB 2.0} - claimed: true - class: bus - configuration: {driver: hub, slots: '6', speed: 480Mbit/s} - handle: USB:1:1 - id: usbhost - logicalname: usb1 - physid: '1' - product: EHCI Host Controller - vendor: Linux 4.9.0-6-686 ehci_hcd - version: '4.09' - claimed: true - class: bus - clock: 33000000 - configuration: {driver: ehci-pci, latency: '0'} - description: USB controller - handle: PCI:0000:00:1a.7 - id: usb:3 - physid: 1a.7 - product: '82801JD/DO (ICH10 Family) USB2 EHCI Controller #2' - vendor: Intel Corporation - version: '02' - width: 32 - - businfo: pci@0000:00:1b.0 - capabilities: {bus_master: bus mastering, cap_list: PCI capabilities listing, - msi: Message Signalled Interrupts, pciexpress: PCI Express, pm: Power Management} - claimed: true - class: multimedia - clock: 33000000 - configuration: {driver: snd_hda_intel, latency: '0'} - description: Audio device - handle: PCI:0000:00:1b.0 - id: multimedia - physid: 1b - product: 82801JD/DO (ICH10 Family) HD Audio Controller - vendor: Intel Corporation - version: '02' - width: 64 - - businfo: pci@0000:00:1d.0 - capabilities: {bus_master: bus mastering, cap_list: PCI capabilities listing, - uhci: Universal Host Controller Interface (USB1)} - children: - - businfo: usb@6 - capabilities: {usb-1.10: USB 1.1} - claimed: true - class: bus - configuration: {driver: hub, slots: '2', speed: 12Mbit/s} - handle: USB:6:1 - id: usbhost - logicalname: usb6 - physid: '1' - product: UHCI Host Controller - vendor: Linux 4.9.0-6-686 uhci_hcd - version: '4.09' - claimed: true - class: bus - clock: 33000000 - configuration: {driver: uhci_hcd, latency: '0'} - description: USB controller - handle: PCI:0000:00:1d.0 - id: usb:4 - physid: 1d - product: '82801JD/DO (ICH10 Family) USB UHCI Controller #1' - vendor: Intel Corporation - version: '02' - width: 32 - - businfo: pci@0000:00:1d.1 - capabilities: {bus_master: bus mastering, cap_list: PCI capabilities listing, - uhci: Universal Host Controller Interface (USB1)} - children: - - businfo: usb@7 - capabilities: {usb-1.10: USB 1.1} - claimed: true - class: bus - configuration: {driver: hub, slots: '2', speed: 12Mbit/s} - handle: USB:7:1 - id: usbhost - logicalname: usb7 - physid: '1' - product: UHCI Host Controller - vendor: Linux 4.9.0-6-686 uhci_hcd - version: '4.09' - claimed: true - class: bus - clock: 33000000 - configuration: {driver: uhci_hcd, latency: '0'} - description: USB controller - handle: PCI:0000:00:1d.1 - id: usb:5 - physid: 1d.1 - product: '82801JD/DO (ICH10 Family) USB UHCI Controller #2' - vendor: Intel Corporation - version: '02' - width: 32 - - businfo: pci@0000:00:1d.2 - capabilities: {bus_master: bus mastering, cap_list: PCI capabilities listing, - uhci: Universal Host Controller Interface (USB1)} - children: - - businfo: usb@8 - capabilities: {usb-1.10: USB 1.1} - claimed: true - class: bus - configuration: {driver: hub, slots: '2', speed: 12Mbit/s} - handle: USB:8:1 - id: usbhost - logicalname: usb8 - physid: '1' - product: UHCI Host Controller - vendor: Linux 4.9.0-6-686 uhci_hcd - version: '4.09' - claimed: true - class: bus - clock: 33000000 - configuration: {driver: uhci_hcd, latency: '0'} - description: USB controller - handle: PCI:0000:00:1d.2 - id: usb:6 - physid: 1d.2 - product: '82801JD/DO (ICH10 Family) USB UHCI Controller #3' - vendor: Intel Corporation - version: '02' - width: 32 - - businfo: pci@0000:00:1d.7 - capabilities: {bus_master: bus mastering, cap_list: PCI capabilities listing, - debug: Debug port, ehci: Enhanced Host Controller Interface (USB2), pm: Power - Management} - children: - - businfo: usb@2 - capabilities: {usb-2.00: USB 2.0} - claimed: true - class: bus - configuration: {driver: hub, slots: '6', speed: 480Mbit/s} - handle: USB:2:1 - id: usbhost - logicalname: usb2 - physid: '1' - product: EHCI Host Controller - vendor: Linux 4.9.0-6-686 ehci_hcd - version: '4.09' - claimed: true - class: bus - clock: 33000000 - configuration: {driver: ehci-pci, latency: '0'} - description: USB controller - handle: PCI:0000:00:1d.7 - id: usb:7 - physid: 1d.7 - product: '82801JD/DO (ICH10 Family) USB2 EHCI Controller #1' - vendor: Intel Corporation - version: '02' - width: 32 - - businfo: pci@0000:00:1e.0 - capabilities: {bus_master: bus mastering, cap_list: PCI capabilities listing, - pci: true, subtractive_decode: true} - claimed: true - class: bridge - clock: 33000000 - description: PCI bridge - handle: PCIBUS:0000:11 - id: pci - physid: 1e - product: 82801 PCI Bridge - vendor: Intel Corporation - version: a2 - width: 32 - - businfo: pci@0000:00:1f.0 - capabilities: {bus_master: bus mastering, cap_list: PCI capabilities listing, - isa: true} - claimed: true - class: bridge - clock: 33000000 - configuration: {driver: lpc_ich, latency: '0'} - description: ISA bridge - handle: PCI:0000:00:1f.0 - id: isa - physid: 1f - product: 82801JDO (ICH10DO) LPC Interface Controller - vendor: Intel Corporation - version: '02' - width: 32 - - businfo: pci@0000:00:1f.2 - capabilities: { ahci_1.0: true, bus_master: bus mastering, cap_list: PCI capabilities - listing, msi: Message Signalled Interrupts, pm: Power Management, storage: true} - claimed: true - class: storage - clock: 66000000 - configuration: {driver: ahci, latency: '0'} - description: SATA controller - handle: PCI:0000:00:1f.2 - id: storage - physid: 1f.2 - product: 82801JD/DO (ICH10 Family) SATA AHCI Controller - vendor: Intel Corporation - version: '02' - width: 32 - - businfo: pci@0000:00:1f.3 - claimed: true - class: bus - clock: 33000000 - configuration: {driver: i801_smbus, latency: '0'} - description: SMBus - handle: PCI:0000:00:1f.3 - id: serial - physid: 1f.3 - product: 82801JD/DO (ICH10 Family) SMBus Controller - vendor: Intel Corporation - version: '02' - width: 64 - claimed: true - class: bridge - clock: 33000000 - description: Host bridge - handle: PCIBUS:0000:00 - id: pci - physid: '100' - product: 4 Series Chipset DRAM Controller - vendor: Intel Corporation - version: '03' - width: 32 - - capabilities: {emulated: Emulated device} - children: - - businfo: scsi@0:0.0.0 - capabilities: {partitioned: Partitioned disk, 'partitioned:dos': MS-DOS partition - table} - children: - - businfo: scsi@0:0.0.0,1 - capabilities: { dir_nlink: directories with 65000+ subdirs, ext2: EXT2/EXT3, - ext4: true, extended_attributes: Extended Attributes, extents: extent-based - allocation, huge_files: 16TB+ files, initialized: initialized volume, - journaled: true, large_files: 4GB+ files, primary: Primary partition} - capacity: 248984559616 - claimed: true - class: volume - configuration: {created: '2016-11-03 17:23:45', filesystem: ext4, lastmountpoint: /tmp/mnt, - modified: '2016-11-03 17:27:46', mounted: '2016-11-03 17:27:30', state: clean} - description: EXT4 volume - dev: '8:1' - id: volume:0 - logicalname: /dev/sda1 - physid: '1' - serial: a3e8943a-9a3f-4142-8d83-fecded5f0465 - size: 248984559616 - vendor: Linux - version: '1.0' - - businfo: scsi@0:0.0.0,2 - capabilities: {nofs: No filesystem, primary: Primary partition} - capacity: 1073741824 - claimed: true - class: volume - description: Linux swap / Solaris partition - dev: '8:2' - id: volume:1 - logicalname: /dev/sda2 + class: storage + id: scsi:0 + logicalname: scsi0 physid: '2' - claimed: true - class: disk - configuration: {ansiversion: '5', logicalsectorsize: '512', sectorsize: '512', - signature: e4bb7bc9} - description: ATA Disk - dev: '8:0' - handle: SCSI:00:00:00:00 - id: disk - logicalname: /dev/sda - physid: 0.0.0 - product: ST3250318AS - serial: 6VMB1A52 - size: 250059350016 - units: bytes - vendor: Seagate - version: CC66 + - capabilities: {emulated: Emulated device} + children: + - businfo: scsi@1:0.0.0 + capabilities: { audio: Audio CD playback, cd-r: CD-R burning, cd-rw: CD-RW + burning, dvd: DVD playback, dvd-r: DVD-R burning, dvd-ram: DVD-RAM burning, + removable: support is removable} + claimed: true + class: disk + configuration: {ansiversion: '5', status: nodisc} + description: DVD-RAM writer + dev: '11:0' + handle: SCSI:01:00:00:00 + id: cdrom + logicalname: [/dev/cdrom, /dev/cdrw, /dev/dvd, /dev/dvdrw, /dev/sr0] + physid: 0.0.0 + product: CDDVDW TS-H653F + vendor: TSSTcorp + version: LE08 + claimed: true + class: storage + id: scsi:1 + logicalname: scsi1 + physid: '3' claimed: true - class: storage - id: scsi:0 - logicalname: scsi0 - physid: '2' - - capabilities: {emulated: Emulated device} - children: - - businfo: scsi@1:0.0.0 - capabilities: { audio: Audio CD playback, cd-r: CD-R burning, cd-rw: CD-RW - burning, dvd: DVD playback, dvd-r: DVD-R burning, dvd-ram: DVD-RAM burning, - removable: support is removable} - claimed: true - class: disk - configuration: {ansiversion: '5', status: nodisc} - description: DVD-RAM writer - dev: '11:0' - handle: SCSI:01:00:00:00 - id: cdrom - logicalname: [/dev/cdrom, /dev/cdrw, /dev/dvd, /dev/dvdrw, /dev/sr0] - physid: 0.0.0 - product: CDDVDW TS-H653F - vendor: TSSTcorp - version: LE08 - claimed: true - class: storage - id: scsi:1 - logicalname: scsi1 - physid: '3' - claimed: true - class: bus - description: Motherboard - handle: DMI:0002 - id: core - physid: '0' - product: LENOVO - serial: NONE - slot: INSIDE - vendor: LENOVO - version: NONE - - capabilities: {outbound: make outbound connections} - class: system - id: remoteaccess - physid: '1' - vendor: Intel - - {capacity: 125, class: power, description: Standard 235 ATX, id: power, physid: '2', - product: 'Diamond MM #87997/1845333', serial: '7481909424', units: mWh, vendor: 'PC + class: bus + description: Motherboard + handle: DMI:0002 + id: core + physid: '0' + product: LENOVO + serial: NONE + slot: INSIDE + vendor: LENOVO + version: NONE + - capabilities: {outbound: make outbound connections} + class: system + id: remoteaccess + physid: '1' + vendor: Intel + - {capacity: 125, class: power, description: Standard 235 ATX, id: power, physid: '2', + product: 'Diamond MM #87997/1845333', serial: '7481909424', units: mWh, vendor: 'PC POwer & Cooling, INC', version: '2.30'} claimed: true class: system @@ -732,5 +732,5 @@ osInstallation: {elapsed: '0:06:25', label: /media/workbench-images/LinuxMint18. success: true} snapshotSoftware: Workbench tests: -- {'@type': StressTest, elapsed: '0:05:00', success: true} + - {'@type': StressTest, elapsed: '0:05:00', success: true} version: 10.0b5 diff --git a/tests/test_basic.py b/tests/test_basic.py index f882f51e..d90f2f79 100644 --- a/tests/test_basic.py +++ b/tests/test_basic.py @@ -22,7 +22,7 @@ def test_api_docs(client: Client): '/devices/', '/tags/', '/users/login/', - '/events/', + '/actions/', '/lots/', '/manufacturers/', '/lots/{id}/children', diff --git a/tests/test_db.py b/tests/test_db.py index e5c24510..c379a46c 100644 --- a/tests/test_db.py +++ b/tests/test_db.py @@ -11,17 +11,17 @@ def test_unique_violation(): 'uuid': UUID('f5efd26e-8754-46bc-87bf-fbccc39d60d9'), 'version': '11.0', 'software': 'Workbench', 'elapsed': datetime.timedelta(0, 4), - 'expected_events': None, + 'expected_actions': None, 'id': UUID('dbdef3d8-2cac-48cb-adb8-419bc3e59687') } def __str__(self): return """(psycopg2.IntegrityError) duplicate key value violates unique constraint "snapshot_uuid_key" DETAIL: Key (uuid)=(f5efd26e-8754-46bc-87bf-fbccc39d60d9) already exists. - [SQL: 'INSERT INTO snapshot (uuid, version, software, elapsed, expected_events, id) - VALUES (%(uuid)s, %(version)s, %(software)s, %(elapsed)s, CAST(%(expected_events)s - AS snapshotexpectedevents[]), %(id)s)'] [parameters: {'uuid': UUID('f5efd26e-8754-46bc-87bf-fbccc39d60d9'), - 'version': '11.0', 'software': 'Workbench', 'elapsed': datetime.timedelta(0, 4), 'expected_events': None, + [SQL: 'INSERT INTO snapshot (uuid, version, software, elapsed, expected_actions, id) + VALUES (%(uuid)s, %(version)s, %(software)s, %(elapsed)s, CAST(%(expected_actions)s + AS snapshotexpectedactions[]), %(id)s)'] [parameters: {'uuid': UUID('f5efd26e-8754-46bc-87bf-fbccc39d60d9'), + 'version': '11.0', 'software': 'Workbench', 'elapsed': datetime.timedelta(0, 4), 'expected_actions': None, 'id': UUID('dbdef3d8-2cac-48cb-adb8-419bc3e59687')}] (Background on this error at: http://sqlalche.me/e/gkpj)""" u = UniqueViolation(IntegrityErrorMock()) diff --git a/tests/test_device.py b/tests/test_device.py index db2a7665..0e1650b6 100644 --- a/tests/test_device.py +++ b/tests/test_device.py @@ -13,6 +13,8 @@ from teal.enums import Layouts from ereuse_devicehub.client import Client, UserClient from ereuse_devicehub.db import db from ereuse_devicehub.devicehub import Devicehub +from ereuse_devicehub.resources.action import models as m +from ereuse_devicehub.resources.action.models import Remove, TestConnectivity from ereuse_devicehub.resources.agent.models import Person from ereuse_devicehub.resources.device import models as d from ereuse_devicehub.resources.device.exceptions import NeedsId @@ -21,8 +23,6 @@ from ereuse_devicehub.resources.device.sync import MismatchBetweenTags, Mismatch Sync from ereuse_devicehub.resources.enums import ComputerChassis, DisplayTech, Severity, \ SnapshotSoftware -from ereuse_devicehub.resources.event import models as m -from ereuse_devicehub.resources.event.models import Remove, TestConnectivity from ereuse_devicehub.resources.tag.model import Tag from ereuse_devicehub.resources.user import User from tests import conftest @@ -169,13 +169,13 @@ def test_add_remove(): # Test: # pc has only c3 - events = Sync.add_remove(device=pc, components={c3, c4}) - db.session.add_all(events) + actions = Sync.add_remove(device=pc, components={c3, c4}) + db.session.add_all(actions) db.session.commit() # We enforce the appliance of order_by - assert len(events) == 1 - assert isinstance(events[0], Remove) - assert events[0].device == pc2 - assert events[0].components == OrderedSet([c3]) + assert len(actions) == 1 + assert isinstance(actions[0], Remove) + assert actions[0].device == pc2 + assert actions[0].components == OrderedSet([c3]) @pytest.mark.usefixtures(conftest.app_context.__name__) @@ -396,13 +396,13 @@ def test_get_device(app: Devicehub, user: UserClient): author=User(email='bar@bar.com'))) db.session.commit() pc, _ = user.get(res=d.Device, item=1) - assert len(pc['events']) == 1 - assert pc['events'][0]['type'] == 'TestConnectivity' - assert pc['events'][0]['device'] == 1 - assert pc['events'][0]['severity'] == 'Info' - assert UUID(pc['events'][0]['author']) - assert 'events_components' not in pc, 'events_components are internal use only' - assert 'events_one' not in pc, 'they are internal use only' + assert len(pc['actions']) == 1 + assert pc['actions'][0]['type'] == 'TestConnectivity' + assert pc['actions'][0]['device'] == 1 + assert pc['actions'][0]['severity'] == 'Info' + assert UUID(pc['actions'][0]['author']) + assert 'actions_components' not in pc, 'actions_components are internal use only' + assert 'actions_one' not in pc, 'they are internal use only' assert 'author' not in pc assert tuple(c['id'] for c in pc['components']) == (2, 3) assert pc['hid'] == 'desktop-p1ma-p1mo-p1s' diff --git a/tests/test_device_find.py b/tests/test_device_find.py index 1d0a23ea..e0e34eb0 100644 --- a/tests/test_device_find.py +++ b/tests/test_device_find.py @@ -4,12 +4,12 @@ from teal.utils import compiled from ereuse_devicehub.client import UserClient from ereuse_devicehub.db import db from ereuse_devicehub.devicehub import Devicehub +from ereuse_devicehub.resources.action.models import Snapshot from ereuse_devicehub.resources.device.models import Desktop, Device, GraphicCard, Laptop, Server, \ SolidStateDrive from ereuse_devicehub.resources.device.search import DeviceSearch from ereuse_devicehub.resources.device.views import Filters, Sorting from ereuse_devicehub.resources.enums import ComputerChassis -from ereuse_devicehub.resources.event.models import Snapshot from ereuse_devicehub.resources.lot.models import Lot from tests import conftest from tests.conftest import file @@ -179,7 +179,7 @@ def test_device_query(user: UserClient): assert i['url'] == '/devices/' assert i['items'][0]['url'] == '/devices/1' pc = next(d for d in i['items'] if d['type'] == 'Desktop') - assert len(pc['events']) == 4 + assert len(pc['actions']) == 4 assert len(pc['components']) == 3 assert not pc['tags'] diff --git a/tests/test_documents.py b/tests/test_documents.py index 09ce9bd2..e3a8f6fa 100644 --- a/tests/test_documents.py +++ b/tests/test_documents.py @@ -2,8 +2,8 @@ import teal.marshmallow from ereuse_utils.test import ANY from ereuse_devicehub.client import Client, UserClient +from ereuse_devicehub.resources.action import models as e from ereuse_devicehub.resources.documents import documents as docs -from ereuse_devicehub.resources.event import models as e from tests.conftest import file @@ -25,7 +25,7 @@ def test_erasure_certificate_public_one(user: UserClient, client: Client): accept='application/pdf') assert 'application/pdf' == response.content_type - erasure = next(e for e in snapshot['events'] if e['type'] == 'EraseSectors') + erasure = next(e for e in snapshot['actions'] if e['type'] == 'EraseSectors') doc, response = client.get(res=docs.DocumentDef.t, item='erasures/{}'.format(erasure['id']), diff --git a/tests/test_event.py b/tests/test_event.py index a6d7d5a7..b8f3f32b 100644 --- a/tests/test_event.py +++ b/tests/test_event.py @@ -11,11 +11,11 @@ from teal.enums import Currency, Subdivision from ereuse_devicehub.client import UserClient from ereuse_devicehub.db import db from ereuse_devicehub.resources import enums +from ereuse_devicehub.resources.action import models from ereuse_devicehub.resources.device import states from ereuse_devicehub.resources.device.models import Desktop, Device, GraphicCard, HardDrive, \ RamModule, SolidStateDrive from ereuse_devicehub.resources.enums import ComputerChassis, Severity, TestDataStorageLength -from ereuse_devicehub.resources.event import models from tests import conftest from tests.conftest import create_user, file @@ -29,7 +29,7 @@ def test_author(): """ user = create_user() g.user = user - e = models.EventWithOneDevice(device=Device()) + e = models.ActionWithOneDevice(device=Device()) db.session.add(e) assert e.author is None assert e.author_id is None @@ -51,13 +51,13 @@ def test_erase_basic(): db.session.commit() db_erasure = models.EraseBasic.query.one() assert erasure == db_erasure - assert next(iter(db_erasure.device.events)) == erasure + assert next(iter(db_erasure.device.actions)) == erasure assert not erasure.standards, 'EraseBasic themselves do not have standards' @pytest.mark.usefixtures(conftest.auth_app_context.__name__) def test_validate_device_data_storage(): - """Checks the validation for data-storage-only events works.""" + """Checks the validation for data-storage-only actions works.""" # We can't set a GraphicCard with pytest.raises(TypeError, message='EraseBasic.device must be a DataStorage ' @@ -133,7 +133,7 @@ def test_install(): @pytest.mark.usefixtures(conftest.auth_app_context.__name__) -def test_update_components_event_one(): +def test_update_components_action_one(): computer = Desktop(serial_number='sn1', model='ml1', manufacturer='mr1', @@ -141,27 +141,27 @@ def test_update_components_event_one(): hdd = HardDrive(serial_number='foo', manufacturer='bar', model='foo-bar') computer.components.add(hdd) - # Add event + # Add action test = models.StressTest(elapsed=timedelta(minutes=1)) - computer.events_one.add(test) + computer.actions_one.add(test) assert test.device == computer - assert next(iter(test.components)) == hdd, 'Event has to have new components' + assert next(iter(test.components)) == hdd, 'Action has to have new components' - # Remove event - computer.events_one.clear() + # Remove action + computer.actions_one.clear() assert not test.device - assert not test.components, 'Event has to loose the components' + assert not test.components, 'Action has to loose the components' - # If we add a component to a device AFTER assigning the event - # to the device, the event doesn't get the new component - computer.events_one.add(test) + # If we add a component to a device AFTER assigning the action + # to the device, the action doesn't get the new component + computer.actions_one.add(test) ram = RamModule() computer.components.add(ram) assert len(test.components) == 1 @pytest.mark.usefixtures(conftest.auth_app_context.__name__) -def test_update_components_event_multiple(): +def test_update_components_action_multiple(): computer = Desktop(serial_number='sn1', model='ml1', manufacturer='mr1', @@ -174,12 +174,12 @@ def test_update_components_event_multiple(): assert not ready.components # Add - computer.events_multiple.add(ready) + computer.actions_multiple.add(ready) assert ready.devices == OrderedSet([computer]) assert next(iter(ready.components)) == hdd # Remove - computer.events_multiple.remove(ready) + computer.actions_multiple.remove(ready) assert not ready.devices assert not ready.components @@ -209,22 +209,23 @@ def test_update_parent(): assert not benchmark.parent -@pytest.mark.parametrize('event_model_state', [ +@pytest.mark.parametrize('action_model_state', [ (models.ToRepair, states.Physical.ToBeRepaired), (models.Repair, states.Physical.Repaired), (models.ToPrepare, states.Physical.Preparing), (models.ReadyToUse, states.Physical.ReadyToBeUsed), (models.Prepare, states.Physical.Prepared) ]) -def test_generic_event(event_model_state: Tuple[models.Event, states.Trading], user: UserClient): - """Tests POSTing all generic events.""" - event_model, state = event_model_state +def test_generic_action(action_model_state: Tuple[models.Action, states.Trading], + user: UserClient): + """Tests POSTing all generic actions.""" + action_model, state = action_model_state snapshot, _ = user.post(file('basic.snapshot'), res=models.Snapshot) - event = {'type': event_model.t, 'devices': [snapshot['device']['id']]} - event, _ = user.post(event, res=models.Event) - assert event['devices'][0]['id'] == snapshot['device']['id'] + action = {'type': action_model.t, 'devices': [snapshot['device']['id']]} + action, _ = user.post(action, res=models.Action) + assert action['devices'][0]['id'] == snapshot['device']['id'] device, _ = user.get(res=Device, item=snapshot['device']['id']) - assert device['events'][-1]['id'] == event['id'] + assert device['actions'][-1]['id'] == action['id'] assert device['physical'] == state.name @@ -245,7 +246,7 @@ def test_live(): db.session.commit() client = UserClient(app, 'foo@foo.com', 'foo', response_wrapper=app.response_class) client.login() - live, _ = client.get(res=models.Event, item=str(db_live.id)) + live, _ = client.get(res=models.Action, item=str(db_live.id)) assert live['ip'] == '79.147.10.10' assert live['subdivision'] == 'ES-CA' assert live['country'] == 'ES' @@ -265,27 +266,27 @@ def test_reserve_and_cancel(user: UserClient): """ -@pytest.mark.parametrize('event_model_state', [ +@pytest.mark.parametrize('action_model_state', [ (models.Sell, states.Trading.Sold), (models.Donate, states.Trading.Donated), (models.Rent, states.Trading.Renting), (models.DisposeProduct, states.Trading.ProductDisposed) ]) -def test_trade(event_model_state: Tuple[models.Event, states.Trading], user: UserClient): - """Tests POSTing all Trade events.""" - event_model, state = event_model_state +def test_trade(action_model_state: Tuple[models.Action, states.Trading], user: UserClient): + """Tests POSTing all Trade actions.""" + action_model, state = action_model_state snapshot, _ = user.post(file('basic.snapshot'), res=models.Snapshot) - event = { - 'type': event_model.t, + action = { + 'type': action_model.t, 'devices': [snapshot['device']['id']], 'to': user.user['individuals'][0]['id'], 'shippingDate': '2018-06-29T12:28:54', 'invoiceNumber': 'ABC' } - event, _ = user.post(event, res=models.Event) - assert event['devices'][0]['id'] == snapshot['device']['id'] + action, _ = user.post(action, res=models.Action) + assert action['devices'][0]['id'] == snapshot['device']['id'] device, _ = user.get(res=Device, item=snapshot['device']['id']) - assert device['events'][-1]['id'] == event['id'] + assert device['actions'][-1]['id'] == action['id'] assert device['trading'] == state.name @@ -306,7 +307,7 @@ def test_price_custom(): client = UserClient(app, 'foo@foo.com', 'foo', response_wrapper=app.response_class) client.login() - p, _ = client.get(res=models.Event, item=str(price.id)) + p, _ = client.get(res=models.Action, item=str(price.id)) assert p['device']['id'] == price.device.id == computer.id assert p['price'] == 25.25 assert p['currency'] == Currency.EUR.name == 'EUR' @@ -324,7 +325,7 @@ def test_price_custom_client(user: UserClient): 'price': 25, 'currency': Currency.EUR.name, 'device': snapshot['device']['id'] - }, res=models.Event) + }, res=models.Action) assert 25 == price['price'] assert Currency.EUR.name == price['currency'] diff --git a/tests/test_rate.py b/tests/test_rate.py index 640eb20c..be6a1084 100644 --- a/tests/test_rate.py +++ b/tests/test_rate.py @@ -5,13 +5,13 @@ import pytest from ereuse_devicehub.client import UserClient from ereuse_devicehub.db import db +from ereuse_devicehub.resources.action.models import Action, BenchmarkDataStorage, \ + BenchmarkProcessor, RateComputer, Snapshot, VisualTest +from ereuse_devicehub.resources.action.rate.workbench.v1_0 import CannotRate from ereuse_devicehub.resources.device.models import Computer, Desktop, Device, HardDrive, \ Processor, RamModule from ereuse_devicehub.resources.enums import AppearanceRange, ComputerChassis, \ FunctionalityRange -from ereuse_devicehub.resources.event.models import BenchmarkDataStorage, BenchmarkProcessor, \ - Event, RateComputer, Snapshot, VisualTest -from ereuse_devicehub.resources.event.rate.workbench.v1_0 import CannotRate from tests import conftest from tests.conftest import file @@ -46,7 +46,7 @@ def test_manual_rate_after_workbench_rate(user: UserClient): 'device': device['id'], 'appearanceRange': 'A', 'functionalityRange': 'A' - }, res=Event) + }, res=Action) device, _ = user.get(res=Device, item=snapshot['device']['id']) assert 'A' == device['rate']['appearanceRange'] @@ -57,9 +57,9 @@ def test_price_from_rate(): pc = Desktop(chassis=ComputerChassis.Tower) hdd = HardDrive(size=476940) - hdd.events_one.add(BenchmarkDataStorage(read_speed=126, write_speed=29.8)) + hdd.actions_one.add(BenchmarkDataStorage(read_speed=126, write_speed=29.8)) cpu = Processor(cores=2, speed=3.4) - cpu.events_one.add(BenchmarkProcessor(rate=27136.44)) + cpu.actions_one.add(BenchmarkProcessor(rate=27136.44)) pc.components |= { hdd, RamModule(size=4096, speed=1600), @@ -73,8 +73,8 @@ def test_price_from_rate(): device=pc) rate, price = RateComputer.compute(pc) - # events = pc.events - # price = next(e for e in events if isinstance(e, EreusePrice)) + # actions = pc.actions + # price = next(e for e in actions if isinstance(e, EreusePrice)) assert price.price == Decimal('92.2001') assert price.retailer.standard.amount == Decimal('40.9714') assert price.platform.standard.amount == Decimal('18.8434') @@ -111,8 +111,8 @@ def test_no_rate_if_no_visual_test(user: UserClient): """ # Upload a basic snapshot s = file('basic.snapshot') - # Delete snapshot device events - del s['device']['events'] + # Delete snapshot device actions + del s['device']['actions'] snapshot, _ = user.post(s, res=Snapshot) device, _ = user.get(res=Device, item=snapshot['device']['id']) # How to assert CannotRate Exception @@ -135,6 +135,6 @@ def test_multiple_rates(user: UserClient): ensuring that the tests / benchmarks... from the first rate do not contaminate the second rate. - This ensures that rates only takes the last version of events + This ensures that rates only takes the last version of actions and components (in case device has new components, for example). """ diff --git a/tests/test_rate_workbench_v1.py b/tests/test_rate_workbench_v1.py index 07501f47..18beb7fe 100644 --- a/tests/test_rate_workbench_v1.py +++ b/tests/test_rate_workbench_v1.py @@ -15,12 +15,12 @@ import math import pytest +from ereuse_devicehub.resources.action.models import BenchmarkDataStorage, BenchmarkProcessor, \ + VisualTest +from ereuse_devicehub.resources.action.rate.workbench.v1_0 import DataStorageRate, ProcessorRate, \ + RamRate, RateAlgorithm from ereuse_devicehub.resources.device.models import Desktop, HardDrive, Processor, RamModule from ereuse_devicehub.resources.enums import AppearanceRange, ComputerChassis, FunctionalityRange -from ereuse_devicehub.resources.event.models import BenchmarkDataStorage, BenchmarkProcessor, \ - VisualTest -from ereuse_devicehub.resources.event.rate.workbench.v1_0 import DataStorageRate, ProcessorRate, \ - RamRate, RateAlgorithm def test_rate_data_storage_rate(): @@ -30,14 +30,14 @@ def test_rate_data_storage_rate(): """ hdd_1969 = HardDrive(size=476940) - hdd_1969.events_one.add(BenchmarkDataStorage(read_speed=126, write_speed=29.8)) + hdd_1969.actions_one.add(BenchmarkDataStorage(read_speed=126, write_speed=29.8)) data_storage_rate = DataStorageRate().compute([hdd_1969]) assert math.isclose(data_storage_rate, 4.02, rel_tol=0.001) hdd_3054 = HardDrive(size=476940) - hdd_3054.events_one.add(BenchmarkDataStorage(read_speed=158, write_speed=34.7)) + hdd_3054.actions_one.add(BenchmarkDataStorage(read_speed=158, write_speed=34.7)) # calculate DataStorage Rate data_storage_rate = DataStorageRate().compute([hdd_3054]) @@ -45,14 +45,14 @@ def test_rate_data_storage_rate(): assert math.isclose(data_storage_rate, 4.07, rel_tol=0.001) hdd_81 = HardDrive(size=76319) - hdd_81.events_one.add(BenchmarkDataStorage(read_speed=72.2, write_speed=24.3)) + hdd_81.actions_one.add(BenchmarkDataStorage(read_speed=72.2, write_speed=24.3)) data_storage_rate = DataStorageRate().compute([hdd_81]) assert math.isclose(data_storage_rate, 2.61, rel_tol=0.001) hdd_1556 = HardDrive(size=152587) - hdd_1556.events_one.add(BenchmarkDataStorage(read_speed=78.1, write_speed=24.4)) + hdd_1556.actions_one.add(BenchmarkDataStorage(read_speed=78.1, write_speed=24.4)) data_storage_rate = DataStorageRate().compute([hdd_1556]) @@ -67,7 +67,7 @@ def test_rate_data_storage_size_is_null(): """ hdd_null = HardDrive(size=None) - hdd_null.events_one.add(BenchmarkDataStorage(read_speed=0, write_speed=0)) + hdd_null.actions_one.add(BenchmarkDataStorage(read_speed=0, write_speed=0)) data_storage_rate = DataStorageRate().compute([hdd_null]) assert data_storage_rate is None @@ -78,7 +78,7 @@ def test_rate_no_data_storage(): Test without data storage devices """ hdd_null = HardDrive() - hdd_null.events_one.add(BenchmarkDataStorage(read_speed=0, write_speed=0)) + hdd_null.actions_one.add(BenchmarkDataStorage(read_speed=0, write_speed=0)) data_storage_rate = DataStorageRate().compute([hdd_null]) assert data_storage_rate is None @@ -179,7 +179,7 @@ def test_rate_processor_rate(): cpu = Processor(cores=1, speed=1.6) # add score processor benchmark - cpu.events_one.add(BenchmarkProcessor(rate=3192.34)) + cpu.actions_one.add(BenchmarkProcessor(rate=3192.34)) processor_rate = ProcessorRate().compute(cpu) @@ -194,14 +194,14 @@ def test_rate_processor_rate_2cores(): cpu = Processor(cores=2, speed=3.4) # add score processor benchmark - cpu.events_one.add(BenchmarkProcessor(rate=27136.44)) + cpu.actions_one.add(BenchmarkProcessor(rate=27136.44)) processor_rate = ProcessorRate().compute(cpu) assert math.isclose(processor_rate, 3.95, rel_tol=0.001) cpu = Processor(cores=2, speed=3.3) - cpu.events_one.add(BenchmarkProcessor(rate=26339.48)) + cpu.actions_one.add(BenchmarkProcessor(rate=26339.48)) processor_rate = ProcessorRate().compute(cpu) @@ -213,7 +213,7 @@ def test_rate_processor_with_null_cores(): Test with processor device have null number of cores """ cpu = Processor(cores=None, speed=3.3) - cpu.events_one.add(BenchmarkProcessor()) + cpu.actions_one.add(BenchmarkProcessor()) processor_rate = ProcessorRate().compute(cpu) @@ -225,7 +225,7 @@ def test_rate_processor_with_null_speed(): Test with processor device have null speed value """ cpu = Processor(cores=1, speed=None) - cpu.events_one.add(BenchmarkProcessor(rate=0)) + cpu.actions_one.add(BenchmarkProcessor(rate=0)) processor_rate = ProcessorRate().compute(cpu) @@ -239,11 +239,11 @@ def test_rate_computer_rate(): price = 92.2 # add components characteristics of pc with id = 1193 hdd_1969 = HardDrive(size=476940) - hdd_1969.events_one.add(BenchmarkDataStorage(read_speed=126, write_speed=29.8)) + hdd_1969.actions_one.add(BenchmarkDataStorage(read_speed=126, write_speed=29.8)) ram1 = RamModule(size=4096, speed=1600) ram2 = RamModule(size=2048, speed=1067) cpu = Processor(cores=2, speed=3.4) - cpu.events_one.add(BenchmarkProcessor(rate=27136.44)) + cpu.actions_one.add(BenchmarkProcessor(rate=27136.44)) pc_1193.components.add(hdd_1969, ram1, ram2, cpu) # add functionality and appearance range rate_pc_1193 = WorkbenchRate(appearance_range=AppearanceRange.A, functionality_range=FunctionalityRange.A) @@ -256,10 +256,10 @@ def test_rate_computer_rate(): pc_1201 = Computer() price = 69.6 hdd_3054 = HardDrive(size=476940) - hdd_3054.events_one.add(BenchmarkDataStorage(read_speed=158, write_speed=34.7)) + hdd_3054.actions_one.add(BenchmarkDataStorage(read_speed=158, write_speed=34.7)) ram1 = RamModule(size=2048, speed=1333) cpu = Processor(cores=2, speed=3.3) - cpu.events_one.add(BenchmarkProcessor(rate=26339.48)) + cpu.actions_one.add(BenchmarkProcessor(rate=26339.48)) pc_1201.components.add(hdd_3054, ram1, cpu) # add functionality and appearance range rate_pc_1201 = WorkbenchRate(appearance_range=AppearanceRange.B, functionality_range=FunctionalityRange.A) @@ -272,13 +272,13 @@ def test_rate_computer_rate(): pc_79 = Computer() price = VeryLow hdd_81 = HardDrive(size=76319) - hdd_81.events_one.add(BenchmarkDataStorage(read_speed=72.2, write_speed=24.3)) + hdd_81.actions_one.add(BenchmarkDataStorage(read_speed=72.2, write_speed=24.3)) ram1 = RamModule(size=512, speed=667) ram2 = RamModule(size=512, speed=800) ram3 = RamModule(size=512, speed=667) ram4 = RamModule(size=512, speed=533) cpu = Processor(cores=1, speed=1.6) - cpu.events_one.add(BenchmarkProcessor(rate=3192.34)) + cpu.actions_one.add(BenchmarkProcessor(rate=3192.34)) pc_79.components.add(hdd_81, ram1, ram2, ram3, ram4, cpu) # add functionality and appearance range rate_pc_79 = WorkbenchRate(appearance_range=AppearanceRange.C, functionality_range=FunctionalityRange.A) @@ -291,10 +291,10 @@ def test_rate_computer_rate(): pc_798 = Computer() price = 50 hdd_1556 = HardDrive(size=152587) - hdd_1556.events_one.add(BenchmarkDataStorage(read_speed=78.1, write_speed=24.4)) + hdd_1556.actions_one.add(BenchmarkDataStorage(read_speed=78.1, write_speed=24.4)) ram0 = RamModule(size=0, speed=None) cpu = Processor(cores=2, speed=2.5) - cpu.events_one.add(BenchmarkProcessor(rate=9974.3)) + cpu.actions_one.add(BenchmarkProcessor(rate=9974.3)) pc_798.components.add(hdd_1556, ram0, cpu) # add functionality and appearance range rate_pc_798 = WorkbenchRate(appearance_range=AppearanceRange.B, functionality_range=FunctionalityRange.A) @@ -308,9 +308,9 @@ def test_rate_computer_rate(): # Create a new Computer with components characteristics of pc with id = 1193 pc_test = Desktop(chassis=ComputerChassis.Tower) data_storage = HardDrive(size=476940) - data_storage.events_one.add(BenchmarkDataStorage(read_speed=126, write_speed=29.8)) + data_storage.actions_one.add(BenchmarkDataStorage(read_speed=126, write_speed=29.8)) cpu = Processor(cores=2, speed=3.4) - cpu.events_one.add(BenchmarkProcessor(rate=27136.44)) + cpu.actions_one.add(BenchmarkProcessor(rate=27136.44)) pc_test.components |= { data_storage, RamModule(size=4096, speed=1600), @@ -336,9 +336,9 @@ def test_rate_computer_rate(): # Create a new Computer with components characteristics of pc with id = 1201 pc_test = Desktop(chassis=ComputerChassis.Tower) data_storage = HardDrive(size=476940) - data_storage.events_one.add(BenchmarkDataStorage(read_speed=158, write_speed=34.7)) + data_storage.actions_one.add(BenchmarkDataStorage(read_speed=158, write_speed=34.7)) cpu = Processor(cores=2, speed=3.3) - cpu.events_one.add(BenchmarkProcessor(rate=26339.48)) + cpu.actions_one.add(BenchmarkProcessor(rate=26339.48)) pc_test.components |= { data_storage, RamModule(size=2048, speed=1333), @@ -363,9 +363,9 @@ def test_rate_computer_rate(): # Create a new Computer with components characteristics of pc with id = 79 pc_test = Desktop(chassis=ComputerChassis.Tower) data_storage = HardDrive(size=76319) - data_storage.events_one.add(BenchmarkDataStorage(read_speed=72.2, write_speed=24.3)) + data_storage.actions_one.add(BenchmarkDataStorage(read_speed=72.2, write_speed=24.3)) cpu = Processor(cores=1, speed=1.6) - cpu.events_one.add(BenchmarkProcessor(rate=3192.34)) + cpu.actions_one.add(BenchmarkProcessor(rate=3192.34)) pc_test.components |= { data_storage, RamModule(size=512, speed=667), @@ -392,9 +392,9 @@ def test_rate_computer_rate(): # Create a new Computer with components characteristics of pc with id = 798 pc_test = Desktop(chassis=ComputerChassis.Tower) data_storage = HardDrive(size=152587) - data_storage.events_one.add(BenchmarkDataStorage(read_speed=78.1, write_speed=24.4)) + data_storage.actions_one.add(BenchmarkDataStorage(read_speed=78.1, write_speed=24.4)) cpu = Processor(cores=2, speed=2.5) - cpu.events_one.add(BenchmarkProcessor(rate=9974.3)) + cpu.actions_one.add(BenchmarkProcessor(rate=9974.3)) pc_test.components |= { data_storage, RamModule(size=0, speed=None), diff --git a/tests/test_reports.py b/tests/test_reports.py index 87519bc0..61e2499e 100644 --- a/tests/test_reports.py +++ b/tests/test_reports.py @@ -6,8 +6,8 @@ from pathlib import Path import pytest from ereuse_devicehub.client import UserClient +from ereuse_devicehub.resources.action.models import Snapshot from ereuse_devicehub.resources.documents import documents -from ereuse_devicehub.resources.event.models import Snapshot from tests.conftest import file diff --git a/tests/test_snapshot.py b/tests/test_snapshot.py index 96ba7115..1a16c656 100644 --- a/tests/test_snapshot.py +++ b/tests/test_snapshot.py @@ -11,14 +11,14 @@ from teal.marshmallow import ValidationError from ereuse_devicehub.client import UserClient from ereuse_devicehub.db import db from ereuse_devicehub.devicehub import Devicehub +from ereuse_devicehub.resources.action.models import Action, BenchmarkDataStorage, \ + BenchmarkProcessor, EraseSectors, RateComputer, Snapshot, SnapshotRequest, VisualTest from ereuse_devicehub.resources.device import models as m from ereuse_devicehub.resources.device.exceptions import NeedsId from ereuse_devicehub.resources.device.models import SolidStateDrive from ereuse_devicehub.resources.device.sync import MismatchBetweenProperties, \ MismatchBetweenTagsAndHid from ereuse_devicehub.resources.enums import ComputerChassis, SnapshotSoftware -from ereuse_devicehub.resources.event.models import BenchmarkDataStorage, BenchmarkProcessor, \ - EraseSectors, Event, RateComputer, Snapshot, SnapshotRequest, VisualTest from ereuse_devicehub.resources.tag import Tag from ereuse_devicehub.resources.user.models import User from tests.conftest import file @@ -42,7 +42,7 @@ def test_snapshot_model(): db.session.add(snapshot) db.session.commit() device = m.Desktop.query.one() # type: m.Desktop - e1 = device.events[0] + e1 = device.actions[0] assert isinstance(e1, Snapshot), 'Creation order must be preserved: 1. snapshot, 2. WR' db.session.delete(device) db.session.commit() @@ -66,9 +66,9 @@ def test_snapshot_post(user: UserClient): Tests the post snapshot endpoint (validation, etc), data correctness, and relationship correctness. """ - # TODO add all event_types to check, how to add correctly?? + # TODO add all action_types to check, how to add correctly?? snapshot = snapshot_and_check(user, file('basic.snapshot'), - event_types=( + action_types=( BenchmarkProcessor.t, VisualTest.t, RateComputer.t @@ -79,7 +79,7 @@ def test_snapshot_post(user: UserClient): assert snapshot['uuid'] == 'f5efd26e-8754-46bc-87bf-fbccc39d60d9' assert snapshot['elapsed'] == 4 assert snapshot['author']['id'] == user.user['id'] - assert 'events' not in snapshot['device'] + assert 'actions' not in snapshot['device'] assert 'author' not in snapshot['device'] device, _ = user.get(res=m.Device, item=snapshot['device']['id']) key = itemgetter('serialNumber') @@ -89,8 +89,8 @@ def test_snapshot_post(user: UserClient): assert {c['type'] for c in snapshot['components']} == {m.GraphicCard.t, m.RamModule.t, m.Processor.t} - rate = next(e for e in snapshot['events'] if e['type'] == RateComputer.t) - rate, _ = user.get(res=Event, item=rate['id']) + rate = next(e for e in snapshot['actions'] if e['type'] == RateComputer.t) + rate, _ = user.get(res=Action, item=rate['id']) assert rate['device']['id'] == snapshot['device']['id'] rate['components'].sort(key=key) assert rate['components'] == snapshot['components'] @@ -103,13 +103,13 @@ def test_snapshot_component_add_remove(user: UserClient): All computers generate HID. """ - def get_events_info(events: List[dict]) -> tuple: + def get_actions_info(actions: List[dict]) -> tuple: return tuple( ( e['type'], [c['serialNumber'] for c in e['components']] ) - for e in user.get_many(res=Event, resources=events, key='id') + for e in user.get_many(res=Action, resources=actions, key='id') ) # We add the first device (2 times). The distribution of components @@ -118,7 +118,7 @@ def test_snapshot_component_add_remove(user: UserClient): s1 = file('1-device-with-components.snapshot') snapshot1 = snapshot_and_check(user, s1, - event_types=(BenchmarkProcessor.t,), + action_types=(BenchmarkProcessor.t,), perform_second_snapshot=False) pc1_id = snapshot1['device']['id'] pc1, _ = user.get(res=m.Device, item=pc1_id) @@ -126,22 +126,22 @@ def test_snapshot_component_add_remove(user: UserClient): assert tuple(c['serialNumber'] for c in pc1['components']) == ('p1c1s', 'p1c2s', 'p1c3s') # Components contain parent assert all(c['parent'] == pc1_id for c in pc1['components']) - # pc has two events: Snapshot and the BenchmarkProcessor - # TODO change assert to len(pc1['events']) == 2 cause we add BenchmarkProcessor event - assert len(pc1['events']) == 2 - # TODO pc1['events'][0]['type'] == BenchmarkProcessor.t - assert pc1['events'][1]['type'] == Snapshot.t + # pc has two actions: Snapshot and the BenchmarkProcessor + # TODO change assert to len(pc1['actions']) == 2 cause we add BenchmarkProcessor action + assert len(pc1['actions']) == 2 + # TODO pc1['actions'][0]['type'] == BenchmarkProcessor.t + assert pc1['actions'][1]['type'] == Snapshot.t # p1c1s has Snapshot p1c1s, _ = user.get(res=m.Device, item=pc1['components'][0]['id']) - assert tuple(e['type'] for e in p1c1s['events']) == ('Snapshot',) + assert tuple(e['type'] for e in p1c1s['actions']) == ('Snapshot',) # We register a new device # It has the processor of the first one (p1c2s) # PC 1: p1c1s, p1c3s. PC 2: p2c1s, p1c2s - # Events PC1: Snapshot, Remove. PC2: Snapshot + # Actions PC1: Snapshot, Remove. PC2: Snapshot s2 = file('2-second-device-with-components-of-first.snapshot') - # num_events = 2 = Remove, Add - snapshot2 = snapshot_and_check(user, s2, event_types=('Remove',), + # num_actions = 2 = Remove, Add + snapshot2 = snapshot_and_check(user, s2, action_types=('Remove',), perform_second_snapshot=False) pc2_id = snapshot2['device']['id'] pc1, _ = user.get(res=m.Device, item=pc1_id) @@ -149,14 +149,14 @@ def test_snapshot_component_add_remove(user: UserClient): # PC1 assert tuple(c['serialNumber'] for c in pc1['components']) == ('p1c1s', 'p1c3s') assert all(c['parent'] == pc1_id for c in pc1['components']) - assert tuple(e['type'] for e in pc1['events']) == ('BenchmarkProcessor', 'Snapshot', 'Remove') + assert tuple(e['type'] for e in pc1['actions']) == ('BenchmarkProcessor', 'Snapshot', 'Remove') # PC2 assert tuple(c['serialNumber'] for c in pc2['components']) == ('p1c2s', 'p2c1s') assert all(c['parent'] == pc2_id for c in pc2['components']) - assert tuple(e['type'] for e in pc2['events']) == ('Snapshot',) + assert tuple(e['type'] for e in pc2['actions']) == ('Snapshot',) # p1c2s has two Snapshots, a Remove and an Add p1c2s, _ = user.get(res=m.Device, item=pc2['components'][0]['id']) - assert tuple(e['type'] for e in p1c2s['events']) == ( + assert tuple(e['type'] for e in p1c2s['actions']) == ( 'BenchmarkProcessor', 'Snapshot', 'Snapshot', 'Remove' ) @@ -171,7 +171,7 @@ def test_snapshot_component_add_remove(user: UserClient): # PC1 assert {c['serialNumber'] for c in pc1['components']} == {'p1c2s', 'p1c3s'} assert all(c['parent'] == pc1_id for c in pc1['components']) - assert tuple(get_events_info(pc1['events'])) == ( + assert tuple(get_actions_info(pc1['actions'])) == ( # id, type, components, snapshot ('BenchmarkProcessor', []), # first BenchmarkProcessor ('Snapshot', ['p1c1s', 'p1c2s', 'p1c3s']), # first Snapshot1 @@ -181,13 +181,13 @@ def test_snapshot_component_add_remove(user: UserClient): # PC2 assert tuple(c['serialNumber'] for c in pc2['components']) == ('p2c1s',) assert all(c['parent'] == pc2_id for c in pc2['components']) - assert tuple(e['type'] for e in pc2['events']) == ( + assert tuple(e['type'] for e in pc2['actions']) == ( 'Snapshot', # Second Snapshot 'Remove' # the processor we added in 2. ) # p1c2s has Snapshot, Remove and Add p1c2s, _ = user.get(res=m.Device, item=pc1['components'][0]['id']) - assert tuple(get_events_info(p1c2s['events'])) == ( + assert tuple(get_actions_info(p1c2s['actions'])) == ( ('BenchmarkProcessor', []), # first BenchmarkProcessor ('Snapshot', ['p1c1s', 'p1c2s', 'p1c3s']), # First Snapshot to PC1 ('Snapshot', ['p1c2s', 'p2c1s']), # Second Snapshot to PC2 @@ -206,7 +206,7 @@ def test_snapshot_component_add_remove(user: UserClient): assert {c['serialNumber'] for c in pc1['components']} == {'p1c3s', 'p1c4s'} assert all(c['parent'] == pc1_id for c in pc1['components']) # This last Snapshot only - assert get_events_info(pc1['events'])[-1] == ('Snapshot', ['p1c3s', 'p1c4s']) + assert get_actions_info(pc1['actions'])[-1] == ('Snapshot', ['p1c3s', 'p1c4s']) # PC2 # We haven't changed PC2 assert tuple(c['serialNumber'] for c in pc2['components']) == ('p2c1s',) @@ -247,7 +247,7 @@ def test_snapshot_tag_inner_tag(tag_id: str, user: UserClient, app: Devicehub): b['device']['tags'] = [{'type': 'Tag', 'id': tag_id}] snapshot_and_check(user, b, - event_types=(RateComputer.t, BenchmarkProcessor.t, VisualTest.t)) + action_types=(RateComputer.t, BenchmarkProcessor.t, VisualTest.t)) with app.app_context(): tag = Tag.query.one() # type: Tag assert tag.device_id == 1, 'Tag should be linked to the first device' @@ -313,19 +313,19 @@ def test_erase_privacy_standards_endtime_sort(user: UserClient): erasures have always custom endTime value set. """ s = file('erase-sectors.snapshot') - assert s['components'][0]['events'][0]['endTime'] == '2018-06-01T09:12:06+02:00' - snapshot = snapshot_and_check(user, s, event_types=( + assert s['components'][0]['actions'][0]['endTime'] == '2018-06-01T09:12:06+02:00' + snapshot = snapshot_and_check(user, s, action_types=( EraseSectors.t, BenchmarkDataStorage.t, BenchmarkProcessor.t ), perform_second_snapshot=False) # Perform a new snapshot changing the erasure time, as if # it is a new erasure performed after. - erase = next(e for e in snapshot['events'] if e['type'] == EraseSectors.t) + erase = next(e for e in snapshot['actions'] if e['type'] == EraseSectors.t) assert erase['endTime'] == '2018-06-01T07:12:06+00:00' s['uuid'] = uuid4() - s['components'][0]['events'][0]['endTime'] = '2018-06-01T07:14:00+00:00' - snapshot = snapshot_and_check(user, s, event_types=( + s['components'][0]['actions'][0]['endTime'] = '2018-06-01T07:14:00+00:00' + snapshot = snapshot_and_check(user, s, action_types=( EraseSectors.t, BenchmarkDataStorage.t, BenchmarkProcessor.t @@ -333,17 +333,17 @@ def test_erase_privacy_standards_endtime_sort(user: UserClient): # The actual test storage = next(e for e in snapshot['components'] if e['type'] == SolidStateDrive.t) - storage, _ = user.get(res=m.Device, item=storage['id']) # Let's get storage events too + storage, _ = user.get(res=m.Device, item=storage['id']) # Let's get storage actions too # order: endTime ascending - # erasure1/2 have an user defined time and others events endTime = created - erasure1, erasure2, benchmark_hdd1, _snapshot1, benchmark_hdd2, _snapshot2 = storage['events'] + # erasure1/2 have an user defined time and others actions endTime = created + erasure1, erasure2, benchmark_hdd1, _snapshot1, benchmark_hdd2, _snapshot2 = storage['actions'] assert erasure1['type'] == erasure2['type'] == 'EraseSectors' assert benchmark_hdd1['type'] == benchmark_hdd2['type'] == 'BenchmarkDataStorage' assert _snapshot1['type'] == _snapshot2['type'] == 'Snapshot' - get_snapshot, _ = user.get(res=Event, item=_snapshot2['id']) - assert get_snapshot['events'][0]['endTime'] == '2018-06-01T07:14:00+00:00' + get_snapshot, _ = user.get(res=Action, item=_snapshot2['id']) + assert get_snapshot['actions'][0]['endTime'] == '2018-06-01T07:14:00+00:00' assert snapshot == get_snapshot - erasure, _ = user.get(res=Event, item=erasure1['id']) + erasure, _ = user.get(res=Action, item=erasure1['id']) assert len(erasure['steps']) == 2 assert erasure['steps'][0]['startTime'] == '2018-06-01T06:15:00+00:00' assert erasure['steps'][0]['endTime'] == '2018-06-01T07:16:00+00:00' @@ -364,7 +364,7 @@ def test_erase_privacy_standards_endtime_sort(user: UserClient): # Let's try a second erasure with an error s['uuid'] = uuid4() - s['components'][0]['events'][0]['severity'] = 'Error' + s['components'][0]['actions'][0]['severity'] = 'Error' snapshot, _ = user.post(s, res=Snapshot) storage, _ = user.get(res=m.Device, item=storage['id']) assert storage['hid'] == 'solidstatedrive-c1mr-c1ml-c1s' @@ -378,7 +378,7 @@ def test_test_data_storage(user: UserClient): s = file('erase-sectors-2-hdd.snapshot') snapshot, _ = user.post(res=Snapshot, data=s) incidence_test = next( - ev for ev in snapshot['events'] + ev for ev in snapshot['actions'] if ev.get('reallocatedSectorCount', None) == 15 ) assert incidence_test['severity'] == 'Error' @@ -388,14 +388,14 @@ def test_test_data_storage(user: UserClient): @pytest.mark.xfail(reason='Not implemented yet, new rate is need it') def test_snapshot_computer_monitor(user: UserClient): s = file('computer-monitor.snapshot') - snapshot_and_check(user, s, event_types=('ManualRate',)) + snapshot_and_check(user, s, action_types=('ManualRate',)) # todo check that ManualRate has generated an AggregateRate @pytest.mark.xfail(reason='Not implemented yet, new rate is need it') def test_snapshot_mobile_smartphone_imei_manual_rate(user: UserClient): s = file('smartphone.snapshot') - snapshot = snapshot_and_check(user, s, event_types=('VisualTest',)) + snapshot = snapshot_and_check(user, s, action_types=('VisualTest',)) mobile, _ = user.get(res=m.Device, item=snapshot['device']['id']) assert mobile['imei'] == 3568680000414120 # todo check that manual rate has been created @@ -443,32 +443,32 @@ def assert_similar_components(components1: List[dict], components2: List[dict]): def snapshot_and_check(user: UserClient, input_snapshot: dict, - event_types: Tuple[str, ...] = tuple(), + action_types: Tuple[str, ...] = tuple(), perform_second_snapshot=True) -> dict: """ Performs a Snapshot and then checks if the result is ok: - - There have been performed the types of events and in the same - order as described in the passed-in ``event_types``. + - There have been performed the types of actions and in the same + order as described in the passed-in ``action_types``. - The inputted devices are similar to the resulted ones. - - There is no Remove event after the first Add. + - There is no Remove action after the first Add. - All input components are now inside the parent device. Optionally, it can perform a second Snapshot which should - perform an exact result, except for the events. + perform an exact result, except for the actions. :return: The last resulting snapshot. """ snapshot, _ = user.post(res=Snapshot, data=input_snapshot) - assert all(e['type'] in event_types for e in snapshot['events']) - assert len(snapshot['events']) == len(event_types) - # Ensure there is no Remove event after the first Add + assert all(e['type'] in action_types for e in snapshot['actions']) + assert len(snapshot['actions']) == len(action_types) + # Ensure there is no Remove action after the first Add found_add = False - for event in snapshot['events']: - if event['type'] == 'Add': + for action in snapshot['actions']: + if action['type'] == 'Add': found_add = True if found_add: - assert event['type'] != 'Receive', 'All Remove events must be before the Add ones' + assert action['type'] != 'Receive', 'All Remove actions must be before the Add ones' assert input_snapshot['device'] assert_similar_device(input_snapshot['device'], snapshot['device']) if input_snapshot.get('components', None): @@ -478,7 +478,8 @@ def snapshot_and_check(user: UserClient, if perform_second_snapshot: if 'uuid' in input_snapshot: input_snapshot['uuid'] = uuid4() - return snapshot_and_check(user, input_snapshot, event_types, perform_second_snapshot=False) + return snapshot_and_check(user, input_snapshot, action_types, + perform_second_snapshot=False) else: return snapshot @@ -487,7 +488,7 @@ def snapshot_and_check(user: UserClient, @pytest.mark.xfail(reason='Not implemented yet, new rate is need it') def test_snapshot_keyboard(user: UserClient): s = file('keyboard.snapshot') - snapshot = snapshot_and_check(user, s, event_types=('ManualRate',)) + snapshot = snapshot_and_check(user, s, action_types=('ManualRate',)) keyboard = snapshot['device'] assert keyboard['layout'] == 'ES' diff --git a/tests/test_tag.py b/tests/test_tag.py index cb115ac9..93f1bace 100644 --- a/tests/test_tag.py +++ b/tests/test_tag.py @@ -11,10 +11,10 @@ from teal.marshmallow import ValidationError from ereuse_devicehub.client import UserClient from ereuse_devicehub.db import db from ereuse_devicehub.devicehub import Devicehub +from ereuse_devicehub.resources.action.models import Snapshot from ereuse_devicehub.resources.agent.models import Organization from ereuse_devicehub.resources.device.models import Desktop, Device from ereuse_devicehub.resources.enums import ComputerChassis -from ereuse_devicehub.resources.event.models import Snapshot from ereuse_devicehub.resources.tag import Tag from ereuse_devicehub.resources.tag.view import CannotCreateETag, LinkedToAnotherDevice, \ TagNotLinked diff --git a/tests/test_workbench.py b/tests/test_workbench.py index 95fac4b6..9493fdda 100644 --- a/tests/test_workbench.py +++ b/tests/test_workbench.py @@ -8,34 +8,33 @@ import pathlib import pytest from ereuse_devicehub.client import UserClient +from ereuse_devicehub.resources.action import models as em from ereuse_devicehub.resources.device.exceptions import NeedsId from ereuse_devicehub.resources.device.models import Device -from ereuse_devicehub.resources.event import models as em from ereuse_devicehub.resources.tag.model import Tag from tests.conftest import file def test_workbench_server_condensed(user: UserClient): """ - As :def:`.test_workbench_server_phases` but all the events + As :def:`.test_workbench_server_phases` but all the actions condensed in only one big ``Snapshot`` file, as described in the docs. """ s = file('workbench-server-1.snapshot') - del s['expectedEvents'] - s['device']['events'].append(file('workbench-server-2.stress-test')) - s['components'][4]['events'].extend(( + s['device']['actions'].append(file('workbench-server-2.stress-test')) + s['components'][4]['actions'].extend(( file('workbench-server-3.erase'), file('workbench-server-4.install') )) - s['components'][5]['events'].append(file('workbench-server-3.erase')) + s['components'][5]['actions'].append(file('workbench-server-3.erase')) # Create tags for t in s['device']['tags']: user.post({'id': t['id']}, res=Tag) snapshot, _ = user.post(res=em.Snapshot, data=s) - events = snapshot['events'] - assert {(event['type'], event['device']) for event in events} == { + actions = snapshot['actions'] + assert {(action['type'], action['device']) for action in actions} == { ('BenchmarkProcessorSysbench', 5), ('StressTest', 1), ('EraseSectors', 6), @@ -63,9 +62,9 @@ def test_workbench_server_condensed(user: UserClient): assert device['rate']['severity'] == 'Info' assert device['rate']['rating'] == 0 assert device['rate']['type'] == 'RateComputer' - assert device['events'][2]['type'] == 'VisualTest' - assert device['events'][2]['appearanceRange'] == 'A' - assert device['events'][2]['functionalityRange'] == 'B' + assert device['actions'][2]['type'] == 'VisualTest' + assert device['actions'][2]['appearanceRange'] == 'A' + assert device['actions'][2]['functionalityRange'] == 'B' assert device['tags'][0]['id'] == 'tag1' @@ -74,12 +73,12 @@ def test_workbench_server_phases(user: UserClient): """ Tests the phases described in the docs section `Snapshots from Workbench `_. + actions.html#snapshots-from-workbench>`_. """ # 1. Snapshot with sync / rate / benchmarks / test data storage s = file('workbench-server-1.snapshot') snapshot, _ = user.post(res=em.Snapshot, data=s) - assert not snapshot['closed'], 'Snapshot must be waiting for the new events' + assert not snapshot['closed'], 'Snapshot must be waiting for the new actions' # 2. stress test st = file('workbench-server-2.stress-test') @@ -102,39 +101,39 @@ def test_workbench_server_phases(user: UserClient): i['snapshot'], i['device'] = snapshot['id'], ssd_id install, _ = user.post(res=em.Install, data=i) - # Check events have been appended in Snapshot and devices + # Check actions have been appended in Snapshot and devices # and that Snapshot is closed snapshot, _ = user.get(res=em.Snapshot, item=snapshot['id']) - events = snapshot['events'] - assert len(events) == 9 - assert events[0]['type'] == 'Rate' - assert events[0]['device'] == 1 - assert events[0]['closed'] - assert events[0]['type'] == 'RateComputer' - assert events[0]['device'] == 1 - assert events[1]['type'] == 'BenchmarkProcessor' - assert events[1]['device'] == 5 - assert events[2]['type'] == 'BenchmarkProcessorSysbench' - assert events[2]['device'] == 5 - assert events[3]['type'] == 'BenchmarkDataStorage' - assert events[3]['device'] == 6 - assert events[4]['type'] == 'TestDataStorage' - assert events[4]['device'] == 6 - assert events[4]['type'] == 'BenchmarkDataStorage' - assert events[4]['device'] == 7 - assert events[5]['type'] == 'StressTest' - assert events[5]['device'] == 1 - assert events[6]['type'] == 'EraseSectors' - assert events[6]['device'] == 6 - assert events[7]['type'] == 'EraseSectors' - assert events[7]['device'] == 7 - assert events[8]['type'] == 'Install' - assert events[8]['device'] == 6 + actions = snapshot['actions'] + assert len(actions) == 9 + assert actions[0]['type'] == 'Rate' + assert actions[0]['device'] == 1 + assert actions[0]['closed'] + assert actions[0]['type'] == 'RateComputer' + assert actions[0]['device'] == 1 + assert actions[1]['type'] == 'BenchmarkProcessor' + assert actions[1]['device'] == 5 + assert actions[2]['type'] == 'BenchmarkProcessorSysbench' + assert actions[2]['device'] == 5 + assert actions[3]['type'] == 'BenchmarkDataStorage' + assert actions[3]['device'] == 6 + assert actions[4]['type'] == 'TestDataStorage' + assert actions[4]['device'] == 6 + assert actions[4]['type'] == 'BenchmarkDataStorage' + assert actions[4]['device'] == 7 + assert actions[5]['type'] == 'StressTest' + assert actions[5]['device'] == 1 + assert actions[6]['type'] == 'EraseSectors' + assert actions[6]['device'] == 6 + assert actions[7]['type'] == 'EraseSectors' + assert actions[7]['device'] == 7 + assert actions[8]['type'] == 'Install' + assert actions[8]['device'] == 6 assert snapshot['closed'] assert snapshot['severity'] == 'Info' pc, _ = user.get(res=Device, item=snapshot['id']) - assert len(pc['events']) == 10 # todo shall I add child events? + assert len(pc['actions']) == 10 # todo shall I add child actions? def test_real_hp_11(user: UserClient): @@ -143,7 +142,7 @@ def test_real_hp_11(user: UserClient): pc = snapshot['device'] assert pc['hid'] == 'desktop-hewlett-packard-hp_compaq_8100_elite_sff-czc0408yjg' assert pc['chassis'] == 'Tower' - assert set(e['type'] for e in snapshot['events']) == { + assert set(e['type'] for e in snapshot['actions']) == { 'EreusePrice', 'RateComputer', 'BenchmarkDataStorage', @@ -155,7 +154,7 @@ def test_real_hp_11(user: UserClient): 'TestBios', 'VisualTest' } - assert len(list(e['type'] for e in snapshot['events'])) == 10 + assert len(list(e['type'] for e in snapshot['actions'])) == 10 assert pc['networkSpeeds'] == [1000, None], 'Device has no WiFi' assert pc['processorModel'] == 'intel core i3 cpu 530 @ 2.93ghz' assert pc['ramSize'] == 8192 @@ -171,7 +170,7 @@ def test_real_toshiba_11(user: UserClient): def test_snapshot_real_eee_1001pxd_with_rate(user: UserClient): """ Checks the values of the device, components, - events and their relationships of a real pc. + actions and their relationships of a real pc. """ s = file('real-eee-1001pxd.snapshot.11') snapshot, _ = user.post(res=em.Snapshot, data=s) @@ -186,8 +185,8 @@ def test_snapshot_real_eee_1001pxd_with_rate(user: UserClient): assert pc['networkSpeeds'] == [100, 0], 'Although it has WiFi we do not know the speed' assert pc['rate'] rate = pc['rate'] - # assert pc['events'][0]['appearanceRange'] == 'A' - # assert pc['events'][0]['functionalityRange'] == 'B' + # assert pc['actions'][0]['appearanceRange'] == 'A' + # assert pc['actions'][0]['functionalityRange'] == 'B' # TODO add appearance and functionality Range in device[rate] assert rate['processorRange'] == 'VERY_LOW' @@ -197,7 +196,7 @@ def test_snapshot_real_eee_1001pxd_with_rate(user: UserClient): # TODO add camelCase instead of snake_case assert rate['dataStorage'] == 3.76 assert rate['type'] == 'RateComputer' - # TODO change pc[events] TestBios instead of rate[biosRange] + # TODO change pc[actions] TestBios instead of rate[biosRange] # assert rate['biosRange'] == 'C' assert rate['appearance'] == 0, 'appearance B equals 0 points' # todo fix gets correctly functionality rates values not equals to 0. @@ -223,32 +222,32 @@ def test_snapshot_real_eee_1001pxd_with_rate(user: UserClient): assert 'hid' not in cpu assert pc['processorModel'] == cpu['model'] == 'intel atom cpu n455 @ 1.66ghz' cpu, _ = user.get(res=Device, item=cpu['id']) - events = cpu['events'] - sysbench = next(e for e in events if e['type'] == em.BenchmarkProcessorSysbench.t) + actions = cpu['actions'] + sysbench = next(e for e in actions if e['type'] == em.BenchmarkProcessorSysbench.t) assert sysbench['elapsed'] == 164 assert math.isclose(sysbench['rate'], 164, rel_tol=0.001) assert sysbench['snapshot'] == snapshot['id'] assert sysbench['device'] == cpu['id'] assert sysbench['parent'] == pc['id'] - benchmark_cpu = next(e for e in events if e['type'] == em.BenchmarkProcessor.t) + benchmark_cpu = next(e for e in actions if e['type'] == em.BenchmarkProcessor.t) assert math.isclose(benchmark_cpu['rate'], 6666, rel_tol=0.001) assert benchmark_cpu['elapsed'] == 0 - event_types = tuple(e['type'] for e in events) - assert em.BenchmarkRamSysbench.t in event_types - assert em.StressTest.t in event_types - assert em.Snapshot.t in event_types - assert len(events) == 7 + action_types = tuple(e['type'] for e in actions) + assert em.BenchmarkRamSysbench.t in action_types + assert em.StressTest.t in action_types + assert em.Snapshot.t in action_types + assert len(actions) == 7 gpu = components[3] assert gpu['model'] == 'atom processor d4xx/d5xx/n4xx/n5xx integrated graphics controller' assert gpu['manufacturer'] == 'intel corporation' assert gpu['memory'] == 256 gpu, _ = user.get(res=Device, item=gpu['id']) - event_types = tuple(e['type'] for e in gpu['events']) - assert em.BenchmarkRamSysbench.t in event_types - assert em.StressTest.t in event_types - assert em.Snapshot.t in event_types - # todo why?? change event types 3 to 5 - assert len(event_types) == 5 + action_types = tuple(e['type'] for e in gpu['actions']) + assert em.BenchmarkRamSysbench.t in action_types + assert em.StressTest.t in action_types + assert em.Snapshot.t in action_types + # todo why?? change action types 3 to 5 + assert len(action_types) == 5 sound = components[4] assert sound['model'] == 'nm10/ich7 family high definition audio controller' sound = components[5] @@ -263,16 +262,16 @@ def test_snapshot_real_eee_1001pxd_with_rate(user: UserClient): assert hdd['interface'] == 'ATA' assert hdd['size'] == 238475 hdd, _ = user.get(res=Device, item=hdd['id']) - event_types = tuple(e['type'] for e in hdd['events']) - assert em.BenchmarkRamSysbench.t in event_types - assert em.StressTest.t in event_types - assert em.BenchmarkDataStorage.t in event_types - assert em.TestDataStorage.t in event_types - assert em.EraseBasic.t in event_types - assert em.Snapshot.t in event_types - # todo why?? change event types 6 to 8 - assert len(event_types) == 8 - erase = next(e for e in hdd['events'] if e['type'] == em.EraseBasic.t) + action_types = tuple(e['type'] for e in hdd['actions']) + assert em.BenchmarkRamSysbench.t in action_types + assert em.StressTest.t in action_types + assert em.BenchmarkDataStorage.t in action_types + assert em.TestDataStorage.t in action_types + assert em.EraseBasic.t in action_types + assert em.Snapshot.t in action_types + # todo why?? change action types 6 to 8 + assert len(action_types) == 8 + erase = next(e for e in hdd['actions'] if e['type'] == em.EraseBasic.t) assert erase['endTime'] assert erase['startTime'] assert erase['severity'] == 'Info' diff --git a/tests/workbench_files/acer-aspire-5737z.lshw.snapshot.json b/tests/workbench_files/acer-aspire-5737z.lshw.snapshot.json index 7ffad3b2..46f6667c 100644 --- a/tests/workbench_files/acer-aspire-5737z.lshw.snapshot.json +++ b/tests/workbench_files/acer-aspire-5737z.lshw.snapshot.json @@ -3,14 +3,13 @@ "uuid": "00000000-0000-0000-0000-000000000000", "software": "Workbench", "version": "11.0a1", - "expectedEvents": [], "closed": false, "endTime": "2000-01-01 00:00:00+00:00", "device": { "manufacturer": "Acer", "model": "Aspire 5737Z", "serialNumber": "LXAZ70X0669112B8DB1601", - "events": [], + "actions": [], "type": "Laptop", "chassis": "Netbook" }, @@ -19,7 +18,7 @@ "manufacturer": "Intel Corp.", "model": "Intel Core2 Duo CPU T6400 @ 2.00GHz", "serialNumber": null, - "events": [], + "actions": [], "type": "Processor", "speed": 2.0, "address": 64, @@ -30,7 +29,7 @@ "manufacturer": "Western Digital", "model": "WDC WD5000BEVT-2", "serialNumber": "WD-WXN209S36759", - "events": [], + "actions": [], "type": "HardDrive", "size": 476940, "interface": null @@ -39,7 +38,7 @@ "manufacturer": "NVIDIA Corporation", "model": "C79 GeForce 9400M G", "serialNumber": null, - "events": [], + "actions": [], "type": "GraphicCard", "memory": null }, @@ -47,7 +46,7 @@ "manufacturer": "Broadcom Inc. and subsidiaries", "model": "NetXtreme BCM5764M Gigabit Ethernet PCIe", "serialNumber": "00:23:5a:5f:6b:8d", - "events": [], + "actions": [], "type": "NetworkAdapter", "speed": 1000, "wireless": false @@ -56,7 +55,7 @@ "manufacturer": "Qualcomm Atheros", "model": "AR928X Wireless Network Adapter", "serialNumber": "00:24:2b:d3:dd:19", - "events": [], + "actions": [], "type": "NetworkAdapter", "wireless": true }, @@ -64,21 +63,21 @@ "manufacturer": "Chicony Electronics Co., Ltd.", "model": "CNF7017", "serialNumber": "SN0001", - "events": [], + "actions": [], "type": "SoundCard" }, { "manufacturer": "NVIDIA Corporation", "model": "MCP79 High Definition Audio", "serialNumber": null, - "events": [], + "actions": [], "type": "SoundCard" }, { "manufacturer": null, "model": null, "serialNumber": null, - "events": [], + "actions": [], "type": "Motherboard", "usb": 4, "firewire": 0, diff --git a/tests/workbench_files/all-series.lshw.snapshot.json b/tests/workbench_files/all-series.lshw.snapshot.json index 97ca2a93..8d1edbc4 100644 --- a/tests/workbench_files/all-series.lshw.snapshot.json +++ b/tests/workbench_files/all-series.lshw.snapshot.json @@ -3,14 +3,13 @@ "uuid": "00000000-0000-0000-0000-000000000000", "software": "Workbench", "version": "11.0a1", - "expectedEvents": [], "closed": false, "endTime": "2000-01-01 00:00:00+00:00", "device": { "manufacturer": "ASUS", "model": "All Series", "serialNumber": null, - "events": [], + "actions": [], "type": "Desktop", "chassis": "Tower" }, @@ -19,7 +18,7 @@ "manufacturer": "Intel Corp.", "model": "Intel Core i5-4440 CPU @ 3.10GHz", "serialNumber": null, - "events": [], + "actions": [], "type": "Processor", "speed": 3.299993, "address": 64, @@ -30,7 +29,7 @@ "manufacturer": "Kingston", "model": "99U5584-003.A00LF", "serialNumber": "290E5155", - "events": [], + "actions": [], "type": "RamModule", "format": "DIMM", "size": 4096, @@ -41,7 +40,7 @@ "manufacturer": "Western Digital", "model": "WDC WD5000AAKX-0", "serialNumber": "WD-WMC2E8912230", - "events": [], + "actions": [], "type": "HardDrive", "size": 476940, "interface": null @@ -50,7 +49,7 @@ "manufacturer": "Intel Corporation", "model": "Xeon E3-1200 v3/4th Gen Core Processor Integrated Graphics Controller", "serialNumber": null, - "events": [], + "actions": [], "type": "GraphicCard", "memory": null }, @@ -58,7 +57,7 @@ "manufacturer": "Realtek Semiconductor Co., Ltd.", "model": "RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller", "serialNumber": "40:16:7e:64:11:7f", - "events": [], + "actions": [], "type": "NetworkAdapter", "speed": 1000, "wireless": false @@ -67,14 +66,14 @@ "manufacturer": "Intel Corporation", "model": "8 Series/C220 Series Chipset High Definition Audio Controller", "serialNumber": null, - "events": [], + "actions": [], "type": "SoundCard" }, { "manufacturer": "ASUSTeK COMPUTER INC.", "model": "H81M-K", "serialNumber": "140322933901299", - "events": [], + "actions": [], "type": "Motherboard", "usb": 3, "firewire": 0, diff --git a/tests/workbench_files/asus-all-series.lshw.snapshot.json b/tests/workbench_files/asus-all-series.lshw.snapshot.json index 12c2724b..0ebb0647 100644 --- a/tests/workbench_files/asus-all-series.lshw.snapshot.json +++ b/tests/workbench_files/asus-all-series.lshw.snapshot.json @@ -3,14 +3,13 @@ "uuid": "00000000-0000-0000-0000-000000000000", "software": "Workbench", "version": "11.0a1", - "expectedEvents": [], "closed": false, "endTime": "2000-01-01 00:00:00+00:00", "device": { "manufacturer": "ASUS", "model": "All Series", "serialNumber": null, - "events": [], + "actions": [], "type": "Desktop", "chassis": "Tower" }, @@ -19,7 +18,7 @@ "manufacturer": "Intel Corp.", "model": "Intel Core i5-4440 CPU @ 3.10GHz", "serialNumber": null, - "events": [], + "actions": [], "type": "Processor", "speed": 1.4710990000000002, "address": 64, @@ -30,7 +29,7 @@ "manufacturer": "Kingston", "model": "9905584-017.A00LF", "serialNumber": "9D341297", - "events": [], + "actions": [], "type": "RamModule", "format": "DIMM", "size": 4096, @@ -41,7 +40,7 @@ "manufacturer": "Western Digital", "model": "WDC WD5000AAKX-0", "serialNumber": "WD-WCC2EVE36697", - "events": [], + "actions": [], "type": "HardDrive", "size": 476940, "interface": null @@ -50,7 +49,7 @@ "manufacturer": "Intel Corporation", "model": "Xeon E3-1200 v3/4th Gen Core Processor Integrated Graphics Controller", "serialNumber": null, - "events": [], + "actions": [], "type": "GraphicCard", "memory": null }, @@ -58,7 +57,7 @@ "manufacturer": "Realtek Semiconductor Co., Ltd.", "model": "RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller", "serialNumber": "e0:3f:49:1a:cf:8d", - "events": [], + "actions": [], "type": "NetworkAdapter", "speed": 1000, "wireless": false @@ -67,14 +66,14 @@ "manufacturer": "Intel Corporation", "model": "8 Series/C220 Series Chipset High Definition Audio Controller", "serialNumber": null, - "events": [], + "actions": [], "type": "SoundCard" }, { "manufacturer": "ASUSTeK COMPUTER INC.", "model": "H81M-K", "serialNumber": "131219772601126", - "events": [], + "actions": [], "type": "Motherboard", "usb": 3, "firewire": 0, diff --git a/tests/workbench_files/box-xavier.snapshot.json b/tests/workbench_files/box-xavier.snapshot.json index 24af1ae4..9f3c321d 100644 --- a/tests/workbench_files/box-xavier.snapshot.json +++ b/tests/workbench_files/box-xavier.snapshot.json @@ -3,14 +3,13 @@ "uuid": "00000000-0000-0000-0000-000000000000", "software": "Workbench", "version": "11.0a1", - "expectedEvents": [], "closed": false, "endTime": "2000-01-01 00:00:00+00:00", "device": { "manufacturer": null, "model": null, "serialNumber": null, - "events": [], + "actions": [], "type": "Desktop", "chassis": "Tower" }, @@ -19,7 +18,7 @@ "manufacturer": "Intel Corp.", "model": "Intel Celeron CPU N3050 @ 1.60GHz", "serialNumber": null, - "events": [], + "actions": [], "type": "Processor", "speed": 0.47998, "address": 64, @@ -30,7 +29,7 @@ "manufacturer": "Kingston", "model": "99U5469-044.A00LF", "serialNumber": "17220285", - "events": [], + "actions": [], "type": "RamModule", "format": "SODIMM", "size": 4096, @@ -41,7 +40,7 @@ "manufacturer": "Toshiba", "model": "THNSNS12", "serialNumber": "Y2IS101GT4BY", - "events": [], + "actions": [], "type": "HardDrive", "size": 122104, "interface": null @@ -50,7 +49,7 @@ "manufacturer": "Intel Corporation", "model": "Atom/Celeron/Pentium Processor x5-E8000/J3xxx/N3xxx Integrated Graphics Controller", "serialNumber": null, - "events": [], + "actions": [], "type": "GraphicCard", "memory": null }, @@ -58,7 +57,7 @@ "manufacturer": "Intel Corporation", "model": "Wireless 3165", "serialNumber": "34:02:86:5b:47:b2", - "events": [], + "actions": [], "type": "NetworkAdapter", "wireless": true }, @@ -66,7 +65,7 @@ "manufacturer": "Realtek Semiconductor Co., Ltd.", "model": "RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller", "serialNumber": "b8:ae:ed:76:91:83", - "events": [], + "actions": [], "type": "NetworkAdapter", "speed": 1000, "wireless": false @@ -75,14 +74,14 @@ "manufacturer": "Intel Corporation", "model": "Atom/Celeron/Pentium Processor x5-E8000/J3xxx/N3xxx Series High Definition Audio Controller", "serialNumber": null, - "events": [], + "actions": [], "type": "SoundCard" }, { "manufacturer": "Intel Corporation", "model": "NUC5CPYB", "serialNumber": "GEPY523011FH", - "events": [], + "actions": [], "type": "Motherboard", "usb": 1, "firewire": 0, diff --git a/tests/workbench_files/core2.lshw.snapshot.json b/tests/workbench_files/core2.lshw.snapshot.json index 76a118a7..023f7d94 100644 --- a/tests/workbench_files/core2.lshw.snapshot.json +++ b/tests/workbench_files/core2.lshw.snapshot.json @@ -3,14 +3,13 @@ "uuid": "00000000-0000-0000-0000-000000000000", "software": "Workbench", "version": "11.0a1", - "expectedEvents": [], "closed": false, "endTime": "2000-01-01 00:00:00+00:00", "device": { "manufacturer": null, "model": null, "serialNumber": null, - "events": [], + "actions": [], "type": "Desktop", "chassis": "Tower" }, @@ -19,7 +18,7 @@ "manufacturer": "Intel Corp.", "model": "Intel Core2 CPU 6600 @ 2.40GHz", "serialNumber": null, - "events": [], + "actions": [], "type": "Processor", "speed": 2.394, "address": 64, @@ -29,7 +28,7 @@ "manufacturer": null, "model": null, "serialNumber": null, - "events": [], + "actions": [], "type": "RamModule", "format": "DIMM", "size": 1024, @@ -40,7 +39,7 @@ "manufacturer": null, "model": "SAMSUNG HD250HJ", "serialNumber": "S0URJDQP811025", - "events": [], + "actions": [], "type": "HardDrive", "size": 238475, "interface": null @@ -49,7 +48,7 @@ "manufacturer": "Intel Corporation", "model": "82G965 Integrated Graphics Controller", "serialNumber": null, - "events": [], + "actions": [], "type": "GraphicCard", "memory": null }, @@ -57,7 +56,7 @@ "manufacturer": "Realtek Semiconductor Co., Ltd.", "model": "RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller", "serialNumber": "00:1b:fc:30:75:09", - "events": [], + "actions": [], "type": "NetworkAdapter", "speed": 1000, "wireless": false @@ -66,14 +65,14 @@ "manufacturer": "Intel Corporation", "model": "82801H HD Audio Controller", "serialNumber": null, - "events": [], + "actions": [], "type": "SoundCard" }, { "manufacturer": "ASUSTeK Computer INC.", "model": "P5B-VM", "serialNumber": "MB-1234567890", - "events": [], + "actions": [], "type": "Motherboard", "usb": 7, "firewire": 1, diff --git a/tests/workbench_files/custom.lshw.snapshot.json b/tests/workbench_files/custom.lshw.snapshot.json index 4531cd67..99d6c376 100644 --- a/tests/workbench_files/custom.lshw.snapshot.json +++ b/tests/workbench_files/custom.lshw.snapshot.json @@ -3,14 +3,13 @@ "uuid": "00000000-0000-0000-0000-000000000000", "software": "Workbench", "version": "11.0a1", - "expectedEvents": [], "closed": false, "endTime": "2000-01-01 00:00:00+00:00", "device": { "manufacturer": "ASUS", "model": "All Series", "serialNumber": null, - "events": [], + "actions": [], "type": "Desktop", "chassis": "Tower" }, @@ -19,7 +18,7 @@ "manufacturer": "Intel Corp.", "model": "Intel Core i5-4440 CPU @ 3.10GHz", "serialNumber": null, - "events": [], + "actions": [], "type": "Processor", "speed": 3.1001890000000003, "address": 64, @@ -30,7 +29,7 @@ "manufacturer": "Kingston", "model": "9905584-017.A00LF", "serialNumber": "9D341297", - "events": [], + "actions": [], "type": "RamModule", "format": "DIMM", "size": 4096, @@ -41,7 +40,7 @@ "manufacturer": "Western Digital", "model": "WDC WD5000AAKX-0", "serialNumber": "WD-WCC2EVE36697", - "events": [], + "actions": [], "type": "HardDrive", "size": 476940, "interface": null @@ -50,7 +49,7 @@ "manufacturer": "Intel Corporation", "model": "Xeon E3-1200 v3/4th Gen Core Processor Integrated Graphics Controller", "serialNumber": null, - "events": [], + "actions": [], "type": "GraphicCard", "memory": null }, @@ -58,7 +57,7 @@ "manufacturer": "Realtek Semiconductor Co., Ltd.", "model": "RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller", "serialNumber": "e0:3f:49:1a:cf:8d", - "events": [], + "actions": [], "type": "NetworkAdapter", "speed": 1000, "wireless": false @@ -67,14 +66,14 @@ "manufacturer": "Intel Corporation", "model": "8 Series/C220 Series Chipset High Definition Audio Controller", "serialNumber": null, - "events": [], + "actions": [], "type": "SoundCard" }, { "manufacturer": "ASUSTeK COMPUTER INC.", "model": "H81M-K", "serialNumber": "131219772601126", - "events": [], + "actions": [], "type": "Motherboard", "usb": 3, "firewire": 0, diff --git a/tests/workbench_files/dell-logicalname-network.snapshot.json b/tests/workbench_files/dell-logicalname-network.snapshot.json index 3902da41..e8574224 100644 --- a/tests/workbench_files/dell-logicalname-network.snapshot.json +++ b/tests/workbench_files/dell-logicalname-network.snapshot.json @@ -3,14 +3,13 @@ "uuid": "00000000-0000-0000-0000-000000000000", "software": "Workbench", "version": "11.0a1", - "expectedEvents": [], "closed": false, "endTime": "2000-01-01 00:00:00+00:00", "device": { "manufacturer": "Dell Inc.", "model": "Latitude E5530 non-vPro", "serialNumber": "D8FTRY1", - "events": [], + "actions": [], "type": "Laptop", "chassis": "Laptop" }, @@ -19,7 +18,7 @@ "manufacturer": "Intel Corp.", "model": "Intel Core i5-3340M CPU @ 2.70GHz", "serialNumber": null, - "events": [], + "actions": [], "type": "Processor", "speed": 1.204321, "address": 64, @@ -30,7 +29,7 @@ "manufacturer": "Micron", "model": "8KTF51264HZ-1G6E1", "serialNumber": "E88F671D", - "events": [], + "actions": [], "type": "RamModule", "format": "SODIMM", "size": 4096, @@ -41,7 +40,7 @@ "manufacturer": "Micron", "model": "8KTF51264HZ-1G6E1", "serialNumber": "E88F671E", - "events": [], + "actions": [], "type": "RamModule", "format": "SODIMM", "size": 4096, @@ -52,7 +51,7 @@ "manufacturer": null, "model": "HGST HTS725050A7", "serialNumber": "TF755AWHKL0LHM", - "events": [], + "actions": [], "type": "HardDrive", "size": 476940, "interface": null @@ -61,7 +60,7 @@ "manufacturer": "Intel Corporation", "model": "3rd Gen Core processor Graphics Controller", "serialNumber": null, - "events": [], + "actions": [], "type": "GraphicCard", "memory": null }, @@ -69,7 +68,7 @@ "manufacturer": "Broadcom Limited", "model": "BCM43228 802.11a/b/g/n", "serialNumber": null, - "events": [], + "actions": [], "type": "NetworkAdapter", "wireless": false }, @@ -77,7 +76,7 @@ "manufacturer": "Broadcom Limited", "model": "NetXtreme BCM5761 Gigabit Ethernet PCIe", "serialNumber": "f0:1f:af:41:3f:18", - "events": [], + "actions": [], "type": "NetworkAdapter", "speed": 1000, "wireless": false @@ -86,21 +85,21 @@ "manufacturer": "CN0Y4TWT7248737FA56RA01", "model": "Laptop_Integrated_Webcam_E4HD", "serialNumber": null, - "events": [], + "actions": [], "type": "SoundCard" }, { "manufacturer": "Intel Corporation", "model": "7 Series/C216 Chipset Family High Definition Audio Controller", "serialNumber": null, - "events": [], + "actions": [], "type": "SoundCard" }, { "manufacturer": "Dell Inc.", "model": "0VP63H", "serialNumber": "/D8FTRY1/CN1296139I001F/", - "events": [], + "actions": [], "type": "Motherboard", "usb": 3, "firewire": 0, diff --git a/tests/workbench_files/ecs-2.lshw.snapshot.json b/tests/workbench_files/ecs-2.lshw.snapshot.json index c37751d7..31756d5e 100644 --- a/tests/workbench_files/ecs-2.lshw.snapshot.json +++ b/tests/workbench_files/ecs-2.lshw.snapshot.json @@ -3,14 +3,13 @@ "uuid": "00000000-0000-0000-0000-000000000000", "software": "Workbench", "version": "11.0a1", - "expectedEvents": [], "closed": false, "endTime": "2000-01-01 00:00:00+00:00", "device": { "manufacturer": null, "model": null, "serialNumber": null, - "events": [], + "actions": [], "type": "Desktop", "chassis": "Tower" }, @@ -19,7 +18,7 @@ "manufacturer": "Intel Corp.", "model": "Intel Core2 CPU 6600 @ 2.40GHz", "serialNumber": null, - "events": [], + "actions": [], "type": "Processor", "speed": 2.394, "address": 64, @@ -29,7 +28,7 @@ "manufacturer": null, "model": null, "serialNumber": null, - "events": [], + "actions": [], "type": "RamModule", "format": "DIMM", "size": 1024, @@ -40,7 +39,7 @@ "manufacturer": null, "model": null, "serialNumber": null, - "events": [], + "actions": [], "type": "RamModule", "format": "DIMM", "size": 1024, @@ -51,7 +50,7 @@ "manufacturer": null, "model": null, "serialNumber": null, - "events": [], + "actions": [], "type": "RamModule", "format": "DIMM", "size": 1024, @@ -62,7 +61,7 @@ "manufacturer": null, "model": "SAMSUNG HD250HJ", "serialNumber": "S0URJDQP811025", - "events": [], + "actions": [], "type": "HardDrive", "size": 238475, "interface": null @@ -71,7 +70,7 @@ "manufacturer": "Intel Corporation", "model": "82G965 Integrated Graphics Controller", "serialNumber": null, - "events": [], + "actions": [], "type": "GraphicCard", "memory": null }, @@ -79,7 +78,7 @@ "manufacturer": "Realtek Semiconductor Co., Ltd.", "model": "RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller", "serialNumber": "00:1b:fc:30:75:09", - "events": [], + "actions": [], "type": "NetworkAdapter", "speed": 1000, "wireless": false @@ -88,14 +87,14 @@ "manufacturer": "Intel Corporation", "model": "82801H HD Audio Controller", "serialNumber": null, - "events": [], + "actions": [], "type": "SoundCard" }, { "manufacturer": "ASUSTeK Computer INC.", "model": "P5B-VM", "serialNumber": "MB-1234567890", - "events": [], + "actions": [], "type": "Motherboard", "usb": 7, "firewire": 1, diff --git a/tests/workbench_files/ecs-computers.lshw.snapshot.json b/tests/workbench_files/ecs-computers.lshw.snapshot.json index 049ccfbe..e5683619 100644 --- a/tests/workbench_files/ecs-computers.lshw.snapshot.json +++ b/tests/workbench_files/ecs-computers.lshw.snapshot.json @@ -3,14 +3,13 @@ "uuid": "00000000-0000-0000-0000-000000000000", "software": "Workbench", "version": "11.0a1", - "expectedEvents": [], "closed": false, "endTime": "2000-01-01 00:00:00+00:00", "device": { "manufacturer": "ASUS", "model": "All Series", "serialNumber": null, - "events": [], + "actions": [], "type": "Desktop", "chassis": "Tower" }, @@ -19,7 +18,7 @@ "manufacturer": "Intel Corp.", "model": "Intel Core i5-4440 CPU @ 3.10GHz", "serialNumber": null, - "events": [], + "actions": [], "type": "Processor", "speed": 2.200311, "address": 64, @@ -30,7 +29,7 @@ "manufacturer": "Kingston", "model": "99U5584-003.A00LF", "serialNumber": "8618F309", - "events": [], + "actions": [], "type": "RamModule", "format": "DIMM", "size": 4096, @@ -41,7 +40,7 @@ "manufacturer": "Western Digital", "model": "WDC WD5000AAKX-6", "serialNumber": "WD-WCC2ETY84203", - "events": [], + "actions": [], "type": "HardDrive", "size": 476940, "interface": null @@ -50,7 +49,7 @@ "manufacturer": "Intel Corporation", "model": "Xeon E3-1200 v3/4th Gen Core Processor Integrated Graphics Controller", "serialNumber": null, - "events": [], + "actions": [], "type": "GraphicCard", "memory": null }, @@ -58,7 +57,7 @@ "manufacturer": "Realtek Semiconductor Co., Ltd.", "model": "RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller", "serialNumber": "e0:3f:49:1a:d0:44", - "events": [], + "actions": [], "type": "NetworkAdapter", "speed": 1000, "wireless": false @@ -67,14 +66,14 @@ "manufacturer": "Intel Corporation", "model": "8 Series/C220 Series Chipset High Definition Audio Controller", "serialNumber": null, - "events": [], + "actions": [], "type": "SoundCard" }, { "manufacturer": "ASUSTeK COMPUTER INC.", "model": "H81M-K", "serialNumber": "131219772601195", - "events": [], + "actions": [], "type": "Motherboard", "usb": 3, "firewire": 0, diff --git a/tests/workbench_files/eee-pc.snapshot.json b/tests/workbench_files/eee-pc.snapshot.json index 6b453a64..c4297162 100644 --- a/tests/workbench_files/eee-pc.snapshot.json +++ b/tests/workbench_files/eee-pc.snapshot.json @@ -3,14 +3,13 @@ "uuid": "00000000-0000-0000-0000-000000000000", "software": "Workbench", "version": "11.0a1", - "expectedEvents": [], "closed": false, "endTime": "2000-01-01 00:00:00+00:00", "device": { "manufacturer": "ASUSTeK Computer INC.", "model": "1000H", "serialNumber": "8BOAAQ191999", - "events": [], + "actions": [], "type": "Laptop", "chassis": "Netbook" }, @@ -19,7 +18,7 @@ "manufacturer": "Intel Corp.", "model": "Intel Atom CPU N270 @ 1.60GHz", "serialNumber": null, - "events": [], + "actions": [], "type": "Processor", "speed": 1.6, "address": 32, @@ -29,7 +28,7 @@ "manufacturer": null, "model": null, "serialNumber": null, - "events": [], + "actions": [], "type": "RamModule", "format": "DIMM", "size": 2048, @@ -39,7 +38,7 @@ "manufacturer": null, "model": "TS32GSSD370S", "serialNumber": "C304332411", - "events": [], + "actions": [], "type": "HardDrive", "size": 30533, "interface": null @@ -48,7 +47,7 @@ "manufacturer": "Intel Corporation", "model": "Mobile 945GSE Express Integrated Graphics Controller", "serialNumber": null, - "events": [], + "actions": [], "type": "GraphicCard", "memory": null }, @@ -56,7 +55,7 @@ "manufacturer": "Qualcomm Atheros", "model": "AR8121/AR8113/AR8114 Gigabit or Fast Ethernet", "serialNumber": "00:23:54:8d:be:66", - "events": [], + "actions": [], "type": "NetworkAdapter", "speed": 100, "wireless": false @@ -65,7 +64,7 @@ "manufacturer": "Ralink corp.", "model": "RT2790 Wireless 802.11n 1T/2R PCIe", "serialNumber": "00:15:af:dc:44:eb", - "events": [], + "actions": [], "type": "NetworkAdapter", "wireless": true }, @@ -73,21 +72,21 @@ "manufacturer": "Intel Corporation", "model": "NM10/ICH7 Family High Definition Audio Controller", "serialNumber": null, - "events": [], + "actions": [], "type": "SoundCard" }, { "manufacturer": "Chicony Electronics Co., Ltd.", "model": "CNF7129", "serialNumber": "SN0001", - "events": [], + "actions": [], "type": "SoundCard" }, { "manufacturer": "ASUSTeK Computer INC.", "model": "1000H", "serialNumber": "Eee0123456789", - "events": [], + "actions": [], "type": "Motherboard", "usb": 5, "firewire": 0, diff --git a/tests/workbench_files/erased-i5.lshw.snapshot.json b/tests/workbench_files/erased-i5.lshw.snapshot.json index ce218065..ed27e1e2 100644 --- a/tests/workbench_files/erased-i5.lshw.snapshot.json +++ b/tests/workbench_files/erased-i5.lshw.snapshot.json @@ -3,14 +3,13 @@ "uuid": "00000000-0000-0000-0000-000000000000", "software": "Workbench", "version": "11.0a1", - "expectedEvents": [], "closed": false, "endTime": "2000-01-01 00:00:00+00:00", "device": { "manufacturer": "Hewlett-Packard", "model": "HP Compaq dc7900 Small Form Factor", "serialNumber": "CZC901381R", - "events": [], + "actions": [], "type": "Desktop", "chassis": "Tower" }, @@ -19,7 +18,7 @@ "manufacturer": "Intel Corp.", "model": "Intel Core2 Duo CPU E8400 @ 3.00GHz", "serialNumber": null, - "events": [], + "actions": [], "type": "Processor", "speed": 3.0, "address": 64, @@ -30,7 +29,7 @@ "manufacturer": "JEDEC ID:AD 00 00 00 00 00 00 00", "model": "HYMP125U64CP8-S6", "serialNumber": "01200000", - "events": [], + "actions": [], "type": "RamModule", "format": "DIMM", "size": 2048, @@ -41,7 +40,7 @@ "manufacturer": "Seagate", "model": "ST3160815AS", "serialNumber": "6RX7AWEZ", - "events": [], + "actions": [], "type": "HardDrive", "size": 152627, "interface": null @@ -50,7 +49,7 @@ "manufacturer": "Intel Corporation", "model": "4 Series Chipset Integrated Graphics Controller", "serialNumber": null, - "events": [], + "actions": [], "type": "GraphicCard", "memory": null }, @@ -58,7 +57,7 @@ "manufacturer": "Intel Corporation", "model": "82567LM-3 Gigabit Network Connection", "serialNumber": "00:23:7d:49:5e:31", - "events": [], + "actions": [], "type": "NetworkAdapter", "speed": 1000, "wireless": false @@ -67,7 +66,7 @@ "manufacturer": "Realtek Semiconductor Co., Ltd.", "model": "RTL8169 PCI Gigabit Ethernet Controller", "serialNumber": "00:b0:c2:02:ab:b7", - "events": [], + "actions": [], "type": "NetworkAdapter", "speed": 1000, "wireless": false @@ -76,14 +75,14 @@ "manufacturer": "Intel Corporation", "model": "82801JD/DO HD Audio Controller", "serialNumber": null, - "events": [], + "actions": [], "type": "SoundCard" }, { "manufacturer": "Hewlett-Packard", "model": "3031h", "serialNumber": "CZC901381R", - "events": [], + "actions": [], "type": "Motherboard", "usb": 8, "firewire": 0, diff --git a/tests/workbench_files/hp-compaq-8100.lshw.snapshot.json b/tests/workbench_files/hp-compaq-8100.lshw.snapshot.json index b393d0d2..d43c8b01 100644 --- a/tests/workbench_files/hp-compaq-8100.lshw.snapshot.json +++ b/tests/workbench_files/hp-compaq-8100.lshw.snapshot.json @@ -3,14 +3,13 @@ "uuid": "00000000-0000-0000-0000-000000000000", "software": "Workbench", "version": "11.0a1", - "expectedEvents": [], "closed": false, "endTime": "2000-01-01 00:00:00+00:00", "device": { "manufacturer": "Hewlett-Packard", "model": "HP Compaq 8100 Elite SFF", "serialNumber": "CZC0408YPV", - "events": [], + "actions": [], "type": "Desktop", "chassis": "Tower" }, @@ -19,7 +18,7 @@ "manufacturer": "Intel Corp.", "model": "Intel Core i3 CPU 530 @ 2.93GHz", "serialNumber": null, - "events": [], + "actions": [], "type": "Processor", "speed": 2.9330000000000003, "address": 64, @@ -30,7 +29,7 @@ "manufacturer": "JEDEC ID:80 2C", "model": "16JTF25664AZ-1G4F", "serialNumber": "92072F30", - "events": [], + "actions": [], "type": "RamModule", "format": "DIMM", "size": 2048, @@ -41,7 +40,7 @@ "manufacturer": "JEDEC ID:80 2C", "model": "16JTF25664AZ-1G4F", "serialNumber": "A4482E29", - "events": [], + "actions": [], "type": "RamModule", "format": "DIMM", "size": 2048, @@ -52,7 +51,7 @@ "manufacturer": "JEDEC ID:80 2C", "model": "16JTF25664AZ-1G4F", "serialNumber": "939E2E29", - "events": [], + "actions": [], "type": "RamModule", "format": "DIMM", "size": 2048, @@ -63,7 +62,7 @@ "manufacturer": "JEDEC ID:80 2C", "model": "16JTF25664AZ-1G4F", "serialNumber": "48FD2E30", - "events": [], + "actions": [], "type": "RamModule", "format": "DIMM", "size": 2048, @@ -74,7 +73,7 @@ "manufacturer": "Western Digital", "model": "WDC WD3200AAJS-6", "serialNumber": "WD-WCAV2U856544", - "events": [], + "actions": [], "type": "HardDrive", "size": 305245, "interface": null @@ -83,7 +82,7 @@ "manufacturer": "Intel Corporation", "model": "Core Processor Integrated Graphics Controller", "serialNumber": null, - "events": [], + "actions": [], "type": "GraphicCard", "memory": null }, @@ -91,7 +90,7 @@ "manufacturer": "Intel Corporation", "model": "82578DM Gigabit Network Connection", "serialNumber": "6c:62:6d:81:4d:ae", - "events": [], + "actions": [], "type": "NetworkAdapter", "speed": 1000, "wireless": false @@ -100,14 +99,14 @@ "manufacturer": "Intel Corporation", "model": "5 Series/3400 Series Chipset High Definition Audio", "serialNumber": null, - "events": [], + "actions": [], "type": "SoundCard" }, { "manufacturer": "Hewlett-Packard", "model": "304Ah", "serialNumber": "CZC0408YPV", - "events": [], + "actions": [], "type": "Motherboard", "usb": 2, "firewire": 0, diff --git a/tests/workbench_files/hp-pavilion-dv4000.lshw.snapshot.json b/tests/workbench_files/hp-pavilion-dv4000.lshw.snapshot.json index a8dce3ac..14a218a6 100644 --- a/tests/workbench_files/hp-pavilion-dv4000.lshw.snapshot.json +++ b/tests/workbench_files/hp-pavilion-dv4000.lshw.snapshot.json @@ -3,14 +3,13 @@ "uuid": "00000000-0000-0000-0000-000000000000", "software": "Workbench", "version": "11.0a1", - "expectedEvents": [], "closed": false, "endTime": "2000-01-01 00:00:00+00:00", "device": { "manufacturer": "Hewlett-Packard", "model": "Pavilion dv4000", "serialNumber": "2CE5270ZWC", - "events": [], + "actions": [], "type": "Laptop", "chassis": "Netbook" }, @@ -19,7 +18,7 @@ "manufacturer": "Intel Corp.", "model": "Intel Pentium M processor 1.60GHz", "serialNumber": null, - "events": [], + "actions": [], "type": "Processor", "speed": 1.6, "address": 32, @@ -29,7 +28,7 @@ "manufacturer": null, "model": null, "serialNumber": null, - "events": [], + "actions": [], "type": "RamModule", "format": "DIMM", "size": 512, @@ -39,7 +38,7 @@ "manufacturer": null, "model": null, "serialNumber": null, - "events": [], + "actions": [], "type": "RamModule", "format": "DIMM", "size": 512, @@ -49,7 +48,7 @@ "manufacturer": "Fujitsu", "model": "MHT2080A", "serialNumber": "NN4FT561BDC2", - "events": [], + "actions": [], "type": "HardDrive", "size": 76319, "interface": null @@ -58,7 +57,7 @@ "manufacturer": "Intel Corporation", "model": "Mobile 915GM/GMS/910GML Express Graphics Controller", "serialNumber": null, - "events": [], + "actions": [], "type": "GraphicCard", "memory": null }, @@ -66,7 +65,7 @@ "manufacturer": "Intel Corporation", "model": "PRO/Wireless 2200BG Calexico2 Network Connection", "serialNumber": "00:12:f0:c7:68:51", - "events": [], + "actions": [], "type": "NetworkAdapter", "wireless": true }, @@ -74,7 +73,7 @@ "manufacturer": "Realtek Semiconductor Co., Ltd.", "model": "RTL-8100/8101L/8139 PCI Fast Ethernet Adapter", "serialNumber": "00:0a:e4:d4:71:82", - "events": [], + "actions": [], "type": "NetworkAdapter", "speed": 100, "wireless": false @@ -83,14 +82,14 @@ "manufacturer": "Intel Corporation", "model": "82801FB/FBM/FR/FW/FRW AC'97 Audio Controller", "serialNumber": null, - "events": [], + "actions": [], "type": "SoundCard" }, { "manufacturer": "Hewlett-Packard", "model": "09BC", "serialNumber": null, - "events": [], + "actions": [], "type": "Motherboard", "usb": 5, "firewire": 1, diff --git a/tests/workbench_files/lenovo-7220w3t.lshw.snapshot.json b/tests/workbench_files/lenovo-7220w3t.lshw.snapshot.json index 8ac1b237..13c57921 100644 --- a/tests/workbench_files/lenovo-7220w3t.lshw.snapshot.json +++ b/tests/workbench_files/lenovo-7220w3t.lshw.snapshot.json @@ -3,14 +3,13 @@ "uuid": "00000000-0000-0000-0000-000000000000", "software": "Workbench", "version": "11.0a1", - "expectedEvents": [], "closed": false, "endTime": "2000-01-01 00:00:00+00:00", "device": { "manufacturer": "LENOVO", "model": "7220W3T", "serialNumber": "S4R6062", - "events": [], + "actions": [], "type": "Desktop", "chassis": "Tower" }, @@ -19,7 +18,7 @@ "manufacturer": "Intel Corp.", "model": "Intel Core2 Duo CPU E8400 @ 3.00GHz", "serialNumber": null, - "events": [], + "actions": [], "type": "Processor", "speed": 3.0, "address": 64, @@ -30,7 +29,7 @@ "manufacturer": null, "model": null, "serialNumber": null, - "events": [], + "actions": [], "type": "RamModule", "format": "DIMM", "size": 2048, @@ -41,7 +40,7 @@ "manufacturer": null, "model": null, "serialNumber": null, - "events": [], + "actions": [], "type": "RamModule", "format": "DIMM", "size": 2048, @@ -52,7 +51,7 @@ "manufacturer": "Seagate", "model": "ST3250318AS", "serialNumber": "6VY54ZKX", - "events": [], + "actions": [], "type": "HardDrive", "size": 238475, "interface": null @@ -61,7 +60,7 @@ "manufacturer": "Intel Corporation", "model": "4 Series Chipset Integrated Graphics Controller", "serialNumber": null, - "events": [], + "actions": [], "type": "GraphicCard", "memory": null }, @@ -69,7 +68,7 @@ "manufacturer": "Intel Corporation", "model": "82567LM-3 Gigabit Network Connection", "serialNumber": "00:24:7e:02:19:d7", - "events": [], + "actions": [], "type": "NetworkAdapter", "speed": 1000, "wireless": false @@ -78,14 +77,14 @@ "manufacturer": "Intel Corporation", "model": "82801JD/DO HD Audio Controller", "serialNumber": null, - "events": [], + "actions": [], "type": "SoundCard" }, { "manufacturer": "LENOVO", "model": "LENOVO", "serialNumber": null, - "events": [], + "actions": [], "type": "Motherboard", "usb": 8, "firewire": 0, diff --git a/tests/workbench_files/lenovo-as-intel.lshw.snapshot.json b/tests/workbench_files/lenovo-as-intel.lshw.snapshot.json index 6492678e..c8e6531f 100644 --- a/tests/workbench_files/lenovo-as-intel.lshw.snapshot.json +++ b/tests/workbench_files/lenovo-as-intel.lshw.snapshot.json @@ -3,14 +3,13 @@ "uuid": "00000000-0000-0000-0000-000000000000", "software": "Workbench", "version": "11.0a1", - "expectedEvents": [], "closed": false, "endTime": "2000-01-01 00:00:00+00:00", "device": { "manufacturer": "LENOVO", "model": "7220W3T", "serialNumber": "S4R6460", - "events": [], + "actions": [], "type": "Desktop", "chassis": "Tower" }, @@ -19,7 +18,7 @@ "manufacturer": "Intel Corp.", "model": "Intel Core2 Duo CPU E8400 @ 3.00GHz", "serialNumber": null, - "events": [], + "actions": [], "type": "Processor", "speed": 3.0, "address": 64, @@ -30,7 +29,7 @@ "manufacturer": null, "model": null, "serialNumber": null, - "events": [], + "actions": [], "type": "RamModule", "format": "DIMM", "size": 2048, @@ -41,7 +40,7 @@ "manufacturer": null, "model": null, "serialNumber": null, - "events": [], + "actions": [], "type": "RamModule", "format": "DIMM", "size": 2048, @@ -52,7 +51,7 @@ "manufacturer": null, "model": "SAMSUNG HD251HJ", "serialNumber": "S1L6J9BZ103714", - "events": [], + "actions": [], "type": "HardDrive", "size": 238475, "interface": null @@ -61,7 +60,7 @@ "manufacturer": "Intel Corporation", "model": "4 Series Chipset Integrated Graphics Controller", "serialNumber": null, - "events": [], + "actions": [], "type": "GraphicCard", "memory": null }, @@ -69,7 +68,7 @@ "manufacturer": "Intel Corporation", "model": "82567LM-3 Gigabit Network Connection", "serialNumber": "00:24:7e:02:15:1a", - "events": [], + "actions": [], "type": "NetworkAdapter", "speed": 1000, "wireless": false @@ -78,14 +77,14 @@ "manufacturer": "Intel Corporation", "model": "82801JD/DO HD Audio Controller", "serialNumber": null, - "events": [], + "actions": [], "type": "SoundCard" }, { "manufacturer": "LENOVO", "model": "LENOVO", "serialNumber": null, - "events": [], + "actions": [], "type": "Motherboard", "usb": 8, "firewire": 0, diff --git a/tests/workbench_files/lenovo-thinkcentre-edge.lshw.snapshot.json b/tests/workbench_files/lenovo-thinkcentre-edge.lshw.snapshot.json index 83c95eb4..df9aeb52 100644 --- a/tests/workbench_files/lenovo-thinkcentre-edge.lshw.snapshot.json +++ b/tests/workbench_files/lenovo-thinkcentre-edge.lshw.snapshot.json @@ -3,14 +3,13 @@ "uuid": "00000000-0000-0000-0000-000000000000", "software": "Workbench", "version": "11.0a1", - "expectedEvents": [], "closed": false, "endTime": "2000-01-01 00:00:00+00:00", "device": { "manufacturer": "LENOVO", "model": "3493BAG", "serialNumber": "PB357N0", - "events": [], + "actions": [], "type": "Desktop", "chassis": "Tower" }, @@ -19,7 +18,7 @@ "manufacturer": "Intel Corp.", "model": "Intel Pentium CPU G645 @ 2.90GHz", "serialNumber": null, - "events": [], + "actions": [], "type": "Processor", "speed": 1.674792, "address": 64, @@ -30,7 +29,7 @@ "manufacturer": "Micron", "model": "16JTF25664AZ-1G4F1", "serialNumber": "292E48DA", - "events": [], + "actions": [], "type": "RamModule", "format": "DIMM", "size": 2048, @@ -41,7 +40,7 @@ "manufacturer": "Seagate", "model": "ST250DM000-1BD14", "serialNumber": "Z2AYPLNP", - "events": [], + "actions": [], "type": "HardDrive", "size": 238475, "interface": null @@ -50,7 +49,7 @@ "manufacturer": "Intel Corporation", "model": "2nd Generation Core Processor Family Integrated Graphics Controller", "serialNumber": null, - "events": [], + "actions": [], "type": "GraphicCard", "memory": null }, @@ -58,7 +57,7 @@ "manufacturer": "Realtek Semiconductor Co., Ltd.", "model": "RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller", "serialNumber": "d4:3d:7e:41:c4:c4", - "events": [], + "actions": [], "type": "NetworkAdapter", "speed": 1000, "wireless": false @@ -67,14 +66,14 @@ "manufacturer": "Intel Corporation", "model": "6 Series/C200 Series Chipset Family High Definition Audio Controller", "serialNumber": null, - "events": [], + "actions": [], "type": "SoundCard" }, { "manufacturer": "LENOVO", "model": null, "serialNumber": null, - "events": [], + "actions": [], "type": "Motherboard", "usb": 2, "firewire": 0, diff --git a/tests/workbench_files/lenovo.snapshot.json b/tests/workbench_files/lenovo.snapshot.json index 06011a0e..de6f2875 100644 --- a/tests/workbench_files/lenovo.snapshot.json +++ b/tests/workbench_files/lenovo.snapshot.json @@ -3,14 +3,13 @@ "uuid": "00000000-0000-0000-0000-000000000000", "software": "Workbench", "version": "11.0a1", - "expectedEvents": [], "closed": false, "endTime": "2000-01-01 00:00:00+00:00", "device": { "manufacturer": "LENOVO", "model": "7220W3T", "serialNumber": "S4WV119", - "events": [], + "actions": [], "type": "Desktop", "chassis": "Tower" }, @@ -19,7 +18,7 @@ "manufacturer": "Intel Corp.", "model": "Intel Core2 Duo CPU E8400 @ 3.00GHz", "serialNumber": null, - "events": [], + "actions": [], "type": "Processor", "speed": 3.0, "address": 64, @@ -30,7 +29,7 @@ "manufacturer": null, "model": null, "serialNumber": null, - "events": [], + "actions": [], "type": "RamModule", "format": "DIMM", "size": 2048, @@ -41,7 +40,7 @@ "manufacturer": null, "model": null, "serialNumber": null, - "events": [], + "actions": [], "type": "RamModule", "format": "DIMM", "size": 2048, @@ -52,7 +51,7 @@ "manufacturer": "Seagate", "model": "ST3250318AS", "serialNumber": "6VY52H7X", - "events": [], + "actions": [], "type": "HardDrive", "size": 238475, "interface": null @@ -61,7 +60,7 @@ "manufacturer": "Intel Corporation", "model": "4 Series Chipset Integrated Graphics Controller", "serialNumber": null, - "events": [], + "actions": [], "type": "GraphicCard", "memory": null }, @@ -69,7 +68,7 @@ "manufacturer": "Intel Corporation", "model": "82567LM-3 Gigabit Network Connection", "serialNumber": "1c:6f:65:03:fd:c4", - "events": [], + "actions": [], "type": "NetworkAdapter", "speed": 1000, "wireless": false @@ -78,14 +77,14 @@ "manufacturer": "Intel Corporation", "model": "82801JD/DO HD Audio Controller", "serialNumber": null, - "events": [], + "actions": [], "type": "SoundCard" }, { "manufacturer": "LENOVO", "model": "LENOVO", "serialNumber": null, - "events": [], + "actions": [], "type": "Motherboard", "usb": 8, "firewire": 0, diff --git a/tests/workbench_files/nec.lshw.snapshot.json b/tests/workbench_files/nec.lshw.snapshot.json index 805635fb..cc4e814a 100644 --- a/tests/workbench_files/nec.lshw.snapshot.json +++ b/tests/workbench_files/nec.lshw.snapshot.json @@ -3,14 +3,13 @@ "uuid": "00000000-0000-0000-0000-000000000000", "software": "Workbench", "version": "11.0a1", - "expectedEvents": [], "closed": false, "endTime": "2000-01-01 00:00:00+00:00", "device": { "manufacturer": "NEC Computers SAS", "model": "Powermate MLxxx", "serialNumber": "SN 123456789ABC", - "events": [], + "actions": [], "type": "Desktop", "chassis": "Tower" }, @@ -19,7 +18,7 @@ "manufacturer": "Intel Corp.", "model": "Intel Core2 Duo CPU E8400 @ 3.00GHz", "serialNumber": null, - "events": [], + "actions": [], "type": "Processor", "speed": 3.0, "address": 64, @@ -30,7 +29,7 @@ "manufacturer": "Samsung", "model": "M3 78T2863QZS-CE6", "serialNumber": "253C8F0C", - "events": [], + "actions": [], "type": "RamModule", "format": "DIMM", "size": 1024, @@ -41,7 +40,7 @@ "manufacturer": "Samsung", "model": "M3 78T2863QZS-CE6", "serialNumber": "253C8DE7", - "events": [], + "actions": [], "type": "RamModule", "format": "DIMM", "size": 1024, @@ -52,7 +51,7 @@ "manufacturer": "Hitachi", "model": "HDT72103", "serialNumber": "STA2L7MV39LL6D", - "events": [], + "actions": [], "type": "HardDrive", "size": 305245, "interface": null @@ -61,7 +60,7 @@ "manufacturer": "Intel Corporation", "model": "82Q35 Express Integrated Graphics Controller", "serialNumber": null, - "events": [], + "actions": [], "type": "GraphicCard", "memory": null }, @@ -69,7 +68,7 @@ "manufacturer": "Intel Corporation", "model": "82566DM-2 Gigabit Network Connection", "serialNumber": "00:24:21:7a:90:02", - "events": [], + "actions": [], "type": "NetworkAdapter", "speed": 1000, "wireless": false @@ -78,14 +77,14 @@ "manufacturer": "Intel Corporation", "model": "82801I HD Audio Controller", "serialNumber": null, - "events": [], + "actions": [], "type": "SoundCard" }, { "manufacturer": "Micro-Star International Co Ltd", "model": "MS-7377", "serialNumber": "9516777584", - "events": [], + "actions": [], "type": "Motherboard", "usb": 8, "firewire": 1, diff --git a/tests/workbench_files/nox.lshw.snapshot.json b/tests/workbench_files/nox.lshw.snapshot.json index a64223a1..5a2d3e07 100644 --- a/tests/workbench_files/nox.lshw.snapshot.json +++ b/tests/workbench_files/nox.lshw.snapshot.json @@ -3,14 +3,13 @@ "uuid": "00000000-0000-0000-0000-000000000000", "software": "Workbench", "version": "11.0a1", - "expectedEvents": [], "closed": false, "endTime": "2000-01-01 00:00:00+00:00", "device": { "manufacturer": null, "model": null, "serialNumber": null, - "events": [], + "actions": [], "type": "Desktop", "chassis": "Tower" }, @@ -19,7 +18,7 @@ "manufacturer": "Intel Corp.", "model": "Intel Core i3-2100 CPU @ 3.10GHz", "serialNumber": null, - "events": [], + "actions": [], "type": "Processor", "speed": 1.6862300000000001, "address": 64, @@ -30,7 +29,7 @@ "manufacturer": "Kingston", "model": "9905403-038.A00LF", "serialNumber": "8F17943", - "events": [], + "actions": [], "type": "RamModule", "format": "DIMM", "size": 4096, @@ -41,7 +40,7 @@ "manufacturer": "Seagate", "model": "ST3500413AS", "serialNumber": "Z2A3HR7N", - "events": [], + "actions": [], "type": "HardDrive", "size": 476940, "interface": null @@ -50,7 +49,7 @@ "manufacturer": "Intel Corporation", "model": "2nd Generation Core Processor Family Integrated Graphics Controller", "serialNumber": null, - "events": [], + "actions": [], "type": "GraphicCard", "memory": null }, @@ -58,7 +57,7 @@ "manufacturer": "Realtek Semiconductor Co., Ltd.", "model": "RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller", "serialNumber": "f4:6d:04:12:9b:85", - "events": [], + "actions": [], "type": "NetworkAdapter", "speed": 1000, "wireless": false @@ -67,14 +66,14 @@ "manufacturer": "Intel Corporation", "model": "6 Series/C200 Series Chipset Family High Definition Audio Controller", "serialNumber": null, - "events": [], + "actions": [], "type": "SoundCard" }, { "manufacturer": "ASUSTeK Computer INC.", "model": "P8H61-M LE", "serialNumber": "109192430003459", - "events": [], + "actions": [], "type": "Motherboard", "usb": 2, "firewire": 0, diff --git a/tests/workbench_files/optiplex-745.lshw.snapshot.json b/tests/workbench_files/optiplex-745.lshw.snapshot.json index bbb46271..4b5c570c 100644 --- a/tests/workbench_files/optiplex-745.lshw.snapshot.json +++ b/tests/workbench_files/optiplex-745.lshw.snapshot.json @@ -3,14 +3,13 @@ "uuid": "00000000-0000-0000-0000-000000000000", "software": "Workbench", "version": "11.0a1", - "expectedEvents": [], "closed": false, "endTime": "2000-01-01 00:00:00+00:00", "device": { "manufacturer": "Dell Inc.", "model": "OptiPlex 745", "serialNumber": "HQ5583J", - "events": [], + "actions": [], "type": "Desktop", "chassis": "Tower" }, @@ -19,7 +18,7 @@ "manufacturer": "Intel Corp.", "model": "Intel Core2 CPU 6400 @ 2.13GHz", "serialNumber": null, - "events": [], + "actions": [], "type": "Processor", "speed": 2.133, "address": 64, @@ -30,7 +29,7 @@ "manufacturer": "Infineon", "model": "64T128020HU3SB", "serialNumber": "07129114", - "events": [], + "actions": [], "type": "RamModule", "format": "DIMM", "size": 1024, @@ -41,7 +40,7 @@ "manufacturer": "Infineon", "model": "64T128020HU3SB", "serialNumber": "07127E11", - "events": [], + "actions": [], "type": "RamModule", "format": "DIMM", "size": 1024, @@ -52,7 +51,7 @@ "manufacturer": "Western Digital", "model": "WDC WD3200AAKS-7", "serialNumber": "WD-WMAV2W580992", - "events": [], + "actions": [], "type": "HardDrive", "size": 305245, "interface": null @@ -61,7 +60,7 @@ "manufacturer": "Intel Corporation", "model": "82Q963/Q965 Integrated Graphics Controller", "serialNumber": null, - "events": [], + "actions": [], "type": "GraphicCard", "memory": null }, @@ -69,7 +68,7 @@ "manufacturer": "Broadcom Limited", "model": "NetXtreme BCM5754 Gigabit Ethernet PCI Express", "serialNumber": "00:1a:a0:e0:60:62", - "events": [], + "actions": [], "type": "NetworkAdapter", "speed": 1000, "wireless": false @@ -78,14 +77,14 @@ "manufacturer": "Intel Corporation", "model": "82801H HD Audio Controller", "serialNumber": null, - "events": [], + "actions": [], "type": "SoundCard" }, { "manufacturer": "Dell Inc.", "model": "0HP962", "serialNumber": "..CN137407AJ02SW.", - "events": [], + "actions": [], "type": "Motherboard", "usb": 7, "firewire": 0, diff --git a/tests/workbench_files/optiplex-gx520.lshw.snapshot.json b/tests/workbench_files/optiplex-gx520.lshw.snapshot.json index 3c61feb9..ce5a0a7f 100644 --- a/tests/workbench_files/optiplex-gx520.lshw.snapshot.json +++ b/tests/workbench_files/optiplex-gx520.lshw.snapshot.json @@ -3,14 +3,13 @@ "uuid": "00000000-0000-0000-0000-000000000000", "software": "Workbench", "version": "11.0a1", - "expectedEvents": [], "closed": false, "endTime": "2000-01-01 00:00:00+00:00", "device": { "manufacturer": "Dell Inc.", "model": "OptiPlex GX520", "serialNumber": "6G0772J", - "events": [], + "actions": [], "type": "Desktop", "chassis": "Tower" }, @@ -19,7 +18,7 @@ "manufacturer": "Intel Corp.", "model": "Intel Pentium 4 CPU 3.00GHz", "serialNumber": null, - "events": [], + "actions": [], "type": "Processor", "speed": 3.0, "address": 64, @@ -29,7 +28,7 @@ "manufacturer": "Nanya Technology", "model": "NT512T64U88A0BY-37", "serialNumber": "197312A4", - "events": [], + "actions": [], "type": "RamModule", "format": "DIMM", "size": 512, @@ -40,7 +39,7 @@ "manufacturer": null, "model": null, "serialNumber": null, - "events": [], + "actions": [], "type": "RamModule", "format": "DIMM", "size": 512, @@ -51,7 +50,7 @@ "manufacturer": "Seagate", "model": "ST3808110AS", "serialNumber": "5LR30DTZ", - "events": [], + "actions": [], "type": "HardDrive", "size": 76293, "interface": null @@ -60,7 +59,7 @@ "manufacturer": "Intel Corporation", "model": "82945G/GZ Integrated Graphics Controller", "serialNumber": null, - "events": [], + "actions": [], "type": "GraphicCard", "memory": null }, @@ -68,7 +67,7 @@ "manufacturer": "Broadcom Limited", "model": "NetXtreme BCM5751 Gigabit Ethernet PCI Express", "serialNumber": "00:13:72:78:53:12", - "events": [], + "actions": [], "type": "NetworkAdapter", "speed": 1000, "wireless": false @@ -77,14 +76,14 @@ "manufacturer": "Intel Corporation", "model": "82801G AC'97 Audio Controller", "serialNumber": null, - "events": [], + "actions": [], "type": "SoundCard" }, { "manufacturer": "Dell Inc.", "model": "0UG982", "serialNumber": "..CN1374063201S5.", - "events": [], + "actions": [], "type": "Motherboard", "usb": 5, "firewire": 0, diff --git a/tests/workbench_files/pc-laudem.snapshot.json b/tests/workbench_files/pc-laudem.snapshot.json index ce218065..ed27e1e2 100644 --- a/tests/workbench_files/pc-laudem.snapshot.json +++ b/tests/workbench_files/pc-laudem.snapshot.json @@ -3,14 +3,13 @@ "uuid": "00000000-0000-0000-0000-000000000000", "software": "Workbench", "version": "11.0a1", - "expectedEvents": [], "closed": false, "endTime": "2000-01-01 00:00:00+00:00", "device": { "manufacturer": "Hewlett-Packard", "model": "HP Compaq dc7900 Small Form Factor", "serialNumber": "CZC901381R", - "events": [], + "actions": [], "type": "Desktop", "chassis": "Tower" }, @@ -19,7 +18,7 @@ "manufacturer": "Intel Corp.", "model": "Intel Core2 Duo CPU E8400 @ 3.00GHz", "serialNumber": null, - "events": [], + "actions": [], "type": "Processor", "speed": 3.0, "address": 64, @@ -30,7 +29,7 @@ "manufacturer": "JEDEC ID:AD 00 00 00 00 00 00 00", "model": "HYMP125U64CP8-S6", "serialNumber": "01200000", - "events": [], + "actions": [], "type": "RamModule", "format": "DIMM", "size": 2048, @@ -41,7 +40,7 @@ "manufacturer": "Seagate", "model": "ST3160815AS", "serialNumber": "6RX7AWEZ", - "events": [], + "actions": [], "type": "HardDrive", "size": 152627, "interface": null @@ -50,7 +49,7 @@ "manufacturer": "Intel Corporation", "model": "4 Series Chipset Integrated Graphics Controller", "serialNumber": null, - "events": [], + "actions": [], "type": "GraphicCard", "memory": null }, @@ -58,7 +57,7 @@ "manufacturer": "Intel Corporation", "model": "82567LM-3 Gigabit Network Connection", "serialNumber": "00:23:7d:49:5e:31", - "events": [], + "actions": [], "type": "NetworkAdapter", "speed": 1000, "wireless": false @@ -67,7 +66,7 @@ "manufacturer": "Realtek Semiconductor Co., Ltd.", "model": "RTL8169 PCI Gigabit Ethernet Controller", "serialNumber": "00:b0:c2:02:ab:b7", - "events": [], + "actions": [], "type": "NetworkAdapter", "speed": 1000, "wireless": false @@ -76,14 +75,14 @@ "manufacturer": "Intel Corporation", "model": "82801JD/DO HD Audio Controller", "serialNumber": null, - "events": [], + "actions": [], "type": "SoundCard" }, { "manufacturer": "Hewlett-Packard", "model": "3031h", "serialNumber": "CZC901381R", - "events": [], + "actions": [], "type": "Motherboard", "usb": 8, "firewire": 0, diff --git a/tests/workbench_files/toshiba.lshw.snapshot.json b/tests/workbench_files/toshiba.lshw.snapshot.json index 0f3a2aa6..6bb68711 100644 --- a/tests/workbench_files/toshiba.lshw.snapshot.json +++ b/tests/workbench_files/toshiba.lshw.snapshot.json @@ -3,14 +3,13 @@ "uuid": "00000000-0000-0000-0000-000000000000", "software": "Workbench", "version": "11.0a1", - "expectedEvents": [], "closed": false, "endTime": "2000-01-01 00:00:00+00:00", "device": { "manufacturer": "TOSHIBA", "model": "PORTEGE R700", "serialNumber": "YA059622H", - "events": [], + "actions": [], "type": "Laptop", "chassis": "Netbook" }, @@ -19,7 +18,7 @@ "manufacturer": "Intel Corp.", "model": "Intel Core i5 CPU M 560 @ 2.67GHz", "serialNumber": null, - "events": [], + "actions": [], "type": "Processor", "speed": 1.199, "address": 64, @@ -29,7 +28,7 @@ "manufacturer": "Samsung", "model": "M471B5773CHS-CH9", "serialNumber": "67900CDD", - "events": [], + "actions": [], "type": "RamModule", "format": "SODIMM", "size": 2048, @@ -40,7 +39,7 @@ "manufacturer": "Hitachi", "model": "HTS54505", "serialNumber": "101022PBN40317KS46YE", - "events": [], + "actions": [], "type": "HardDrive", "size": 476940, "interface": null @@ -49,7 +48,7 @@ "manufacturer": "Intel Corporation", "model": "Core Processor Integrated Graphics Controller", "serialNumber": null, - "events": [], + "actions": [], "type": "GraphicCard", "memory": null }, @@ -57,7 +56,7 @@ "manufacturer": "Intel Corporation", "model": "82577LM Gigabit Network Connection", "serialNumber": "00:23:18:02:0d:94", - "events": [], + "actions": [], "type": "NetworkAdapter", "speed": 1000, "wireless": false @@ -66,7 +65,7 @@ "manufacturer": "Intel Corporation", "model": "Centrino Advanced-N 6200", "serialNumber": "00:27:10:cd:5e:44", - "events": [], + "actions": [], "type": "NetworkAdapter", "wireless": true }, @@ -74,7 +73,7 @@ "manufacturer": null, "model": null, "serialNumber": "02:80:37:ec:02:00", - "events": [], + "actions": [], "type": "NetworkAdapter", "wireless": false }, @@ -82,21 +81,21 @@ "manufacturer": "Realtek", "model": "2SF001", "serialNumber": "0x0001", - "events": [], + "actions": [], "type": "SoundCard" }, { "manufacturer": "Intel Corporation", "model": "5 Series/3400 Series Chipset High Definition Audio", "serialNumber": null, - "events": [], + "actions": [], "type": "SoundCard" }, { "manufacturer": "TOSHIBA", "model": "Portable PC", "serialNumber": null, - "events": [], + "actions": [], "type": "Motherboard", "usb": 2, "firewire": 0, diff --git a/tests/workbench_files/virtualbox-client.snapshot.json b/tests/workbench_files/virtualbox-client.snapshot.json index 1395a85d..3ba057bc 100644 --- a/tests/workbench_files/virtualbox-client.snapshot.json +++ b/tests/workbench_files/virtualbox-client.snapshot.json @@ -3,14 +3,13 @@ "uuid": "00000000-0000-0000-0000-000000000000", "software": "Workbench", "version": "11.0a1", - "expectedEvents": [], "closed": false, "endTime": "2000-01-01 00:00:00+00:00", "device": { "manufacturer": "innotek GmbH", "model": "VirtualBox", "serialNumber": "0", - "events": [], + "actions": [], "type": "Computer", "chassis": "Virtual" }, @@ -19,7 +18,7 @@ "manufacturer": null, "model": "VBOX HARDDISK", "serialNumber": "VBd9783eb3-8ef7f22a", - "events": [], + "actions": [], "type": "HardDrive", "size": 76856, "interface": null @@ -28,7 +27,7 @@ "manufacturer": "Intel Corporation", "model": "82540EM Gigabit Ethernet Controller", "serialNumber": "08:00:27:43:d0:65", - "events": [], + "actions": [], "type": "NetworkAdapter", "speed": 1000, "wireless": false @@ -37,7 +36,7 @@ "manufacturer": "Oracle Corporation", "model": "VirtualBox", "serialNumber": "0", - "events": [], + "actions": [], "type": "Motherboard", "usb": 1, "firewire": 0, diff --git a/tests/workbench_files/virtualbox-no-hdd-yes-usb.snapshot.json b/tests/workbench_files/virtualbox-no-hdd-yes-usb.snapshot.json index 2883567f..32b3f3d2 100644 --- a/tests/workbench_files/virtualbox-no-hdd-yes-usb.snapshot.json +++ b/tests/workbench_files/virtualbox-no-hdd-yes-usb.snapshot.json @@ -3,14 +3,13 @@ "uuid": "00000000-0000-0000-0000-000000000000", "software": "Workbench", "version": "11.0a1", - "expectedEvents": [], "closed": false, "endTime": "2000-01-01 00:00:00+00:00", "device": { "manufacturer": "innotek GmbH", "model": "VirtualBox", "serialNumber": "0", - "events": [], + "actions": [], "type": "Computer", "chassis": "Virtual" }, @@ -19,7 +18,7 @@ "manufacturer": "Intel Corporation", "model": "82540EM Gigabit Ethernet Controller", "serialNumber": "08:00:27:53:cb:af", - "events": [], + "actions": [], "type": "NetworkAdapter", "speed": 1000, "wireless": false @@ -28,14 +27,14 @@ "manufacturer": "Intel Corporation", "model": "82801AA AC'97 Audio Controller", "serialNumber": null, - "events": [], + "actions": [], "type": "SoundCard" }, { "manufacturer": "Oracle Corporation", "model": "VirtualBox", "serialNumber": "0", - "events": [], + "actions": [], "type": "Motherboard", "usb": 2, "firewire": 0, diff --git a/tests/workbench_files/virtualbox-no-hdd.snapshot.json b/tests/workbench_files/virtualbox-no-hdd.snapshot.json index 2883567f..32b3f3d2 100644 --- a/tests/workbench_files/virtualbox-no-hdd.snapshot.json +++ b/tests/workbench_files/virtualbox-no-hdd.snapshot.json @@ -3,14 +3,13 @@ "uuid": "00000000-0000-0000-0000-000000000000", "software": "Workbench", "version": "11.0a1", - "expectedEvents": [], "closed": false, "endTime": "2000-01-01 00:00:00+00:00", "device": { "manufacturer": "innotek GmbH", "model": "VirtualBox", "serialNumber": "0", - "events": [], + "actions": [], "type": "Computer", "chassis": "Virtual" }, @@ -19,7 +18,7 @@ "manufacturer": "Intel Corporation", "model": "82540EM Gigabit Ethernet Controller", "serialNumber": "08:00:27:53:cb:af", - "events": [], + "actions": [], "type": "NetworkAdapter", "speed": 1000, "wireless": false @@ -28,14 +27,14 @@ "manufacturer": "Intel Corporation", "model": "82801AA AC'97 Audio Controller", "serialNumber": null, - "events": [], + "actions": [], "type": "SoundCard" }, { "manufacturer": "Oracle Corporation", "model": "VirtualBox", "serialNumber": "0", - "events": [], + "actions": [], "type": "Motherboard", "usb": 2, "firewire": 0, diff --git a/tests/workbench_files/vostro-260.lshw.snapshot.json b/tests/workbench_files/vostro-260.lshw.snapshot.json index 970fe833..c1a64e3c 100644 --- a/tests/workbench_files/vostro-260.lshw.snapshot.json +++ b/tests/workbench_files/vostro-260.lshw.snapshot.json @@ -3,14 +3,13 @@ "uuid": "00000000-0000-0000-0000-000000000000", "software": "Workbench", "version": "11.0a1", - "expectedEvents": [], "closed": false, "endTime": "2000-01-01 00:00:00+00:00", "device": { "manufacturer": "Dell Inc.", "model": "Vostro 260", "serialNumber": "1Q63F5J", - "events": [], + "actions": [], "type": "Desktop", "chassis": "Tower" }, @@ -19,7 +18,7 @@ "manufacturer": "Intel Corp.", "model": "Intel Core i3-2120 CPU @ 3.30GHz", "serialNumber": null, - "events": [], + "actions": [], "type": "Processor", "speed": 1.6709470000000002, "address": 64, @@ -30,7 +29,7 @@ "manufacturer": "Micron", "model": "8JTF25664AZ-1G4M1", "serialNumber": "E192532D", - "events": [], + "actions": [], "type": "RamModule", "format": "DIMM", "size": 2048, @@ -41,7 +40,7 @@ "manufacturer": "Micron", "model": "8JTF25664AZ-1G4M1", "serialNumber": "E192532C", - "events": [], + "actions": [], "type": "RamModule", "format": "DIMM", "size": 2048, @@ -52,7 +51,7 @@ "manufacturer": "Seagate", "model": "ST500DM002-1BD14", "serialNumber": "Z2AYS308", - "events": [], + "actions": [], "type": "HardDrive", "size": 476940, "interface": null @@ -61,7 +60,7 @@ "manufacturer": "Intel Corporation", "model": "2nd Generation Core Processor Family Integrated Graphics Controller", "serialNumber": null, - "events": [], + "actions": [], "type": "GraphicCard", "memory": null }, @@ -69,7 +68,7 @@ "manufacturer": "Realtek Semiconductor Co., Ltd.", "model": "RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller", "serialNumber": "d4:be:d9:ec:2d:ea", - "events": [], + "actions": [], "type": "NetworkAdapter", "speed": 1000, "wireless": false @@ -78,14 +77,14 @@ "manufacturer": "Intel Corporation", "model": "6 Series/C200 Series Chipset Family High Definition Audio Controller", "serialNumber": null, - "events": [], + "actions": [], "type": "SoundCard" }, { "manufacturer": "Dell Inc.", "model": "0GDG8Y", "serialNumber": "..CN70163257067Z.", - "events": [], + "actions": [], "type": "Motherboard", "usb": 2, "firewire": 0, diff --git a/tests/workbench_files/xeon.snapshot.json b/tests/workbench_files/xeon.snapshot.json index 6685591d..c1a94b8e 100644 --- a/tests/workbench_files/xeon.snapshot.json +++ b/tests/workbench_files/xeon.snapshot.json @@ -3,14 +3,13 @@ "uuid": "00000000-0000-0000-0000-000000000000", "software": "Workbench", "version": "11.0a1", - "expectedEvents": [], "closed": false, "endTime": "2000-01-01 00:00:00+00:00", "device": { "manufacturer": "LENOVO", "model": "415522G", "serialNumber": "S4T6208", - "events": [], + "actions": [], "type": "Desktop", "chassis": "Tower" }, @@ -19,7 +18,7 @@ "manufacturer": "Intel Corp.", "model": "Intel Xeon CPU E5520 @ 2.27GHz", "serialNumber": null, - "events": [], + "actions": [], "type": "Processor", "speed": 1.729, "address": 64, @@ -30,7 +29,7 @@ "manufacturer": null, "model": null, "serialNumber": null, - "events": [], + "actions": [], "type": "RamModule", "format": "DIMM", "size": 2048, @@ -41,7 +40,7 @@ "manufacturer": null, "model": null, "serialNumber": null, - "events": [], + "actions": [], "type": "RamModule", "format": "DIMM", "size": 2048, @@ -52,7 +51,7 @@ "manufacturer": null, "model": null, "serialNumber": null, - "events": [], + "actions": [], "type": "RamModule", "format": "DIMM", "size": 2048, @@ -63,7 +62,7 @@ "manufacturer": null, "model": null, "serialNumber": null, - "events": [], + "actions": [], "type": "RamModule", "format": "DIMM", "size": 2048, @@ -74,7 +73,7 @@ "manufacturer": "NVIDIA Corporation", "model": "GT200GL Quadro FX 3800", "serialNumber": null, - "events": [], + "actions": [], "type": "GraphicCard", "memory": null }, @@ -82,7 +81,7 @@ "manufacturer": "NVIDIA Corporation", "model": "GF100GL Quadro 4000", "serialNumber": null, - "events": [], + "actions": [], "type": "GraphicCard", "memory": null }, @@ -90,7 +89,7 @@ "manufacturer": "Broadcom Limited", "model": "NetXtreme BCM5755 Gigabit Ethernet PCI Express", "serialNumber": "00:27:13:53:ec:62", - "events": [], + "actions": [], "type": "NetworkAdapter", "speed": 1000, "wireless": false @@ -99,7 +98,7 @@ "manufacturer": "Broadcom Limited", "model": "NetXtreme BCM5754 Gigabit Ethernet PCI Express", "serialNumber": "00:27:13:53:ec:63", - "events": [], + "actions": [], "type": "NetworkAdapter", "speed": 1000, "wireless": false @@ -108,21 +107,21 @@ "manufacturer": "NVIDIA Corporation", "model": "GF100 High Definition Audio Controller", "serialNumber": null, - "events": [], + "actions": [], "type": "SoundCard" }, { "manufacturer": "Intel Corporation", "model": "82801JI HD Audio Controller", "serialNumber": null, - "events": [], + "actions": [], "type": "SoundCard" }, { "manufacturer": "LENOVO", "model": "LENOVO", "serialNumber": null, - "events": [], + "actions": [], "type": "Motherboard", "usb": 8, "firewire": 1, diff --git a/tests/workbench_files/xiaomi.snapshot.json b/tests/workbench_files/xiaomi.snapshot.json index 41d1d5f8..af7f8a25 100644 --- a/tests/workbench_files/xiaomi.snapshot.json +++ b/tests/workbench_files/xiaomi.snapshot.json @@ -3,14 +3,13 @@ "uuid": "00000000-0000-0000-0000-000000000000", "software": "Workbench", "version": "11.0a1", - "expectedEvents": [], "closed": false, "endTime": "2000-01-01 00:00:00+00:00", "device": { "manufacturer": "Timi", "model": "TM1613", "serialNumber": "13138/00064437", - "events": [], + "actions": [], "type": "Laptop", "chassis": "Netbook" }, @@ -19,7 +18,7 @@ "manufacturer": "Intel Corp.", "model": "Intel Core i5-6200U CPU @ 2.30GHz", "serialNumber": null, - "events": [], + "actions": [], "type": "Processor", "speed": 2.684156, "address": 64, @@ -30,7 +29,7 @@ "manufacturer": "Samsung", "model": "M471A1K43BB0-CPB", "serialNumber": null, - "events": [], + "actions": [], "type": "RamModule", "format": "SODIMM", "size": 8192, @@ -40,7 +39,7 @@ "manufacturer": "Intel Corporation", "model": "Sky Lake Integrated Graphics", "serialNumber": null, - "events": [], + "actions": [], "type": "GraphicCard", "memory": null }, @@ -48,7 +47,7 @@ "manufacturer": "NVIDIA Corporation", "model": "NVIDIA Corporation", "serialNumber": null, - "events": [], + "actions": [], "type": "GraphicCard", "memory": null }, @@ -56,7 +55,7 @@ "manufacturer": "Intel Corporation", "model": "Wireless 8260", "serialNumber": "a0:c5:89:41:a8:a7", - "events": [], + "actions": [], "type": "NetworkAdapter", "wireless": true }, @@ -64,21 +63,21 @@ "manufacturer": "SunplusIT Inc", "model": "XiaoMi USB 2.0 Webcam", "serialNumber": null, - "events": [], + "actions": [], "type": "SoundCard" }, { "manufacturer": "Intel Corporation", "model": "Intel Corporation", "serialNumber": null, - "events": [], + "actions": [], "type": "SoundCard" }, { "manufacturer": "Timi", "model": "TM1613", "serialNumber": "MMG5S000000226B1P02YK", - "events": [], + "actions": [], "type": "Motherboard", "usb": 1, "firewire": 0,