-
Notifications
You must be signed in to change notification settings - Fork 0
Make rig work in 2025 #272
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
base: master
Are you sure you want to change the base?
Conversation
It seems that pytest doesn't like the "8 8" part of the arguments (it says
|
Thanks so much for running that @rowleya. Re the "8 8" bit, I'd forgotten that the system size information became redundant but I obviously never updated the dev docs I copied the pytest incantation from. Do you know what FPGA images are on the board you used to test? I'll continue exploring later on using the access you very kindly provided out-of-band :). |
It looks like the FPGA firmware is version 2.1.2. Not sure if that helps! They are in the (private) repository SpiNNaker_hardware_tests; if you need access to that let me know. |
Ah right; so its not based on https://github.com/SpiNNakerManchester/spio/ anymore? That sounds like an interesting tale! I'm guessing the FPGA stuff may have moved on then! (Perhaps making SpiNNer work again could be more work than just fixing Python 3.11 issues!) |
Sorry, that was the BMP version! I am less sure about the FPGA firmware version. It might be that this is a board with broken FPGAs of some sort... |
I think the versions in use are still the SPIO versions. I don't think that much has changed, but there were some changes for SPIF (an interface board that connects to the FPGAs), which I think mostly adds some routing tables to the FPGAs for external device messages. |
Ah right. Hopefully that should be unimportant :). I have a feeling the register read failing in that test is one which I put in as a "minimum viable routing rule" within the FPGAs which would be a likely candidate for refinement if the external interfaces saw some real use! I'll do some sleuthing later... Thanks very much again! |
OK, I have tried on another board now, and the BMP test passes! Results on that board are:
|
I should add that the tests then appear to crash the board! That might be why the rest after the version fail? |
Excellent!! Thank you! Is that board also reachable from the environment you gave me access to? It'll be interesting to find out what is going wrong with the SpiNNaker tests since that'll be booting the same ancient SC&MP image it had years ago! |
This has finally disappeared in Python 3.11. These have been replaced by rather pedestrian path mangling from the 'rig' module filename.
The random.sample no longer accepts sets (which to be fair was always a bit of a surprise!).
This is something of a temporary fix whilst Python 2.x support remains.
Testing of one IntEnum type value is 'in' another IntEnum type now returns true if the matching integer appears in both. In the past this wasn't the case. Manually making the implementation do the equivalent type checking seems unnecessary and would be better served by a future move to a typed API. To be clear, this change makes the test less strict by no longer checking to see that other IntEnum types are rejected -- since they're not!
The mock library now catches this common mistake and indeed, there are several instances in the test suite which are fixed by this commit. Thanks mock. Thmock.
This is no longer allowed from a native Python type -- but is from a numpy type!
We were checking the ExecInfo rather than the underlying exception. Pytest must have removed the __str__ implementation at some point.
9686e22
to
1d14fd3
Compare
OK; so between one SpiNNaker board with a working BMP and another with (enough) non-crashing chips I've managed a clean run of the test suite with still 100% test coverage. (I'm guessing the chip blacklist format has changed since the SC&MP version rig bundles -- or the blacklist is out of date??) As I say, there are plenty of warnings and other things which ought to be tidied up if we were bringing it fully back to life -- but it now runs and that's good enough for me for now :). Thanks again, @rowleya for getting me hardware access! If I don't get any takers for a review I'll merge this in a few days. ;) |
This PR (hopefully) gets Rig into a state where it works again under recent Python 3 versions.
A few small fixes/changes for compatibility with newer Python versions here and there -- read the commit messages for a summary. Nothing substantial. A few deprecation warnings remain which I don't fancy addressing right now, but everything should at least be back in a working state.
@mundya or @neworderofjamie if you fancy some nostalgia I'd welcome a cursory glance at this PR; but feel free to ignore and I'll eventually just merge it anyway :).
Unfortunately, I'm almost certain the Travis CI stuff has expired after many years of non-use. I'm not sure if I'm motivated to fix that. Further, I am certain that the public-internet-connected SpiNN5 board (and associated proxy server) are no longer available so I'll need a volunteer to run the 'real hardware' test suite if possible (see below).
SpiNN5 hardware testing help wanted
@rowleya would you be willing to spare five minutes to give the hardware test suite a try and report back any issues? (As an incentive, this will make SpiNNer work again the next time you need to repair/change/check the big machine's wiring!)
The testing procedure goes something like:
Why bother
I'm primarily going to the trouble of doing this since it would be nice for this project to be at least able to run -- even if it isn't being updated -- as quite a few interesting tools and experiments were built on top of it. At least as long as SpiNNaker 1 hardware still draws breath :).
A more pragmatic reason for doing this is that SpiNNer (the SpiNNaker 1 wiring tool) will not work without Rig and I thought it would be nice to make Rig work in case anyone ever needs to repair/check/change the wiring in their SpiNNaker 1 machines one day.
Note this is specifically not being done as part of my current brief contract with SpiNNcloud Systems working on SpiNNaker 2 software. Nobody there has yet mentioned any plans to use Rig ;).