srcfl / srcful-gateway

Srcful energy gateway to connect your solar inverter and mine src-token
https://srcful.io
MIT License
3 stars 1 forks source link

Increase test coverage #35

Open h0bb3 opened 11 months ago

h0bb3 commented 11 months ago

Made a list of test coverage (removed non-important and 100% coverage) we should strive to improve this. Esp for stuff below 50%

Name                                        Stmts   Miss  Cover
---------------------------------------------------------------
bootstrap.py                                   67     10    85%
crypto\crypto.py                               59     25    58%
inverters\InverterTCP.py                       73     41    44%
inverters\inverter.py                          37     16    57%
tasks\checkForWebRequestTask.py                19     11    42%
tasks\harvest.py                               57      1    98%
tasks\openInverterTask.py                      40     26    35%
tasks\openWiFiConTask.py                       15      8    47%
tasks\srcfulAPICallTask.py                     60      7    88%
tasks\task.py                                  14      5    64%
web\get\hello.py                                6      2    67%
web\get\root.py                                35     30    14%
web\post\initialize.py                         16     10    38%
web\post\inverter.py                           20     11    45%
web\post\wifi.py                               16      9    44%
web\server.py                                  94     35    63%
wifi\wifi.py                                   45     31    31%

And here is a list of untested functions per file. We should strive to get 100% here as every function should be called at least once in a test case as this is the only way to smoke test python stuff for simple errors.

Name                                               Funcs   Miss     Cover   Missing
-----------------------------------------------------------------------------------
app.py                                          4      4        0%   getChipInfo, main, mainLoop, time_ms
bootstrap.py                                    8      4       50%   Bootstrap._createFileIfNotExists, Bootstrap._createOpenInverterTask, Bootstrap._createTask, BootstrapSaver.appendInverter
crypto\crypto.py                               11      7       36%   base64UrlEncode, buildJWT, getChipInfo, getDeviceName, getPublicKey, getSerialNumber, getSignature
inverters\InverterTCP.py                       14     14        0%   InverterTCP.__init__, InverterTCP.close, InverterTCP.getAddress, InverterTCP.getHost, InverterTCP.getPort, InverterTCP.getType, InverterTCP.open, InverterTCP.populateRegisters, InverterTCP.readEnergy, InverterTCP.readFrequency, InverterTCP.readHarvestData, InverterTCP.readHoldingRegisters, InverterTCP.readInputRegisters, InverterTCP.readPower
inverters\inverter.py                          17     16        5%   Inverter.__init__, Inverter.close, Inverter.getAddress, Inverter.getHost, Inverter.getPort, Inverter.getType, Inverter.isTerminated, Inverter.open, Inverter.populateRegisters, Inverter.readEnergy, Inverter.readFrequency, Inverter.readHarvestData, Inverter.readHoldingRegisters, Inverter.readInputRegisters, Inverter.readPower, Inverter.terminate
is_egwtp_response, parse_egwtp_request, CheckForBLERequest.__init__, CheckForBLERequest.execute
tasks\checkForWebRequestTask.py                 2      1       50%   CheckForWebRequest.execute
tasks\getNameTask.py                            3      1       66%   GetNameTask._on200
tasks\initializeTask.py                         3      1       66%   InitializeTask._on200
tasks\openInverterTask.py                       4      4        0%   OpenInverterTask.__init__, OpenInverterTask.execute, ReadFreq.__init__, ReadFreq.execute
tasks\openWiFiConTask.py                        2      2        0%   OpenWiFiConTask.__init__, OpenWiFiConTask.execute
tasks\srcfulAPICallTask.py                      7      1       85%   argToStr
tasks\task.py                                   4      4        0%   Task.__eq__, Task.__init__, Task.__lt__, Task.execute
web\server.py                                   6      4       33%   requestHandlerFactory, Server.__del__, Server.handle_request, Server.request_queue_size
web\get\hello.py                                1      1        0%   Handler.doGet
web\get\root.py                                 3      3        0%   cryptoStuff, inverterForm, Handler.doGet
web\post\initialize.py                          2      2        0%   Handler.doPost, Handler.jsonSchema
web\post\inverter.py                            2      2        0%   Handler.doPost, Handler.jsonSchema
web\post\wifi.py                                2      2        0%   Handler.doPost, Handler.jsonSchema
wifi\wifi.py                                    4      4        0%   WiFiHandler._AddConnection, WiFiHandler._DeleteConnections, WiFiHandler.__init__, WiFiHandler.connect
h0bb3 commented 11 months ago

If you decide to work on this for some file, create a new issue for that file and remove the file from the list above/and or add a link to the new issue as a comment.

davmoz commented 8 months ago
Name Stmts Miss Cover
server/init.py 0 0 100%
server/main.py 37 37 0%
server/app.py 65 65 0%
server/bootstrap.py 69 11 84%
server/crypto/init.py 0 0 100%
server/crypto/crypto.py 59 25 58%
server/crypto/cryptoauthlib_mock.py 1408 1105 22%
server/crypto/exceptions_mock.py 36 0 100%
server/crypto/hazmat_mock.py 12 8 33%
server/crypto/status_mock.py 61 10 84%
server/inverters/InverterTCP.py 75 41 45%
server/inverters/init.py 0 0 100%
server/inverters/inverter.py 37 16 57%
server/inverters/inverter_types.py 11 0 100%
server/request.py 2 0 100%
server/rest_request_test.py 0 0 100%
server/tasks/init.py 0 0 100%
server/tasks/checkForBluetoothRequestTask.py 39 39 0%
server/tasks/checkForWebRequestTask.py 19 11 42%
server/tasks/getNameTask.py 19 1 95%
server/tasks/harvest.py 61 1 98%
server/tasks/initializeTask.py 23 0 100%
server/tasks/openInverterTask.py 40 26 35%
server/tasks/openWiFiConTask.py 17 10 41%
server/tasks/srcfulAPICallTask.py 60 7 88%
server/tasks/task.py 14 5 64%
server/test/init.py 0 0 100%
server/test/bootstrap_test.py 36 0 100%
server/test/crypto/init.py 0 0 100%
server/test/crypto/crypto_test.py 19 0 100%
server/test/request_test.py 3 0 100%
server/test/tasks/init.py 0 0 100%
server/test/tasks/checkForWebRequestTask_test.py 4 0 100%
server/test/tasks/getNameTask_test.py 13 0 100%
server/test/tasks/harvest_test.py 177 3 98%
server/test/tasks/intitializeTask_test.py 31 0 100%
server/test/tasks/srcfulAPICallTask_test.py 79 0 100%
server/test/web/init.py 0 0 100%
server/test/web/get/crypto_test.py 31 3 90%
server/test/web/get/name_test.py 41 2 95%
server/test/web/post/init.py 0 0 100%
server/test/web/post/initialize_test.py 2 0 100%
server/test/web/post/logger_test.py 29 0 100%
server/test/web/server_test.py 50 5 90%
server/web/init.py 0 0 100%
server/web/get/init.py 5 0 100%
server/web/get/crypto.py 10 0 100%
server/web/get/hello.py 6 2 67%
server/web/get/logger.py 16 11 31%
server/web/get/name.py 12 0 100%
server/web/get/root.py 35 30 14%
server/web/post/init.py 4 0 100%
server/web/post/initialize.py 16 10 38%
server/web/post/inverter.py 20 11 45%
server/web/post/logger.py 22 1 95%
server/web/post/wifi.py 19 10 47%
server/web/server.py 89 35 61%
server/wifi/init.py 0 0 100%
server/wifi/wifi.py 56 43 23%
TOTAL 2989 1584 47%
davmoz commented 6 months ago

Coverage report: 59% coverage.py v7.3.2, created at 2023-12-28 00:18 +0100

Module statements missing excluded coverage
server/init.py 0 0 0 100%
server/main.py 37 37 0 0%
server/app.py 64 50 0 22%
server/bootstrap.py 83 19 0 77%
server/crypto/init.py 0 0 0 100%
server/crypto/crypto.py 59 19 0 68%
server/crypto/cryptoauthlib_mock.py 1408 1098 0 22%
server/crypto/exceptions_mock.py 36 0 0 100%
server/crypto/hazmat_mock.py 12 0 0 100%
server/crypto/status_mock.py 61 10 0 84%
server/inverters/InverterRTU.py 86 45 0 48%
server/inverters/InverterTCP.py 84 47 0 44%
server/inverters/init.py 0 0 0 100%
server/inverters/inverter.py 88 24 0 73%
server/inverters/inverter_types.py 13 0 0 100%
server/request.py 2 0 0 100%
server/rest_request_test.py 0 0 0 100%
server/tasks/init.py 0 0 0 100%
server/tasks/checkForWebRequestTask.py 19 11 0 42%
server/tasks/getNameTask.py 19 1 0 95%
server/tasks/harvest.py 61 1 0 98%
server/tasks/initializeTask.py 23 0 0 100%
server/tasks/modbusWriteTask.py 37 2 0 95%
server/tasks/openInverterTask.py 40 26 0 35%
server/tasks/openWiFiConTask.py 17 8 0 53%
server/tasks/srcfulAPICallTask.py 60 7 0 88%
server/tasks/task.py 14 5 0 64%
server/test/init.py 0 0 0 100%
server/test/app_test.py 1 0 0 100%
server/test/bootstrap_test.py 43 2 0 95%
server/test/crypto/init.py 0 0 0 100%
server/test/crypto/crypto_test.py 19 0 0 100%
server/test/request_test.py 3 0 0 100%
server/test/tasks/init.py 0 0 0 100%
server/test/tasks/checkForWebRequestTask_test.py 4 0 0 100%
server/test/tasks/getNameTask_test.py 13 0 0 100%
server/test/tasks/harvest_test.py 177 3 0 98%
server/test/tasks/intitializeTask_test.py 31 0 0 100%
server/test/tasks/modbusWriteTask_test.py 24 0 0 100%
server/test/tasks/srcfulAPICallTask_test.py 79 0 0 100%
server/test/web/init.py 0 0 0 100%
server/test/web/get/crypto_test.py 31 3 0 90%
server/test/web/get/hello_test.py 14 0 0 100%
server/test/web/get/inverter_test.py 20 0 0 100%
server/test/web/get/logger_test.py 15 0 0 100%
server/test/web/get/modbus_test.py 122 0 0 100%
server/test/web/get/name_test.py 41 2 0 95%
server/test/web/get/network_test.py 15 0 0 100%
server/test/web/get/root_test.py 10 0 0 100%
server/test/web/post/init.py 0 0 0 100%
server/test/web/post/createInverter_test.py 27 0 0 100%
server/test/web/post/echo_test.py 14 0 0 100%
server/test/web/post/initialize_test.py 15 0 0 100%
server/test/web/post/logger_test.py 40 0 0 100%
server/test/web/post/modbus_test.py 51 0 0 100%
server/test/web/post/wifi_test.py 24 1 0 96%
server/test/web/server_test.py 89 5 0 94%
server/web/init.py 0 0 0 100%
server/web/handler/init.py 3 0 0 100%
server/web/handler/get/init.py 8 0 0 100%
server/web/handler/get/crypto.py 12 0 0 100%
server/web/handler/get/hello.py 7 0 0 100%
server/web/handler/get/inverter.py 13 1 0 92%
server/web/handler/get/logger.py 18 0 0 100%
server/web/handler/get/modbus.py 40 1 0 98%
server/web/handler/get/name.py 14 0 0 100%
server/web/handler/get/network.py 7 0 0 100%
server/web/handler/get/root.py 38 1 0 97%
server/web/handler/handler.py 7 2 0 71%
server/web/handler/post/init.py 7 0 0 100%
server/web/handler/post/echo.py 7 0 0 100%
server/web/handler/post/initialize.py 20 3 0 85%
server/web/handler/post/inverterRTU.py 24 6 0 75%
server/web/handler/post/inverterTCP.py 24 6 0 75%
server/web/handler/post/logger.py 23 1 0 96%
server/web/handler/post/modbus.py 45 4 0 91%
server/web/handler/post/wifi.py 21 3 0 86%
server/web/handler/requestData.py 9 0 0 100%
server/web/server.py 110 25 0 77%
server/wifi/init.py 0 0 0 100%
server/wifi/wifi.py 70 53 0 24%
Total 3772 1532 0 59%

coverage.py v7.3.2, created at 2023-12-28 00:18 +0100

h0bb3 commented 5 months ago

Mocking is nice but in python it is easy to mock a method that does not exist in the mocked class and the class under test will work in test but not in productions.

A trick we can use is to test that the method mocked exists in the mocked class using

assert 'get_config' in dir(Inverter)
inverter.get_config.return_value = exp

This is probably a good way of fortifying our tests.

h0bb3 commented 5 months ago

web.server is missing tests for the http method handling this seems like a rather important part to fortify.

h0bb3 commented 5 months ago

Coverage report: 49% created at 2024-01-28 18:16 +0100

Module statements missing excluded coverage
server__main__.py 36 36 0 0%
server\tasks\modbusLiveLog.py 23 23 0 0%
server\web\handler\post\livelog.py 28 28 0 0%
server\wifi\scan.py 60 48 0 20%
server\app.py 69 54 0 22%
server\crypto\cryptoauthlib_mock.py 1408 1087 0 23%
server\wifi\wifi.py 71 53 0 25%
server\tasks\checkForWebRequestTask.py 19 10 0 47%
server\web\handler\delete\inverter.py 14 7 0 50%
server\web\handler\get\wifi.py 28 14 0 50%
server\tasks\openWiFiConTask.py 19 9 0 53%
server\tasks\task.py 15 7 0 53%
server\tasks\openInverterTask.py 37 16 0 57%
server\inverters\inverter.py 87 33 0 62%
server\web\server.py 149 55 0 63%
server\crypto\crypto.py 63 17 0 73%
server\web\handler\handler.py 25 6 0 76%
server\web\handler\post\inverterRTU.py 25 6 0 76%
server\web\handler\post\inverterTCP.py 23 5 0 78%
server\bootstrap.py 83 17 0 80%
server\inverters\registerValue.py 85 15 0 82%
server\web\handler\post\initialize.py 20 3 0 85%
server\web\handler\post\wifi.py 22 3 0 86%
server\web\handler\post\modbus.py 49 6 0 88%
server\crypto\status_mock.py 61 7 0 89%
server\inverters\InverterTCP.py 29 3 0 90%
server\tasks\modbusWriteTask.py 41 4 0 90%
server\tasks\srcfulAPICallTask.py 67 7 0 90%
server\inverters\InverterRTU.py 32 3 0 91%
server\web\handler\get\inverter.py 15 1 0 93%
server\tasks\initializeTask.py 33 2 0 94%
server\tasks\getNameTask.py 20 1 0 95%
server\web\handler\post\logger.py 24 1 0 96%
server\blackboard.py 37 1 0 97%
server\web\handler\get\modbus.py 33 1 0 97%
server\tasks\harvest.py 60 1 0 98%
server__init__.py 0 0 0 100%
server\crypto__init__.py 0 0 0 100%
server\crypto\exceptions_mock.py 36 0 0 100%
server\crypto\hazmat_mock.py 12 0 0 100%
server\inverters__init__.py 0 0 0 100%
server\inverters\inverter_types.py 13 0 0 100%
server\request.py 2 0 0 100%
server\rest_request_test.py 0 0 0 100%
server\tasks__init__.py 0 0 0 100%
server\web__init__.py 0 0 0 100%
server\web\handler__init__.py 4 0 0 100%
server\web\handler\delete__init__.py 1 0 0 100%
server\web\handler\get__init__.py 10 0 0 100%
server\web\handler\get\crypto.py 13 0 0 100%
server\web\handler\get\hello.py 9 0 0 100%
server\web\handler\get\logger.py 19 0 0 100%
server\web\handler\get\name.py 15 0 0 100%
server\web\handler\get\network.py 9 0 0 100%
server\web\handler\get\root.py 22 0 0 100%
server\web\handler\get\uptime.py 8 0 0 100%
server\web\handler\post__init__.py 7 0 0 100%
server\web\handler\post\echo.py 9 0 0 100%
server\web\handler\requestData.py 8 0 0 100%
server\wifi__init__.py 0 0 0 100%
Total 3107 1590 0 49%
davmoz commented 5 months ago

Coverage report: 51% created at 2024-02-13 23:30 Focus: server/inverters/inverter.py (85%)

Module statements missing excluded coverage
server/init.py 0 0 0 100%
server/crypto/init.py 0 0 0 100%
server/crypto/exceptions_mock.py 36 0 0 100%
server/crypto/hazmat_mock.py 12 0 0 100%
server/inverters/InverterRTU.py 33 0 0 100%
server/inverters/InverterTCP.py 28 0 0 100%
server/inverters/init.py 0 0 0 100%
server/inverters/enums.py 11 0 0 100%
server/inverters/supported_inverters/init.py 0 0 0 100%
server/inverters/supported_inverters/inverters/growatt.py 2 0 0 100%
server/inverters/supported_inverters/inverters/huawei.py 2 0 0 100%
server/inverters/supported_inverters/inverters/lqt40s.py 2 0 0 100%
server/inverters/supported_inverters/inverters/solaredge.py 2 0 0 100%
server/inverters/supported_inverters/inverters/sungrow.py 2 0 0 100%
server/inverters/supported_inverters/inverters/sungrow_hybrid.py 2 0 0 100%
server/request.py 2 0 0 100%
server/rest_request_test.py 0 0 0 100%
server/tasks/init.py 0 0 0 100%
server/tasks/harvest.py 69 0 0 100%
server/web/init.py 0 0 0 100%
server/web/handler/init.py 4 0 0 100%
server/web/handler/delete/init.py 1 0 0 100%
server/web/handler/get/init.py 12 0 0 100%
server/web/handler/get/crypto.py 13 0 0 100%
server/web/handler/get/hello.py 9 0 0 100%
server/web/handler/get/logger.py 19 0 0 100%
server/web/handler/get/name.py 15 0 0 100%
server/web/handler/get/network.py 15 0 0 100%
server/web/handler/get/root.py 22 0 0 100%
server/web/handler/get/supported.py 11 0 0 100%
server/web/handler/get/uptime.py 8 0 0 100%
server/web/handler/get/version.py 9 0 0 100%
server/web/handler/post/init.py 7 0 0 100%
server/web/handler/post/echo.py 9 0 0 100%
server/web/handler/requestData.py 8 0 0 100%
server/wifi/init.py 0 0 0 100%
server/blackboard.py 57 1 0 98%
server/inverters/supported_inverters/profiles.py 34 1 0 97%
server/web/handler/get/modbus.py 33 1 0 97%
server/web/handler/post/logger.py 24 1 0 96%
server/tasks/getNameTask.py 20 1 0 95%
server/tasks/initializeTask.py 33 2 0 94%
server/web/handler/get/inverter.py 15 1 0 93%
server/tasks/modbusWriteTask.py 41 4 0 90%
server/tasks/srcfulAPICallTask.py 67 7 0 90%
server/crypto/status_mock.py 61 7 0 89%
server/web/handler/post/modbus.py 49 6 0 88%
server/web/handler/post/wifi.py 22 3 0 86%
server/inverters/inverter.py 103 15 0 85%
server/web/handler/post/initialize.py 20 3 0 85%
server/inverters/registerValue.py 85 15 0 82%
server/bootstrap.py 84 17 0 80%
server/web/handler/post/inverterTCP.py 23 5 0 78%
server/web/handler/handler.py 25 6 0 76%
server/web/handler/post/inverterRTU.py 25 6 0 76%
server/crypto/crypto.py 63 17 0 73%
server/web/server.py 149 55 0 63%
server/tasks/scanWiFiTask.py 25 10 0 60%
server/tasks/openInverterTask.py 38 17 0 55%
server/tasks/openWiFiConTask.py 19 9 0 53%
server/tasks/task.py 15 7 0 53%
server/web/handler/delete/inverter.py 14 7 0 50%
server/web/handler/get/wifi.py 28 14 0 50%
server/tasks/checkForWebRequestTask.py 19 10 0 47%
server/wifi/wifi.py 71 53 0 25%
server/app.py 69 53 0 23%
server/crypto/cryptoauthlib_mock.py 1408 1087 0 23%
server/wifi/scan.py 60 46 0 23%
server/main.py 55 55 0 0%
server/tasks/modbusLiveLog.py 23 23 0 0%
server/web/handler/post/livelog.py 28 28 0 0%
Total 3270 1593 0 51%
h0bb3 commented 4 months ago

pytest --cov=server server_unit_test/

---------- coverage: platform win32, python 3.11.5-final-0 -----------
Name                                                               Stmts   Miss  Cover
--------------------------------------------------------------------------------------
server\__init__.py                                                     0      0   100%
server\__main__.py                                                    55     55     0%
server\app.py                                                         69     53    23%
server\blackboard.py                                                  57      1    98%
server\bootstrap.py                                                   83     17    80%
server\crypto\__init__.py                                              0      0   100%
server\crypto\crypto.py                                               63     17    73%
server\crypto\cryptoauthlib_mock.py                                 1408   1087    23%
server\crypto\exceptions_mock.py                                      36      0   100%
server\crypto\hazmat_mock.py                                          12      0   100%
server\crypto\status_mock.py                                          61      7    89%
server\inverters\InverterRTU.py                                       33      2    94%
server\inverters\InverterTCP.py                                       28      0   100%
server\inverters\__init__.py                                           0      0   100%
server\inverters\enums.py                                             24      0   100%
server\inverters\inverter.py                                         103     29    72%
server\inverters\registerValue.py                                     85     15    82%
server\inverters\supported_inverters\__init__.py                       0      0   100%
server\inverters\supported_inverters\inverters\goodwe.py               2      0   100%
server\inverters\supported_inverters\inverters\growatt.py              2      0   100%
server\inverters\supported_inverters\inverters\huawei.py               2      0   100%
server\inverters\supported_inverters\inverters\lqt40s.py               2      0   100%
server\inverters\supported_inverters\inverters\solaredge.py            2      0   100%
server\inverters\supported_inverters\inverters\sungrow.py              2      0   100%
server\inverters\supported_inverters\inverters\sungrow_hybrid.py       2      0   100%
server\inverters\supported_inverters\profiles.py                      36      0   100%
server\request.py                                                      2      0   100%
server\rest_request_test.py                                            0      0   100%
server\tasks\__init__.py                                               0      0   100%
server\tasks\checkForWebRequestTask.py                                19     10    47%
server\tasks\getNameTask.py                                           20      1    95%
server\tasks\harvest.py                                               69      0   100%
server\tasks\initializeTask.py                                        33      2    94%
server\tasks\modbusLiveLog.py                                         23     23     0%
server\tasks\modbusWriteTask.py                                       41      4    90%
server\tasks\openInverterTask.py                                      38     17    55%
server\tasks\openWiFiConTask.py                                       19      9    53%
server\tasks\scanWiFiTask.py                                          25     10    60%
server\tasks\srcfulAPICallTask.py                                     67      7    90%
server\tasks\task.py                                                  15      7    53%
server\web\__init__.py                                                 0      0   100%
server\web\handler\__init__.py                                         4      0   100%
server\web\handler\delete\__init__.py                                  1      0   100%
server\web\handler\delete\inverter.py                                 14      7    50%
server\web\handler\get\__init__.py                                    12      0   100%
server\web\handler\get\crypto.py                                      13      0   100%
server\web\handler\get\hello.py                                        9      0   100%
server\web\handler\get\inverter.py                                    15      1    93%
server\web\handler\get\logger.py                                      19      0   100%
server\web\handler\get\modbus.py                                      33      1    97%
server\web\handler\get\name.py                                        15      0   100%
server\web\handler\get\network.py                                     15      0   100%
server\web\handler\get\root.py                                        22      0   100%
server\web\handler\get\supported.py                                   11      0   100%
server\web\handler\get\uptime.py                                       8      0   100%
server\web\handler\get\version.py                                      9      0   100%
server\web\handler\get\wifi.py                                        28     14    50%
server\web\handler\handler.py                                         25      6    76%
server\web\handler\post\__init__.py                                    7      0   100%
server\web\handler\post\echo.py                                        9      0   100%
server\web\handler\post\initialize.py                                 20      3    85%
server\web\handler\post\inverterRTU.py                                25      6    76%
server\web\handler\post\inverterTCP.py                                23      5    78%
server\web\handler\post\livelog.py                                    28     28     0%
server\web\handler\post\logger.py                                     24      1    96%
server\web\handler\post\modbus.py                                     49      6    88%
server\web\handler\post\wifi.py                                       22      3    86%
server\web\handler\requestData.py                                      8      0   100%
server\web\server.py                                                 149     55    63%
server\wifi\__init__.py                                                0      0   100%
server\wifi\scan.py                                                   60     46    23%
server\wifi\wifi.py                                                   71     53    25%
--------------------------------------------------------------------------------------
TOTAL                                                               3286   1608    51%
h0bb3 commented 3 months ago

pytest --cov=server server_unit_test/

Sadly decreased by 10% - I think some effort should be put here to up the numbers esp parts wit 0%

Name                                                               Stmts   Miss  Cover
--------------------------------------------------------------------------------------
server/__init__.py                                                     0      0   100%
server/__main__.py                                                    55     55     0%
server/app.py                                                         77     60    22%
server/blackboard.py                                                 108      4    96%
server/bootstrap.py                                                   91     24    74%
server/crypto/__init__.py                                              0      0   100%
server/crypto/crypto.py                                               63     21    67%
server/crypto/cryptoauthlib_mock.py                                 1408   1408     0%
server/crypto/exceptions_mock.py                                      36     36     0%
server/crypto/hazmat_mock.py                                          12     12     0%
server/crypto/status_mock.py                                          61     61     0%
server/inverters/ModbusRTU.py                                         33      0   100%
server/inverters/ModbusTCP.py                                         28      0   100%
server/inverters/SolarmanTCP.py                                       37     17    54%
server/inverters/__init__.py                                           0      0   100%
server/inverters/enums.py                                             30      0   100%
server/inverters/inverter.py                                          93     20    78%
server/inverters/registerValue.py                                     86     17    80%
server/inverters/supported_inverters/__init__.py                       0      0   100%
server/inverters/supported_inverters/inverters/deye.py                 2      0   100%
server/inverters/supported_inverters/inverters/deye_hybrid.py          2      0   100%
server/inverters/supported_inverters/inverters/goodwe.py               2      0   100%
server/inverters/supported_inverters/inverters/growatt.py              2      0   100%
server/inverters/supported_inverters/inverters/huawei.py               2      0   100%
server/inverters/supported_inverters/inverters/lqt40s.py               2      0   100%
server/inverters/supported_inverters/inverters/solaredge.py            2      0   100%
server/inverters/supported_inverters/inverters/sungrow.py              2      0   100%
server/inverters/supported_inverters/inverters/sungrow_hybrid.py       2      0   100%
server/inverters/supported_inverters/profiles.py                      38      1    97%
server/message.py                                                     26      0   100%
server/request.py                                                      2      0   100%
server/rest_request_test.py                                            0      0   100%
server/tasks/__init__.py                                               0      0   100%
server/tasks/checkForWebRequestTask.py                                15      6    60%
server/tasks/getNameTask.py                                           20      1    95%
server/tasks/harvest.py                                               69      0   100%
server/tasks/harvestFactory.py                                        12      1    92%
server/tasks/initializeTask.py                                        33      2    94%
server/tasks/itask.py                                                 11      5    55%
server/tasks/modbusLiveLog.py                                         23     23     0%
server/tasks/modbusWriteTask.py                                       41      4    90%
server/tasks/openInverterTask.py                                      40     19    52%
server/tasks/openWiFiConTask.py                                       19      9    53%
server/tasks/scanWiFiTask.py                                          25     10    60%
server/tasks/srcfulAPICallTask.py                                     67      7    90%
server/tasks/task.py                                                  18      8    56%
server/web/__init__.py                                                 0      0   100%
server/web/handler/__init__.py                                         4      0   100%
server/web/handler/delete/__init__.py                                  2      0   100%
server/web/handler/delete/inverter.py                                 14      7    50%
server/web/handler/delete/notification.py                             11      0   100%
server/web/handler/get/__init__.py                                    13      0   100%
server/web/handler/get/crypto.py                                      13      0   100%
server/web/handler/get/hello.py                                        9      0   100%
server/web/handler/get/inverter.py                                    15      1    93%
server/web/handler/get/logger.py                                      19      0   100%
server/web/handler/get/modbus.py                                      33      1    97%
server/web/handler/get/name.py                                        15      0   100%
server/web/handler/get/network.py                                     15      0   100%
server/web/handler/get/notification.py                                23      2    91%
server/web/handler/get/root.py                                        22      0   100%
server/web/handler/get/supported.py                                   11      0   100%
server/web/handler/get/uptime.py                                       8      0   100%
server/web/handler/get/version.py                                      9      0   100%
server/web/handler/get/wifi.py                                        28     14    50%
server/web/handler/handler.py                                         25      6    76%
server/web/handler/post/__init__.py                                    8      0   100%
server/web/handler/post/echo.py                                        9      0   100%
server/web/handler/post/initialize.py                                 20      3    85%
server/web/handler/post/livelog.py                                    28     28     0%
server/web/handler/post/logger.py                                     24      1    96%
server/web/handler/post/modbus.py                                     49      6    88%
server/web/handler/post/modbusRTU.py                                  25      6    76%
server/web/handler/post/modbusSolarman.py                             23     12    48%
server/web/handler/post/modbusTCP.py                                  23      5    78%
server/web/handler/post/wifi.py                                       22      3    86%
server/web/handler/requestData.py                                      9      0   100%
server/web/server.py                                                 148     55    63%
server/wifi/__init__.py                                                0      0   100%
server/wifi/scan.py                                                   60     36    40%
server/wifi/wifi.py                                                   71     36    49%
--------------------------------------------------------------------------------------
TOTAL                                                               3503   2053    41%
h0bb3 commented 3 months ago

one thing that scews the statis is the mocked crypto stuff... we should probably do something about that, at least mock at a higher level to reduce the code size.

h0bb3 commented 3 months ago

I just removed the unused mocked crypto functions and voila:

---------- coverage: platform linux, python 3.10.12-final-0 ----------
Name                                                               Stmts   Miss  Cover
--------------------------------------------------------------------------------------
server/__init__.py                                                     0      0   100%
server/__main__.py                                                    55     55     0%
server/app.py                                                        109     32    71%
server/blackboard.py                                                 110      5    95%
server/bootstrap.py                                                   91     24    74%
server/crypto/__init__.py                                              0      0   100%
server/crypto/crypto.py                                               68     19    72%
server/crypto/cryptoauthlib_mock.py                                   73     73     0%
server/crypto/exceptions_mock.py                                      36     36     0%
server/crypto/hazmat_mock.py                                          12     12     0%
server/crypto/status_mock.py                                          61     61     0%
server/inverters/ModbusRTU.py                                         33      0   100%
server/inverters/ModbusTCP.py                                         28      0   100%
server/inverters/SolarmanTCP.py                                       37     17    54%
server/inverters/__init__.py                                           0      0   100%
server/inverters/enums.py                                             31      0   100%
server/inverters/inverter.py                                          94     20    79%
server/inverters/registerValue.py                                     86     17    80%
server/inverters/supported_inverters/__init__.py                       0      0   100%
server/inverters/supported_inverters/inverters/deye.py                 2      0   100%
server/inverters/supported_inverters/inverters/deye_hybrid.py          2      0   100%
server/inverters/supported_inverters/inverters/goodwe.py               2      0   100%
server/inverters/supported_inverters/inverters/growatt.py              2      0   100%
server/inverters/supported_inverters/inverters/huawei.py               2      0   100%
server/inverters/supported_inverters/inverters/lqt40s.py               2      0   100%
server/inverters/supported_inverters/inverters/sma.py                  2      0   100%
server/inverters/supported_inverters/inverters/solaredge.py            2      0   100%
server/inverters/supported_inverters/inverters/sungrow.py              2      0   100%
server/inverters/supported_inverters/inverters/sungrow_hybrid.py       2      0   100%
server/inverters/supported_inverters/profiles.py                      39      1    97%
server/message.py                                                     26      0   100%
server/request.py                                                      2      0   100%
server/rest_request_test.py                                            0      0   100%
server/tasks/__init__.py                                               0      0   100%
server/tasks/checkForWebRequestTask.py                                19      7    63%
server/tasks/getNameTask.py                                           20      1    95%
server/tasks/harvest.py                                               70      0   100%
server/tasks/harvestFactory.py                                        12      1    92%
server/tasks/initializeTask.py                                        33      2    94%
server/tasks/itask.py                                                 17     10    41%
server/tasks/modbusLiveLog.py                                         23     23     0%
server/tasks/modbusWriteTask.py                                       41      4    90%
server/tasks/openInverterPerpetualTask.py                             31      2    94%
server/tasks/openInverterTask.py                                      40     10    75%
server/tasks/openWiFiConTask.py                                       19      9    53%
server/tasks/scanWiFiTask.py                                          25     10    60%
server/tasks/srcfulAPICallTask.py                                     67      7    90%
server/tasks/task.py                                                  10      2    80%
server/web/__init__.py                                                 0      0   100%
server/web/handler/__init__.py                                         4      0   100%
server/web/handler/delete/__init__.py                                  2      0   100%
server/web/handler/delete/inverter.py                                 14      7    50%
server/web/handler/delete/notification.py                             11      0   100%
server/web/handler/get/__init__.py                                    13      0   100%
server/web/handler/get/crypto.py                                      13      0   100%
server/web/handler/get/hello.py                                        9      0   100%
server/web/handler/get/inverter.py                                    15      1    93%
server/web/handler/get/logger.py                                      19      0   100%
server/web/handler/get/modbus.py                                      33      1    97%
server/web/handler/get/name.py                                        15      0   100%
server/web/handler/get/network.py                                     17      1    94%
server/web/handler/get/notification.py                                23      2    91%
server/web/handler/get/root.py                                        22      0   100%
server/web/handler/get/supported.py                                   11      0   100%
server/web/handler/get/uptime.py                                       8      0   100%
server/web/handler/get/version.py                                      9      0   100%
server/web/handler/get/wifi.py                                        28     14    50%
server/web/handler/handler.py                                         25      6    76%
server/web/handler/post/__init__.py                                    8      0   100%
server/web/handler/post/echo.py                                        9      0   100%
server/web/handler/post/initialize.py                                 20      3    85%
server/web/handler/post/livelog.py                                    28     28     0%
server/web/handler/post/logger.py                                     24      1    96%
server/web/handler/post/modbus.py                                     49      6    88%
server/web/handler/post/modbusRTU.py                                  25      6    76%
server/web/handler/post/modbusSolarman.py                             23     12    48%
server/web/handler/post/modbusTCP.py                                  23      5    78%
server/web/handler/post/wifi.py                                       22      3    86%
server/web/handler/requestData.py                                      9      0   100%
server/web/server.py                                                 151     57    62%
server/wifi/__init__.py                                                0      0   100%
server/wifi/scan.py                                                   60     36    40%
server/wifi/wifi.py                                                   98     38    61%
--------------------------------------------------------------------------------------
TOTAL                                                               2278    687    70%
davmoz commented 3 months ago

pog

h0bb3 commented 1 month ago

Declining trend in test coverage.

---------- coverage: platform linux, python 3.10.12-final-0 ----------
Name                                               Stmts   Miss  Cover
----------------------------------------------------------------------
server/__init__.py                                     0      0   100%
server/__main__.py                                    55     55     0%
server/app.py                                        109     32    71%
server/blackboard.py                                 109      3    97%
server/bootstrap.py                                   91     24    74%
server/crypto/__init__.py                              0      0   100%
server/crypto/crypto.py                              110     12    89%
server/crypto/cryptoauthlib_mock.py                   73     73     0%
server/crypto/exceptions_mock.py                      36     36     0%
server/crypto/hazmat_mock.py                          12     12     0%
server/crypto/revive.py                               42     42     0%
server/crypto/status_mock.py                          61     61     0%
server/inverters/ModbusRTU.py                         33      0   100%
server/inverters/ModbusTCP.py                         28      0   100%
server/inverters/SolarmanTCP.py                       37     17    54%
server/inverters/__init__.py                           0      0   100%
server/inverters/enums.py                             21      0   100%
server/inverters/inverter.py                          98     22    78%
server/inverters/registerValue.py                     86     17    80%
server/inverters/supported_inverters/__init__.py       0      0   100%
server/inverters/supported_inverters/profiles.py      46      1    98%
server/message.py                                     26      0   100%
server/request.py                                      2      0   100%
server/rest_request_test.py                            0      0   100%
server/tasks/__init__.py                               0      0   100%
server/tasks/checkForWebRequestTask.py                19      7    63%
server/tasks/getNameTask.py                           19      1    95%
server/tasks/harvest.py                               54      0   100%
server/tasks/harvestFactory.py                        13      1    92%
server/tasks/harvestTransport.py                      68     25    63%
server/tasks/initializeTask.py                        33      3    91%
server/tasks/itask.py                                 17     10    41%
server/tasks/modbusLiveLog.py                         23     23     0%
server/tasks/modbusWriteTask.py                       41      4    90%
server/tasks/openInverterPerpetualTask.py             31      2    94%
server/tasks/openInverterTask.py                      40     10    75%
server/tasks/openWiFiConTask.py                       19      9    53%
server/tasks/scanWiFiTask.py                          25     10    60%
server/tasks/srcfulAPICallTask.py                     70      7    90%
server/tasks/task.py                                  10      2    80%
server/web/__init__.py                                 0      0   100%
server/web/handler/__init__.py                         4      0   100%
server/web/handler/delete/__init__.py                  2      0   100%
server/web/handler/delete/inverter.py                 14      7    50%
server/web/handler/delete/notification.py             11      0   100%
server/web/handler/get/__init__.py                    13      0   100%
server/web/handler/get/crypto.py                      27      7    74%
server/web/handler/get/hello.py                        9      0   100%
server/web/handler/get/inverter.py                    15      1    93%
server/web/handler/get/logger.py                      19      0   100%
server/web/handler/get/modbus.py                      33      1    97%
server/web/handler/get/name.py                        15      0   100%
server/web/handler/get/network.py                     46     24    48%
server/web/handler/get/notification.py                23      2    91%
server/web/handler/get/root.py                        20      2    90%
server/web/handler/get/supported.py                   13      0   100%
server/web/handler/get/uptime.py                       8      0   100%
server/web/handler/get/version.py                      9      0   100%
server/web/handler/get/wifi.py                        28     14    50%
server/web/handler/handler.py                         25      6    76%
server/web/handler/post/__init__.py                    8      0   100%
server/web/handler/post/echo.py                        9      0   100%
server/web/handler/post/initialize.py                 20      3    85%
server/web/handler/post/livelog.py                    28     28     0%
server/web/handler/post/logger.py                     24      1    96%
server/web/handler/post/modbus.py                     49      6    88%
server/web/handler/post/modbusRTU.py                  25      6    76%
server/web/handler/post/modbusSolarman.py             23     12    48%
server/web/handler/post/modbusTCP.py                  23      5    78%
server/web/handler/post/wifi.py                       22      3    86%
server/web/handler/requestData.py                      9      0   100%
server/web/server.py                                 161     41    75%
server/wifi/__init__.py                                0      0   100%
server/wifi/scan.py                                   60     36    40%
server/wifi/wifi.py                                  102     42    59%
----------------------------------------------------------------------
TOTAL                                               2454    768    69%
davmoz commented 1 month ago

