Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Use switching station ref counters #265

Merged
merged 4 commits into from
May 4, 2022
Merged

Conversation

S-S-X
Copy link
Member

@S-S-X S-S-X commented Apr 30, 2022

Partial implementation for issue #264

Removes switching station node checks from globalstep and uses switching station counters to decide if there's still switching stations present.

Switching stations can be removed from network without executing on_destruct but that should not really be big issue, network simply keeps running until TTL is reached and then stops.

Normal switching station removal will still reset network but now you can remove switching station above "master" node without resetting whole network, instead all switching stations have to be removed which is more correct behavior.

@S-S-X
Copy link
Member Author

S-S-X commented Apr 30, 2022

Also every switching station now works for supply/demand monitoring but instead of being activated by globalstep it uses switching station nodetimer:

  • only active areas instead of globalstep
  • every switching station works instead of just one

@S-S-X
Copy link
Member Author

S-S-X commented Apr 30, 2022

Also brings little performance boost for globalstep for not checking switch node / mesecons and generally reduces globalstep loop code.

@S-S-X
Copy link
Member Author

S-S-X commented Apr 30, 2022

For network.swpos hash table could be used for tiny bit faster lookup, I did think about it but decided to not do that because performance gain is minimal and also wont affect globalstep or any regular / timed functions.
In many, probably most, cases there's just one switching station in whole network and lookup is currently only done when switching station on_construct / on_destruct / or network cache building is executed (all those events are rare already).

@github-actions
Copy link

github-actions bot commented May 1, 2022

Click for detailed source code test coverage report

Test coverage report for Technic CNC 87.33% in 11/14 files:

File                             Hits Missed Coverage
-----------------------------------------------------
programs.lua                   263  0      100.00%
materials/technic_worldgen.lua 32   0      100.00%
materials/init.lua             14   0      100.00%
materials/default.lua          183  0      100.00%
materials/basic_materials.lua  17   0      100.00%
init.lua                       16   0      100.00%
digilines.lua                  55   0      100.00%
cnc.lua                        53   0      100.00%
formspec.lua                   104  7      93.69%
api.lua                        217  43     83.46%
pipeworks.lua                  25   13     65.79%
materials/moreblocks.lua       0    29     0.00%
materials/ethereal.lua         0    37     0.00%
materials/bakedclay.lua        0    13     0.00%

Test coverage report for technic chests 45.56% in 6/6 files:

File          Hits Missed Coverage
----------------------------------
chests.lua    102  18     85.00%
init.lua      34   18     65.38%
register.lua  84   78     51.85%
formspec.lua  76   93     44.97%
inventory.lua 10   100    9.09%
digilines.lua 2    61     3.17%

Test coverage report for technic 60.76% in 95/95 files:

