NASA-AMMOS / AIT-DSN

MIT License
19 stars 10 forks source link

Issue 139: Updates to the SLE Manager Interface and example use #141

Closed nttoole closed 2 years ago

nttoole commented 2 years ago

Addresses all of the issues and recommendations listed in #139

Includes example script that runs the SLE Mgr interface for any of the supported services: raf, rcf, cltu. When connected to RAF or RCF, a log message is printed for each 'download' event. For CLTU, chunks of junk data is periodically uploaded to the CLTU service.

Fixes #139


Includes a command line service launcher for running the service and testing.

Usage of the service launcher:

run_sle_interface_mgr_server.py [-h] [--type TYPE [TYPE ...]]
                                       [--host HOST] [--udp UDP] [--rest REST]
                                       [--verbose] [--sim]

Runs the SLE Manager service suite with some basic setup.

optional arguments:
  -h, --help            show this help message and exit
  --type TYPE [TYPE ...]
                        Type of service to run: '+ ['none', 'raf', 'rcf',
                        'cltu'] (default: [])
  --host HOST           Host from which services will be accessed. (default:
                        127.0.0.1)
  --udp UDP             UDP port for sending uplink data. (default: 9000)
  --rest REST           REST port for accessing service endpoints. (default:
                        7654)
  --verbose             Print debug messages. (default: False)
  --sim                 Simulates uplink of arbitrary bytes to CLTU layer.
                        (default: False)

Testing performed against SSPSim at http://atb-ocio-sspsim.jpl.nasa.gov:7070/ssp ..using the same setup steps as captured in examples.


RAF mode with debug transferbuffer handler:

Command: ./ait/dsn/sle/util/test/run_sle_interface_mgr_server.py --type raf --verbose

2022-01-20T13:41:38.571 | INFO     | Bind successful
2022-01-20T13:41:40.687 | INFO     | raf starting...
2022-01-20T13:41:40.689 | INFO     | Sending data start invocation ...
2022-01-20T13:41:40.691 | INFO     | raf started.
2022-01-20T13:41:40.764 | INFO     | Start successful
2022-01-20T13:41:40.871 | INFO     | Production Status Report: running
2022-01-20T13:41:40.873 | INFO     | Production Status Report: running
2022-01-20T13:41:40.874 | INFO     | Received a data transfer PDU for event rafTransferBuffer
2022-01-20T13:41:41.662 | INFO     | Received a data transfer PDU for event rafTransferBuffer
2022-01-20T13:41:42.152 | INFO     | Received a data transfer PDU for event rafTransferBuffer
2022-01-20T13:41:42.696 | INFO     | SLE interface for 'raf' brought up.
2022-01-20T13:41:42.791 | INFO     | Received a data transfer PDU for event rafTransferBuffer
2022-01-20T13:41:43.433 | INFO     | Received a data transfer PDU for event rafTransferBuffer
2022-01-20T13:41:44.165 | INFO     | Received a data transfer PDU for event rafTransferBuffer
   ...

RCF mode with debug transferbuffer handler:

Command: ./ait/dsn/sle/util/test/run_sle_interface_mgr_server.py --type rcf --verbose

2022-01-20T13:25:39.288 | INFO     | Start successful
2022-01-20T13:25:39.938 | INFO     | Received a data transfer PDU for event rcfTransferBuffer
2022-01-20T13:25:40.691 | INFO     | Received a data transfer PDU for event rcfTransferBuffer
2022-01-20T13:25:41.223 | INFO     | SLE interface for 'rcf' brought up.
2022-01-20T13:25:41.359 | INFO     | Received a data transfer PDU for event rcfTransferBuffer
2022-01-20T13:25:42.062 | INFO     | Received a data transfer PDU for event rcfTransferBuffer
2022-01-20T13:25:42.698 | INFO     | Received a data transfer PDU for event rcfTransferBuffer
2022-01-20T13:25:43.508 | INFO     | Received a data transfer PDU for event rcfTransferBuffer
2022-01-20T13:25:44.089 | INFO     | Received a data transfer PDU for event rcfTransferBuffer
2022-01-20T13:25:44.811 | INFO     | Received a data transfer PDU for event rcfTransferBuffer
2022-01-20T13:25:45.458 | INFO     | Received a data transfer PDU for event rcfTransferBuffer