A significant increase in coverage, mostly due to new ones for the tasks and web. Well done @h0bb3! ⭐

---------- coverage: platform darwin, python 3.11.9-final-0 ----------
Name                                                                    Stmts   Miss  Cover
-------------------------------------------------------------------------------------------
server/__init__.py                                                          0      0   100%
server/__main__.py                                                         55     55     0%
server/app.py                                                             111     33    70%
server/blackboard.py                                                      118      5    96%
server/bootstrap.py                                                        91     24    74%
server/crypto/__init__.py                                                   0      0   100%
server/crypto/crypto.py                                                   110      9    92%
server/crypto/cryptoauthlib_mock.py                                        73     31    58%
server/crypto/exceptions_mock.py                                           36      0   100%
server/crypto/hazmat_mock.py                                               12      0   100%
server/crypto/revive.py                                                    42     42     0%
server/crypto/revive_run.py                                                10      6    40%
server/crypto/status_mock.py                                               61     10    84%
server/inverters/ModbusRTU.py                                              35      1    97%
server/inverters/ModbusTCP.py                                              30      1    97%
server/inverters/SolarmanTCP.py                                            39     18    54%
server/inverters/__init__.py                                                0      0   100%
server/inverters/enums.py                                                  21      0   100%
server/inverters/inverter.py                                              100     23    77%
server/inverters/registerValue.py                                          86     17    80%
server/inverters/supported_inverters/__init__.py                            0      0   100%
server/inverters/supported_inverters/profiles.py                           46      1    98%
server/message.py                                                          26      0   100%
server/request.py                                                           2      0   100%
server/rest_request_test.py                                                 0      0   100%
server/tasks/__init__.py                                                    0      0   100%
server/tasks/checkForWebRequestTask.py                                     19      7    63%
server/tasks/cryptoReviveTask.py                                           10      4    60%
server/tasks/getNameTask.py                                                22      3    86%
server/tasks/harvest.py                                                    54      0   100%
server/tasks/harvestFactory.py                                             11      1    91%
server/tasks/harvestTransport.py                                           78     32    59%
server/tasks/initializeTask.py                                             33      3    91%
server/tasks/itask.py                                                      17      8    53%
server/tasks/modbusLiveLog.py                                              23     23     0%
server/tasks/modbusWriteTask.py                                            41      4    90%
server/tasks/openInverterPerpetualTask.py                                  39      3    92%
server/tasks/openInverterTask.py                                           40     10    75%
server/tasks/openWiFiConTask.py                                            19      9    53%
server/tasks/scanWiFiTask.py                                               25     10    60%
server/tasks/srcfulAPICallTask.py                                          54      4    93%
server/tasks/task.py                                                       10      1    90%
server/tests/__init__.py                                                    0      0   100%
server/tests/server_stress_test/__init__.py                                 0      0   100%
server/tests/server_stress_test/get_hello.py                               38     38     0%
server/tests/server_stress_test/harvest_test/__init__.py                    0      0   100%
server/tests/server_stress_test/harvest_test/harvest_test.py               42     42     0%
server/tests/server_stress_test/harvest_test/modbus_sim/__init__.py         0      0   100%
server/tests/server_stress_test/harvest_test/modbus_sim/server.py          65     65     0%
server/tests/server_stress_test/settings.py                                10     10     0%
server/tests/server_unit_test/__init__.py                                   0      0   100%
server/tests/server_unit_test/app_test.py                                 150      0   100%
server/tests/server_unit_test/blackboard_test.py                          102      0   100%
server/tests/server_unit_test/bootstrap_test.py                            69      2    97%
server/tests/server_unit_test/crypto/__init__.py                            0      0   100%
server/tests/server_unit_test/crypto/crypto_test.py                       124      1    99%
server/tests/server_unit_test/inverters/modbus_inverter_test.py            93      2    98%
server/tests/server_unit_test/request_test.py                               3      0   100%
server/tests/server_unit_test/tasks/__init__.py                             0      0   100%
server/tests/server_unit_test/tasks/checkForWebRequestTask_test.py          4      0   100%
server/tests/server_unit_test/tasks/getNameTask_test.py                    16      0   100%
server/tests/server_unit_test/tasks/harvest_test.py                       184      3    98%
server/tests/server_unit_test/tasks/intitializeTask_test.py                29      0   100%
server/tests/server_unit_test/tasks/modbusWriteTask_test.py                24      0   100%
server/tests/server_unit_test/tasks/openInverterPerpetualTasl_test.py      65      0   100%
server/tests/server_unit_test/tasks/openInverterTask_test.py               49      0   100%
server/tests/server_unit_test/tasks/scanWifiTask_test.py                    8      0   100%
server/tests/server_unit_test/tasks/srcfulAPICallTask_test.py              80      2    98%
server/tests/server_unit_test/web/__init__.py                               0      0   100%
server/tests/server_unit_test/web/delete/notification_delete_test.py       30      0   100%
server/tests/server_unit_test/web/get/crypto_test.py                       29      3    90%
server/tests/server_unit_test/web/get/hello_test.py                        14      0   100%
server/tests/server_unit_test/web/get/inverter_test.py                     24      0   100%
server/tests/server_unit_test/web/get/logger_test.py                       14      0   100%
server/tests/server_unit_test/web/get/modbus_test.py                      130      0   100%
server/tests/server_unit_test/web/get/name_test.py                         41      2    95%
server/tests/server_unit_test/web/get/network_test.py                      45      0   100%
server/tests/server_unit_test/web/get/notification_test.py                 43      0   100%
server/tests/server_unit_test/web/get/root_test.py                         13      0   100%
server/tests/server_unit_test/web/get/supported_test.py                    14      0   100%
server/tests/server_unit_test/web/get/uptime_test.py                       15      0   100%
server/tests/server_unit_test/web/get/version_test.py                      14      0   100%
server/tests/server_unit_test/web/post/__init__.py                          0      0   100%
server/tests/server_unit_test/web/post/createInverter_test.py              27      0   100%
server/tests/server_unit_test/web/post/echo_test.py                        14      0   100%
server/tests/server_unit_test/web/post/initialize_test.py                  21      0   100%
server/tests/server_unit_test/web/post/logger_test.py                      38      0   100%
server/tests/server_unit_test/web/post/modbus_test.py                      51      0   100%
server/tests/server_unit_test/web/post/wifi_test.py                        28      1    96%
server/tests/server_unit_test/web/server_test.py                          143     11    92%
server/web/__init__.py                                                      0      0   100%
server/web/handler/__init__.py                                              4      0   100%
server/web/handler/delete/__init__.py                                       2      0   100%
server/web/handler/delete/inverter.py                                      14      7    50%
server/web/handler/delete/notification.py                                  11      0   100%
server/web/handler/get/__init__.py                                         13      0   100%
server/web/handler/get/crypto.py                                           20      1    95%
server/web/handler/get/hello.py                                             9      0   100%
server/web/handler/get/inverter.py                                         15      1    93%
server/web/handler/get/logger.py                                           19      0   100%
server/web/handler/get/modbus.py                                           33      1    97%
server/web/handler/get/name.py                                             13      0   100%
server/web/handler/get/network.py                                          61      5    92%
server/web/handler/get/notification.py                                     23      2    91%
server/web/handler/get/root.py                                             20      2    90%
server/web/handler/get/supported.py                                        13      0   100%
server/web/handler/get/uptime.py                                            8      0   100%
server/web/handler/get/version.py                                           9      0   100%
server/web/handler/get/wifi.py                                             28     14    50%
server/web/handler/handler.py                                              25      6    76%
server/web/handler/post/__init__.py                                         8      0   100%
server/web/handler/post/echo.py                                             9      0   100%
server/web/handler/post/initialize.py                                      20      3    85%
server/web/handler/post/livelog.py                                         28     28     0%
server/web/handler/post/logger.py                                          24      1    96%
server/web/handler/post/modbus.py                                          49      6    88%
server/web/handler/post/modbusRTU.py                                       25      6    76%
server/web/handler/post/modbusSolarman.py                                  23     12    48%
server/web/handler/post/modbusTCP.py                                       23      5    78%
server/web/handler/post/wifi.py                                            22      3    86%
server/web/handler/requestData.py                                           9      0   100%
server/web/server.py                                                      161     41    75%
server/wifi/__init__.py                                                     0      0   100%
server/wifi/scan.py                                                        60     46    23%
server/wifi/wifi.py                                                       102     80    22%
-------------------------------------------------------------------------------------------
TOTAL                                                                    4405    850    81%
h0bb3 commented 1 day ago