File                                      Hits Missed Coverage
--------------------------------------------------------------
max_lag.lua                               12   0      100.00%
machines/register/init.lua                15   0      100.00%
machines/register/freezer_recipes.lua     13   0      100.00%
machines/other/init.lua                   8    0      100.00%
machines/MV/solar_array.lua               12   0      100.00%
machines/MV/init.lua                      17   0      100.00%
machines/MV/grinder.lua                   17   0      100.00%
machines/MV/generator.lua                 9    0      100.00%
machines/MV/freezer.lua                   17   0      100.00%
machines/MV/extractor.lua                 17   0      100.00%
machines/MV/electric_furnace.lua          17   0      100.00%
machines/MV/compressor.lua                17   0      100.00%
machines/MV/centrifuge.lua                17   0      100.00%
machines/MV/cables.lua                    40   0      100.00%
machines/MV/battery_box.lua               17   0      100.00%
machines/MV/alloy_furnace.lua             19   0      100.00%
machines/LV/solar_array.lua               11   0      100.00%
machines/LV/init.lua                      17   0      100.00%
machines/LV/grinder.lua                   16   0      100.00%
machines/LV/generator.lua                 9    0      100.00%
machines/LV/electric_furnace.lua          15   0      100.00%
machines/LV/compressor.lua                20   0      100.00%
machines/LV/cables.lua                    40   0      100.00%
machines/LV/battery_box.lua               15   0      100.00%
machines/LV/alloy_furnace.lua             17   0      100.00%
machines/HV/solar_array.lua               11   0      100.00%
machines/HV/init.lua                      12   0      100.00%
machines/HV/grinder.lua                   17   0      100.00%
machines/HV/generator.lua                 9    0      100.00%
machines/HV/electric_furnace.lua          17   0      100.00%
machines/HV/compressor.lua                17   0      100.00%
machines/HV/cables.lua                    39   0      100.00%
machines/HV/battery_box.lua               17   0      100.00%
legacy.lua                                33   0      100.00%
items.lua                                 128  0      100.00%
crafts.lua                                133  0      100.00%
machines/LV/led.lua                       73   1      98.65%
config.lua                                51   1      98.08%
machines/register/compressor_recipes.lua  36   1      97.30%
machines/LV/geothermal.lua                75   3      96.15%
machines/register/cables.lua              96   4      96.00%
machines/register/solar_array.lua         46   2      95.83%
machines/network.lua                      404  19     95.51%
machines/LV/solar_panel.lua               42   2      95.45%
machines/register/alloy_recipes.lua       40   3      93.02%
tools/init.lua                            13   1      92.86%
machines/LV/water_mill.lua                67   6      91.78%
init.lua                                  20   2      90.91%
machines/register/grindings.lua           42   5      89.36%
machines/LV/lamp.lua                      110  14     88.71%
machines/register/grinder_recipes.lua     106  16     86.89%
util/throttle.lua                         9    2      81.82%
machines/register/machine_base.lua        165  41     80.10%
machines/LV/extractor.lua                 18   5      78.26%
machines/register/recipes.lua             62   20     75.61%
machines/register/battery_box.lua         223  72     75.59%
tools/flashlight.lua                      65   21     75.58%
machines/register/centrifuge_recipes.lua  21   7      75.00%
radiation.lua                             262  89     74.64%
machines/switching_station.lua            80   32     71.43%
effects.lua                               5    2      71.43%
machines/overload.lua                     12   5      70.59%
machines/MV/wind_mill.lua                 46   22     67.65%
machines/supply_converter.lua             95   46     67.38%
machines/other/coal_furnace.lua           2    1      66.67%
machines/other/injector.lua               72   39     64.86%
machines/switching_station_globalstep.lua 36   21     63.16%
machines/MV/hydro_turbine.lua             43   26     62.32%
machines/MV/tool_workshop.lua             56   34     62.22%
machines/register/generator.lua           122  88     58.10%
register.lua                              21   19     52.50%
tools/cans.lua                            53   48     52.48%
machines/power_monitor.lua                40   38     51.28%
machines/init.lua                         56   54     50.91%
machines/other/coal_alloy_furnace.lua     63   63     50.00%
machines/LV/music_player.lua              46   46     50.00%
tools/mining_lasers.lua                   39   40     49.37%
machines/other/constructor.lua            67   69     49.26%
tools/vacuum.lua                          19   21     47.50%
tools/tree_tap.lua                        24   27     47.06%
machines/HV/forcefield.lua                103  155    39.92%
machines/HV/nuclear_reactor.lua           119  205    36.73%
machines/register/common.lua              39   75     34.21%
machines/HV/quarry.lua                    122  245    33.24%
tools/chainsaw.lua                        40   83     32.52%
tools/multimeter.lua                      71   149    32.27%
machines/compat/api.lua                   16   34     32.00%
tools/sonic_screwdriver.lua               18   40     31.03%
machines/other/frames.lua                 184  445    29.25%
helpers.lua                               38   100    27.54%
tools/mining_drill.lua                    76   226    25.17%
machines/other/anchor.lua                 14   74     15.91%
machines/compat/digtron.lua               2    11     15.38%
tools/prospector.lua                      16   92     14.81%
machines/register/extractor_recipes.lua   6    65     8.45%

Raw test runner output for geeks:

CNC:

●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●
31 successes / 0 failures / 0 errors / 0 pending : 0.477985 seconds

Chests:

W:	Configuration: invalid key	exclude_textures
●●●●●
5 successes / 0 failures / 0 errors / 0 pending : 0.034056 seconds

Technic:

●◌◌●●●◌●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●◌●●●●●
176 successes / 0 failures / 0 errors / 4 pending : 7.104883 seconds

Pending → spec/api_spec.lua @ 133
Technic API Machine registration registers my_mod:my_battery
spec/api_spec.lua:133: Battery box registration does not include all fields

Pending → spec/api_spec.lua @ 190
Technic API Machine registration registers my_mod:machine_base
spec/api_spec.lua:190: Base machine registration does not include all fields

Pending → spec/api_spec.lua @ 285
Technic API internals technic.cables TBD, misleading name and should be updated
spec/api_spec.lua:285: TBD technic.cables naming and need, see technic networks data for possible options

Pending → spec/supply_converter_spec.lua @ 78
Supply converter building overloads network
spec/supply_converter_spec.lua:78: overload does not work with supply converter

Copy link

@wsor4035 wsor4035 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

tested, appears to work fine. did not check in depth

@BuckarooBanzay
Copy link
Member

can't test this right now but LGTM 👍

@BuckarooBanzay BuckarooBanzay merged commit 99b9001 into master May 4, 2022
@BuckarooBanzay BuckarooBanzay deleted the reduce-sw-checks branch May 4, 2022 13:02
@Athozus Athozus added this to the 2.0.0 milestone Apr 14, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants