Need a test script
flaviojs opened this issue · 1 comments
I don't use this software so I'm asking help from anyone that uses it.
Requirements of the script:
- uses a regular dynamips executable (no extra code changes)
- no gui or user interaction, to be executed from the console as part of automated tests (I'm in a 64-bit linux)
- it must assert that a router capability worked (maybe send a packet from A to B?, starting up is not enough)
Optional, would be nice to have:
- cleanup leftovers so the next run occurs in the same conditions
- report the amount of clock time it took to complete the task
- report the amount of cpu time it took to complete the task
- report the amount of memory it needed to complete the task
- use an easy-to-modify setup or language (like python)
- minimize dependencies
Long story:
I'm playing around with rust in this project. After a few tries I arrived at a nice solution. I have access to the public structures and functions that the C code provides and can easily replace any C function with a rust function.
I make mistakes all the time, so I need a baseline test to avoid the accumulation of mistakes that comes with blind development. My focus/interest is the virtual hardware, which I want to experiment with, possibly complete or fix.
It sucks to see this project with security bugs, but I'm not gonna touch C code unless someone integrates Coverity Scan or similar into the CI (so I can see a list of bugs).
I find C to be very error-prone, I don't intend to repeat that frustrating development experience now that I know rust.
I tried a bunch of stuff while converting to rust and found a decent baseline test.
Only thing left is make a script to automate the test.
Non-hypervisor "can boot" test:
- run dynamips with options for a particular image and TCP console
- telnet to the TCP console and wait for either "bytes of NVRAM" or "bytes of processor board System flash"
- Result:
3.a) PASS if the target text is found
3.b) FAIL if dynamips crashes
3.c) FAIL if telnet fails to connect X times
3.d) FAIL if there is no telnet text during X time
3.e) FAIL if IOS keeps rebooting
When the target text appears we know that:
- the microcode and cpu (jit/nojit) seem to work
- all the hardware that IOS can detect has been detected (memory,pci,eeprom,fpga,...) without crashing or rebooting
- the config file has not been read yet