CLTU mode with simulated CLTUs uploaded: Command: ./ait/dsn/sle/util/test/run_sle_interface_mgr_server.py --type cltu --verbose --sim

Section of resulting log:

2022-01-20T13:32:50.839 | INFO     | Uploading data 3 time(s) via CLTU interface:
2022-01-20T13:32:50.841 | INFO     | Pushing data to UDP port...
2022-01-20T13:32:50.848 | INFO     | Data appended to CLTU data queue.
2022-01-20T13:32:52.845 | INFO     | Pushing data to UDP port...
2022-01-20T13:32:52.852 | INFO     | Data appended to CLTU data queue.
2022-01-20T13:32:54.850 | INFO     | Pushing data to UDP port...
2022-01-20T13:32:54.857 | INFO     | Data appended to CLTU data queue.
2022-01-20T13:32:56.856 | INFO     | Requesting data uploaded via REST...
2022-01-20T13:32:56.898 | INFO     | Pushing 3 chunks of CLTU data
2022-01-20T13:32:56.900 | INFO     | Sending TC Data ...
2022-01-20T13:32:56.902 | INFO     | tc_data sent: b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
2022-01-20T13:32:56.904 | INFO     | Sending TC Data ...
2022-01-20T13:32:56.905 | INFO     | tc_data sent: b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
2022-01-20T13:32:56.906 | INFO     | Sending TC Data ...
2022-01-20T13:32:56.907 | INFO     | tc_data sent: b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
2022-01-20T13:32:56.986 | INFO     | CLTU #28 trans. passed. Buffer avail.: 51121
2022-01-20T13:32:57.016 | INFO     | CLTU #29 trans. passed. Buffer avail.: 51042
2022-01-20T13:32:57.018 | INFO     | CLTU #30 trans. passed. Buffer avail.: 50963
2022-01-20T13:32:57.097 | INFO     | 
Last Processed: id: 29 | rad start: b'5b63049fbba60000' | status: radiated
Last Ok: id: 29 | end: b'5b63049fbbcd0000'
Production Status: operational

Note: Some "interface X brought up" messages appear after data appears to be flowing. This is due to a wait-timer in the start request before proceeding with the status message.

nttoole commented 2 years ago

Relevant section of AIT config updated:

    dsn:
        sle:
            initiator_id: LSE
            # password only matters if we're doing auth and can stay as 'pw'
            password: pw
            responder_id: SSC
            # peer password only matters if we're doing auth and can stay as 'pw'
            peer_password: pw
            downlink_frame_type: TMTransFrame
            heartbeat: 25
            deadfactor: 5
            buffer_size: 256000
            responder_port: 'default'
            rcf:
                inst_id: sagr=LSE-SSC.spack=Test.rsl-fg=1.rcf=onlc2
                hostnames:
                    - atb-ocio-sspsim.jpl.nasa.gov
                    - example.hostname.2
                port: 5100
                version: 6 
                spacecraft_id: 250
                trans_frame_ver_num: 0
                auth_level: 'none'
            raf:
                inst_id: sagr=LSE-SSC.spack=Test.rsl-fg=1.raf=onlc1
                hostnames:
                    - atb-ocio-sspsim.jpl.nasa.gov
                    - example.hostname.2
                port: 5100
                version: 5
                auth_level: 'none'
            fcltu:
                inst_id: sagr=LSE-SSC.spack=Test.fsl-fg=1.cltu=cltu1 
                hostnames:
                    - atb-ocio-sspsim.jpl.nasa.gov 
                    - example.hostname.2
                port: 5100
                version: 5 
                auth_level: 'none'
nttoole commented 2 years ago

Note: There is still some lacking documentation, I would hope this gets added after user has a chance to play with the updates and provide feedback on their expected use.

nttoole commented 2 years ago

PR reviewed by @kmarwah and approved for merging. (via email March 4, 22)