koder aka kdanilov | 23e6bdf | 2016-12-24 02:18:54 +0200 | [diff] [blame^] | 1 | import array |
| 2 | from typing import Dict, List, Any, Tuple, Optional |
koder aka kdanilov | 7022706 | 2016-11-26 23:23:21 +0200 | [diff] [blame] | 3 | |
| 4 | |
koder aka kdanilov | 23e6bdf | 2016-12-24 02:18:54 +0200 | [diff] [blame^] | 5 | class TimeSerie: |
| 6 | name = None # type: str |
| 7 | start_at = None # type: int |
| 8 | step = None # type: int |
| 9 | data = None # type: List[int] |
| 10 | second_axis_size = None # type: int |
| 11 | raw = None # type: Optional[bytes] |
koder aka kdanilov | 7022706 | 2016-11-26 23:23:21 +0200 | [diff] [blame] | 12 | |
koder aka kdanilov | 23e6bdf | 2016-12-24 02:18:54 +0200 | [diff] [blame^] | 13 | def __init__(self, name: str, raw: Optional[bytes], second_axis_size: int, |
| 14 | start_at: int, step: int, data: array.array) -> None: |
| 15 | self.name = name |
| 16 | self.start_at = start_at |
| 17 | self.step = step |
| 18 | self.second_axis_size = second_axis_size |
| 19 | self.data = data # type: ignore |
| 20 | self.raw = raw |
koder aka kdanilov | 7022706 | 2016-11-26 23:23:21 +0200 | [diff] [blame] | 21 | |
koder aka kdanilov | 23e6bdf | 2016-12-24 02:18:54 +0200 | [diff] [blame^] | 22 | def meta(self) -> Dict[str, Any]: |
| 23 | return { |
| 24 | "start_at": self.start_at, |
| 25 | "step": self.step, |
| 26 | "second_axis_size": self.second_axis_size |
| 27 | } |
koder aka kdanilov | 7022706 | 2016-11-26 23:23:21 +0200 | [diff] [blame] | 28 | |
| 29 | |
| 30 | class SensorInfo: |
| 31 | """Holds information from a single sensor from a single node""" |
| 32 | node_id = None # type: str |
| 33 | source_id = None # type: str |
| 34 | sensor_name = None # type: str |
| 35 | begin_time = None # type: int |
| 36 | end_time = None # type: int |
koder aka kdanilov | 23e6bdf | 2016-12-24 02:18:54 +0200 | [diff] [blame^] | 37 | data = None # type: List[int] |
koder aka kdanilov | 7022706 | 2016-11-26 23:23:21 +0200 | [diff] [blame] | 38 | |
| 39 | def __init__(self, node_id: str, source_id: str, sensor_name: str) -> None: |
| 40 | self.node_id = node_id |
| 41 | self.source_id = source_id |
| 42 | self.sensor_name = sensor_name |
| 43 | |
| 44 | |
| 45 | class TestInfo: |
| 46 | """Contains done test information""" |
| 47 | name = None # type: str |
| 48 | iteration_name = None # type: str |
| 49 | nodes = None # type: List[str] |
| 50 | start_time = None # type: int |
| 51 | stop_time = None # type: int |
| 52 | params = None # type: Dict[str, Any] |
| 53 | config = None # type: str |
| 54 | node_ids = None # type: List[str] |
| 55 | |
| 56 | |
koder aka kdanilov | 23e6bdf | 2016-12-24 02:18:54 +0200 | [diff] [blame^] | 57 | class NodeTestResults: |
| 58 | name = None # type: str |
| 59 | node_id = None # type: str |
| 60 | summary = None # type: str |
| 61 | |
| 62 | load_start_at = None # type: int |
| 63 | load_stop_at = None # type: int |
| 64 | |
| 65 | series = None # type: Dict[str, TimeSerie] |
| 66 | |
| 67 | def __init__(self, name: str, node_id: str, summary: str) -> None: |
| 68 | self.name = name |
| 69 | self.node_id = node_id |
| 70 | self.summary = summary |
| 71 | self.series = {} |
| 72 | self.extra_logs = {} # type: Dict[str, bytes] |
| 73 | |
| 74 | |
koder aka kdanilov | 7022706 | 2016-11-26 23:23:21 +0200 | [diff] [blame] | 75 | class FullTestResult: |
| 76 | test_info = None # type: TestInfo |
| 77 | |
| 78 | # TODO(koder): array.array or numpy.array? |
| 79 | # {(node_id, perf_metrics_name): values} |
koder aka kdanilov | 23e6bdf | 2016-12-24 02:18:54 +0200 | [diff] [blame^] | 80 | performance_data = None # type: Dict[Tuple[str, str], List[int]] |
koder aka kdanilov | 7022706 | 2016-11-26 23:23:21 +0200 | [diff] [blame] | 81 | |
| 82 | # {(node_id, perf_metrics_name): values} |
| 83 | sensors_data = None # type: Dict[Tuple[str, str, str], SensorInfo] |