Small decrease in TC

---------- coverage: platform linux, python 3.11.9-final-0 -----------
Name                                                                    Stmts   Miss  Cover
-------------------------------------------------------------------------------------------
server/__init__.py                                                          0      0   100%
server/__main__.py                                                         55     55     0%
server/app.py                                                             107     31    71%
server/blackboard.py                                                      118      5    96%
server/bootstrap.py                                                        91     24    74%
server/crypto/__init__.py                                                   0      0   100%
server/crypto/crypto.py                                                   123     12    90%
server/crypto/cryptoauthlib_mock.py                                        73     73     0%
server/crypto/exceptions_mock.py                                           36     36     0%
server/crypto/hazmat_mock.py                                               12     12     0%
server/crypto/revive.py                                                    42     42     0%
server/crypto/revive_run.py                                                10      6    40%
server/crypto/status_mock.py                                               61     61     0%
server/inverters/ModbusRTU.py                                              35      0   100%
server/inverters/ModbusTCP.py                                              30      0   100%
server/inverters/SolarmanTCP.py                                            39     19    51%
server/inverters/__init__.py                                                0      0   100%
server/inverters/enums.py                                                  21      0   100%
server/inverters/inverter.py                                               98     22    78%
server/inverters/registerValue.py                                          85     14    84%
server/inverters/supported_inverters/__init__.py                            0      0   100%
server/inverters/supported_inverters/profiles.py                           46      1    98%
server/message.py                                                          26      0   100%
server/network/__init__.py                                                  0      0   100%
server/network/macAddr.py                                                  64     35    45%
server/network/scan.py                                                     60     36    40%
server/network/wifi.py                                                    131     46    65%
server/request.py                                                           2      0   100%
server/rest_request_test.py                                                 0      0   100%
server/tasks/__init__.py                                                    0      0   100%
server/tasks/checkForWebRequestTask.py                                     19      7    63%
server/tasks/cryptoReviveTask.py                                           10     10     0%
server/tasks/getNameTask.py                                                22      3    86%
server/tasks/harvest.py                                                    54      0   100%
server/tasks/harvestFactory.py                                             11      1    91%
server/tasks/harvestTransport.py                                           90     37    59%
server/tasks/initializeTask.py                                             33      3    91%
server/tasks/itask.py                                                      17      8    53%
server/tasks/modbusLiveLog.py                                              23     23     0%
server/tasks/modbusWriteTask.py                                            41      4    90%
server/tasks/openInverterPerpetualTask.py                                  39      2    95%
server/tasks/openInverterTask.py                                           40     10    75%
server/tasks/openWiFiConTask.py                                            19      9    53%
server/tasks/scanWiFiTask.py                                               25     10    60%
server/tasks/srcfulAPICallTask.py                                          54      4    93%
server/tasks/task.py                                                       10      1    90%
server/tests/__init__.py                                                    0      0   100%
server/tests/server_stress_test/__init__.py                                 0      0   100%
server/tests/server_stress_test/get_hello.py                               38     38     0%
server/tests/server_stress_test/harvest_test/__init__.py                    0      0   100%
server/tests/server_stress_test/harvest_test/harvest_test.py               42     42     0%
server/tests/server_stress_test/harvest_test/modbus_sim/__init__.py         0      0   100%
server/tests/server_stress_test/harvest_test/modbus_sim/server.py          65     65     0%
server/tests/server_stress_test/settings.py                                10     10     0%
server/tests/server_unit_test/__init__.py                                   0      0   100%
server/tests/server_unit_test/app_test.py                                 150      0   100%
server/tests/server_unit_test/blackboard_test.py                          102      0   100%
server/tests/server_unit_test/bootstrap_test.py                            69      2    97%
server/tests/server_unit_test/crypto/__init__.py                            0      0   100%
server/tests/server_unit_test/crypto/crypto_test.py                       138      1    99%
server/tests/server_unit_test/inverters/modbus_inverter_test.py            93      2    98%
server/tests/server_unit_test/request_test.py                               3      0   100%
server/tests/server_unit_test/tasks/__init__.py                             0      0   100%
server/tests/server_unit_test/tasks/checkForWebRequestTask_test.py          4      0   100%
server/tests/server_unit_test/tasks/getNameTask_test.py                    16      0   100%
server/tests/server_unit_test/tasks/harvest_test.py                       184      3    98%
server/tests/server_unit_test/tasks/intitializeTask_test.py                29      0   100%
server/tests/server_unit_test/tasks/modbusWriteTask_test.py                24      0   100%
server/tests/server_unit_test/tasks/openInverterPerpetualTasl_test.py      64      0   100%
server/tests/server_unit_test/tasks/openInverterTask_test.py               49      0   100%
server/tests/server_unit_test/tasks/scanWifiTask_test.py                    8      0   100%
server/tests/server_unit_test/tasks/srcfulAPICallTask_test.py              80      2    98%
server/tests/server_unit_test/web/__init__.py                               0      0   100%
server/tests/server_unit_test/web/delete/notification_delete_test.py       30      0   100%
server/tests/server_unit_test/web/get/crypto_test.py                       31      3    90%
server/tests/server_unit_test/web/get/hello_test.py                        14      0   100%
server/tests/server_unit_test/web/get/inverter_test.py                     24      0   100%
server/tests/server_unit_test/web/get/logger_test.py                       14      0   100%
server/tests/server_unit_test/web/get/modbus_test.py                      132      0   100%
server/tests/server_unit_test/web/get/name_test.py                         41      2    95%
server/tests/server_unit_test/web/get/network_test.py                      63      0   100%
server/tests/server_unit_test/web/get/notification_test.py                 43      0   100%
server/tests/server_unit_test/web/get/root_test.py                         13      0   100%
server/tests/server_unit_test/web/get/supported_test.py                    14      0   100%
server/tests/server_unit_test/web/get/uptime_test.py                       15      0   100%
server/tests/server_unit_test/web/get/version_test.py                      14      0   100%
server/tests/server_unit_test/web/post/__init__.py                          0      0   100%
server/tests/server_unit_test/web/post/createInverter_test.py              27      0   100%
server/tests/server_unit_test/web/post/echo_test.py                        14      0   100%
server/tests/server_unit_test/web/post/initialize_test.py                  21      0   100%
server/tests/server_unit_test/web/post/logger_test.py                      38      0   100%
server/tests/server_unit_test/web/post/modbus_test.py                      51      0   100%
server/tests/server_unit_test/web/post/wifi_test.py                        28      1    96%
server/tests/server_unit_test/web/server_test.py                          143     11    92%
server/web/__init__.py                                                      0      0   100%
server/web/handler/__init__.py                                              4      0   100%
server/web/handler/delete/__init__.py                                       2      0   100%
server/web/handler/delete/inverter.py                                      14      7    50%
server/web/handler/delete/notification.py                                  11      0   100%
server/web/handler/get/__init__.py                                         13      0   100%
server/web/handler/get/crypto.py                                           40      1    98%
server/web/handler/get/hello.py                                             9      0   100%
server/web/handler/get/inverter.py                                         15      1    93%
server/web/handler/get/logger.py                                           19      0   100%
server/web/handler/get/modbus.py                                           33      1    97%
server/web/handler/get/name.py                                             13      0   100%
server/web/handler/get/network.py                                         108      8    93%
server/web/handler/get/notification.py                                     23      2    91%
server/web/handler/get/root.py                                             20      2    90%
server/web/handler/get/supported.py                                        13      0   100%
server/web/handler/get/uptime.py                                            8      0   100%
server/web/handler/get/version.py                                           9      0   100%
server/web/handler/get/wifi.py                                             28     14    50%
server/web/handler/handler.py                                              25      6    76%
server/web/handler/post/__init__.py                                         8      0   100%
server/web/handler/post/echo.py                                             9      0   100%
server/web/handler/post/initialize.py                                      20      3    85%
server/web/handler/post/livelog.py                                         28     28     0%
server/web/handler/post/logger.py                                          24      1    96%
server/web/handler/post/modbus.py                                          49      6    88%
server/web/handler/post/modbusRTU.py                                       25      6    76%
server/web/handler/post/modbusSolarman.py                                  23     12    48%
server/web/handler/post/modbusTCP.py                                       23      5    78%
server/web/handler/post/wifi.py                                            22      3    86%
server/web/handler/requestData.py                                           9      0   100%
server/web/server.py                                                      161     41    75%
-------------------------------------------------------------------------------------------
TOTAL                                                                    4618    991    79%
h0bb3 commented 1 day ago

