Skip to content

Commit 425ae54

Browse files
Allowing CR1000X properties to be set
1 parent e423963 commit 425ae54

File tree

2 files changed

+79
-13
lines changed

2 files changed

+79
-13
lines changed

src/iotdevicesimulator/devices.py

Lines changed: 41 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
import asyncio
44
import logging
5+
from iotdevicesimulator import __version__ as package_version
56
from iotdevicesimulator.queries import CosmosQuery
67
from iotdevicesimulator.db import BaseDatabase, Oracle
78
from iotdevicesimulator.messaging.core import MessagingBaseClass
@@ -287,6 +288,42 @@ class CR1000XDevice(BaseDevice):
287288

288289
device_type = "CR1000X"
289290

291+
serial_number: str = "00000"
292+
"""Serial number of the device instance."""
293+
294+
os_version: str = f"{device_type}.Std.07.02"
295+
"""Operating system installed on the device."""
296+
297+
program_name: str = f"CPU:iotdevicesimulator-{package_version}.CR1X"
298+
"""Name of logger program being run."""
299+
300+
table_name: str = "default"
301+
"""Name of table being submitted by logger."""
302+
303+
def __init__(
304+
self,
305+
*args,
306+
serial_number: str | None = None,
307+
os_version: str | None = None,
308+
program_name: str | None = None,
309+
table_name: str | None = None,
310+
**kwargs,
311+
):
312+
"""Initialises the class"""
313+
super().__init__(*args, **kwargs)
314+
315+
if serial_number is not None:
316+
self.serial_number = str(serial_number)
317+
318+
if os_version is not None:
319+
self.os_version = str(os_version)
320+
321+
if program_name is not None:
322+
self.program_name = str(program_name)
323+
324+
if table_name is not None:
325+
self.table_name = str(table_name)
326+
290327
@staticmethod
291328
def _build_field(
292329
name: str,
@@ -333,11 +370,11 @@ def _format_payload(self, payload: dict) -> dict:
333370
"signature": 111111,
334371
"environment": {
335372
"station_name": self.device_id,
336-
"table_name": "no table",
373+
"table_name": self.table_name,
337374
"model": self.device_type,
338-
"serial_no": "00000",
339-
"os_version": f"{self.device_type}.Std.07.02",
340-
"prog_name": "CPU:not_real.CR1X",
375+
"serial_no": self.serial_number,
376+
"os_version": self.os_version,
377+
"prog_name": self.program_name,
341378
},
342379
}
343380

src/tests/test_devices.py

Lines changed: 38 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -454,6 +454,7 @@ def setUp(self):
454454
self.conn = MockMessageConnection()
455455
self.maxDiff = None
456456

457+
457458
def test_instantiation(self):
458459
"""Tests that object can be instantiated."""
459460

@@ -463,6 +464,34 @@ def test_instantiation(self):
463464
self.assertIsInstance(inst, BaseDevice)
464465
self.assertEqual(inst.device_type, "CR1000X")
465466

467+
@parameterized.expand([123456, "newserial", 123.2])
468+
def test_serial_number_set(self, arg):
469+
"""Tests that serial number gets set when argument given."""
470+
inst = CR1000XDevice("device", self.db, self.conn, serial_number=arg)
471+
472+
self.assertEqual(inst.serial_number, str(arg))
473+
474+
@parameterized.expand(["test os version", "newserial", 123.2])
475+
def test_os_version_set(self, arg):
476+
"""Tests that os_version gets set when argument given."""
477+
inst = CR1000XDevice("device", self.db, self.conn, os_version=arg)
478+
479+
self.assertEqual(inst.os_version, str(arg))
480+
481+
@parameterized.expand([123456, "newserial", 123.2])
482+
def test_program_name_set(self, arg):
483+
"""Tests that program name gets set when argument given."""
484+
inst = CR1000XDevice("device", self.db, self.conn, program_name=arg)
485+
486+
self.assertEqual(inst.program_name, str(arg))
487+
488+
@parameterized.expand([123456, "newserial", 123.2])
489+
def test_table_name_set(self, arg):
490+
"""Tests that table_name gets set when argument given."""
491+
inst = CR1000XDevice("device", self.db, self.conn, table_name=arg)
492+
493+
self.assertEqual(inst.table_name, str(arg))
494+
466495
def test_list_payload_formatting(self):
467496
payload = [1,"data", "true", True]
468497

@@ -475,12 +504,12 @@ def test_list_payload_formatting(self):
475504
"transaction": 0,
476505
"signature": 111111,
477506
"environment": {
478-
"station_name": "my_device",
479-
"table_name": "no table",
507+
"station_name": device.device_id,
508+
"table_name": device.table_name,
480509
"model": device.device_type,
481-
"serial_no": "00000",
482-
"os_version": f"{device.device_type}.Std.07.02",
483-
"prog_name": "CPU:not_real.CR1X"
510+
"serial_no": device.serial_number,
511+
"os_version": device.os_version,
512+
"prog_name": device.program_name
484513
},
485514
"fields": [
486515
{
@@ -540,11 +569,11 @@ def test_dict_payload_formatting(self):
540569
"signature": 111111,
541570
"environment": {
542571
"station_name": device.device_id,
543-
"table_name": "no table",
572+
"table_name": device.table_name,
544573
"model": device.device_type,
545-
"serial_no": "00000",
546-
"os_version": f"{device.device_type}.Std.07.02",
547-
"prog_name": "CPU:not_real.CR1X"
574+
"serial_no": device.serial_number,
575+
"os_version": device.os_version,
576+
"prog_name": device.program_name
548577
},
549578
"fields": [
550579
{

0 commit comments

Comments
 (0)