ODM2 / ODM2DataSharingPortal

A Python-Django web application enabling users to upload, share, and display data from their environmental monitoring sites via the app's ODM2 database. Data can either be automatically streamed from Internet of Things (IoT) devices, manually uploaded via CSV files, or manually entered into forms.
BSD 3-Clause "New" or "Revised" License
31 stars 8 forks source link

Virtual Sensor Node for better test coverage #720

Open neilh10 opened 4 months ago

neilh10 commented 4 months ago

I'm defining a suite of core tests that can be run instead of a physical sensor node. This is following on from https://github.com/ODM2/ODM2DataSharingPortal/issues/705

The advantage of this is it can provide near instant feedback for alpha changes in an ODM2 instance, and allow characterization of the implementation. This also supports a developer to understand what type of logs are needed as per https://github.com/ODM2/ODM2DataSharingPortal/issues/718

This is very typical of software best management practices, and attempting to achieve the lowest cost of hours invested in software development and quickest turn around time.

Years of experience with software systems has shown that if software isn't tested, then software bugs dribble out over subsequent years - requiring heroic efforts to find them, and costly budgets to pay for it.

Engineering theory describes the benefit in providing a sharp impulse to a system, to test its response. This is likened to the old process of testing a bell cast in bronze. If it rings with a pleasant characteristic frequency and gracefully decays the system is good. If it cracks, or has a chaotic response - then its failed. In software terms - a failure is usually easy to detect when it is being tested, and much harder to determine root causes when it is running with real world conditions.

I would hope to do this in conjunction with alpha staging of the ODM2 whenever possible. It could be used to exercise https://github.com/ODM2/ODM2DataSharingPortal/issues/649 defined in https://github.com/ODM2/ODM2DataSharingPortal/pull/674 and then in https://github.com/ODM2/ODM2DataSharingPortal/issues/688

It does require that there be some system objectives for the performance of a specific implementation, and typically this is done as a forward looking prediction of system loading.

neilh10 commented 1 month ago

@ptomasula implemented a virtual node for stimulating and characterizing MMW with https://github.com/ODM2/ODM2DataSharingPortal/issues/729 which is a great short term alpha release check and excellent long term stability characterization.

The URL for the dashboard is: https://bit.ly/mmw-uptime

Not being clear about the full extent of what is implemented with https://www.site24x7.com/, I'm envisioning that this test is for the alpha release stage, to create a pulse of known data, that can be verified as being delivered.