Skip to content

Commit 0283676

Browse files
au650680au650680
andauthored
Fixes clustering and model update (#40)
Clustering and mode tracking is added with example code for both and a shared module for both. Other small changes have been made. --------- Co-authored-by: au650680 <au650680@uni.au.dk>
1 parent ce47244 commit 0283676

File tree

10 files changed

+24
-22
lines changed

10 files changed

+24
-22
lines changed

config/test.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"MQTT": {
3-
"host": "mqtt.eclipseprojects.io",
3+
"host": "public.mqttserver.eu",
44
"port": 1883,
55
"userId": "",
66
"password": "",

pytest.ini

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[pytest]
22
minversion = 8.3
3-
pythonpath = src src/data src/methods tests
3+
pythonpath = src src/data src/methods tests models
44
testpaths =
55
tests
66
addopts = --cov=src --ignore=src/examples --cov-report=term-missing --cov-report=html

src/pt_mock/publish_samples.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -196,8 +196,8 @@ def main(config_path: str = "config/R-PI.json",
196196
offset_path: str = "config/offset.json",
197197
run_once: bool = False) -> None:
198198
config = load_config(config_path)
199-
mqtt_config = config["sysid"]
200-
mqtt_client, _, _ = setup_mqtt_client(mqtt_config)
199+
mqtt_config = config["MQTT"]
200+
mqtt_client = setup_mqtt_client(mqtt_config,mqtt_config["TopicsToSubscribe"][0])
201201

202202
mqtt_client.connect(mqtt_config["host"], mqtt_config["port"], 60)
203203
mqtt_client.loop_start()

tests/integration/data/accel/hbk/test_accelerometer.py

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,14 +19,16 @@ def mqtt_client():
1919
mqtt_config["ClientID"] = f"test_{uuid.uuid4().hex[:6]}"
2020

2121
topic_index = 0
22-
client, selected_topic = setup_mqtt_client(mqtt_config, topic_index)
22+
client = setup_mqtt_client(mqtt_config, topic_index)
2323

2424
client.connect(mqtt_config["host"], mqtt_config["port"], 60)
2525
client.loop_start()
2626
connect_delay = float(os.environ.get("MQTT_CONNECT_DELAY"))
2727
time.sleep(connect_delay)
2828

29-
yield client, selected_topic
29+
topic = mqtt_config["TopicsToSubscribe"][0]
30+
31+
yield client, topic
3032
client.loop_stop()
3133
client.disconnect()
3234

tests/integration/data/accel/hbk/test_aligner.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ def mqtt_client_and_config():
1919
mqtt_config = config["MQTT"].copy()
2020
mqtt_config["ClientID"] = f"test_{uuid.uuid4().hex[:6]}"
2121

22-
client, _ = setup_mqtt_client(mqtt_config, topic_index=0)
22+
client = setup_mqtt_client(mqtt_config, mqtt_config["TopicsToSubscribe"][0])
2323
client.connect(mqtt_config["host"], mqtt_config["port"], 60)
2424
client.loop_start()
2525
time.sleep(connect_delay)
@@ -37,7 +37,7 @@ def mqtt_setup():
3737
mqtt_config["ClientID"] = f"test_{uuid.uuid4().hex[:6]}"
3838

3939
# Setup MQTT client once
40-
client, _ = setup_mqtt_client(mqtt_config, 0)
40+
client = setup_mqtt_client(mqtt_config, mqtt_config["TopicsToSubscribe"][0])
4141
client.connect(mqtt_config["host"], mqtt_config["port"], 60)
4242
client.loop_start()
4343
time.sleep(connect_delay)

tests/integration/data/comm/test_mqtt.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -58,8 +58,8 @@ def test_setup_mqtt_client_invalid_index():
5858
"port": 1883
5959
}
6060

61-
with pytest.raises(ValueError):
62-
setup_mqtt_client(dummy_config, topic_index=5)
61+
with pytest.raises(IndexError):
62+
setup_mqtt_client(dummy_config, dummy_config["TopicsToSubscribe"][5])
6363

6464

6565
def test_on_connect_callback_failure():
@@ -118,7 +118,7 @@ def test_setup_mqtt_client():
118118
"port": 1883
119119
}
120120
# Unpack the returned tuple
121-
client, selected_topic = setup_mqtt_client(dummy_config)
121+
client = setup_mqtt_client(dummy_config, dummy_config["TopicsToSubscribe"][0])
122122

123123
# Check that the client has the correct client_id.
124124
client_id = client._client_id.decode() if isinstance(client._client_id, bytes) else client._client_id

