- Remove state from state machine dict. Devices (with suffix 3) can conditionally delete state PROXY_PC
- Readability logs
- Debug info
- Fix the Wait4prompts (data processing in reverse order)
- New Unix commands (bzip2, 7z)
- uptime - new parser
- Log info for state observer
- Number converters can return None instead raise an exception
- New locking commands for AT devices
- Change at command to accept in apt name
- Wait4prompts - reverse order of processing lines
- More readable info when more than 1 prompt match the same line
- CommandChangingPrompt - refactoring
- Change the way of validating if Ctrl+Z has worked and stopped the command
- Keygen file is taken from ssh output
- Optional sleep after state change
- Change the way the date is parsed (time zone)
- More info when SshShell is disconnected
- Fix prompt detection for ProxyPc2
- Fix version
- Changed regex in iperf3 cmd _parse_header to accept 'Bitrate' and 'Bandwidth' to support older iperf3 versions
- Optional mrge additional params from config and from function
- Coverage - parameters values converted to compatibility with version 7.4.4
- Optional pause Wait4Prompts during state change
- Added CRT tests
- Unix commands - optional ctrl + z and kill on timeout - add
wait
call afterkill
- Add helper for escape codes
[2004l
[2004h
- Add break_event to Event
- StateMachine - lock to avoid race conditions
- Command failure regular expression and exceptions for them
- Timeout msg for unix commands
- Optional log to console/stdout
- Optional sleep before commands in EventAwaiter
- Unix commands - optional ctrl + z and kill on timeout
- Refactoring - removed warnings for Python
- ConnectionObserverLifeStatus - debug enhancement
- Refactoring - fstrings
- Refactoring - Pylint
- Changed time calculation to time.monotonic()
- Type annotations for command base classes
- Removed code for Python < 3.7
- Common way to fail commands based on their output
- Start command(s) when event(s) finished - start_command_after_event
- Changed deprecated test code
- Removed support for Python 2.7-3.6
- Fix for compare objects under Python 2.7
- Implementation of internal Quectel AT command for setting network preferences
- Removed Deepdiff
- Tests on Python 3.12
- Warning for Pythons 2.7 -3.6 (support will be removed soon)
- Prompt detection for overloaded systems
- ConnectionObserver objects store full exception stack for Python3.5+
- Support for failure regex for commands for devices based on Unix
- Support values without prefix in byte converter
- Improvement prompt detection for devices using Paramiko for the first ssh
- Implementation of internal Quectel command for set NR earfcn lock
- Fix typo in
nft
command
- Iperf3 implementation
- Parameter force for method break_cmd
- Implementation of AT commands with Get and Set for Cell Id (general, GPRS, LTE, NR)
- Implementation of PDU sessions AT commands
- Refactoring - get rid of warnings for newer Pythons
- Tests work on Python 3.11
- Commands
su
andsudo
support many passwords - Command exit doesn't wait for echo (optional)
- Log all command attributes when timeout
- Detect prompt for devices with paramiko connection
- Deeper stack logging
- Methods search_compiled and match_compiled can support None as compiled regex
- Command ethtool - add support for -S option
- Command nmap - add support for many crypto protocols
- Set level of functionality - AT cmd
- Get level of functionality - AT cmd
- Command run_script for AT
- Improved tests for state machines - continued
- Improved tests of state machines - continued
- New adb commands for Unix
- Improved tests of state machines
- Add support for commands when prompt is not set
- Mark ConnectionObserver objects start and end in logs
- MolerTest.raise_background_exceptions - Python 3.10
- Change deepdiff constraint:
deepdiff == 5.7.0; python_version > '3'
- Improvement state NOT_CONNECTED in device SM.
- SM can enter state if prompt regex matches a line without anchors.
- Optional compress logs after rotation.
- Log stack for set_exception in ConnectionObserver.
- Caller stack info for MolerTest.error.
- Change default runner and connection type (less threads).
- Improve removing escape character from unix output
- Change dealyafterclose value in Terminal
- Optional ignore exception when try to create all devices
- Print time of processing every command and event while the documentation is being checked
- Proper handled timeout in wait_for of RunnerSingleThread
- Check if passed object is ConnectionObserver instance in MolerConnectionForSingleThreadRunner
- add
ADDITIONAL_PARAMS
in device configuration - add possibility use
single-threaded
runner for all ConnectionObservers
- Add more readable traceback
- Parsing fail and success for RunScript command
- Add new regex for retry password(ssh/telnet commands)
- Add logs for troubleshoot threads
- Set flag to run in embeded command
- Unix command nping
- Unix command sysctl
- Check cmd status before break
- Commands and events - 100% coverage in tests
- Run tests with flake8
- CI on GitHub Actions and resolved issues with new Python
- Fix the possibility to break command if the command is not running
- goto_state_bg
- Parallel tests for device SM
- Close python
- Packages list
- Add-set-apn-at-cmd
- CMDs and events - empty string as unicode
- Coverage events in test - 100%
- Faster SM tests
- State machine in device - check overlapping patterns for prompts.
- Disable logging incoming data
- Enable_echo AT cmd
- Logs rotating
- Set mode AT cmd
- ssh keygen override
- Logging suffix
- Terminal investigation
- New output for iptables and add rest in ret
- nft command
- Modify cu command
- Don't tail full file for first file
- At cmd
- Create cu.py
- tail_latest_file
- Change ATI cmd name to GetProductInfo
- Log exception from runner
- Modify regex in get_apns.py
- nmap
- Remove hardcore
- Command traceroute
- Scp - new format of question
- Openssl cmd
- Unix lxc* commands
- OpenSSL S Client - class name fix
- New format of ssh question
- New funcionality for ssh
- Tcpdump new regex
- Load events only if they are not loaded
- Unxz
- Fix packages for UnixLocal in examples
- Commands may break on regex
- New type of io-connection: threaded sshshell based on Paramiko
- Ssh Telnet coverage
- DeviceFactory doesn't pass io constructor parameters towards created devices
- Fix parsing date where exists from and on
- Option clear devices history
- Sm not connected
- Tail and cat work with error in content of file
- Collect output from telent and ssh
- Sum cmds
- Optional parameter username for telnet and ssh.
- Cmds for pdu aten
- Convert to number
- Documentation fix for return value
- Add ret_required=False
- Pdu Aten
- Support for text files with content the same as errors from commands
- Iperf2: calculate summary report at each interval when server handles client running in --parallel mode
- Allow AdbRemote device to have expected_prompt generated from serial_number of Android device
- Add catching error to openssl_x509_text_in command
- New fail scenario for ssh
- Openssl cmd
- Store datetime when data was read on connection
- Set establish_connection to False
- Support initial_state for already created devices
- Classes Connection and ObservableConnection are deprecated now. Their original code has been moved into AbstractMolerConnection and ThreadedMolerConnection. Change made for code clarity.
- Iperf2 command fails on parsing when used
with -s -P 1
options (single run server). - Log all state changes in devices.
- New method of converting string to int for whole dict.
- Keep state in background does not block main flow
- data_received() of commands & events gets additional parameter: time when data was caught on connection
- Improvement parsing in command ls.
- Commands, events and callbacks data processing is done in separate thread to secure connection reads against blocking them by commands/events/callbacks.
- AdbRemote device - new state ADB_SHELL_ROOT
- allow firing android-linux commands that need root
- access to .start_time of any ConnectionObserver
- help in extending its timeout (calculating its "already passed life-time")
- hardening Iperf2 against multiple echo at command startup (observed under cygwin)
- better display of regexp patterns in logs - simplify troubleshooting
- str(CommandChangingPrompt) display expected prompt regexp - simplify troubleshooting
- cmd.unix.exit.Exit got new parameter allowed_newline_after_prompt
- allowed_newline_after_prompt=True helps to operate with cygwin
- AdbRemote device being state machine capable to reach ADB_SHELL state
- allow firing android-linux commands from within android device
- ADB commands:
- adb_shell
- AT commands:
- plink_serial
- AtRemote device uses 'plink -serial' to proxy serial into stdin/stdout
- State Machines definition: commands allowed for state may be specified using module name
- previously (only packages): ['moler.cmd.at'], now: ['moler.cmd.at', 'moler.cmd.unix.ctrl_c']
- helps in code reuse while keeping commands under related device folder
- Improved connection decoder inside ThreadedTerminal: cleaning output from VT100 terminal codes (not all)
- GenericAtCommand treats 'NO CARRIER' console output as error indication
- Publisher class - Moler implementation of Publisher-Subscriber Design Pattern
- Iperf2 command publishing intermediate reports to all subscribed "observers"
- AT commands:
- at(AT)
- attach(AT+CGATT=1), detach(AT+CGATT=0), get_attach_state(AT+CGATT?)
- get_imei(AT+CGSN)
- get_imsi(AT+CIMI)
- get_manufacturer_id(AT+CGMI)
- get_revision_id(AT+CGMR)
- moler_serial_proxy tool proxing between serial connection and stdio/stdout
- AtRemote device being state machine capable to reach AT_REMOTE state and issue AT commands
- (controlling AT console available over serial connection on remote machine)
- CommandTextualGeneric may set direct path to command executable
- (f.ex. OS may default 'iperf' to '/usr/bin/iperf' but user wants '/usr/local/bin/iperf')
- ConnectionObserver, AbstractDevice were unable to be used inside multiple inheritance
- SSH regex for fingerptint prompt
- Termianl binary debug
- CI pipeline
- ls command
- Redefined timeout for telnet and ssh
- RegexHelper checks if parameter is not None
- connection name returned by iperf2 uses "port@host" format to not confuse on IPv6 (fd00::1:0:5901 -> 5901@fd00::1:0)
config_type
parameter ofload_config()
is not needed, configuration type is autodetected
- possibility to enable/disable logging each occurrence of event
- backward compatibility for load_device_from_config()
- device closing (dev.remove() method) fails if device was already closed
- force Unix device to return into local shell when device is closing (that would close ssh if was open)
- allow adding devices after initial load of configuration
- new UNIX command handled by moler: devmem
- iperf command refactored into iperf2 command
- wrong iperf bandwidth calculation when bandwidth displayed in Kbits/sec, Mbits/sec, Gbits/sec
- first moler prompt to catch
- removal of new line characters on some connections
- stop using Iperf command from moler.cmd.unix.iperf; use Iperf2 from moler.cmd.unix.iperf2 instead
- Possibility to forget device
- Change number of retry whe terminal not operable yet
- fix calculating timeout of sudo command
- new UNIX command handled by moler: gzip
- skip asyncio test under python 2 (internal CI of moler)
- wrong processing of chunked lines by textual events
- sudo command incorrectly handling result of sudo-embedded command
- improved documentation generation
- first official release of Moler