debug and improve tests about rate v1
This commit is contained in:
parent
c19783954e
commit
82bf20ff3d
|
@ -1,14 +1,14 @@
|
|||
Type,Chassis,Tag 1,Tag 2,Tag 3,Serial Number,Model,Manufacturer,Registered in,Price,Processor,RAM (GB),Data Storage Size (MB),Rate,Range,Processor Rate,Processor Range,RAM Rate,RAM Range,Data Storage Rate,Data Storage Range,DataStorage 1,DataStorage 1 Manufacturer,DataStorage 1 Model,DataStorage 1 Serial Number,DataStorage 2,DataStorage 2 Manufacturer,DataStorage 2 Model,DataStorage 2 Serial Number,DataStorage 3,DataStorage 3 Manufacturer,DataStorage 3 Model,DataStorage 3 Serial Number,DataStorage 4,DataStorage 4 Manufacturer,DataStorage 4 Model,DataStorage 4 Serial Number,Display 1,Display 1 Manufacturer,Display 1 Model,Display 1 Serial Number,GraphicCard 1,GraphicCard 1 Manufacturer,GraphicCard 1 Model,GraphicCard 1 Serial Number,GraphicCard 1 Memory (MB),GraphicCard 2,GraphicCard 2 Manufacturer,GraphicCard 2 Model,GraphicCard 2 Serial Number,Motherboard 1,Motherboard 1 Manufacturer,Motherboard 1 Model,Motherboard 1 Serial Number,NetworkAdapter 1,NetworkAdapter 1 Manufacturer,NetworkAdapter 1 Model,NetworkAdapter 1 Serial Number,NetworkAdapter 2,NetworkAdapter 2 Manufacturer,NetworkAdapter 2 Model,NetworkAdapter 2 Serial Number,Processor 1,Processor 1 Manufacturer,Processor 1 Model,Processor 1 Serial Number,Processor 1 Number of cores,Processor 1 Speed (GHz),Processor 2,Processor 2 Manufacturer,Processor 2 Model,Processor 2 Serial Number,RamModule 1,RamModule 1 Manufacturer,RamModule 1 Model,RamModule 1 Serial Number,RamModule 1 Size (MB),RamModule 1 Speed (MHz),RamModule 2,RamModule 2 Manufacturer,RamModule 2 Model,RamModule 2 Serial Number,RamModule 3,RamModule 3 Manufacturer,RamModule 3 Model,RamModule 3 Serial Number,RamModule 4,RamModule 4 Manufacturer,RamModule 4 Model,RamModule 4 Serial Number,SoundCard 1,SoundCard 1 Manufacturer,SoundCard 1 Model,SoundCard 1 Serial Number,SoundCard 2,SoundCard 2 Manufacturer,SoundCard 2 Model,SoundCard 2 Serial Number
|
||||
Laptop ,Netbook , , , ,b8oaas048286 ,1001pxd ,asustek computer inc.,Wed Mar 6 18:22:05 2019 , ,intel atom cpu n455 @ 1.66ghz,1024 ,238475 ,1.98 ,Very low,1.31 ,Very low ,1.53 ,Very low ,3.76 ,Medium , , , , , , , , , , , , , , , , , , , , ,"GraphicCard 5: model atom processor d4xx/d5xx/n4xx/n5xx integrated graphics controller, S/N None", , , ,256 , , , , ,"Motherboard 10: model 1001pxd, S/N eee0123456789",eee0123456789 ,eee0123456789 ,eee0123456789 ,"NetworkAdapter 2: model ar9285 wireless network adapter, S/N 74:2f:68:8b:fd:c8",74:2f:68:8b:fd:c8 ,74:2f:68:8b:fd:c8 ,74:2f:68:8b:fd:c8 ,"NetworkAdapter 3: model ar8152 v2.0 fast ethernet, S/N 14:da:e9:42:f6:7c",14:da:e9:42:f6:7c ,14:da:e9:42:f6:7c ,14:da:e9:42:f6:7c ,"Processor 4: model intel atom cpu n455 @ 1.66ghz, S/N None", , , ,1 ,1.667 , , , , ,"RamModule 8: model None, S/N None" , , , ,1024 ,667 , , , , , , , , , , , , ,"SoundCard 6: model nm10/ich7 family high definition audio controller, S/N None", , , ,"SoundCard 7: model usb 2.0 uvc vga webcam, S/N 0x0001",0x0001 ,0x0001 ,0x0001
|
||||
NetworkAdapter , , , , ,74:2f:68:8b:fd:c8 ,ar9285 wireless network adapter ,qualcomm atheros ,Wed Mar 6 18:22:05 2019 , ,1.98 ,Very low,1.0 ,Very low,1.53 ,Very low ,3.76 ,Medium
|
||||
NetworkAdapter , , , , ,14:da:e9:42:f6:7c ,ar8152 v2.0 fast ethernet ,qualcomm atheros ,Wed Mar 6 18:22:05 2019 , ,1.98 ,Very low,1.0 ,Very low,1.53 ,Very low ,3.76 ,Medium
|
||||
Processor , , , , , ,intel atom cpu n455 @ 1.66ghz ,intel corp. ,Wed Mar 6 18:22:05 2019 , ,1.98 ,Very low,1.0 ,Very low,1.53 ,Very low ,3.76 ,Medium
|
||||
GraphicCard , , , , , ,atom processor d4xx/d5xx/n4xx/n5xx integrated graphics controller,intel corporation ,Wed Mar 6 18:22:05 2019 , ,1.98 ,Very low,1.0 ,Very low,1.53 ,Very low ,3.76 ,Medium
|
||||
SoundCard,,,,,,nm10/ich7 family high definition audio controller,intel corporation,Wed Mar 6 18:22:05 2019,,1.73,Very low,1.0,Very low,1.53,Very low,3.76,Medium
|
||||
SoundCard , , , , ,0x0001 ,usb 2.0 uvc vga webcam ,azurewave ,Wed Mar 6 18:22:05 2019 , ,1.98 ,Very low,1.0 ,Very low,1.53 ,Very low ,3.76 ,Medium
|
||||
RamModule , , , , , , , ,Wed Mar 6 18:22:05 2019, ,1.98 ,Very low,1.0 ,Very low,1.53 ,Very low ,3.76 ,Medium
|
||||
HardDrive , , , , ,e2024242cv86hj ,hts54322 ,hitachi ,Wed Mar6 18:22:05 2019 , ,1.98 ,Very low,1.0 ,Very low,1.53 ,Very low ,3.76 ,Medium
|
||||
Motherboard,,,,,eee0123456789,1001pxd,asustek computer inc.,Wed Mar 6 18:22:05 2019,,1.73,Very low,1.0,Very low,1.53,Very low,3.76,Medium
|
||||
Laptop,Netbook,,,,b8oaas048286,1001pxd,asustek computer inc.,Wed Mar 6 18:22:05 2019,,intel atom cpu n455 @ 1.66ghz,1024,238475,1.98,Very low,1.31,Very low,1.53,Very low,3.76,Medium,,,,,,,,,,,,,,,,,,,,,"GraphicCard 5: model atom processor d4xx/d5xx/n4xx/n5xx integrated graphics controller, S/N None",,,,256,,,,,"Motherboard 10: model 1001pxd, S/N eee0123456789",eee0123456789,eee0123456789,eee0123456789,"NetworkAdapter 2: model ar9285 wireless network adapter, S/N 74:2f:68:8b:fd:c8",74:2f:68:8b:fd:c8,74:2f:68:8b:fd:c8,74:2f:68:8b:fd:c8,"NetworkAdapter 3: model ar8152 v2.0 fast ethernet, S/N 14:da:e9:42:f6:7c",14:da:e9:42:f6:7c,14:da:e9:42:f6:7c,14:da:e9:42:f6:7c,"Processor 4: model intel atom cpu n455 @ 1.66ghz, S/N None",,,,1,1.667,,,,,"RamModule 8: model None, S/N None",,,,1024,667,,,,,,,,,,,,,"SoundCard 6: model nm10/ich7 family high definition audio controller, S/N None",,,,"SoundCard 7: model usb 2.0 uvc vga webcam, S/N 0x0001",0x0001,0x0001,0x0001
|
||||
NetworkAdapter,,,,,74:2f:68:8b:fd:c8,ar9285 wireless network adapter,qualcomm atheros,Wed Mar 6 18:22:05 2019,,1.98,Very low,1.31,Very low,1.53,Very low,3.76,Medium
|
||||
NetworkAdapter,,,,,14:da:e9:42:f6:7c,ar8152 v2.0 fast ethernet,qualcomm atheros,Wed Mar 6 18:22:05 2019,,1.98,Very low,1.31,Very low,1.53,Very low,3.76,Medium
|
||||
Processor,,,,,,intel atom cpu n455 @ 1.66ghz,intel corp.,Wed Mar 6 18:22:05 2019,,1.98,Very low,1.31,Very low,1.53,Very low,3.76,Medium
|
||||
GraphicCard,,,,,,atom processor d4xx/d5xx/n4xx/n5xx integrated graphics controller,intel corporation,Wed Mar 6 18:22:05 2019,,1.98,Very low,1.31,Very low,1.53,Very low,3.76,Medium
|
||||
SoundCard,,,,,,nm10/ich7 family high definition audio controller,intel corporation,Wed Mar 6 18:22:05 2019,,1.98,Very low,1.31,Very low,1.53,Very low,3.76,Medium
|
||||
SoundCard,,,,,0x0001,usb 2.0 uvc vga webcam,azurewave,Wed Mar 6 18:22:05 2019,,1.98,Very low,1.31,Very low,1.53,Very low,3.76,Medium
|
||||
RamModule,,,,,,,,Wed Mar 6 18:22:05 2019,,1.98,Very low,1.31,Very low,1.53,Very low,3.76,Medium
|
||||
HardDrive,,,,,e2024242cv86hj,hts54322,hitachi,Wed Mar6 18:22:05 2019,,1.98,Very low,1.31,Very low,1.53,Very low,3.76,Medium
|
||||
Motherboard,,,,,eee0123456789,1001pxd,asustek computer inc.,Wed Mar 6 18:22:05 2019,,1.98,Very low,1.31,Very low,1.53,Very low,3.76,Medium
|
||||
Desktop,Microtower,,,,d1s,d1ml,d1mr,Wed Mar 6 18:22:06 2019,,p1ml,0,0,0.8,Very low,1.0,Very low,1.0,Very low,1.0,Very low,,,,,,,,,,,,,,,,,,,,,"GraphicCard 12: model gc1ml, S/N gc1s",gc1s,gc1s,gc1s,,,,,,,,,,,,,,,,,,"Processor 14: model p1ml, S/N p1s",p1s,p1s,p1s,,1.6,,,,,"RamModule 13: model rm1ml, S/N rm1s",rm1s,rm1s,rm1s,,1333,,,,,,,,,,,,,,,,,,,,
|
||||
GraphicCard,,,,,gc1s,gc1ml,gc1mr,Wed Mar 6 18:22:06 2019,,0.8,Very low,1.0,Very low,1.0,Very low,1.0,Very low
|
||||
RamModule,,,,,rm1s,rm1ml,rm1mr,Wed Mar 6 18:22:06 2019,,0.8,Very low,1.0,Very low,1.0,Very low,1.0,Very low
|
||||
|
|
Can't render this file because it contains an unexpected character in line 2 and column 1818.
|
|
@ -1,15 +1,15 @@
|
|||
from decimal import Decimal
|
||||
from distutils.version import StrictVersion
|
||||
|
||||
import math
|
||||
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
|
||||
Processor, RamModule, SolidStateDrive
|
||||
from ereuse_devicehub.resources.enums import AppearanceRange, ComputerChassis, \
|
||||
FunctionalityRange
|
||||
from tests import conftest
|
||||
|
@ -28,27 +28,36 @@ def test_workbench_rate_db():
|
|||
db.session.commit()
|
||||
|
||||
|
||||
@pytest.mark.xfail(reson='Adapt rate algorithm to re-compute by passing a manual rate.')
|
||||
def test_manual_rate_after_workbench_rate(user: UserClient):
|
||||
"""Perform a WorkbenchRate and then update the device with a ManualRate.
|
||||
# TODO JN is necessary this test if in test multiples rates we are checking same case??
|
||||
def test_rate_with_multiple_visual_tests(user: UserClient):
|
||||
"""Perform a ComputerRate and then update the device with a new VisualTest.
|
||||
|
||||
Devicehub must make the final rate with the first workbench rate
|
||||
plus the new manual rate, without considering the appearance /
|
||||
functionality values of the workbench rate.
|
||||
Devicehub must make the final rate with the first computer rate
|
||||
plus the new visual test, without considering the appearance /
|
||||
functionality values of the computer rate.
|
||||
"""
|
||||
s = file('real-hp.snapshot.11')
|
||||
snapshot, _ = user.post(s, res=Snapshot)
|
||||
device, _ = user.get(res=Device, item=snapshot['device']['id'])
|
||||
assert 'B' == device['rate']['appearanceRange']
|
||||
assert device['rate'] == 1
|
||||
visual_test = next(e for e in reversed(device['actions']) if e['type'] == VisualTest.t)
|
||||
|
||||
assert visual_test['appearanceRange'] == 'B'
|
||||
assert visual_test['functionalityRange'] == 'D'
|
||||
assert device['rate']['rating'] == 2
|
||||
|
||||
# Adding new visual test
|
||||
user.post({
|
||||
'type': 'ManualRate',
|
||||
'type': 'VisualTest',
|
||||
'device': device['id'],
|
||||
'appearanceRange': 'A',
|
||||
'functionalityRange': 'A'
|
||||
}, res=Action)
|
||||
device, _ = user.get(res=Device, item=snapshot['device']['id'])
|
||||
assert 'A' == device['rate']['appearanceRange']
|
||||
visual_test = next(e for e in reversed(device['actions']) if e['type'] == VisualTest.t)
|
||||
|
||||
assert visual_test['appearanceRange'] == 'A'
|
||||
assert visual_test['functionalityRange'] == 'A'
|
||||
assert device['rate']['rating'] == 3.7
|
||||
|
||||
|
||||
@pytest.mark.usefixtures(conftest.app_context.__name__)
|
||||
|
@ -71,16 +80,13 @@ def test_price_from_rate():
|
|||
VisualTest(appearance_range=AppearanceRange.A,
|
||||
functionality_range=FunctionalityRange.A,
|
||||
device=pc)
|
||||
rate, price = RateComputer.compute(pc)
|
||||
_, price = RateComputer.compute(pc)
|
||||
|
||||
# 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')
|
||||
assert price.refurbisher.standard.amount == Decimal('32.3853')
|
||||
assert price.price >= price.retailer.standard.amount \
|
||||
+ price.platform.standard.amount \
|
||||
assert price.price >= price.retailer.standard.amount + price.platform.standard.amount \
|
||||
+ price.refurbisher.standard.amount
|
||||
assert price.retailer.warranty2.amount == Decimal('55.3085')
|
||||
assert price.platform.warranty2.amount == Decimal('25.4357')
|
||||
|
@ -88,48 +94,44 @@ def test_price_from_rate():
|
|||
assert price.warranty2 == Decimal('124.47')
|
||||
|
||||
|
||||
def test_no_rate_if_no_workbench(user: UserClient):
|
||||
def test_when_rate_must_not_compute(user: UserClient):
|
||||
"""
|
||||
Checks if compute a rate from snapshot software is not from Workbench
|
||||
Test to check if rate is computed in case of should not be calculated:
|
||||
1. Snapshot haven't visual test
|
||||
2. Snapshot software aren't Workbench
|
||||
3. Device type are not Computer
|
||||
...
|
||||
"""
|
||||
# Upload a basic snapshot
|
||||
device_no_wb = file('basic.snapshot')
|
||||
# Change snapshot software source
|
||||
device_no_wb['software'] = 'Web'
|
||||
del device_no_wb['uuid']
|
||||
del device_no_wb['elapsed']
|
||||
del device_no_wb['components']
|
||||
# Try to compute rate
|
||||
user.post(device_no_wb, res=Snapshot)
|
||||
# How to assert CannotRate Exception
|
||||
assert CannotRate
|
||||
|
||||
|
||||
def test_no_rate_if_no_visual_test(user: UserClient):
|
||||
"""
|
||||
Checks if a rate is calculated from a snapshot without visual test
|
||||
"""
|
||||
# Upload a basic snapshot
|
||||
# Checking case 1
|
||||
s = file('basic.snapshot')
|
||||
# Delete snapshot device actions
|
||||
# Delete snapshot device actions to delete VisualTest
|
||||
del s['device']['actions']
|
||||
|
||||
# Post to compute rate and check to didn't do it
|
||||
snapshot, _ = user.post(s, res=Snapshot)
|
||||
assert 'rate' not in snapshot['device']
|
||||
|
||||
# Checking case 2
|
||||
s = file('basic.snapshot')
|
||||
# Change snapshot software source
|
||||
s['software'] = 'Web'
|
||||
del s['uuid']
|
||||
del s['elapsed']
|
||||
del s['components']
|
||||
|
||||
# Post to compute rate and check to didn't do it
|
||||
snapshot, _ = user.post(s, res=Snapshot)
|
||||
assert 'rate' not in snapshot['device']
|
||||
|
||||
# Checking case 3
|
||||
s = file('keyboard.snapshot')
|
||||
|
||||
# Post to compute rate and check to didn't do it
|
||||
snapshot, _ = user.post(s, res=Snapshot)
|
||||
device, _ = user.get(res=Device, item=snapshot['device']['id'])
|
||||
# How to assert CannotRate Exception
|
||||
assert 'rate' not in snapshot['device']
|
||||
|
||||
|
||||
def test_no_rate_if_device_is_not_computer(user: UserClient):
|
||||
"""
|
||||
Checks if a rate is calculated from a device that is not a computer.
|
||||
"""
|
||||
# Upload a basic snapshot of a device type
|
||||
device = file('keyboard.snapshot')
|
||||
user.post(device, res=Snapshot)
|
||||
assert CannotRate
|
||||
|
||||
|
||||
@pytest.mark.xfail(reason='Test not developed')
|
||||
@pytest.mark.usefixtures(conftest.app_context.__name__)
|
||||
def test_multiple_rates(user: UserClient):
|
||||
"""Tests submitting two rates from Workbench,
|
||||
ensuring that the tests / benchmarks...
|
||||
|
@ -138,3 +140,73 @@ def test_multiple_rates(user: UserClient):
|
|||
This ensures that rates only takes the last version of actions
|
||||
and components (in case device has new components, for example).
|
||||
"""
|
||||
pc = Desktop(chassis=ComputerChassis.Tower)
|
||||
hdd = HardDrive(size=476940)
|
||||
hdd.actions_one.add(BenchmarkDataStorage(read_speed=126, write_speed=29.8))
|
||||
cpu = Processor(cores=2, speed=3.4)
|
||||
cpu.actions_one.add(BenchmarkProcessor(rate=27136.44))
|
||||
pc.components = {
|
||||
hdd,
|
||||
RamModule(size=4096, speed=1600),
|
||||
RamModule(size=2048, speed=1600),
|
||||
cpu
|
||||
}
|
||||
|
||||
# Add test visual with functionality and appearance range
|
||||
VisualTest(appearance_range=AppearanceRange.A,
|
||||
functionality_range=FunctionalityRange.A,
|
||||
device=pc)
|
||||
|
||||
rate1, price1 = RateComputer.compute(pc)
|
||||
|
||||
# asserts rate1 ...
|
||||
# TODO JN is also necessary add asserts for component_range??
|
||||
assert rate1.data_storage == 4.02
|
||||
assert rate1.processor == 3.95
|
||||
assert rate1.ram == 3.8
|
||||
|
||||
assert rate1.appearance == 0.3
|
||||
assert rate1.functionality == 0.4
|
||||
|
||||
assert rate1.rating == 4.62
|
||||
# assert rate1.rating_range == 'High'
|
||||
|
||||
# TODO JN better option to get and assert price??
|
||||
assert price1.price == Decimal('92.4001')
|
||||
assert math.isclose(rate1.price.price, 92.40, rel_tol=0.001)
|
||||
|
||||
hdd = SolidStateDrive(size=476940)
|
||||
hdd.actions_one.add(BenchmarkDataStorage(read_speed=222, write_speed=169))
|
||||
cpu = Processor(cores=1, speed=3.0)
|
||||
cpu.actions_one.add(BenchmarkProcessor(rate=16069.44))
|
||||
# TODO JN best form to update pc components/benchmarks??
|
||||
pc.components = {
|
||||
hdd,
|
||||
RamModule(size=2048, speed=1067),
|
||||
RamModule(size=2048, speed=1067),
|
||||
cpu
|
||||
}
|
||||
|
||||
# Add test visual with functionality and appearance range
|
||||
VisualTest(appearance_range=AppearanceRange.B,
|
||||
functionality_range=FunctionalityRange.B,
|
||||
device=pc)
|
||||
|
||||
# asserts pc characteristics/benchmarks/tests change
|
||||
|
||||
rate2, price2 = RateComputer.compute(pc)
|
||||
|
||||
# asserts rate2 ...
|
||||
|
||||
assert rate2.data_storage == 4.27
|
||||
assert rate2.processor == 3.61
|
||||
assert rate2.ram == 4.12
|
||||
|
||||
assert rate2.appearance == 0
|
||||
assert rate2.functionality == -0.5
|
||||
|
||||
assert rate2.rating == 3.37
|
||||
# assert rate2.rating_range == 'Medium'
|
||||
|
||||
assert rate2.price.price == Decimal('67.4001')
|
||||
assert math.isclose(price2.price, 67.40, rel_tol=0.001)
|
||||
|
|
|
@ -1,18 +1,24 @@
|
|||
"""
|
||||
Tests of compute rating for every component in a Device
|
||||
Rates test done:
|
||||
This file test all corner cases when compute score v1.0.
|
||||
|
||||
First test to compute rate for every component in isolation
|
||||
todo rewrite some corner cases using range(min,max) characteristics
|
||||
in devices/schemas
|
||||
Components in Score v1:
|
||||
-DataStorage
|
||||
-RamModule
|
||||
-Processor
|
||||
|
||||
Then some test compute rate with all components that use the a1lgorithm
|
||||
|
||||
Excluded cases in tests
|
||||
|
||||
- No Processor
|
||||
- No indispensable Benchmarks (Processor and Data Storage)
|
||||
-
|
||||
|
||||
"""
|
||||
import math
|
||||
|
||||
import pytest
|
||||
|
||||
from ereuse_devicehub.resources.action.models import BenchmarkDataStorage, BenchmarkProcessor, \
|
||||
|
@ -21,6 +27,7 @@ from ereuse_devicehub.resources.action.rate.workbench.v1_0 import DataStorageRat
|
|||
RamRate, RateAlgorithm
|
||||
from ereuse_devicehub.resources.device.models import Desktop, HardDrive, Processor, RamModule
|
||||
from ereuse_devicehub.resources.enums import AppearanceRange, ComputerChassis, FunctionalityRange
|
||||
from tests import conftest
|
||||
|
||||
|
||||
def test_rate_data_storage_rate():
|
||||
|
@ -77,15 +84,13 @@ def test_rate_no_data_storage():
|
|||
"""
|
||||
Test without data storage devices
|
||||
"""
|
||||
|
||||
hdd_null = HardDrive()
|
||||
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
|
||||
|
||||
|
||||
# RAM MODULE DEVICE TEST
|
||||
|
||||
|
||||
def test_rate_ram_rate():
|
||||
"""
|
||||
Test to check if compute ram rate have same value than previous score version
|
||||
|
@ -169,8 +174,6 @@ def test_rate_no_ram_module():
|
|||
assert ram_rate is None
|
||||
|
||||
|
||||
# PROCESSOR DEVICE TEST
|
||||
|
||||
def test_rate_processor_rate():
|
||||
"""
|
||||
Test to check if compute processor rate have same value than previous score version
|
||||
|
@ -208,12 +211,15 @@ def test_rate_processor_rate_2cores():
|
|||
assert math.isclose(processor_rate, 3.93, rel_tol=0.002)
|
||||
|
||||
|
||||
# TODO JN if delete processor default score for benchmark_cpu
|
||||
|
||||
|
||||
def test_rate_processor_with_null_cores():
|
||||
"""
|
||||
Test with processor device have null number of cores
|
||||
"""
|
||||
cpu = Processor(cores=None, speed=3.3)
|
||||
cpu.actions_one.add(BenchmarkProcessor())
|
||||
cpu.actions_one.add(BenchmarkProcessor(rate=0))
|
||||
|
||||
processor_rate = ProcessorRate().compute(cpu)
|
||||
|
||||
|
@ -232,80 +238,35 @@ def test_rate_processor_with_null_speed():
|
|||
assert math.isclose(processor_rate, 1.06, rel_tol=0.001)
|
||||
|
||||
|
||||
def test_rate_computer_rate():
|
||||
""" Test rate v1
|
||||
|
||||
pc_1193 = Computer()
|
||||
price = 92.2
|
||||
# add components characteristics of pc with id = 1193
|
||||
hdd_1969 = HardDrive(size=476940)
|
||||
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.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)
|
||||
# add component rate
|
||||
HDD_rate = 4.02
|
||||
RAM_rate = 3.79
|
||||
Processor_rate = 3.95
|
||||
Rating = 4.61
|
||||
# TODO JN add price asserts in rate computers??
|
||||
|
||||
pc_1201 = Computer()
|
||||
price = 69.6
|
||||
hdd_3054 = HardDrive(size=476940)
|
||||
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.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)
|
||||
# add component rate
|
||||
HDD_rate = 4.07
|
||||
RAM_rate = 2.02
|
||||
Processor_rate = 3.93
|
||||
Rating = 3.48
|
||||
|
||||
pc_79 = Computer()
|
||||
price = VeryLow
|
||||
hdd_81 = HardDrive(size=76319)
|
||||
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.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)
|
||||
# add component rate
|
||||
HDD_rate = 2.61
|
||||
RAM_rate = 1.99
|
||||
Processor_rate = 1
|
||||
Rating = 1.58
|
||||
@pytest.mark.usefixtures(conftest.auth_app_context.__name__)
|
||||
def test_rate_computer_1193():
|
||||
"""
|
||||
Test rate computer characteristics:
|
||||
- 2 module ram
|
||||
- processor with 2 cores
|
||||
|
||||
pc_798 = Computer()
|
||||
price = 50
|
||||
hdd_1556 = HardDrive(size=152587)
|
||||
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.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)
|
||||
# add component rate
|
||||
HDD_rate = 3.7
|
||||
RAM_rate = 1
|
||||
Processor_rate = 4.09
|
||||
Rating = 2.5
|
||||
Data get it from R score from DH pc with id = 1193
|
||||
|
||||
pc_1193 = Computer()
|
||||
price = 92.2
|
||||
hdd_1969 = HardDrive(size=476940)
|
||||
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.actions_one.add(BenchmarkProcessor(rate=27136.44))
|
||||
pc_1193.components.add(hdd_1969, ram1, ram2, cpu)
|
||||
rate_pc_1193 = WorkbenchRate(appearance_range=AppearanceRange.A,
|
||||
functionality_range=FunctionalityRange.A)
|
||||
HDD_rate = 4.02
|
||||
RAM_rate = 3.79
|
||||
Processor_rate = 3.95
|
||||
Rating = 4.61
|
||||
"""
|
||||
|
||||
# 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.actions_one.add(BenchmarkDataStorage(read_speed=126, write_speed=29.8))
|
||||
|
@ -333,7 +294,32 @@ def test_rate_computer_rate():
|
|||
|
||||
assert math.isclose(rate_pc.rating, 4.61, rel_tol=0.001)
|
||||
|
||||
# Create a new Computer with components characteristics of pc with id = 1201
|
||||
|
||||
@pytest.mark.usefixtures(conftest.auth_app_context.__name__)
|
||||
def test_rate_computer_1201():
|
||||
"""
|
||||
Test rate computer characteristics:
|
||||
- only 1 module ram
|
||||
- processor 2 cores
|
||||
|
||||
Data get it from R score from DH pc with id = 1201
|
||||
|
||||
pc_1201 = Computer()
|
||||
price = 69.6
|
||||
hdd_3054 = HardDrive(size=476940)
|
||||
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.actions_one.add(BenchmarkProcessor(rate=26339.48))
|
||||
pc_1201.components.add(hdd_3054, ram1, cpu)
|
||||
rate_pc_1201 = WorkbenchRate(appearance_range=AppearanceRange.B,
|
||||
functionality_range=FunctionalityRange.A)
|
||||
HDD_rate = 4.07
|
||||
RAM_rate = 2.02
|
||||
Processor_rate = 3.93
|
||||
Rating = 3.48
|
||||
"""
|
||||
|
||||
pc_test = Desktop(chassis=ComputerChassis.Tower)
|
||||
data_storage = HardDrive(size=476940)
|
||||
data_storage.actions_one.add(BenchmarkDataStorage(read_speed=158, write_speed=34.7))
|
||||
|
@ -360,7 +346,37 @@ def test_rate_computer_rate():
|
|||
|
||||
assert math.isclose(rate_pc.rating, 3.48, rel_tol=0.001)
|
||||
|
||||
# Create a new Computer with components characteristics of pc with id = 79
|
||||
|
||||
@pytest.mark.usefixtures(conftest.auth_app_context.__name__)
|
||||
def test_rate_computer_multiple_ram_module():
|
||||
"""
|
||||
Test rate computer characteristics:
|
||||
- only 1 module ram
|
||||
- processor 2 cores
|
||||
|
||||
Data get it from R score from DH pc with id = 79
|
||||
|
||||
pc_79 = Computer()
|
||||
price = VeryLow
|
||||
hdd_81 = HardDrive(size=76319)
|
||||
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.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)
|
||||
# add component rate
|
||||
HDD_rate = 2.61
|
||||
RAM_rate = 1.99
|
||||
Processor_rate = 1
|
||||
Rating = 1.58
|
||||
"""
|
||||
|
||||
pc_test = Desktop(chassis=ComputerChassis.Tower)
|
||||
data_storage = HardDrive(size=76319)
|
||||
data_storage.actions_one.add(BenchmarkDataStorage(read_speed=72.2, write_speed=24.3))
|
||||
|
@ -389,7 +405,34 @@ def test_rate_computer_rate():
|
|||
|
||||
assert rate_pc.rating == 1.57
|
||||
|
||||
# Create a new Computer with components characteristics of pc with id = 798
|
||||
|
||||
@pytest.mark.usefixtures(conftest.auth_app_context.__name__)
|
||||
def test_rate_computer_one_ram_module():
|
||||
"""
|
||||
Test rate computer characteristics:
|
||||
- only 1 module ram
|
||||
- processor 2 cores
|
||||
|
||||
Data get it from R score from DH pc with id = 798
|
||||
|
||||
pc_798 = Computer()
|
||||
price = 50
|
||||
hdd_1556 = HardDrive(size=152587)
|
||||
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.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)
|
||||
# add component rate
|
||||
HDD_rate = 3.7
|
||||
RAM_rate = 1
|
||||
Processor_rate = 4.09
|
||||
Rating = 2.5
|
||||
"""
|
||||
|
||||
pc_test = Desktop(chassis=ComputerChassis.Tower)
|
||||
data_storage = HardDrive(size=152587)
|
||||
data_storage.actions_one.add(BenchmarkDataStorage(read_speed=78.1, write_speed=24.4))
|
||||
|
|
|
@ -135,15 +135,7 @@ def test_export_keyboard(user: UserClient):
|
|||
assert fixture_csv[1] == export_csv[1], 'Component information are not equal'
|
||||
|
||||
|
||||
@pytest.mark.xfail(reson='Need to develop.')
|
||||
def test_export_multiple_computers(user: UserClient):
|
||||
"""
|
||||
Test to export multiples computers devices
|
||||
"""
|
||||
pass
|
||||
|
||||
|
||||
@pytest.mark.xfail(reson='Need to debug and rewrite it.')
|
||||
# TODO JN fix why components also have all rate fields
|
||||
def test_export_multiple_different_devices(user: UserClient):
|
||||
"""
|
||||
Test a export multiple different device types (like computers, keyboards, monitors, ...)
|
||||
|
@ -154,7 +146,6 @@ def test_export_multiple_different_devices(user: UserClient):
|
|||
snapshot_keyboard, _ = user.post(file('keyboard.snapshot'), res=Snapshot)
|
||||
snapshot_monitor, _ = user.post(file('computer-monitor.snapshot'), res=Snapshot)
|
||||
|
||||
# need query param??
|
||||
csv_str, _ = user.get(res=documents.DocumentDef.t,
|
||||
item='devices/',
|
||||
accept='text/csv')
|
||||
|
@ -178,3 +169,11 @@ def test_export_multiple_different_devices(user: UserClient):
|
|||
fixture_csv[i] = fixture_csv[i][:8] + fixture_csv[i][9:]
|
||||
|
||||
assert fixture_csv[i] == export_csv[i], 'Some fields are not equal'
|
||||
|
||||
|
||||
@pytest.mark.xfail(reason='Debug why rate computed correctly but when get info change value')
|
||||
def test_temp_rate_rating(user: UserClient):
|
||||
snapshot, _ = user.post(file('real-eee-1001pxd.snapshot.11'), res=Snapshot)
|
||||
from ereuse_devicehub.resources.device.models import Device
|
||||
device, _ = user.get(res=Device, item=snapshot['device']['id'])
|
||||
assert device['rate']['rating'] == 1.98
|
||||
|
|
|
@ -127,9 +127,7 @@ def test_snapshot_component_add_remove(user: UserClient):
|
|||
# Components contain parent
|
||||
assert all(c['parent'] == pc1_id for c in pc1['components'])
|
||||
# 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'])
|
||||
|
@ -384,11 +382,10 @@ def test_test_data_storage(user: UserClient):
|
|||
assert incidence_test['severity'] == 'Error'
|
||||
|
||||
|
||||
# TODO change to RateMonitor
|
||||
@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, action_types=('ManualRate',))
|
||||
snapshot_and_check(user, s, action_types=('RateMonitor',))
|
||||
# todo check that ManualRate has generated an AggregateRate
|
||||
|
||||
|
||||
|
@ -398,7 +395,6 @@ def test_snapshot_mobile_smartphone_imei_manual_rate(user: UserClient):
|
|||
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
|
||||
|
||||
|
||||
@pytest.mark.xfail(reason='Test not developed')
|
||||
|
@ -484,11 +480,10 @@ def snapshot_and_check(user: UserClient,
|
|||
return snapshot
|
||||
|
||||
|
||||
# TODO change to which Rate??
|
||||
@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, action_types=('ManualRate',))
|
||||
snapshot = snapshot_and_check(user, s, action_types=('VisualTest',))
|
||||
keyboard = snapshot['device']
|
||||
assert keyboard['layout'] == 'ES'
|
||||
|
||||
|
|
|
@ -9,6 +9,7 @@ import pytest
|
|||
|
||||
from ereuse_devicehub.client import UserClient
|
||||
from ereuse_devicehub.resources.action import models as em
|
||||
from ereuse_devicehub.resources.action.models import VisualTest, RateComputer
|
||||
from ereuse_devicehub.resources.device.exceptions import NeedsId
|
||||
from ereuse_devicehub.resources.device.models import Device
|
||||
from ereuse_devicehub.resources.tag.model import Tag
|
||||
|
@ -61,8 +62,9 @@ def test_workbench_server_condensed(user: UserClient):
|
|||
assert device['rate']['closed']
|
||||
assert device['rate']['severity'] == 'Info'
|
||||
assert device['rate']['rating'] == 0
|
||||
assert device['rate']['type'] == 'RateComputer'
|
||||
assert device['actions'][2]['type'] == 'VisualTest'
|
||||
assert device['rate']['type'] == RateComputer.t
|
||||
# TODO JN why haven't same order in actions??
|
||||
assert device['actions'][2]['type'] == VisualTest.t
|
||||
assert device['actions'][2]['appearanceRange'] == 'A'
|
||||
assert device['actions'][2]['functionalityRange'] == 'B'
|
||||
assert device['tags'][0]['id'] == 'tag1'
|
||||
|
|
Reference in a new issue