tests/integration/methods/test_sys_id.py

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,6 @@ def test_sysid():
3939
stored_cov_damping = stored_data['cov_damping']
4040
stored_mode_shapes = stored_data['mode_shapes']
4141

42-
4342
tolerance = 0.4
4443
assert np.allclose(frequencies, stored_frequencies, atol=tolerance, equal_nan=True), "Frequencies do not match!"
4544
assert np.allclose(cov_freq, stored_cov_freq, atol=tolerance, equal_nan=True), "Covariance frequencies do not match!"
@@ -90,11 +89,11 @@ def test_get_oma_results_integration(mocker):
9089

9190
mock_aligner.extract.return_value = (mock_data, mock_timestamp)
9291

93-
sysid_output, timestamp = sysid.get_sysid_results(number_of_minutes, mock_aligner, fs)
92+
sysid_output, timestamp = sysid.get_sysid_output(number_of_minutes, mock_aligner, fs)
9493

9594
assert isinstance(sysid_output, dict)
9695
assert "Fn_poles" in sysid_output
97-
assert timestamp == mock_timestamp
96+
assert timestamp == mock_timestamp.isoformat()
9897

9998

10099
def test_oma_raises_on_empty_data():

tests/integration/mock_pt_test/test_publish_samples.py

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -19,17 +19,16 @@
1919
@pytest.fixture(scope="function")
2020
def mqtt_client():
2121
config = load_config("config/test.json")
22-
mqtt_config = config["sysid"].copy()
22+
mqtt_config = config["MQTT"].copy()
2323
mqtt_config["ClientID"] = f"test_{uuid.uuid4().hex[:6]}"
24-
client = setup_mqtt_client(mqtt_config)
24+
client = setup_mqtt_client(mqtt_config,mqtt_config["TopicsToSubscribe"][0])
2525
client.connect(mqtt_config["host"], mqtt_config["port"], 60)
2626
client.loop_start()
2727
time.sleep(1.0)
2828
yield client
2929
client.loop_stop()
3030
client.disconnect()
3131

32-
3332
def test_send_batch_actual_publish(mqtt_client):
3433
samples = [0.1 * i for i in range(SAMPLES_PER_MESSAGE)]
3534
batch = Batch(
@@ -81,7 +80,7 @@ def test_main_falls_back_when_offset_config_is_corrupt(mock_file):
8180
}
8281
}
8382
mock_sensor.return_value = MagicMock()
84-
mock_mqtt.return_value = (MagicMock(), "topic")
83+
mock_mqtt.return_value = (MagicMock())
8584
with patch("pt_mock.publish_samples.time.sleep", return_value=None):
8685
main(run_once=True)
8786
assert mock_send.call_count == 2

tests/unit/methods/test_sys_id_unit.py

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -118,7 +118,8 @@ def test_publish_oma_results_retries_and_publishes_once(mocker):
118118
aligner = MagicMock()
119119
aligner.client = MagicMock()
120120

121-
publish_sysid_output(0.1, aligner, mock_client, "test/topic", fs)
121+
# publish_sysid_output(0.1, aligner, mock_client, "test/topic", fs)
122+
publish_sysid_output(mock_client, ["test/topic"], 0.1, fs)
122123

123124
assert mock_client.publish.called
124125
assert mock_client.publish.call_count == 1
@@ -129,15 +130,16 @@ def test_setup_client_with_multiple_topics(mocker):
129130
mqtt_config = {
130131
"host": "localhost",
131132
"port": 1883,
132-
"topics": ["topic1", "topic2"]
133+
"TopicsToSubscribe": ["topic1", "topic2"]
133134
}
134135

135136
extract_mock = mocker.patch("methods.sysid.extract_fs_from_metadata", return_value=123.0)
136137

137138
mock_mqtt_client = MagicMock()
138-
mocker.patch("methods.sysid.setup_mqtt_client", return_value=(mock_mqtt_client, None))
139+
mocker.patch("methods.sysid.setup_mqtt_client", return_value=(mock_mqtt_client))
139140

140141
client, fs = setup_client(mqtt_config)
142+
client.loop_stop()
141143

142144
extract_mock.assert_called_once_with(mqtt_config)
143145
client.connect.assert_called_once_with("localhost", 1883, 60)

tests/unit/mock_pt_test/test_publish_samples.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -104,7 +104,7 @@ def test_main_executes_sensor_loop_once(self, _, mock_adxl,
104104
mock_load_config.return_value = {
105105
"MQTT": {
106106
"ClientID": "test-client",
107-
"host": "mqtt.eclipseprojects.io",
107+
"host": "public.mqttserver.eu",
108108
"port": 1883,
109109
"userId": "",
110110
"password": "",

0 commit comments

Comments
 (0)