Just realized that the move of the test directories have made the coverage include the tests themselves. This has skewed the results.

new command is:

pytest --cov=server --cov-config=.coveragerc server/tests/server_unit_test/

The good thing is that we can now also exclude the crypto mock files.

---------- coverage: platform linux, python 3.11.9-final-0 -----------
Name                                               Stmts   Miss  Cover
----------------------------------------------------------------------
server/__init__.py                                     0      0   100%
server/__main__.py                                    55     55     0%
server/app.py                                        107     31    71%
server/blackboard.py                                 118      5    96%
server/bootstrap.py                                   91     24    74%
server/crypto/__init__.py                              0      0   100%
server/crypto/crypto.py                              123     12    90%
server/crypto/hazmat_mock.py                          12     12     0%
server/crypto/revive.py                               42     42     0%
server/crypto/revive_run.py                           10      6    40%
server/inverters/ModbusRTU.py                         35      0   100%
server/inverters/ModbusTCP.py                         30      0   100%
server/inverters/SolarmanTCP.py                       39     19    51%
server/inverters/__init__.py                           0      0   100%
server/inverters/enums.py                             21      0   100%
server/inverters/inverter.py                          98     22    78%
server/inverters/registerValue.py                     85     14    84%
server/inverters/supported_inverters/__init__.py       0      0   100%
server/inverters/supported_inverters/profiles.py      46      1    98%
server/message.py                                     26      0   100%
server/network/__init__.py                             0      0   100%
server/network/macAddr.py                             64     35    45%
server/network/scan.py                                60     36    40%
server/network/wifi.py                               131     46    65%
server/request.py                                      2      0   100%
server/rest_request_test.py                            0      0   100%
server/tasks/__init__.py                               0      0   100%
server/tasks/checkForWebRequestTask.py                19      7    63%
server/tasks/cryptoReviveTask.py                      10     10     0%
server/tasks/getNameTask.py                           22      3    86%
server/tasks/harvest.py                               54      0   100%
server/tasks/harvestFactory.py                        11      1    91%
server/tasks/harvestTransport.py                      90     37    59%
server/tasks/initializeTask.py                        33      3    91%
server/tasks/itask.py                                 17      8    53%
server/tasks/modbusLiveLog.py                         23     23     0%
server/tasks/modbusWriteTask.py                       41      4    90%
server/tasks/openInverterPerpetualTask.py             39      2    95%
server/tasks/openInverterTask.py                      40     10    75%
server/tasks/openWiFiConTask.py                       19      9    53%
server/tasks/scanWiFiTask.py                          25     10    60%
server/tasks/srcfulAPICallTask.py                     54      4    93%
server/tasks/task.py                                  10      1    90%
server/web/__init__.py                                 0      0   100%
server/web/handler/__init__.py                         4      0   100%
server/web/handler/delete/__init__.py                  2      0   100%
server/web/handler/delete/inverter.py                 14      7    50%
server/web/handler/delete/notification.py             11      0   100%
server/web/handler/get/__init__.py                    13      0   100%
server/web/handler/get/crypto.py                      40      1    98%
server/web/handler/get/hello.py                        9      0   100%
server/web/handler/get/inverter.py                    15      1    93%
server/web/handler/get/logger.py                      19      0   100%
server/web/handler/get/modbus.py                      33      1    97%
server/web/handler/get/name.py                        13      0   100%
server/web/handler/get/network.py                    108      8    93%
server/web/handler/get/notification.py                23      2    91%
server/web/handler/get/root.py                        20      2    90%
server/web/handler/get/supported.py                   13      0   100%
server/web/handler/get/uptime.py                       8      0   100%
server/web/handler/get/version.py                      9      0   100%
server/web/handler/get/wifi.py                        28     14    50%
server/web/handler/handler.py                         25      6    76%
server/web/handler/post/__init__.py                    8      0   100%
server/web/handler/post/echo.py                        9      0   100%
server/web/handler/post/initialize.py                 20      3    85%
server/web/handler/post/livelog.py                    28     28     0%
server/web/handler/post/logger.py                     24      1    96%
server/web/handler/post/modbus.py                     49      6    88%
server/web/handler/post/modbusRTU.py                  25      6    76%
server/web/handler/post/modbusSolarman.py             23     12    48%
server/web/handler/post/modbusTCP.py                  23      5    78%
server/web/handler/post/wifi.py                       22      3    86%
server/web/handler/requestData.py                      9      0   100%
server/web/server.py                                 161     41    75%
----------------------------------------------------------------------
TOTAL                                               2510    639    75%